← Back to team overview

debcrafters-packages team mailing list archive

[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