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.)
0%
Demandes liées
Révisions associées
Remove setup.py call from Makefile
Ref: #35798
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
Paquet EOLE AD DC compilé : http://castor.eole.lan:9998/job/22705
#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é