#1140480 llhttp: binary-any build depends on binary-all package from the same source

#1140480#5
Date:
2026-06-21 11:48:13 UTC
From:
To:
debian/control of llhttp:

Source: llhttp
...
Build-Depends-Arch:
...
 , libllhttp-source (>= 9.4.2+~cs12.11.9~)
...
Package: libllhttp-source
...
Architecture: all


While this kinda works in unstable, it depends on implementation
details and is rather fragile.

This cannot work when amd64+all is a combined build,
as some of our derivatives (e.g. Ubuntu) are doing.

In unstable it works due to incoming.debian.org providing the
binary-all packages for 2 days. llhttp is a package not unlikely
to have DSAs once it is in a stable release, and I doubt this setup
would work in security when a DSA updates to a new upstream version.

I would guess the original motivation was supporting ports
architectures without Node.js and LLVM, but the current
setup causes more problems than it solves.

Less bad options might be a separate source package for the
binary-any build (with Static-Built-Using), or using a different
HTTP Parser in libgit on ports architectures.

#1140480#10
Date:
2026-06-21 12:35:56 UTC
From:
To:
Note that the build-dependency is not on the *same* version being uploaded,
but on *any* release of the form 9.4.2+~cs12.11.9-x.

This is at most a minor bootstrapping problem. As soon as some recent
version of libllhttp-source exists, everybody will be able to build
the package.

A minor bootstrapping problem is not RC.
Not a big deal.


While we are at it: I can't build this package from source right now,
but the reason is definitely NOT that the package build-depends on
libllhttp-source.

This is what I get:

node --import tsx bin/generate.ts
file:///usr/share/nodejs/tsx/dist/loader.mjs:1199
import { isFileIncluded } from "get-tsconfig";
         ^^^^^^^^^^^^^^
SyntaxError: The requested module 'get-tsconfig' does not provide an export named 'isFileIncluded'
    at #asyncInstantiate (node:internal/modules/esm/module_job:327:21)
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
    at async ModuleJob.run (node:internal/modules/esm/module_job:431:5)
    at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:633:26)
    at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:96:9)

Node.js v24.17.0
make[2]: *** [Makefile:89: generate] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
rm: cannot remove 'release/LICENSE': No such file or directory
rm: cannot remove 'release/README.md': No such file or directory
make[1]: *** [debian/rules:52: release] Error 1
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:17: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2

Any ideas?

Thanks.

#1140480#15
Date:
2026-06-21 12:53:23 UTC
From:
To:
The would have to bootstrap it for every new upstream version.

As already mentioned, this might also imply having to bootstrap in
security if a DSA brings a new upstream version.

cu
Adrian

#1140480#20
Date:
2026-06-21 13:46:50 UTC
From:
To:
Le dim. 21 juin 2026 à 14:37, Santiago Vila <sanvila@debian.org> a écrit :

I was trying to find an elegant and minimalist solution to that bootstrap
issue.
On debuild build servers, it works pretty nicely, because they build first
the arch "all"
and then arch "any" binaries can follow.

I wasn't aware Ubuntu wasn't doing that.
The *only* other solution is to upload the package twice, which I was doing
previously.

They can bootstrap their package using our libllhttp-source binary package.


This one is fixed in node-tsx 4.22.4+~cs13.31.0-2

#1140480#25
Date:
2026-06-21 14:14:59 UTC
From:
To:
created yesterday.

The error today is different:

Install main build dependencies (apt-based resolver)
----------------------------------------------------

Installing build dependencies
Reading package lists...
Building dependency tree...
Reading state information...
Solving dependencies...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 sbuild-build-depends-main-dummy : Depends: debhelper-compat (= 13)
                                   Depends: dh-cmake-compat (= 1)
                                   Depends: dh-cmake but it is not going to be installed
                                   Depends: cmake but it is not going to be installed
                                   Depends: libllhttp-source (>= 9.4.2+~cs12.11.9~) but it is not going to be installed
                                   Depends: dh-nodejs but it is not going to be installed
                                   Depends: binaryen but it is not going to be installed
                                   Depends: clang but it is not going to be installed
                                   Depends: libclang-rt-dev-wasm32 but it is not going to be installed
                                   Depends: lld (>= 1:16) but it is not going to be installed
                                   Depends: node-debug but it is not going to be installed
                                   Depends: node-markdown-it (>= 22.2.3+dfsg+~12.2.3-2~) but it is not going to be installed
                                   Depends: node-semver but it is not going to be installed
                                   Depends: node-typescript but it is not going to be installed
                                   Depends: node-tsx
                                   Depends: ts-node but it is not going to be installed
                                   Depends: wasi-libc but it is not going to be installed
E: Unable to satisfy dependencies. Reached two conflicting assignments:
   1. webpack:amd64=5.107.2+dfsg1+~cs15.16.25-1 is selected for install because:
      1. sbuild-build-depends-main-dummy:amd64=0.invalid.0 is selected for install
      2. sbuild-build-depends-main-dummy:amd64 Depends node-tsx
      3. tsx:amd64 Depends node-fastest-levenshtein
   2. webpack:amd64 Depends node-eslint-visitor-keys
      but none of the choices are installable:
      - node-eslint-visitor-keys:amd64 is available in version 3.3.0+~1.0.0-2
        but none of the choices are installable:
        - node-eslint-visitor-keys:amd64=3.3.0+~1.0.0-2 is not selected for install because:
          1. sbuild-build-depends-main-dummy:amd64=0.invalid.0 is selected for install as above
          2. sbuild-build-depends-main-dummy:amd64 Depends ts-node
          3. ts-node:amd64 Depends node-acorn
          4. node-acorn:amd64 Breaks node-eslint-visitor-keys (< 3.3.0+~1.0.0-3~)
apt-get failed.
E: Package installation failed


I have no idea about what could be the reason for this.

Thanks.

#1140480#30
Date:
2026-06-21 15:39:04 UTC
From:
To:
Le dim. 21 juin 2026 à 16:15, Santiago Vila <sanvila@debian.org> a écrit :


Yadd fixed the issue with node-tsx (that was my bad).
Rouca is currently working on webpack, and he made some uploads today,
hopefully fixing it.

#1140480#35
Date:
2026-06-21 16:00:29 UTC
From:
To:
Le dim. 21 juin 2026 à 17:39, Jérémy Lal <kapouer@melix.org> a écrit :

It builds on an updated sbuild here, so it's just a matter of minutes.