Projet

Général

Profil

Tâche #35798

Distutils n’est plus disponible en python 3.12. Il faut choisir entre les différentes évolutions possibles pour avoir de nouveau une procédure d’installation fonctionnelle (remplacement des setup.py, utilisation de pip, etc.)

Ajouté par Benjamin Bohard il y a environ 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Résolu
Priorité:
Normal
Assigné à:
-
Version cible:
Début:
29/04/2024
Echéance:
% réalisé:

0%

Restant à faire (heures):

Demandes liées

Lié à Distribution EOLE - Scénario #35770: EOLE 2.10 : eole-gpo-script n'est pas fonctionnel Terminé (Sprint) 01/10/2022 01/01/2026

Révisions associées

Révision ad9094e5 (diff)
Ajouté par Joël Cuissinat il y a presque 2 ans

Remove setup.py call from Makefile

Ref: #35798

Révision 775c7f83 (diff)
Ajouté par Joël Cuissinat il y a presque 2 ans

Upgrade packaging for EOLE 2.10

Ref: #35798

Historique

#1 Mis à jour par Daniel Dehennin il y a environ 2 ans

Effectivement distutils n’est plus fourni dans python, une option est d’utiliser setuptools comme décrit dans PEP632

Il semble qu’aujourd’hui l’usage soit d’utiliser pyproject.toml, ensuite c’est le choix du backend de construction, encore une fois rien de simple dans le monde python.

Dans eole3 tools nous utilisons hatchling mais le guide lui même propose 4 exemples, hatchling, setuptools, flit et PDM

#2 Mis à jour par Daniel Dehennin il y a environ 2 ans

Notre problème vient de eole.mk qui execute python setup.py pour installer les fichiers python qui seront pris en charge par le packaging.

Une option serait de virer cette installation dans le Makefile et laisser dh_python gérer. Cela signifie en revanche que l’on ne pourra plus faire de make install depuis un clone.

#3 Mis à jour par Daniel Dehennin il y a presque 2 ans

Il est possible de faire comme dans creole

diff --git a/debian/control b/debian/control
index 32fb301..cfa5bec 100644
--- a/debian/control
+++ b/debian/control
@@ -2,8 +2,9 @@ Source: eole-ad-dc
 Section: admin
 Priority: optional
 Maintainer: Équipe EOLE <eole@ac-dijon.fr>
-Build-Depends: debhelper (>= 9), python3-all
+Build-Depends: debhelper (>= 9), python3-all, dh-python
 Standards-Version: 3.9.3
+X-Python3-Version: >= 3.9
 Homepage: http://eole.orion.education.fr/diff/
 Vcs-Git: http://dev-eole.ac-dijon.fr/git/eole-ad-dc
 Vcs-Browser: http://dev-eole.ac-dijon.fr/projects/eole-ad-dc/repository
@@ -17,7 +18,8 @@ Depends: eole-server,
          eole-ad-dc-pso,
          eole-ntp-server,
          acl,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Description: configuration du service Samba AD-DC
  Pour toute information complémentaire, veuillez vous rendre sur le
  site du projet EOLE.
@@ -45,7 +47,8 @@ Depends: acl,
          smbclient,
          winbind,
          libldap-common,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Description: dependency package for Samba AD-DC
  Pour toute information complémentaire, veuillez vous rendre sur le
  site du projet EOLE.
@@ -56,7 +59,8 @@ Architecture: all
 Depends: eole-ad-dc-member-pkg,
          bind9,
          ntp,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Description: dependency package for Samba AD-DC
  Pour toute information complémentaire, veuillez vous rendre sur le
  site du projet EOLE.
@@ -67,14 +71,16 @@ Depends: python3-configobj,
          pwgen,
          psmisc,
          rsync,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Description: scripts et librairies pour Samba AD-DC
  Pour toute information complémentaire, veuillez vous rendre sur le
  site du projet EOLE.

 Package: eole-ad-dc-bareos
 Architecture: all
-Depends: eole-bareos ${misc:Depends}
+Depends: eole-bareos, ${misc:Depends},
+ ${python3:Depends}
 Conflicts: eole-ad-dc
 Description: configuration bareos pour Samba AD-DC
  Pour toute information complémentaire, veuillez vous rendre sur le
@@ -82,7 +88,8 @@ Description: configuration bareos pour Samba AD-DC

 Package: eole-ad-dc-scribe
 Architecture: all
-Depends: eole-bareos ${misc:Depends}
+Depends: eole-bareos, ${misc:Depends},
+ ${python3:Depends}
 Conflicts: eole-ad-dc
 Description: Fichier commun entre eole-ad-dc et scribe
  Pour toute information complémentaire, veuillez vous rendre sur le
@@ -92,7 +99,8 @@ Package: eole-seth
 Depends: eole-dhcp,
          eole-ad-dc,
          eole-antivirus,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Architecture: all
 Description: Module EOLE Seth
  Configuration du module EOLE Seth.
