[Debian-pan-maintainers] Bug#1107769: unblock: jupyterlab/4.0.11+ds1+~cs11.25.27-7

Picca Frédéric-Emmanuel picca at debian.org
Sat Jun 14 06:05:24 BST 2025


Package: release.debian.org
Severity: normal
X-Debbugs-Cc: jupyterlab at packages.debian.org
Control: affects -1 + src:jupyterlab
User: release.debian.org at packages.debian.org
Usertags: unblock

Please unblock package jupyterlab

I prepare a working version of jupyterlab.


[ Reason ]

The -6 version is not working at all due to an issue in the packaging, which was fixed by Jeremy-lal #1102558

I also fixed a few remaining issue, wchih prevented jupyterlab from being well integrated.
I switch to the upstream build system, instead of the Debian home made setuptools conf. This way all expected files are installed.

[ Impact ]

A non working jupyterlab. 5when starting the application the browser present a blanck screen due to #1102558.

[ Tests ]

I installed this version in our institut synchrotron-soleil, and I can confirme thaht it works.

To test you can install jupyterlab and run this command

jupyter-lab

it should open a browser and present a working jupyter lab application.

[ Risks ]

not a great risque, since the current version is non focntionnal.

[ 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 testing

[ Other info ]

Sorry I updated the patches series with gbp-pq and it seems that it changed one patch metadata.

unblock jupyterlab/4.0.11+ds1+~cs11.25.27-7
-------------- next part --------------
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/changelog jupyterlab-4.0.11+ds1+~cs11.25.27/debian/changelog
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/changelog	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/changelog	2025-06-05 14:45:20.000000000 +0200
@@ -1,3 +1,25 @@
+jupyterlab (4.0.11+ds1+~cs11.25.27-7) unstable; urgency=medium
+
+  * Team upload
+  [ J?r?my Lal ]
+  * Fix build of bundled browser module (Closes: #1102558).
+    Adds a webpack plugin to support modules prefixed by "node:".
+
+  [ Picca Fr?d?ric-Emmanuel ]
+  * switch to the upstream (hatchling) build system.
+    - now jupyterlab is well integrated with jupyterhub
+    - do not install examples at the wrong place.
+    - the Python dist-info are right.
+  * Bug fix: "missing four files from upstream distribution", thanks to
+    Julian Gilbey (Closes: #1101429).
+  * Bug fix: "advertises Python package version as 0.0.0", thanks to
+    Julian Gilbey (Closes: #1086709).
+  * Bug fix: "installs examples into dist-packages", thanks to Piotr
+    O?arowski (Closes: #1102934).
+  * d/control: B-D on webpack (>= 5.97.1+dfsg1+~cs11.18.27-3~)
+
+ -- Picca Fr?d?ric-Emmanuel <picca at debian.org>  Thu, 05 Jun 2025 14:45:20 +0200
+
 jupyterlab (4.0.11+ds1+~cs11.25.27-6) unstable; urgency=medium
 
   * Declare compliance with policy 4.7.2
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/clean jupyterlab-4.0.11+ds1+~cs11.25.27/debian/clean
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/clean	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/clean	1970-01-01 01:00:00.000000000 +0100
@@ -1,29 +0,0 @@
-.pybuild/
-builder/lib/
-buildutils/lib/
-buildutils/*/lib/
-dev_mode/schemas/
-dev_mode/static/
-dev_mode/themes/
-duplicate-package-checker-webpack-plugin/lib/
-galata/extension/lib/
-galata/lib/
-jupyter-ydoc/javascript/lib/
-
-jupyterlab/galata/@jupyterlab/
-jupyterlab/schemas/
-jupyterlab/staging/build/
-jupyterlab/static/
-jupyterlab/style.js
-jupyterlab/themes/
-
-
-packages/nbconvert-css/style/
-packages/*/lib/
-packages/*/tsconfig.tsbuildinfo
-
-node_modules/
-*/node_modules/
-*/*/node_modules/
-*/tsconfig.tsbuildinfo
-*/*/tsconfig.tsbuildinfo
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/control jupyterlab-4.0.11+ds1+~cs11.25.27/debian/control
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/control	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/control	2025-06-05 14:45:20.000000000 +0200
@@ -7,7 +7,7 @@
 Testsuite: autopkgtest-pkg-nodejs
 Build-Depends: debhelper-compat (= 13)
  , dh-nodejs (>= 0.15.22~)
- , dh-python (>= 2.20160609~)
+ , dh-sequence-python3
  , node-ajv (>= 8)
  , node-babel7
  , node-codemirror-autocomplete
@@ -110,6 +110,7 @@
  , node-y-codemirror
  , node-y-protocols
  , node-yjs
+ , pybuild-plugin-pyproject
  , python3-all
  , python3-async-lru
  , python3-hatch-jupyter-builder
@@ -117,8 +118,7 @@
  , python3-jupyterlab-server
  , python3-notebook
  , python3-notebook-shim
- , python3-setuptools
- , webpack
+ , webpack (>= 5.97.1+dfsg1+~cs11.18.27-3~)
  , yarnpkg
 Standards-Version: 4.7.2
 Homepage: https://github.com/jupyterlab/jupyterlab
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/0001-setuptools-list-packages-to-build.patch jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/0001-setuptools-list-packages-to-build.patch
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/0001-setuptools-list-packages-to-build.patch	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/0001-setuptools-list-packages-to-build.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-From: Roland Mas <roland.mas at entierement.net>
-Date: Wed, 25 Oct 2023 08:01:12 +0200
-Subject: setuptools: list packages to build
-
----
- pyproject.toml | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/pyproject.toml b/pyproject.toml
-index 59c4b56..5862575 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -308,3 +308,11 @@ ignore = [
- "packages/services/examples/node/main.py" = ["RUF012"]
- # T201 `print` found
- "scripts/i18n_check.py" = ["T201"]
-+
-+#[tool.setuptools]
-+#packages = ['jupyterlab']
-+
-+[tool.setuptools.packages.find]
-+where = ["."]
-+#include = ["pkg*"]  # alternatively: `exclude = ["additional*"]`
-+#namespaces = false
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/fix-build.patch jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/fix-build.patch
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/fix-build.patch	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/fix-build.patch	2025-06-05 14:45:20.000000000 +0200
@@ -9,11 +9,9 @@
  dev_mode/webpack.config.js     | 10 +++++-----
  2 files changed, 6 insertions(+), 5 deletions(-)
 
-diff --git a/builder/src/webpack-plugins.ts b/builder/src/webpack-plugins.ts
-index 0c97ce0..5d97394 100644
 --- a/builder/src/webpack-plugins.ts
 +++ b/builder/src/webpack-plugins.ts
-@@ -242,6 +242,7 @@ export namespace WPPlugin {
+@@ -242,6 +242,7 @@
        for (const mod of modules) {
          report.packages.push({
            name: mod.name || '',
@@ -21,11 +19,9 @@
            versionInfo: mod.packageJson.version || '',
            licenseId: mod.licenseId || '',
            extractedText: mod.licenseText || ''
-diff --git a/dev_mode/webpack.config.js b/dev_mode/webpack.config.js
-index 4beb160..70c9ed9 100644
 --- a/dev_mode/webpack.config.js
 +++ b/dev_mode/webpack.config.js
-@@ -9,8 +9,8 @@ const Handlebars = require('handlebars');
+@@ -9,8 +9,8 @@
  const HtmlWebpackPlugin = require('html-webpack-plugin');
  const webpack = require('webpack');
  const merge = require('webpack-merge').default;
@@ -36,7 +32,20 @@
  const baseConfig = require('@jupyterlab/builder/lib/webpack.config.base');
  const { ModuleFederationPlugin } = webpack.container;
  
-@@ -272,9 +272,9 @@ const plugins = [
+@@ -243,7 +243,12 @@
+   shared[pkg].singleton = true;
+ }
+ 
++const nodePrefixReg = /^node:/;
++
+ const plugins = [
++  new webpack.NormalModuleReplacementPlugin(nodePrefixReg, res => {
++    res.request = res.request.replace(nodePrefixReg, '');
++  }),
+   new WPPlugin.NowatchDuplicatePackageCheckerPlugin({
+     verbose: true,
+     exclude(instance) {
+@@ -272,9 +277,9 @@
    })
  ];
  
@@ -49,3 +58,18 @@
  
  module.exports = [
    merge(baseConfig, {
+--- a/jupyterlab/staging/webpack.config.js
++++ b/jupyterlab/staging/webpack.config.js
+@@ -242,7 +242,12 @@
+   shared[pkg].singleton = true;
+ }
+ 
++const nodePrefixReg = /^node:/;
++
+ const plugins = [
++  new webpack.NormalModuleReplacementPlugin(nodePrefixReg, res => {
++    res.request = res.request.replace(nodePrefixReg, '');
++  }),
+   new WPPlugin.NowatchDuplicatePackageCheckerPlugin({
+     verbose: true,
+     exclude(instance) {
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/fix-webpack.patch jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/fix-webpack.patch
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/fix-webpack.patch	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/fix-webpack.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,30 +0,0 @@
-Description: fix regression in commonjs build
-Author: Yadd <yadd at debian.org>
-Bug-Debian: https://bugs.debian.org/1101851
-Forwarded: not-needed
-Last-Update: 2025-04-02
-
---- a/dev_mode/webpack.prod.minimize.config.js
-+++ b/dev_mode/webpack.prod.minimize.config.js
-@@ -36,6 +36,9 @@
-       })
-     ]
-   },
-+  externals: {
-+    'node:crypto': 'commonjs crypto',
-+  },
-   plugins: [
-     new WPPlugin.JSONLicenseWebpackPlugin({
-       excludedPackageTest: packageName =>
---- a/jupyterlab/staging/webpack.prod.minimize.config.js
-+++ b/jupyterlab/staging/webpack.prod.minimize.config.js
-@@ -37,6 +37,9 @@
-       })
-     ]
-   },
-+  externals: {
-+    'node:crypto': 'commonjs crypto',
-+  },
-   plugins: [
-     new WPPlugin.JSONLicenseWebpackPlugin({
-       excludedPackageTest: packageName =>
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/reproducible.patch jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/reproducible.patch
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/reproducible.patch	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/reproducible.patch	2025-06-05 14:45:20.000000000 +0200
@@ -44,7 +44,7 @@
      "build:prod:minimize": "webpack --config webpack.prod.minimize.config.js",
 --- a/dev_mode/webpack.config.js
 +++ b/dev_mode/webpack.config.js
-@@ -276,6 +276,7 @@
+@@ -281,6 +281,7 @@
  //  plugins.push(new BundleAnalyzerPlugin());
  //}
  
@@ -52,7 +52,7 @@
  module.exports = [
    merge(baseConfig, {
      mode: 'development',
-@@ -285,7 +286,7 @@
+@@ -290,7 +291,7 @@
      output: {
        path: path.resolve(buildDir),
        publicPath: '{{page_config.fullStaticUrl}}/',
@@ -113,7 +113,7 @@
      "build:prod:minimize": "webpack --config webpack.prod.minimize.config.js",
 --- a/jupyterlab/staging/webpack.config.js
 +++ b/jupyterlab/staging/webpack.config.js
-@@ -271,6 +271,7 @@
+@@ -276,6 +276,7 @@
    })
  ];
  
@@ -121,7 +121,7 @@
  module.exports = [
    merge(baseConfig, {
      mode: 'development',
-@@ -280,7 +281,7 @@
+@@ -285,7 +286,7 @@
      output: {
        path: path.resolve(buildDir),
        publicPath: '{{page_config.fullStaticUrl}}/',
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/series jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/series
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/series	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/patches/series	2025-06-05 14:45:20.000000000 +0200
@@ -1,4 +1,3 @@
-0001-setuptools-list-packages-to-build.patch
 0002-drop-useless-and-unavailable-plugins.patch
 0003-Use-system-provided-yarn.js.patch
 fix-package-list.patch
@@ -11,4 +10,3 @@
 fix-babel-config.patch
 reproducible.patch
 CVE-2024-43805.patch
-fix-webpack.patch
diff -Nru jupyterlab-4.0.11+ds1+~cs11.25.27/debian/rules jupyterlab-4.0.11+ds1+~cs11.25.27/debian/rules
--- jupyterlab-4.0.11+ds1+~cs11.25.27/debian/rules	2025-04-02 18:46:10.000000000 +0200
+++ jupyterlab-4.0.11+ds1+~cs11.25.27/debian/rules	2025-06-05 14:45:20.000000000 +0200
@@ -15,53 +15,56 @@
 export NODE_ENV=production
 
 %:
-	dh $@ --with python3 --buildsystem=pybuild
+	dh $@
 
-execute_after_dh_auto_configure:
+override_dh_auto_configure:
 	dh_auto_configure --buildsystem=nodejs
+	dh_auto_configure --buildsystem=pybuild
 
-execute_after_dh_auto_build:
+override_dh_auto_build:
 	# Replace html-loader preprocessing
 	grep -lr '<%= require(.html-loader'|./debian/html-loader.pl
 	# Update build links
 	ln -s ../../packages/fileeditor-extension node_modules/@jupyterlab/ || true
 	# Build duplicate-package-checker-webpack-plugin
 	cd duplicate-package-checker-webpack-plugin && sh -ex ../debian/nodejs/duplicate-package-checker-webpack-plugin/build
+
 	# Build @jupyterlab/* libraries
+	# activating the next line
+	# dh_auto_build --buildsystem=nodejs
+	# produce this error during the build
+	# dh_auto_build: warning: Max loop command exceed, aborting
+	# dh_auto_build: warning: Max loop command exceed, aborting
+	# instead call directly the nodejs build script
 	sh -ex debian/nodejs/build
-	cd jupyterlab/staging && \
-		webpack --config webpack.prod.minimize.config.js
 
-execute_after_dh_auto_install:
-	# Install Node.js libraries
+	dh_auto_build --buildsystem=pybuild
+
+override_dh_auto_install:
 	dh_auto_install --buildsystem=nodejs
+	dh_auto_install --buildsystem=pybuild
+
 
 execute_after_dh_install:
-	mkdir -p $(JUPYTERLAB_DIR)
-	for i in $(shell py3versions -s) ; do \
-		ln -s ../../../python3/dist-packages/jupyterlab/staging \
-			../../../python3/dist-packages/jupyterlab/node-version-check.js \
-		 debian/jupyterlab/usr/lib/$$i/dist-packages/jupyterlab/ || true; \
-		cp -f jupyterlab/staging/yarn.js \
-			debian/jupyterlab/usr/lib/$$i/dist-packages/jupyterlab/staging/; \
-	done
-	set -e ; TMPDIR=$$(mktemp -d) ; \
-		HOME=$$TMPDIR PYTHONPATH=$(CURDIR)/debian/jupyterlab/usr/lib/python$(PYVERS)/dist-packages/ \
-		 debian/jupyterlab/usr/bin/jupyter-lab build ; \
-		rm -r $$TMPDIR/
-	set -e; for i in $(BUILD_EXTENSIONS) ; do \
-		echo Building extension $$i ; \
-		TMPDIR=$$(mktemp -d) ; \
-		HOME=$$TMPDIR \
-		PATH=`pwd`/debian/jupyterlab/usr/bin/:$$PATH \
-		PYTHONPATH=$(CURDIR)/debian/jupyterlab/usr/lib/python$(PYVERS)/dist-packages/ \
-		 debian/jupyterlab/usr/bin/jupyter-labextension build $$i ; \
-		rm -r $$TMPDIR/ ; \
-	done
-	# Clean temporary files
-	rm -rf `find debian/jupyterlab -name __pycache__ -o -name node_modules`
+	# move /usr/etc files into /etc
+	mv -f debian/jupyterlab/usr/etc debian/jupyterlab/
+
+	# add the missing .js.map files ???
+	cp -f debian/jupyterlab/usr/lib/python3/dist-packages/jupyterlab/staging/build/*.js.map \
+              debian/jupyterlab/usr/share/jupyter/lab/static
+
+	# link instead of copy (to save space)
+	rm -rf /usr/lib/python3/dist-packages/jupyterlab/static
+	dh_link -p jupyterlab /usr/share/jupyter/lab/static /usr/lib/python3/dist-packages/jupyterlab/static
+	rm -rf /usr/lib/python3/dist-packages/jupyterlab/schemas
+	dh_link -p jupyterlab /usr/share/jupyter/lab/schemas /usr/lib/python3/dist-packages/jupyterlab/schemas
+	rm -rf /usr/lib/python3/dist-packages/jupyterlab/themes
+	dh_link -p jupyterlab /usr/share/jupyter/lab/themes /usr/lib/python3/dist-packages/jupyterlab/themes
+
+	# remove unwanted files
 	find debian/jupyterlab -name build_log.json -delete
 	rm -rf debian/jupyterlab/usr/lib/python3/dist-packages/jupyterlab/staging/build
+	rm -rf debian/jupyterlab/usr/lib/python3/dist-packages/jupyterlab/staging/node_modules
 
 override_dh_auto_test:
 	@echo "Tests disabled because of missing depends"


More information about the Debian-pan-maintainers mailing list