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 mois. Mis à jour il y a environ 21 heures.

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

0%

Restant à faire (heures):

Demandes liées

Bloque Distribution EOLE - Scénario #35770: EOLE 2.10 : eole-gpo-script n'est pas fonctionnel Nouveau 01/10/2022 01/01/2024

Historique

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

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 mois

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 environ 21 heures

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 environ 21 heures

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

Formats disponibles : Atom PDF