Project

General

Profile

Development #40372

python3: debian packaging

Added by Benjamin Dauvergne 4 months ago. Updated 4 days ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Target version:
-
Start date:
03 Mar 2020
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Peut-être en profiter pour passer à uwsgi aussi.

0002-drop-deprecated-python-raven-sentry-client-config-40.patch View (1.47 KB) Paul Marillonnet, 15 Apr 2020 11:21 AM

0001-python3-adapt-debian-packaging-40372.patch View (8.51 KB) Paul Marillonnet, 15 Apr 2020 11:21 AM

0002-drop-deprecated-python-raven-sentry-client-config-40.patch View (1.47 KB) Paul Marillonnet, 15 Apr 2020 05:38 PM

0001-python3-adapt-debian-packaging-40372.patch View (9.99 KB) Paul Marillonnet, 15 Apr 2020 05:38 PM

0002-drop-deprecated-python-raven-sentry-client-config-40.patch View (1.47 KB) Paul Marillonnet, 16 Apr 2020 11:39 AM

0001-python3-adapt-debian-packaging-40372.patch View (10.5 KB) Paul Marillonnet, 16 Apr 2020 11:39 AM

0002-drop-deprecated-python-raven-sentry-client-config-40.patch View (1.47 KB) Paul Marillonnet, 16 Apr 2020 12:28 PM

0001-python3-adapt-debian-packaging-40372.patch View (10.7 KB) Paul Marillonnet, 16 Apr 2020 12:28 PM


Related issues

Related to Authentic 2 - Development #29297: passer à uwsgi Nouveau 20 Dec 2018
Related to Authentic 2 - Development #41221: paquet python3-django-sekizai Solution déployée 01 Apr 2020
Related to ldaptools - Development #41222: paquet python3 Résolu (à déployer) 01 Apr 2020

Associated revisions

Revision 4e3c28e0 (diff)
Added by Benjamin Dauvergne 3 months ago

