Package: release.debian.org Severity: normal Tags: bookworm X-Debbugs-Cc: node-und...@packages.debian.org, Debian Javascript Maintainers <pkg-javascript-de...@lists.alioth.debian.org> Control: affects -1 + src:node-undici User: release.debian....@packages.debian.org Usertags: pu
[ Reason ] node-undici: FTBFS with nodejs 18.19.0+dfsg-6~deb12u1 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1063530 [ Impact ] node-undici FTBFS, also several other packages need node-undici to properly export its typescript types, which it currently doesn't. [ Tests ] (What automated or manual tests cover the affected code?) Rebuild+Autopkgtest should be enough to cover the affected code. All this is caused by a regression introduced by nodejs 18.19.0+dfsg-6~deb12u1 [ Risks ] No further risks. [ Checklist ] [x] *all* changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in (old)stable [x] the issue is verified as fixed in unstable [ Changes ] * Import upstream patch that moves index.d.ts to types/ (closes #1063530) * Force @types/node to use local copy of undici-types * Fix build failures on lld 15+ [ Other info ] node-zx, node-v8-compile-cache, node-babel7 will also be proposed, to fix their tests suites w.r.t. the aforementioned regression.
diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/changelog node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/changelog --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/changelog 2023-12-21 11:14:59.000000000 +0100 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/changelog 2024-04-13 11:22:02.000000000 +0200 @@ -1,3 +1,12 @@ +node-undici (5.15.0+dfsg1+~cs20.10.9.3-1+deb12u4) UNRELEASED; urgency=medium + + [ Ryan Gonzalez ] + * Import upstream patch that moves index.d.ts to types/ (closes #1063530) + * Force @types/node to use local copy of undici-types + * Fix build failures on lld 15+ + + -- Jérémy Lal <kapo...@melix.org> Sat, 13 Apr 2024 11:22:02 +0200 + node-undici (5.15.0+dfsg1+~cs20.10.9.3-1+deb12u3) bookworm-security; urgency=medium * Team upload. diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/gbp.conf node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/gbp.conf --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/gbp.conf 2023-12-21 11:08:13.000000000 +0100 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/gbp.conf 2024-04-13 11:19:52.000000000 +0200 @@ -1,4 +1,5 @@ [DEFAULT] +debian-branch = bookworm pristine-tar=True filter=[ '.gitignore', '.travis.yml', '.git*' ] component=['llhttp', 'llparse', 'llparse-frontend', 'llparse-builder', 'binary-search'] diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/build node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/build --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/build 2023-12-21 11:08:13.000000000 +0100 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/build 2024-04-13 11:18:29.000000000 +0200 @@ -10,7 +10,7 @@ # - direct clang call clang -nodefaultlibs --sysroot=/usr -target wasm32-unknown-wasi \ -Ofast -fno-exceptions -fvisibility=hidden \ - -mexec-model=reactor -Wl,-lc -Wl,-error-limit=0 -Wl,-O3 \ + -mexec-model=reactor -Wl,-lc -Wl,--error-limit=0 -Wl,-O3 \ -Wl,--lto-O3 -Wl,--strip-all -Wl,--allow-undefined \ -Wl,--export-dynamic -Wl,--export-table -Wl,--export=malloc \ -Wl,--export=free \ diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/extcopies node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/extcopies --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/extcopies 1970-01-01 01:00:00.000000000 +0100 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/extcopies 2024-04-13 11:18:29.000000000 +0200 @@ -0,0 +1 @@ +@types/node diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/extlinks node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/extlinks --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/extlinks 2022-10-22 13:28:40.000000000 +0200 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/nodejs/extlinks 2024-04-13 11:18:29.000000000 +0200 @@ -1,4 +1,3 @@ busboy @types/debug -@types/node @types/semver diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/Add-publish-types-script-2273.patch node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/Add-publish-types-script-2273.patch --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/Add-publish-types-script-2273.patch 1970-01-01 01:00:00.000000000 +0100 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/Add-publish-types-script-2273.patch 2024-04-13 11:18:29.000000000 +0200 @@ -0,0 +1,341 @@ +From: Ethan Arrowood <et...@arrowood.dev> +Date: Wed, 20 Sep 2023 15:02:42 -0600 +Subject: Add publish types script (#2273) + +* add publish types script + +* use postpublish script + +* 5.24.0-test.0 + +* 5.24.0-test.1 + +* uncomment + +* 5.24.0-test.2 + +* simplify automation + +* 5.24.0-test.3 + +* fix script + +* 5.24.0-test.4 + +* fix script + +* 5.24.0-test.5 + +* undici-type@5.24.0-test.5 + +* restore versions + +* delete generated file + +* Update update-undici-types-version.js + +Co-authored-by: Superchupu <53496941+superchupu...@users.noreply.github.com> + +* fix contributor list and fix types export + +* this should fix types + +* one more adjustment + +* 5.24.0-test.6 + +* undici-types@5.24.0-test.6 + +* revert versions and add README for undici-types + +--------- + +Co-authored-by: Superchupu <53496941+superchupu...@users.noreply.github.com> +Origin: upstream, https://github.com/nodejs/undici/commit/5c2e597bd938ce99a0246f9dfbfac6d3f3a31be9 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1063530 +--- + index.d.ts | 55 ++-------------------------------- + package.json | 32 +++++++++++++++++++- + scripts/update-undici-types-version.js | 18 +++++++++++ + types/README.md | 6 ++++ + types/index.d.ts | 54 +++++++++++++++++++++++++++++++++ + types/package.json | 55 ++++++++++++++++++++++++++++++++++ + 6 files changed, 166 insertions(+), 54 deletions(-) + create mode 100644 scripts/update-undici-types-version.js + create mode 100644 types/README.md + create mode 100644 types/index.d.ts + create mode 100644 types/package.json + +diff --git a/index.d.ts b/index.d.ts +index e914634..83a786d 100644 +--- a/index.d.ts ++++ b/index.d.ts +@@ -1,54 +1,3 @@ +-import Dispatcher from'./types/dispatcher' +-import { setGlobalDispatcher, getGlobalDispatcher } from './types/global-dispatcher' +-import { setGlobalOrigin, getGlobalOrigin } from './types/global-origin' +-import Pool from'./types/pool' +-import { RedirectHandler, DecoratorHandler } from './types/handlers' +- +-import BalancedPool from './types/balanced-pool' +-import Client from'./types/client' +-import buildConnector from'./types/connector' +-import errors from'./types/errors' +-import Agent from'./types/agent' +-import MockClient from'./types/mock-client' +-import MockPool from'./types/mock-pool' +-import MockAgent from'./types/mock-agent' +-import mockErrors from'./types/mock-errors' +-import ProxyAgent from'./types/proxy-agent' +-import { request, pipeline, stream, connect, upgrade } from './types/api' +- +-export * from './types/cookies' +-export * from './types/fetch' +-export * from './types/file' +-export * from './types/filereader' +-export * from './types/formdata' +-export * from './types/diagnostics-channel' +-export * from './types/websocket' +-export { Interceptable } from './types/mock-interceptor' +- +-export { Dispatcher, BalancedPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, setGlobalOrigin, getGlobalOrigin, MockClient, MockPool, MockAgent, mockErrors, ProxyAgent, RedirectHandler, DecoratorHandler } ++export * from './types/index' ++import Undici from './types/index' + export default Undici +- +-declare namespace Undici { +- var Dispatcher: typeof import('./types/dispatcher').default +- var Pool: typeof import('./types/pool').default; +- var RedirectHandler: typeof import ('./types/handlers').RedirectHandler +- var DecoratorHandler: typeof import ('./types/handlers').DecoratorHandler +- var createRedirectInterceptor: typeof import ('./types/interceptors').createRedirectInterceptor +- var BalancedPool: typeof import('./types/balanced-pool').default; +- var Client: typeof import('./types/client').default; +- var buildConnector: typeof import('./types/connector').default; +- var errors: typeof import('./types/errors').default; +- var Agent: typeof import('./types/agent').default; +- var setGlobalDispatcher: typeof import('./types/global-dispatcher').setGlobalDispatcher; +- var getGlobalDispatcher: typeof import('./types/global-dispatcher').getGlobalDispatcher; +- var request: typeof import('./types/api').request; +- var stream: typeof import('./types/api').stream; +- var pipeline: typeof import('./types/api').pipeline; +- var connect: typeof import('./types/api').connect; +- var upgrade: typeof import('./types/api').upgrade; +- var MockClient: typeof import('./types/mock-client').default; +- var MockPool: typeof import('./types/mock-pool').default; +- var MockAgent: typeof import('./types/mock-agent').default; +- var mockErrors: typeof import('./types/mock-errors').default; +- var fetch: typeof import('./types/fetch').fetch; +-} +diff --git a/package.json b/package.json +index 44e2146..5c76ff9 100644 +--- a/package.json ++++ b/package.json +@@ -11,12 +11,41 @@ + "url": "git+https://github.com/nodejs/undici.git" + }, + "license": "MIT", +- "author": "Matteo Collina <he...@matteocollina.com>", + "contributors": [ ++ { ++ "name": "Daniele Belardi", ++ "url": "https://github.com/dnlup", ++ "author": true ++ }, ++ { ++ "name": "Ethan Arrowood", ++ "url": "https://github.com/ethan-arrowood", ++ "author": true ++ }, ++ { ++ "name": "Matteo Collina", ++ "url": "https://github.com/mcollina", ++ "author": true ++ }, ++ { ++ "name": "Matthew Aitken", ++ "url": "https://github.com/KhafraDev", ++ "author": true ++ }, + { + "name": "Robert Nagy", + "url": "https://github.com/ronag", + "author": true ++ }, ++ { ++ "name": "Szymon Marczak", ++ "url": "https://github.com/szmarczak", ++ "author": true ++ }, ++ { ++ "name": "Tomas Della Vedova", ++ "url": "https://github.com/delvedor", ++ "author": true + } + ], + "keywords": [ +@@ -64,6 +93,7 @@ + "bench:run": "CONNECTIONS=1 node --experimental-wasm-simd benchmarks/benchmark.js; CONNECTIONS=50 node --experimental-wasm-simd benchmarks/benchmark.js", + "serve:website": "docsify serve .", + "prepare": "husky install", ++ "postpublish": "node scripts/update-undici-types-version.js && cd types && npm publish", + "fuzz": "jsfuzz test/fuzzing/fuzz.js corpus" + }, + "devDependencies": { +diff --git a/scripts/update-undici-types-version.js b/scripts/update-undici-types-version.js +new file mode 100644 +index 0000000..2308e97 +--- /dev/null ++++ b/scripts/update-undici-types-version.js +@@ -0,0 +1,18 @@ ++const fs = require('node:fs') ++const path = require('node:path') ++const childProcess = require('node:child_process') ++ ++const packageJSONPath = path.join(__dirname, '..', 'package.json') ++const packageJSONRaw = fs.readFileSync(packageJSONPath, 'utf-8') ++const packageJSON = JSON.parse(packageJSONRaw) ++const version = packageJSON.version ++ ++const packageTypesJSONPath = path.join(__dirname, '..', 'types', 'package.json') ++const packageTypesJSONRaw = fs.readFileSync(packageTypesJSONPath, 'utf-8') ++const packageTypesJSON = JSON.parse(packageTypesJSONRaw) ++packageTypesJSON.version = version ++ ++fs.writeFileSync(packageTypesJSONPath, JSON.stringify(packageTypesJSON, null, 2)) ++ ++childProcess.execSync('git add types/package.json', { cwd: path.join(__dirname, '..') }) ++childProcess.execSync(`git commit -n -m 'undici-types@${version}'`, { cwd: path.join(__dirname, '..') }) +diff --git a/types/README.md b/types/README.md +new file mode 100644 +index 0000000..20a721c +--- /dev/null ++++ b/types/README.md +@@ -0,0 +1,6 @@ ++# undici-types ++ ++This package is a dual-publish of the [undici](https://www.npmjs.com/package/undici) library types. The `undici` package **still contains types**. This package is for users who _only_ need undici types (such as for `@types/node`). It is published alongside every release of `undici`, so you can always use the same version. ++ ++- [GitHub nodejs/undici](https://github.com/nodejs/undici) ++- [Undici Documentation](https://undici.nodejs.org/#/) +diff --git a/types/index.d.ts b/types/index.d.ts +new file mode 100644 +index 0000000..4afadd6 +--- /dev/null ++++ b/types/index.d.ts +@@ -0,0 +1,54 @@ ++import Dispatcher from'./dispatcher' ++import { setGlobalDispatcher, getGlobalDispatcher } from './global-dispatcher' ++import { setGlobalOrigin, getGlobalOrigin } from './global-origin' ++import Pool from'./pool' ++import { RedirectHandler, DecoratorHandler } from './handlers' ++ ++import BalancedPool from './balanced-pool' ++import Client from'./client' ++import buildConnector from'./connector' ++import errors from'./errors' ++import Agent from'./agent' ++import MockClient from'./mock-client' ++import MockPool from'./mock-pool' ++import MockAgent from'./mock-agent' ++import mockErrors from'./mock-errors' ++import ProxyAgent from'./proxy-agent' ++import { request, pipeline, stream, connect, upgrade } from './api' ++ ++export * from './cookies' ++export * from './fetch' ++export * from './file' ++export * from './filereader' ++export * from './formdata' ++export * from './diagnostics-channel' ++export * from './websocket' ++export { Interceptable } from './mock-interceptor' ++ ++export { Dispatcher, BalancedPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, setGlobalOrigin, getGlobalOrigin, MockClient, MockPool, MockAgent, mockErrors, ProxyAgent, RedirectHandler, DecoratorHandler } ++export default Undici ++ ++declare namespace Undici { ++ var Dispatcher: typeof import('./dispatcher').default ++ var Pool: typeof import('./pool').default; ++ var RedirectHandler: typeof import ('./handlers').RedirectHandler ++ var DecoratorHandler: typeof import ('./handlers').DecoratorHandler ++ var createRedirectInterceptor: typeof import ('./interceptors').createRedirectInterceptor ++ var BalancedPool: typeof import('./balanced-pool').default; ++ var Client: typeof import('./client').default; ++ var buildConnector: typeof import('./connector').default; ++ var errors: typeof import('./errors').default; ++ var Agent: typeof import('./agent').default; ++ var setGlobalDispatcher: typeof import('./global-dispatcher').setGlobalDispatcher; ++ var getGlobalDispatcher: typeof import('./global-dispatcher').getGlobalDispatcher; ++ var request: typeof import('./api').request; ++ var stream: typeof import('./api').stream; ++ var pipeline: typeof import('./api').pipeline; ++ var connect: typeof import('./api').connect; ++ var upgrade: typeof import('./api').upgrade; ++ var MockClient: typeof import('./mock-client').default; ++ var MockPool: typeof import('./mock-pool').default; ++ var MockAgent: typeof import('./mock-agent').default; ++ var mockErrors: typeof import('./mock-errors').default; ++ var fetch: typeof import('./fetch').fetch; ++} +diff --git a/types/package.json b/types/package.json +new file mode 100644 +index 0000000..f5690fc +--- /dev/null ++++ b/types/package.json +@@ -0,0 +1,55 @@ ++{ ++ "name": "undici-types", ++ "version": "5.24.0", ++ "description": "A stand-alone types package for Undici", ++ "homepage": "https://undici.nodejs.org", ++ "bugs": { ++ "url": "https://github.com/nodejs/undici/issues" ++ }, ++ "repository": { ++ "type": "git", ++ "url": "git+https://github.com/nodejs/undici.git" ++ }, ++ "license": "MIT", ++ "types": "index.d.ts", ++ "files": [ ++ "*.d.ts" ++ ], ++ "contributors": [ ++ { ++ "name": "Daniele Belardi", ++ "url": "https://github.com/dnlup", ++ "author": true ++ }, ++ { ++ "name": "Ethan Arrowood", ++ "url": "https://github.com/ethan-arrowood", ++ "author": true ++ }, ++ { ++ "name": "Matteo Collina", ++ "url": "https://github.com/mcollina", ++ "author": true ++ }, ++ { ++ "name": "Matthew Aitken", ++ "url": "https://github.com/KhafraDev", ++ "author": true ++ }, ++ { ++ "name": "Robert Nagy", ++ "url": "https://github.com/ronag", ++ "author": true ++ }, ++ { ++ "name": "Szymon Marczak", ++ "url": "https://github.com/szmarczak", ++ "author": true ++ }, ++ { ++ "name": "Tomas Della Vedova", ++ "url": "https://github.com/delvedor", ++ "author": true ++ } ++ ] ++} diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/build-Fix-incorrect-syntax-for-error-limit.patch node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/build-Fix-incorrect-syntax-for-error-limit.patch --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/build-Fix-incorrect-syntax-for-error-limit.patch 1970-01-01 01:00:00.000000000 +0100 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/build-Fix-incorrect-syntax-for-error-limit.patch 2024-04-13 11:18:29.000000000 +0200 @@ -0,0 +1,26 @@ +From: Ryan Gonzalez <ryan.gonza...@collabora.com> +Date: Mon, 12 Feb 2024 18:00:22 -0600 +Subject: build: Fix incorrect syntax for --error-limit + +lld 15+ removed support for single dashes: + +https://github.com/llvm/llvm-project/commit/87628f5804e23a40986692f6cdcf66654ce3f017 + +Signed-off-by: Ryan Gonzalez <ryan.gonza...@collabora.com> +--- + llhttp/bin/build_wasm.ts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/llhttp/bin/build_wasm.ts b/llhttp/bin/build_wasm.ts +index d0fb1ad..7286432 100644 +--- a/llhttp/bin/build_wasm.ts ++++ b/llhttp/bin/build_wasm.ts +@@ -61,7 +61,7 @@ execSync(`${WASI_ROOT}/bin/clang \ + -fvisibility=hidden \ + -mexec-model=reactor \ + -Wl,-lc \ +- -Wl,-error-limit=0 \ ++ -Wl,--error-limit=0 \ + -Wl,-O3 \ + -Wl,--lto-O3 \ + -Wl,--strip-all \ diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/series node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/series --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/series 2023-12-21 11:14:59.000000000 +0100 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/patches/series 2024-04-13 11:18:29.000000000 +0200 @@ -10,3 +10,5 @@ update-httpbin.org-test-timeout.patch CVE-2023-45143.patch generate-undici-package-types.patch +Add-publish-types-script-2273.patch +build-Fix-incorrect-syntax-for-error-limit.patch diff -Nru node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/rules node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/rules --- node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/rules 2022-07-20 12:53:10.000000000 +0200 +++ node-undici-5.15.0+dfsg1+~cs20.10.9.3/debian/rules 2024-04-13 11:18:29.000000000 +0200 @@ -10,6 +10,11 @@ %: dh $@ +override_dh_auto_build: + # Override the global undici-types with our local copy. + cp -r types node_modules/undici-types + dh_auto_build --buildsystem=nodejs + override_dh_auto_test: # autopkgtest only