** Description changed:

  TL;DR
  
- python3-jsonschema is uninstallable on i386 due to no python3-rpbs-
+ python3-jsonschema is uninstallable on i386 due to no python3-rpds-
  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
+     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.
+   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-disc...@lists.ubuntu.com>
+   Package: jq
+ - Version: 1.7.1-3build1
+ + Version: 1.7.1-3ubuntu1~ppa3
+   Architecture: i386
+   Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com>
  - 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
+   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.
+   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-disc...@lists.ubuntu.com>
-   Installed-Size: 49
+   Package: libjq-dev
+   Source: jq
+ - Version: 1.7.1-3build1
+ + Version: 1.7.1-3ubuntu1~ppa3
+   Architecture: i386
+   Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com>
+   Installed-Size: 49
  - Depends: libjq1 (= 1.7.1-3build1)
  + Depends: libjq1 (= 1.7.1-3ubuntu1~ppa3)
-   Section: libdevel
-   Priority: optional
-   Multi-Arch: same
+   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.
+   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-disc...@lists.ubuntu.com>
+       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-disc...@lists.ubuntu.com>
  - Installed-Size: 597
  + Installed-Size: 605
-   Depends: libc6 (>= 2.38), libonig5 (>= 6.8.1)
-   Section: utils
-   Priority: optional
+   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.
+   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-disc...@lists.ubuntu.com>
+   Package: jq
+ - Version: 1.7.1-3build1
+ + Version: 1.7.1-3ubuntu1~ppa3
+   Architecture: amd64
+   Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com>
  - 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
+   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.
+   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-disc...@lists.ubuntu.com>
-   Installed-Size: 49
+   Package: libjq-dev
+   Source: jq
+ - Version: 1.7.1-3build1
+ + Version: 1.7.1-3ubuntu1~ppa3
+   Architecture: amd64
+   Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com>
+   Installed-Size: 49
  - Depends: libjq1 (= 1.7.1-3build1)
  + Depends: libjq1 (= 1.7.1-3ubuntu1~ppa3)
-   Section: libdevel
-   Priority: optional
-   Multi-Arch: same
+   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.
+   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-disc...@lists.ubuntu.com>
+       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-disc...@lists.ubuntu.com>
  - Installed-Size: 358
  + Installed-Size: 410
-   Depends: libc6 (>= 2.39), libonig5 (>= 6.8.1)
-   Section: utils
-   Priority: optional
- 
+   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

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2104170

Title:
  FTBFS on i386: unresolvable deps

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/jq/+bug/2104170/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to