@@ -103,7 +111,8 @@ Description: Module EOLE Seth
 Package: eole-seth-module
 Section: metapackages
 Depends: eole-seth,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Provides: eole-module
 Conflicts: eole-module
 Architecture: all
@@ -121,7 +130,8 @@ Depends: eole-ad-dc-pkg,
          eole-exim-pkg,
          eole-antivirus-pkg,
          eole-seth-module,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Architecture: all
 Description: Module EOLE Seth (metapackage)
  Tous les paquets pour un module EOLE Seth.
@@ -134,7 +144,8 @@ Section: admin
 Architecture: all
 Depends: python3,
          python-gpo-utils,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Description: Python command for GPO edition

 Package: python-gpo-utils
@@ -142,6 +153,7 @@ Section: admin
 Architecture: all
 Depends: python3,
          python3-samba,
-         ${misc:Depends}
+         ${misc:Depends},
+ ${python3:Depends}
 Description: Python commands for GPO edition

diff --git a/debian/python-gpo-utils.install b/debian/python-gpo-utils.install
index 0017270..d183701 100644
--- a/debian/python-gpo-utils.install
+++ b/debian/python-gpo-utils.install
@@ -1 +1 @@
-usr/lib/python3/dist-packages
+usr/lib/python*/dist-packages
diff --git a/debian/rules b/debian/rules
index c3cba39..b403d81 100755
--- a/debian/rules
+++ b/debian/rules
@@ -7,11 +7,18 @@
 # This special exception was added by Craig Small in version 0.37 of dh-make.

 # Uncomment this to turn on verbose mode.
-# export DH_VERBOSE=1
-# export DH_OPTIONS=-v
+export DH_VERBOSE=1
+export DH_OPTIONS=-v
+
+

 %:
-    dh $@
+    dh $@ --with python3 --buildsystem=pybuild
+
+override_dh_auto_install:
+    DESTDIR=$(CURDIR)/debian/tmp make install
+    dh_auto_install -O--buildsystem=pybuild
+
 override_dh_installsystemd:
     dh_installsystemd --no-enable --no-start -peole-ad-dc --name=samba_dbcheck
     dh_installsystemd --no-enable --no-start -peole-ad-dc-scribe --name=samba_dbcheck
diff --git a/eole.mk b/eole.mk
index 244b599..1750fd4 100644
--- a/eole.mk
+++ b/eole.mk
@@ -110,11 +110,6 @@ logrotate_DATA_DIR      := $(DESTDIR)/etc/logrotate.d
 # Cron
 cron_PROG_DIR         := $(DESTDIR)/etc/cron.daily

-# Python modules
-ifneq ($(DESTDIR),)
-PYTHON_OPTS     := --root $(DESTDIR)
-endif
-
 # Translation
 TRANSLATION_SRC := translation
 TRANSLATION_DEST := $(DESTDIR)/usr/share/locale
@@ -207,10 +202,4 @@ install-prog-files: $$(patsubst %,%-instprog,$$(installprog_LIST))

 install-rec-dirs:   $$(patsubst %,%-instrec,$$(installrec_LIST))

-# Installation of python modules
-ifeq ($(shell test -f setup.py && echo 0), 0)
-install-files::
-    python3 setup.py install --no-compile --install-layout=deb $(PYTHON_OPTS)
-endif
-
 .PHONY: install install-dirs install-files install-data-files install-prog-files install-rec-dirs

Attention: les modifications dans eole.mk doivent être faites sur une branche de code et non de packaging ;-)

#4 Mis à jour par Daniel Dehennin il y a presque 2 ans

  • Statut changé de Nouveau à À valider
  • Début mis à 29/04/2024

#5 Mis à jour par Joël Cuissinat il y a presque 2 ans

  • Statut changé de À valider à Résolu

#6 Mis à jour par Benjamin Bohard il y a presque 2 ans

En regardant le projet amon-backend, qui n’a pas de Makefile, j’ai l’impression que le recours à pybuild ne suffit pas à régler le problème de l’exécution de setup.py install.

Dans le cas d’un build sur une noble, j’ai ce type de message à la construction du paquet :

dh binary --with python3 --buildsystem=pybuild
   dh_testroot -O--buildsystem=pybuild
   dh_prep -O--buildsystem=pybuild
   dh_auto_install -O--buildsystem=pybuild
I: pybuild base:311: /usr/bin/python3 setup.py install --root /tmp/tamarin_mpqynv6h/src/debian/tmp 
running install

#7 Mis à jour par Joël Cuissinat il y a presque 2 ans

  • Bloque Scénario #35770: EOLE 2.10 : eole-gpo-script n'est pas fonctionnel supprimé

#8 Mis à jour par Joël Cuissinat il y a presque 2 ans

  • Lié à Scénario #35770: EOLE 2.10 : eole-gpo-script n'est pas fonctionnel ajouté

Formats disponibles : Atom PDF