python3: adapt debian packaging (#40372)

Revision ac89d290 (diff)
Added by Paul Marillonnet 3 months ago

drop deprecated python-raven sentry client config (#40372)

Revision acfe661e (diff)
Added by Benjamin Dauvergne 3 months ago

Revert "python3: adapt debian packaging (#40372)"

This reverts commit 4e3c28e08e2d76096a3e0f4ecbb0f745acaef0de.

Revision 7ef148e0 (diff)
Added by Benjamin Dauvergne 4 days ago

python3: adapt debian packaging (#40372)

History

#1 Updated by Frédéric Péters 4 months ago

#2 Updated by Benjamin Dauvergne 4 months ago

  • Status changed from Nouveau to En cours

#3 Updated by Paul Marillonnet 3 months ago

#4 Updated by Paul Marillonnet 3 months ago

#5 Updated by Paul Marillonnet 3 months ago

En python3 le fichier de surcharge des dépendances python en paquets debian utilisé par dh-python3 doit se nommer py3dist-overrides.

#6 Updated by Benjamin Dauvergne 3 months ago

  • Assignee changed from Benjamin Dauvergne to Paul Marillonnet

#7 Updated by Paul Marillonnet 3 months ago

La dernière fois que j'avais joué avec cowbuilder pour tester la construction d'un paquet ça s'était mal passé :)
Je vais ré-essayer ici puisque de toute évidence un test s'impose, avec les deux patches joints.

#8 Updated by Benjamin Dauvergne 3 months ago

Paul Marillonnet a écrit :

La dernière fois que j'avais joué avec cowbuilder pour tester la construction d'un paquet ça s'était mal passé :)
Je vais ré-essayer ici puisque de toute évidence un test s'impose, avec les deux patches joints.

Tu peux aussi faire un debuild -uc -us -b dans le cas de la construction du binaire uniquement, sans consutruction du paquet source, on peut se passer d'eobuilder, mais ça ne teste pas dépendances de build il me semble.

#9 Updated by Paul Marillonnet 3 months ago

Benjamin Dauvergne a écrit :

Tu peux aussi faire un debuild -uc -us -b dans le cas de la construction du binaire uniquement, sans consutruction du paquet source, on peut se passer d'eobuilder, mais ça ne teste pas dépendances de build il me semble.

Nickel merci, après installation des paquets listés dans Build-Depends, la construction des paquets se passe sans encombre. Je vais taper un debootstrap pour tester l'installation sur stretch.

#10 Updated by Paul Marillonnet 3 months ago

Après quelques modifs (dont l'ajout des dépendances python3-django-ratelimit et python-requests-oauthlib), deux erreurs surviennent encore :
  • on dirait que des trucs on bougé dans les versions récentes de django-import-export. Lors du runserver pour authentic2-multitenant, je me mange cette erreur :
    Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7fdf00129840>
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/django/utils/autoreload.py", line 228, in wrapper
        fn(*args, **kwargs)
      File "/usr/lib/python3/dist-packages/django/core/management/commands/runserver.py", line 124, in inner_run
        self.check(display_num_errors=True)
      […]
      File "/usr/lib/python3/dist-packages/authentic2/manager/urls.py", line 22, in <module>
        from . import views, role_views, ou_views, user_views, service_views
      File "/usr/lib/python3/dist-packages/authentic2/manager/role_views.py", line 35, in <module>
        from . import tables, views, resources, forms, app_settings
      File "/usr/lib/python3/dist-packages/authentic2/manager/resources.py", line 20, in <module>
        from import_export.resources import ModelResource
      File "/usr/lib/python3/dist-packages/import_export/resources.py", line 10, in <module>
        from diff_match_patch import diff_match_patch
    ModuleNotFoundError: No module named 'diff_match_patch'
    

    Après installation du paquet python3-diff-match-patch ça fonctionne. Sans doute une erreur de packaging de django-import-export.
  • Un setting manquant au paramétrage postinst du paquet authentic2 :
    [....] Updating authentic2: authentic2[info] Applying new migrations ...
    Traceback (most recent call last):
      File "/usr/lib/authentic2/manage.py", line 21, in <module>
        execute_from_command_line(sys.argv[:1] + argv)
      File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
        utility.execute()
      File "/usr/lib/python3/dist-packages/django/core/management/__init__.py", line 308, in execute
        settings.INSTALLED_APPS
      File "/usr/lib/python3/dist-packages/django/conf/__init__.py", line 56, in __getattr__
        self._setup(name)
      File "/usr/lib/python3/dist-packages/django/conf/__init__.py", line 41, in _setup
        self._wrapped = Settings(settings_module)
      File "/usr/lib/python3/dist-packages/django/conf/__init__.py", line 110, in __init__
        mod = importlib.import_module(self.SETTINGS_MODULE)
      File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
      File "<frozen importlib._bootstrap>", line 983, in _find_and_load
      File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 728, in exec_module
      File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
      File "/usr/lib/python3/dist-packages/authentic2/settings.py", line 349, in <module>
        exec(fd.read())
      File "<string>", line 300, in <module>
    NameError: name 'DEFAULT_FROM_EMAIL' is not defined
    

#11 Updated by Paul Marillonnet 3 months ago

Pour le premier des deux soucis je taperais bien, dans notre dépôt debian/django-import-export :

diff --git a/debian/control b/debian/control
index d12ce86..8a6c310 100644
--- a/debian/control
+++ b/debian/control
@@ -7,12 +7,12 @@ Standards-Version: 3.9.1

 Package: python-django-import-export
 Architecture: all
-Depends: ${misc:Depends}, ${python:Depends}
+Depends: ${misc:Depends}, ${python:Depends}, python-diff-match-patch
 Description: Django application and library for importing and exporting data
  with included admin integration.

 Package: python3-django-import-export
 Architecture: all
-Depends: ${misc:Depends}, ${python:Depends}
+Depends: ${misc:Depends}, ${python:Depends}, python3-diff-match-patch
 Description: Django application and library for importing and exporting data
  with included admin integration.

#12 Updated by Paul Marillonnet 3 months ago

  • Status changed from Solution proposée to Information nécessaire

(Oulà je voulais passer le ticket dans le statut qui lui convient mais c'était sans compter sur le bout de JS qui le met furtivement en “Solution proposée” dès qu'un patch est joint…)

#13 Updated by Thomas Noël 3 months ago

Paul Marillonnet a écrit :

Pour le premier des deux soucis je taperais bien, dans notre dépôt debian/django-import-export :

C'était

-Depends: ${misc:Depends}, ${python:Depends}
+Depends: ${misc:Depends}, ${python3:Depends}

c'est packagé dans les x-eobuilder et x-testing.

#14 Updated by Paul Marillonnet 3 months ago

Thomas Noël a écrit :

c'est packagé dans les x-eobuilder et x-testing.

Merci c'était bien ça, bien vu.
Paquets générés avec debuild et apt-installés dans un debootstrap debian/stable, it works.

#15 Updated by Benjamin Dauvergne 3 months ago

  • Status changed from Solution proposée to Résolu (à déployer)

Tu peux virer ça :

    VERSION=`dpkg-query --show --showformat '${Version}' python-django`
    VERSION=`dpkg-query --show --showformat '${Version}' python3-django`
    if dpkg --compare-versions $VERSION lt 1.7; then
      su $USER -p -c "$MANAGE_SCRIPT syncdb --migrate --noinput" 
    else

on risque plus de mettre à jour une version <1.7 avec django-south, on fait la migration normale.

Pour le DEFAULT_FROM_EMAIL ça du se casser avec :

commit 96d6282d56525d0bc444a9cec98c65a7ef493311
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Wed Jun 6 16:45:50 2018 +0200

    dont' import everything from global_settings (#24081)

Tu peux juste remplacer la ligne if·DEFAULT_FROM_EMAIL·==·'webmaster@localhost': par

if not locals().get('DEFAULT_FROM_EMAIL'):

#16 Updated by Paul Marillonnet 3 months ago

#17 Updated by Benjamin Dauvergne 3 months ago

  • Status changed from Solution proposée to Solution validée

#18 Updated by Paul Marillonnet 3 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit ac89d290cefa11cca42c54cdccd7ace84714cdc3
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Wed Apr 1 11:09:05 2020 +0200

    drop deprecated python-raven sentry client config (#40372)

commit 4e3c28e08e2d76096a3e0f4ecbb0f745acaef0de
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Sun Mar 1 12:11:17 2020 +0100

    python3: adapt debian packaging (#40372)

#20 Updated by Frédéric Péters 3 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

#21 Updated by Paul Marillonnet about 1 month ago

  • Status changed from Solution déployée to En cours

Benj, quelles sont les dépendances pas à jour dont il était question sur jabber ?

#22 Updated by Frédéric Péters 10 days ago

Je notais ça ailleurs, c'était à propos de la branche wip/py3-packaging,

-       mv $(CURDIR)/debian/python-authentic2/usr/bin/authentic2-ctl $(CURDIR)/debian/python-authentic2/usr/lib/authentic2/manage.py
+       mv $(CURDIR)/debian/python3-authentic2/usr/bin/authentic2-ctl $(CURDIR)/debian/python3-authentic2/usr/lib/authentic2/manage.py

sans conflicts/replaces de python3-authentic2 sur python-authentic2, ça va amener à avoir les deux installés et ça va râler sur le fait que le /usr/lib/authentic2/manage.py est déjà distribué par python-authentic2.

Dans combo ça a été géré indépendamment de la migration (#36508) mais il n'y a pas de problème particulier à mêler les deux. (ça peut même être plus simple, et terminer sur un système où le paquet python-authentic2 n'est plus installé).

#23 Updated by Benjamin Dauvergne 5 days ago

Frédéric Péters a écrit :

sans conflicts/replaces de python3-authentic2 sur python-authentic2, ça va amener à avoir les deux installés et ça va râler sur le fait que le /usr/lib/authentic2/manage.py est déjà distribué par python-authentic2.

Ok j'ai ajouté ça sur la branche dans un commit temporaire, peux-tu me dire si c'est ok ?

diff --git a/debian/control b/debian/control
index a5d3c2a1..26fdf096 100644
--- a/debian/control
+++ b/debian/control
@@ -40,6 +40,8 @@ Depends: ${misc:Depends}, ${python3:Depends},
     python3-attr (>=17),
     python3-pycryptodome,
     python3-atomicwrites
+Conflicts: python-authentic2
+Replaces: python-authentic2
 Description: Versatile identity server
  Authentic is a versatile identity provider aiming to address a broad
  range of needs, from simple to complex setups; it has support for many

Bon à part ça je viens de tester le paquet sur un systemd-nspawn/buster à part le paquet python3-ldaptools qui n'était pas dans notre dépôt buster de prod, ça s'est installé sans souci, je pense que je vais pousser et tester ensuite le paquet eobuilder sur la dév, qu'elle serve un peu, pour voir en mise à jour ce que ça donne.

#24 Updated by Frédéric Péters 5 days ago

Ok j'ai ajouté ça sur la branche dans un commit temporaire, peux-tu me dire si c'est ok ?

C'est brutal mais ça doit marcher mais ailleurs on a plutôt déplacé le manage.py dans le paquet de l'application. (mais sans doute ce n'est pas possible dans authentic qui crée deux paquets applicatifs).

#25 Updated by Benjamin Dauvergne 4 days ago

  • Assignee changed from Paul Marillonnet to Benjamin Dauvergne

#26 Updated by Benjamin Dauvergne 4 days ago

  • Status changed from En cours to Résolu (à déployer)
commit 7ef148e0c56631eae8fda050c17c5a11545f5037
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Sun Mar 1 12:11:17 2020 +0100

    python3: adapt debian packaging (#40372)

#27 Updated by Frédéric Péters 4 days ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF