Your message dated Mon, 02 Jun 2025 18:38:19 +0000
with message-id <e1uma39-003cfu...@respighi.debian.org>
and subject line unblock jupyterhub
has caused the Debian Bug report #1106727,
regarding unblock: jupyterhub/5.2.1+ds1-4
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1106727: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1106727
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: jupyter...@packages.debian.org
Control: affects -1 + src:jupyterhub
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package jupyterhub

It fixed a bunch of bugs in order to have a working jupyterhub in trixie.
- Added the alembic dependency
- rebuilt the javascript part in order to provide a working frontend for users.
- use ucf to deal with the jupyterhub config file.

It passe all tests on salsa.debian.org except the reproducible test.
for now the package do not have the test suite activated since a dependency is 
missing.

https://salsa.debian.org/python-team/packages/jupyterhub/-/pipelines/871348

With these changes, it is now possible to start a jupyterhub (by default it 
accepts no connetion but listen on all port)

[ Impact ]
(What is the impact for the user if the unblock isn't granted?)

a non working jupyterhub service.

[ Tests ]
(What automated or manual tests cover the affected code?)

I tested all this on my computer and it is in use in our institut with those 
modifications.

[ Risks ]
(Discussion of the risks involved. E.g. code is trivial or
complex, key package vs leaf package, alternatives available.)

the package is a leaf package, there is no change in the upstream code, only 
packaging modifications.

[ 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

thanks for considering

unblock jupyterhub/5.2.1+ds1-4
diff -Nru jupyterhub-5.2.1+ds1/debian/changelog 
jupyterhub-5.2.1+ds1/debian/changelog
--- jupyterhub-5.2.1+ds1/debian/changelog       2025-03-16 17:47:16.000000000 
+0100
+++ jupyterhub-5.2.1+ds1/debian/changelog       2025-05-28 11:40:25.000000000 
+0200
@@ -1,3 +1,23 @@
+jupyterhub (5.2.1+ds1-4) unstable; urgency=medium
+
+  * use ucf in order to manage the config file
+  * Bug fix: "config.yaml config file that comes in package is never
+    read", thanks to Guillaume Knispel (Closes: #1038110).
+
+ -- Picca Frédéric-Emmanuel <pi...@debian.org>  Wed, 28 May 2025 11:40:25 +0200
+
+jupyterhub (5.2.1+ds1-3) unstable; urgency=medium
+
+  * Bug fix: "missing python3-alembic dependency", thanks to Picca
+    Frédéric-Emmanuel (Closes: #1104404).
+  * Bug fix: "move from twitter-bootstrap{3,4} to bootstrap-html (v5)",
+    thanks to santiag...@riseup.net</a>; (Closes: #1088461).
+  * Bug fix: "Could not open static file
+    
&#39;/usr/share/jupyterhub/static/components/bootstrap/dist/js/bootstrap&gt;",
+    thanks to Picca Frédéric-Emmanuel (Closes: #1104588).
+
+ -- Picca Frédéric-Emmanuel <pi...@debian.org>  Wed, 07 May 2025 18:14:37 +0200
+
 jupyterhub (5.2.1+ds1-2) unstable; urgency=medium
 
   * Team upload.
diff -Nru jupyterhub-5.2.1+ds1/debian/control 
jupyterhub-5.2.1+ds1/debian/control
--- jupyterhub-5.2.1+ds1/debian/control 2025-03-16 17:47:16.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/control 2025-05-28 11:40:25.000000000 +0200
@@ -9,6 +9,14 @@
  debhelper-compat (= 13),
  dh-sequence-python3,
  help2man,
+ libjs-moment,
+ node-bootstrap,
+ node-fortawesome-fontawesome-free,
+ node-jquery,
+ node-moment,
+ node-node-sass,
+ node-requirejs,
+ pkg-js-tools,
  python3-alembic,
  python3-all,
  python3-async-generator,
@@ -39,8 +47,9 @@
 Package: jupyterhub
 Architecture: all
 Depends:
+ alembic,
  fonts-font-awesome,
- libjs-bootstrap,
+ libjs-bootstrap5,
  libjs-jquery,
  libjs-prototype,
  libjs-requirejs,
diff -Nru jupyterhub-5.2.1+ds1/debian/dirs jupyterhub-5.2.1+ds1/debian/dirs
--- jupyterhub-5.2.1+ds1/debian/dirs    2025-03-16 17:47:16.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/dirs    2025-05-28 11:40:25.000000000 +0200
@@ -1,2 +1,2 @@
-/etc/jupyterhub/config/jupyterhub_config.d
+/etc/jupyterhub
 /var/lib/jupyterhub
diff -Nru jupyterhub-5.2.1+ds1/debian/install 
jupyterhub-5.2.1+ds1/debian/install
--- jupyterhub-5.2.1+ds1/debian/install 2025-03-16 17:47:16.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/install 1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-50-use-configurable-http-proxy.py /etc/jupyterhub/config/jupyterhub_config.d
-config.yaml /etc/jupyterhub/config/jupyterhub_config.d
diff -Nru jupyterhub-5.2.1+ds1/debian/jupyterhub.maintscript 
jupyterhub-5.2.1+ds1/debian/jupyterhub.maintscript
--- jupyterhub-5.2.1+ds1/debian/jupyterhub.maintscript  1970-01-01 
01:00:00.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/jupyterhub.maintscript  2025-05-28 
11:40:25.000000000 +0200
@@ -0,0 +1,2 @@
+rm_conffile 
/etc/jupyterhub/config/jupyterhub_config.d/50-use-configurable-http-proxy.py 
5.2.1+ds1-4~
+rm_conffile /etc/jupyterhub/config/jupyterhub_config.d/config.yaml 5.2.1+ds1-4~
diff -Nru jupyterhub-5.2.1+ds1/debian/jupyterhub.service 
jupyterhub-5.2.1+ds1/debian/jupyterhub.service
--- jupyterhub-5.2.1+ds1/debian/jupyterhub.service      2025-03-16 
17:47:16.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/jupyterhub.service      2025-05-28 
11:40:25.000000000 +0200
@@ -8,7 +8,7 @@
 PrivateDevices=yes
 ProtectKernelTunables=yes
 ProtectKernelModules=yes
-ExecStart=/usr/bin/python3 -m jupyterhub.app -f 
/etc/jupyterhub/config/jupyterhub_config.d/config.yaml --upgrade-db
+ExecStart=/usr/bin/python3 -m jupyterhub.app -f 
/etc/jupyterhub/jupyterhub_config.py --upgrade-db
 
 [Install]
 WantedBy=multi-user.target
diff -Nru jupyterhub-5.2.1+ds1/debian/jupyterhub.ucf 
jupyterhub-5.2.1+ds1/debian/jupyterhub.ucf
--- jupyterhub-5.2.1+ds1/debian/jupyterhub.ucf  1970-01-01 01:00:00.000000000 
+0100
+++ jupyterhub-5.2.1+ds1/debian/jupyterhub.ucf  2025-05-28 11:40:25.000000000 
+0200
@@ -0,0 +1 @@
+/usr/share/jupyterhub/jupyterhub_config.py /etc/jupyterhub/jupyterhub_config.py
\ Pas de fin de ligne à la fin du fichier
diff -Nru jupyterhub-5.2.1+ds1/debian/links jupyterhub-5.2.1+ds1/debian/links
--- jupyterhub-5.2.1+ds1/debian/links   2025-03-16 17:47:16.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/links   2025-05-28 11:40:25.000000000 +0200
@@ -1,8 +1,4 @@
-/usr/share/fonts/opentype/font-awesome/FontAwesome.otf 
/usr/share/jupyterhub/static/components/font-awesome/fonts/FontAwesome.otf
-/usr/share/fonts/truetype/font-awesome/fontawesome-webfont.ttf 
/usr/share/jupyterhub/static/components/font-awesome/fonts/fontawesome-webfont.ttf
-/usr/share/javascript/bootstrap 
/usr/share/jupyterhub/static/components/bootstrap
-/usr/share/javascript/bootstrap/css/bootstrap.css.map 
/usr/share/jupyterhub/static/css/style.min.css.map
-/usr/share/javascript/bootstrap/css/bootstrap.min.css 
/usr/share/jupyterhub/static/css/style.min.css
-/usr/share/javascript/jquery /usr/share/jupyterhub/static/components/jquery
+/usr/share/javascript/bootstrap5 
/usr/share/jupyterhub/static/components/bootstrap/dist
+/usr/share/javascript/jquery 
/usr/share/jupyterhub/static/components/jquery/dist
 /usr/share/javascript/moment /usr/share/jupyterhub/static/components/moment
 /usr/share/javascript/requirejs 
/usr/share/jupyterhub/static/components/requirejs
diff -Nru jupyterhub-5.2.1+ds1/debian/patches/0001-Add-empty-config-file.patch 
jupyterhub-5.2.1+ds1/debian/patches/0001-Add-empty-config-file.patch
--- jupyterhub-5.2.1+ds1/debian/patches/0001-Add-empty-config-file.patch        
2025-03-16 17:47:16.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/patches/0001-Add-empty-config-file.patch        
1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-From: Roland Mas <lola...@debian.org>
-Date: Wed, 2 Jun 2021 16:06:35 +0200
-Subject: Add empty config file
-
----
- config.yaml | 1 +
- 1 file changed, 1 insertion(+)
- create mode 100644 config.yaml
-
-diff --git a/config.yaml b/config.yaml
-new file mode 100644
-index 0000000..ed97d53
---- /dev/null
-+++ b/config.yaml
-@@ -0,0 +1 @@
-+---
diff -Nru 
jupyterhub-5.2.1+ds1/debian/patches/0002-Use-configurable-http-proxy-instead-of-Traefik.patch
 
jupyterhub-5.2.1+ds1/debian/patches/0002-Use-configurable-http-proxy-instead-of-Traefik.patch
--- 
jupyterhub-5.2.1+ds1/debian/patches/0002-Use-configurable-http-proxy-instead-of-Traefik.patch
       2025-03-16 17:47:16.000000000 +0100
+++ 
jupyterhub-5.2.1+ds1/debian/patches/0002-Use-configurable-http-proxy-instead-of-Traefik.patch
       1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-From: Roland Mas <lola...@debian.org>
-Date: Tue, 21 Sep 2021 12:08:23 +0200
-Subject: Use configurable-http-proxy instead of Traefik
-
----
- 50-use-configurable-http-proxy.py | 1 +
- 1 file changed, 1 insertion(+)
- create mode 100644 50-use-configurable-http-proxy.py
-
-diff --git a/50-use-configurable-http-proxy.py 
b/50-use-configurable-http-proxy.py
-new file mode 100644
-index 0000000..2ae0c29
---- /dev/null
-+++ b/50-use-configurable-http-proxy.py
-@@ -0,0 +1 @@
-+c.JupyterHub.proxy_class = 'jupyterhub.proxy.ConfigurableHTTPProxy'
diff -Nru 
jupyterhub-5.2.1+ds1/debian/patches/0003-Do-not-use-npm-even-if-available-during-build.patch
 
jupyterhub-5.2.1+ds1/debian/patches/0003-Do-not-use-npm-even-if-available-during-build.patch
--- 
jupyterhub-5.2.1+ds1/debian/patches/0003-Do-not-use-npm-even-if-available-during-build.patch
        2025-03-16 17:47:16.000000000 +0100
+++ 
jupyterhub-5.2.1+ds1/debian/patches/0003-Do-not-use-npm-even-if-available-during-build.patch
        2025-05-28 11:40:25.000000000 +0200
@@ -3,21 +3,70 @@
 Subject: Do not use npm even if available during build
 
 ---
- setup.py | 4 ++++
- 1 file changed, 4 insertions(+)
+ setup.py | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
 
 diff --git a/setup.py b/setup.py
-index 611b822..736f958 100755
+index 611b822..20549c0 100755
 --- a/setup.py
 +++ b/setup.py
-@@ -85,6 +85,10 @@ class NPM(BaseCommand):
+@@ -28,6 +28,8 @@ static = pjoin(share_jupyterhub, 'static')
+ 
+ is_repo = os.path.exists(pjoin(here, '.git'))
+ 
++NPM_PATH="pkgjs"
++
+ # Build basic package data, etc.
+ 
+ 
+@@ -85,6 +87,9 @@ class NPM(BaseCommand):
      bower_dir = pjoin(static, 'components')
  
      def should_run(self):
-+        return False
-+        if not shutil.which('npm'):
++        if not shutil.which(NPM_PATH):
 +            print("npm unavailable", file=sys.stderr)
 +            return False
          if not os.path.exists(self.bower_dir):
              return True
          if not os.path.exists(self.node_modules):
+@@ -100,7 +105,7 @@ class NPM(BaseCommand):
+ 
+         print("installing js dependencies with npm")
+         check_call(
+-            ['npm', 'install', '--progress=false', '--unsafe-perm'],
++            [NPM_PATH, 'install', '--progress=false', '--unsafe-perm'],
+             cwd=here,
+             shell=shell,
+         )
+@@ -153,7 +158,7 @@ class CSS(BaseCommand):
+         self.run_command('js')
+         print("Building css")
+ 
+-        args = ['npm', 'run', 'css']
++        args = [NPM_PATH, 'run', 'css']
+         try:
+             check_call(args, cwd=here, shell=shell)
+         except OSError as e:
+@@ -190,19 +195,19 @@ class JSX(BaseCommand):
+             print("JSX admin app is up to date")
+             return
+ 
+-        if not shutil.which('npm'):
++        if not shutil.which(NPM_PATH):
+             raise Exception('JSX needs to be updated but npm is not 
installed')
+ 
+         print("Installing JSX admin app requirements")
+         check_call(
+-            ['npm', 'install', '--progress=false', '--unsafe-perm'],
++            [NPM_PATH, 'install', '--progress=false', '--unsafe-perm'],
+             cwd=self.jsx_dir,
+             shell=shell,
+         )
+ 
+         print("Building JSX admin app")
+         check_call(
+-            ["npm", "run", "build"],
++            [NPM_PATH, "run", "build"],
+             cwd=self.jsx_dir,
+             shell=shell,
+         )
diff -Nru jupyterhub-5.2.1+ds1/debian/patches/0004-use-node-sass.patch 
jupyterhub-5.2.1+ds1/debian/patches/0004-use-node-sass.patch
--- jupyterhub-5.2.1+ds1/debian/patches/0004-use-node-sass.patch        
1970-01-01 01:00:00.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/patches/0004-use-node-sass.patch        
2025-05-28 11:40:25.000000000 +0200
@@ -0,0 +1,21 @@
+From: =?utf-8?q?Picca_Fr=C3=A9d=C3=A9ric-Emmanuel?= <pi...@debian.org>
+Date: Wed, 7 May 2025 16:52:43 +0200
+Subject: use node-sass
+
+---
+ package.json | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/package.json b/package.json
+index 8b651bf..24efde5 100644
+--- a/package.json
++++ b/package.json
+@@ -10,7 +10,7 @@
+   },
+   "scripts": {
+     "postinstall": "python3 ./bower-lite",
+-    "css": "sass --style compressed -I share/jupyterhub/static/components 
--source-map 
share/jupyterhub/static/scss/style.scss:share/jupyterhub/static/css/style.min.css",
++    "css": "node-sass --output-style compressed --include-path 
share/jupyterhub/static/components --source-map=true 
share/jupyterhub/static/scss/style.scss > 
share/jupyterhub/static/css/style.min.css",
+     "build:watch": "npm run css -- --watch"
+   },
+   "devDependencies": {
diff -Nru jupyterhub-5.2.1+ds1/debian/patches/series 
jupyterhub-5.2.1+ds1/debian/patches/series
--- jupyterhub-5.2.1+ds1/debian/patches/series  2025-03-16 17:47:16.000000000 
+0100
+++ jupyterhub-5.2.1+ds1/debian/patches/series  2025-05-28 11:40:25.000000000 
+0200
@@ -1,3 +1,2 @@
-0001-Add-empty-config-file.patch
-0002-Use-configurable-http-proxy-instead-of-Traefik.patch
 0003-Do-not-use-npm-even-if-available-during-build.patch
+0004-use-node-sass.patch
diff -Nru jupyterhub-5.2.1+ds1/debian/postinst 
jupyterhub-5.2.1+ds1/debian/postinst
--- jupyterhub-5.2.1+ds1/debian/postinst        2025-03-16 17:47:16.000000000 
+0100
+++ jupyterhub-5.2.1+ds1/debian/postinst        2025-05-28 11:40:25.000000000 
+0200
@@ -1,42 +1,16 @@
 #!/bin/sh
-# postinst script
-#
-# see: dh_installdeb(1)
-
 set -e
 
-# summary of how this script can be called:
-#        * <postinst> `configure' <most-recently-configured-version>
-#        * <old-postinst> `abort-upgrade' <new version>
-#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-#          <new-version>
-#        * <postinst> `abort-remove'
-#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-#          <failed-install-package> <version> `removing'
-#          <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
 #DEBHELPER#
 
-case "$1" in
-    configure)
-       config_file=/etc/jupyterhub/jupyterhub_config.py
-       if ! [ -e "$config_file" ] ; then
-           jupyterhub --generate-config -f "$config_file"
-       fi
-    ;;
-
-    abort-upgrade|abort-remove|abort-deconfigure)
-    ;;
-
-    *)
-        echo "postinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-exit 0
+if [ "${1}" = "configure" ] && [ ! -z "${2}" ]; then
+    if dpkg --compare-versions ${2} le "5.2.1+ds1-4~"; then
+        if [ -d /etc/jupyterhub/config/jupyterhub_config.d ]; then
+           rmdir --ignore-fail-on-non-empty -p 
/etc/jupyterhub/config/jupyterhub_config.d
+        fi
+
+        if [ -d /etc/jupyterhub/config ]; then
+           rmdir --ignore-fail-on-non-empty -p /etc/jupyterhub/config
+        fi
+    fi
+fi
diff -Nru jupyterhub-5.2.1+ds1/debian/rules jupyterhub-5.2.1+ds1/debian/rules
--- jupyterhub-5.2.1+ds1/debian/rules   2025-03-16 17:47:16.000000000 +0100
+++ jupyterhub-5.2.1+ds1/debian/rules   2025-05-28 11:40:25.000000000 +0200
@@ -1,15 +1,23 @@
 #!/usr/bin/make -f
 
-# This file was automatically generated by stdeb 0.10.0 at
-# Wed, 26 May 2021 19:12:50 +0200
-export PYBUILD_NAME=jupyterhub
 PYVERS=$(shell py3versions -d)
 PYPATH=debian/jupyterhub/usr/lib/$(PYVERS)/dist-packages
+
+export PYBUILD_NAME=jupyterhub
+
 %:
        dh $@ --buildsystem=pybuild
 
+execute_before_dh_auto_build:
+       pkgjs-install-minimal
+       -cp -fd node_modules/* share/jupyterhub/static/components
+       mkdir -p share/jupyterhub/static/css
+
 execute_after_dh_auto_install:
        PYTHONPATH=$(PYPATH) help2man --output=jupyterhub.1 --name="Multi-user 
server for Jupyter notebooks" --version-string=$$(dpkg-parsechangelog -S 
Version | sed s/-[^-]*$$//) debian/jupyterhub/usr/bin/jupyterhub
        PYTHONPATH=$(PYPATH) help2man --output=jupyterhub-singleuser.1 
--name="Single-user server for Jupyter notebooks" 
--version-string=$$(dpkg-parsechangelog -S Version | sed s/-[^-]*$$//) 
debian/jupyterhub/usr/bin/jupyterhub-singleuser
 
+       # generate and install the config file
+       PYTHONPATH=$(PYPATH) debian/jupyterhub/usr/bin/jupyterhub 
--generate-config -f debian/jupyterhub/usr/share/jupyterhub/jupyterhub_config.py
+
 override_dh_auto_test:
diff -Nru jupyterhub-5.2.1+ds1/debian/salsa-ci.yml 
jupyterhub-5.2.1+ds1/debian/salsa-ci.yml
--- jupyterhub-5.2.1+ds1/debian/salsa-ci.yml    1970-01-01 01:00:00.000000000 
+0100
+++ jupyterhub-5.2.1+ds1/debian/salsa-ci.yml    2025-05-28 11:40:25.000000000 
+0200
@@ -0,0 +1,3 @@
+---
+include:
+  - 
https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
\ Pas de fin de ligne à la fin du fichier

--- End Message ---
--- Begin Message ---
Unblocked jupyterhub.

--- End Message ---

Reply via email to