debcrafters-packages team mailing list archive
-
debcrafters-packages team
-
Mailing list archive
-
Message #03818
[Bug 2104170] Re: FTBFS on i386: unresolvable deps
Ubuntu 24.10 (Oracular Oriole) has reached end of life, so this bug will
not be fixed for that specific release.
** Changed in: jq (Ubuntu Oracular)
Status: Triaged => Won't Fix
--
You received this bug notification because you are a member of
Debcrafters packages, which is subscribed to jq in Ubuntu.
https://bugs.launchpad.net/bugs/2104170
Title:
FTBFS on i386: unresolvable deps
Status in jq package in Ubuntu:
Fix Released
Status in jq source package in Oracular:
Won't Fix
Status in jq source package in Plucky:
Fix Released
Bug description:
TL;DR
python3-jsonschema is uninstallable on i386 due to no python3-rpbs-
py@i386, and it's a build-dependency of jq. Thus, this makes jq an
FTBFS on i386. We can't pull jq@i386 out of the distro, as it yanks
too much stuff. Nor can we enable i386 for the build-deps because
there are too many (rust anyone?).
Proposal:
Diff:
--- a/debian/control
+++ b/debian/control
@@ -12,7 +12,7 @@ Build-Depends: debhelper-compat (= 13),
python3-yaml,
python3-markdown,
python3-lxml,
- python3-jsonschema,
+ python3-jsonschema [!i386],
valgrind [amd64],
Standards-Version: 4.6.2
Rules-Requires-Root: no
PPA: https://launchpad.net/~ahasenack/+archive/ubuntu/jq-ftbfs/+packages
There are no DEP8 tests.
[ Longer explanation ]
From https://launchpadlibrarian.net/783618671/buildlog_ubuntu-
plucky-i386.jq_1.7.1-3build1_BUILDING.txt.gz
The following packages have unmet dependencies:
python3-jsonschema : Depends: python3-jsonschema-specifications but it is not going to be installed
Depends: python3-referencing but it is not going to be installed
Depends: python3-rpds-py but it is not installable
E: Unable to correct problems, you have held broken packages.
E: The following information from --solver 3.0 may provide additional context:
Unable to satisfy dependencies. Reached two conflicting decisions:
1. python3-jsonschema:i386 is selected for install because:
1. sbuild-build-depends-main-dummy:i386=0.invalid.0 is selected for install
2. sbuild-build-depends-main-dummy:i386 Depends python3-jsonschema
2. python3-jsonschema:i386 Depends python3-rpds-py
but none of the choices are installable:
[no choices]
apt-get failed.
The last jq rebuild[1] was during the noble cycle, on 2024-03-31. Back
then it used python3-jsonschema 4.10.3-2ubuntu1[2] from noble, which
does NOT depend on python3-rpds-py.
The python3-rpds-py build-dependency was added in python-jsonschema
4.19.2-1[3], a new upstream version. And this causes the jq ftbfs
because python3-rpds-py was never built for i386 in ubuntu.
This is an FTBFS since oracular.
1. https://launchpadlibrarian.net/722170615/buildlog_ubuntu-noble-i386.jq_1.7.1-3build1_BUILDING.txt.gz
2. https://launchpad.net/ubuntu/+source/python-jsonschema/4.10.3-2ubuntu1
3. https://salsa.debian.org/openstack-team/third-party/python-jsonschema/-/commit/45c057ea750683392b2700069a3cb3e5ba3c0019
[ Proposal and justification ]
Text copied from the linked MP (note the [link references] restart at 1!):
This is my proposal to fix the FTBFS on i386, with minimal impact to the other architectures: do not build-depend on python3-jsonschema on i386. This fix can also be used to SRU jq to oracular, where the same problem happens.
The real bug/problem here is that python3-jsonschema is uninstallable
on i386. It's an arch all package, but it has arch-specific
dependencies, and i386 is one of them.
python3-jsonschema, however, is only used by jq via the
docs/validate_manual_schema.py[4] script.
That script is conditionally invoked in the Makefile[3], if the
docs/content/manual/manual.yml file is changed (via a patch, for
example):
# We use the examples in the manual as additional tests, to ensure they always work.
# As a result, we need to rebuild the tests if the manual has been updated.
# Making changes to the manpage without having the python deps means your
# tests won't run. If you aren't making changes to the examples, you probably
# don't care. But if you are, then you need to run the tests anyway.
tests/man.test tests/manonig.test: $(srcdir)/docs/content/manual/manual.yml
if ENABLE_DOCS
$(AM_V_GEN) ( cd ${abs_srcdir}/docs && \
python validate_manual_schema.py content/manual/manual.yml && \
python build_mantests.py )
else
@echo Changes to the manual.yml require docs to be enabled to update the
manual test.
@echo As a result, the manual test is out of date.
endif
We can see in current launchpad build logs[1] (i386 example, but it's
the same in amd64[2]) the message:
make[4]: 'tests/man.test' is up to date.
indicating that that block in the Makefile which would invoke
validate_manual_schema.py was skipped.
Also, when invoked manually in the build directory, we see the same:
$ make tests/man.test
make: 'tests/man.test' is up to date.
But make a change to that file, and the script is run. And we also
discover another bug:
$ echo andreas-was-here >> docs/content/manual/manual.yml
$ make tests/man.test
( cd /home/ubuntu/git/packages/jq/jq/docs && \
python validate_manual_schema.py content/manual/manual.yml && \
python build_mantests.py )
/bin/bash: line 2: python: command not found
make: *** [Makefile:1851: tests/man.test] Error 127
That bug was introduced by d/p/0006-Do-not-use-pipenv-to-build-
docs.patch[5] which uses just "python" instead of "python3". Shows the
age of that patch, I guess. Anyway, I'm not touching that here. But I
could. Let me know what you think in the comments below, and don't
forget to like and subscribe!
The runtime dependencies of jq in amd64 and i386 are the same after
this change as far as I could tell. I will do another check with the
PPA build after it's built.
PPA: https://launchpad.net/~ahasenack/+archive/ubuntu/jq-ftbfs/+packages
DEP8: there are none. Should find a way to run the autopkgtests of packages that invoke jq...
1. https://launchpadlibrarian.net/722170615/buildlog_ubuntu-noble-i386.jq_1.7.1-3build1_BUILDING.txt.gz
2. https://launchpadlibrarian.net/722189983/buildlog_ubuntu-noble-amd64.jq_1.7.1-3build1_BUILDING.txt.gz
3. https://git.launchpad.net/ubuntu/+source/jq/tree/Makefile.am?h=applied/ubuntu/devel#n151
4. https://git.launchpad.net/ubuntu/+source/jq/tree/docs/validate_manual_schema.py?h=applied/ubuntu/devel
5. https://git.launchpad.net/ubuntu/+source/jq/tree/debian/patches/0006-Do-not-use-pipenv-to-build-docs.patch?h=applied/ubuntu/devel
[ Verification ]
There are no DEP8 tests in this package. I downloaded the binary packages for all architectures from my PPA, and from the ubuntu archive, and ran this script:
#!/bin/bash
PACKAGES="jq libjq-dev libjq1"
ARCHS="amd64 arm64 armhf i386 ppc64el riscv64 s390x"
for arch in ${ARCHS}; do
for pkg in $PACKAGES; do
diff -u <(dpkg --info plucky-archive/${pkg}*${arch}.deb) <(dpkg --info ppa/${pkg}*${arch}.deb) > ${pkg}_${arch}.diff
done
done
I then manually inspected all diff files, and concluded there were no
dependency changes introduced in any of them.
Here is the diff for i386:
### jq_i386.diff
--- /dev/fd/63 2025-04-08 13:30:32.178866732 +0000
+++ /dev/fd/62 2025-04-08 13:30:32.178866732 +0000
@@ -1,13 +1,13 @@
new Debian package, version 2.0.
- size 66730 bytes: control archive=922 bytes.
- 859 bytes, 24 lines control
- 352 bytes, 6 lines md5sums
+ size 68758 bytes: control archive=963 bytes.
+ 871 bytes, 24 lines control
+ 423 bytes, 7 lines md5sums
Package: jq
- Version: 1.7.1-3build1
+ Version: 1.7.1-3ubuntu1~ppa3
Architecture: i386
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
- Installed-Size: 111
- Depends: libc6 (>= 2.38), libjq1 (= 1.7.1-3build1)
+ Installed-Size: 115
+ Depends: libc6 (>= 2.38), libjq1 (= 1.7.1-3ubuntu1~ppa3)
Section: utils
Priority: optional
Multi-Arch: foreign
### libjq-dev_i386.diff
--- /dev/fd/63 2025-04-08 13:30:32.183866798 +0000
+++ /dev/fd/62 2025-04-08 13:30:32.184866812 +0000
@@ -1,14 +1,14 @@
new Debian package, version 2.0.
- size 11842 bytes: control archive=894 bytes.
- 928 bytes, 27 lines control
- 246 bytes, 4 lines md5sums
+ size 13764 bytes: control archive=936 bytes.
+ 940 bytes, 27 lines control
+ 324 bytes, 5 lines md5sums
Package: libjq-dev
Source: jq
- Version: 1.7.1-3build1
+ Version: 1.7.1-3ubuntu1~ppa3
Architecture: i386
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
Installed-Size: 49
- Depends: libjq1 (= 1.7.1-3build1)
+ Depends: libjq1 (= 1.7.1-3ubuntu1~ppa3)
Section: libdevel
Priority: optional
Multi-Arch: same
### libjq1_i386.diff
--- /dev/fd/63 2025-04-08 13:30:32.189866878 +0000
+++ /dev/fd/62 2025-04-08 13:30:32.189866878 +0000
@@ -1,16 +1,16 @@
new Debian package, version 2.0.
- size 198160 bytes: control archive=1950 bytes.
- 929 bytes, 27 lines control
+ size 199940 bytes: control archive=1953 bytes.
+ 935 bytes, 27 lines control
212 bytes, 3 lines md5sums
26 bytes, 1 lines shlibs
4584 bytes, 178 lines symbols
75 bytes, 2 lines triggers
Package: libjq1
Source: jq
- Version: 1.7.1-3build1
+ Version: 1.7.1-3ubuntu1~ppa3
Architecture: i386
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
- Installed-Size: 597
+ Installed-Size: 605
Depends: libc6 (>= 2.38), libonig5 (>= 6.8.1)
Section: utils
Priority: optional
And here is the diff for amd64:
### jq_amd64.diff
--- /dev/fd/63 2025-04-08 13:30:32.091865576 +0000
+++ /dev/fd/62 2025-04-08 13:30:32.092865589 +0000
@@ -1,13 +1,13 @@
new Debian package, version 2.0.
- size 65538 bytes: control archive=925 bytes.
- 860 bytes, 24 lines control
- 352 bytes, 6 lines md5sums
+ size 67904 bytes: control archive=961 bytes.
+ 872 bytes, 24 lines control
+ 423 bytes, 7 lines md5sums
Package: jq
- Version: 1.7.1-3build1
+ Version: 1.7.1-3ubuntu1~ppa3
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
- Installed-Size: 112
- Depends: libc6 (>= 2.38), libjq1 (= 1.7.1-3build1)
+ Installed-Size: 116
+ Depends: libc6 (>= 2.38), libjq1 (= 1.7.1-3ubuntu1~ppa3)
Section: utils
Priority: optional
Multi-Arch: foreign
### libjq-dev_amd64.diff
--- /dev/fd/63 2025-04-08 13:30:32.103865735 +0000
+++ /dev/fd/62 2025-04-08 13:30:32.103865735 +0000
@@ -1,14 +1,14 @@
new Debian package, version 2.0.
- size 11854 bytes: control archive=897 bytes.
- 929 bytes, 27 lines control
- 248 bytes, 4 lines md5sums
+ size 13776 bytes: control archive=941 bytes.
+ 941 bytes, 27 lines control
+ 326 bytes, 5 lines md5sums
Package: libjq-dev
Source: jq
- Version: 1.7.1-3build1
+ Version: 1.7.1-3ubuntu1~ppa3
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
Installed-Size: 49
- Depends: libjq1 (= 1.7.1-3build1)
+ Depends: libjq1 (= 1.7.1-3ubuntu1~ppa3)
Section: libdevel
Priority: optional
Multi-Arch: same
### libjq1_amd64.diff
--- /dev/fd/63 2025-04-08 13:30:32.111865841 +0000
+++ /dev/fd/62 2025-04-08 13:30:32.112865855 +0000
@@ -1,16 +1,16 @@
new Debian package, version 2.0.
- size 140506 bytes: control archive=1955 bytes.
- 930 bytes, 27 lines control
+ size 159348 bytes: control archive=1956 bytes.
+ 936 bytes, 27 lines control
214 bytes, 3 lines md5sums
26 bytes, 1 lines shlibs
4584 bytes, 178 lines symbols
75 bytes, 2 lines triggers
Package: libjq1
Source: jq
- Version: 1.7.1-3build1
+ Version: 1.7.1-3ubuntu1~ppa3
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
- Installed-Size: 358
+ Installed-Size: 410
Depends: libc6 (>= 2.39), libonig5 (>= 6.8.1)
Section: utils
Priority: optional
The other diffs for the other architectures are similar.
[ Original Description ]
https://launchpadlibrarian.net/783618671/buildlog_ubuntu-
plucky-i386.jq_1.7.1-3build1_BUILDING.txt.gz
The following packages have unmet dependencies:
python3-jsonschema : Depends: python3-jsonschema-specifications but it is not going to be installed
Depends: python3-referencing but it is not going to be installed
Depends: python3-rpds-py but it is not installable
E: Unable to correct problems, you have held broken packages.
E: The following information from --solver 3.0 may provide additional context:
Unable to satisfy dependencies. Reached two conflicting decisions:
1. python3-jsonschema:i386 is selected for install because:
1. sbuild-build-depends-main-dummy:i386=0.invalid.0 is selected for install
2. sbuild-build-depends-main-dummy:i386 Depends python3-jsonschema
2. python3-jsonschema:i386 Depends python3-rpds-py
but none of the choices are installable:
[no choices]
apt-get failed.
The last jq rebuild[1] was during the noble cycle, on 2024-03-31. Back
then it used python3-jsonschema 4.10.3-2ubuntu1[2] from noble, which
does NOT depend on python3-rpds-py.
The python3-rpds-py build-dependency was added in python-jsonschema
4.19.2-1[3], a new upstream version. And this causes the jq ftbfs
because python3-rpds-py was never built for i386 in ubuntu.
This is an FTBFS since oracular.
For plucky, we either stop building jq for i386, or start building
rpds-py for i386.
Unsure yet how to handle this situation in an SRU.
jq@i386 at least runs in oracular as-is, same in plucky:
ubuntu@o-jq-i386:~$ dpkg -l jq
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-=============-============-====================================================
ii jq:i386 1.7.1-3build1 i386 lightweight and flexible command-line JSON processor
ubuntu@o-jq-i386:~$ ldd /usr/bin/jq
linux-gate.so.1 (0xf7a92000)
libjq.so.1 => /lib/i386-linux-gnu/libjq.so.1 (0xf79f1000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf77a7000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7696000)
libonig.so.5 => /lib/i386-linux-gnu/libonig.so.5 (0xf7602000)
/lib/ld-linux.so.2 (0xf7a94000)
1. https://launchpadlibrarian.net/722170615/buildlog_ubuntu-noble-i386.jq_1.7.1-3build1_BUILDING.txt.gz
2. https://launchpad.net/ubuntu/+source/python-jsonschema/4.10.3-2ubuntu1
3. https://salsa.debian.org/openstack-team/third-party/python-jsonschema/-/commit/45c057ea750683392b2700069a3cb3e5ba3c0019
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/jq/+bug/2104170/+subscriptions