Projet

Général

Profil

Compilation pour EOLE 2.5

Un problème de compilation sur Ubuntu Trusty nous oblige a utiliser un contournement (#12734).

Construction des paquets

Construction du paquet source

Sur votre machine de développement:

  1. Tout préparer pour que la branche de packaging soit prête
  2. Mettre à jour le fichier debian/changelog
    1. Ajouter une entrée à la main (déconseillé)
    2. Utiliser git-buildpackage
      moi@work:~/src/e2guardian/repo (dist/eole/2.6.2/master>)$ gbp dch -a -D eole-2.6-unstable --debian-branch=dist/eole/2.6.2/master
      gbp:info: Found tag for topmost changelog version 'XXXX...'
      gbp:info: Continuing from commit 'XXXX...'
      libdistro-info-perl is not installed, Debian release names are not known.
      libdistro-info-perl is not installed, Ubuntu release names are not known.
      libdistro-info-perl is not installed, Debian release names are not known.
      libdistro-info-perl is not installed, Ubuntu release names are not known.
      debchange warning: Unable to determine Debian's backport distributions.
      debchange warning: Recognised distributions are: unstable, testing, stable,
      oldstable, experimental, {testing-,stable-,oldstable-,}proposed-updates,
      {testing,stable,oldstable}-security and UNRELEASED.
      Using your request anyway.
      debchange: Did you see that warning?  Press RETURN to continue...
      
      moi@work:~/src/e2guardian/repo (dist/eole/2.6.2/master *>)$ git add debian/changelog
      moi@work:~/src/e2guardian/repo (dist/eole/2.6.2/master +>)$ git commit -m "Update debian/changelog for package $(dpkg-parsechangelog -SVersion)" 
      
  3. Créer le paquet source
    1. Télécharger le fichier .orig.tar.gz dans le répertoire parent
      moi@work:~/src/e2guardian/repo (dist/eole/2.6.2/master >)$ wget -P ../ http://eole.ac-dijon.fr/eole/pool/main/e/e2guardian/e2guardian_$(dpkg-parsechangelog -SVersion | sed -e 's,-.*,,').orig.tar.gz
      
    2. Construire le paquet source
      moi@work:~/src/e2guardian/repo (dist/eole/2.6.2/master >)$ dpkg-buildpackage -nc -d -S
      

Construction des paquets binaires

  • Pour EOLE 2.5, la construction se fait sur un Debian Wheezy.
  • Pour EOLE 2.6, la construction se fait sur une aca.eolebase instance-default

Sur la machine de construction, pour chaque architecture, faire les opérations suivantes :

  1. Installer les dépendances minimales
    eole@server:~/e2guardian-X.Y.Z$ sudo apt-get install build-essential fakeroot dctrl-tools
    
  2. Copier le paquet source sur la machine de compilation: le fichier .dsc et tous les fichiers listés par celui-ci (Section Files: du fichier .dsc)
  3. Décompacter le paquet source et se positionner dans le répertoire:
    eole@server:~$ dpkg-source -x *.dsc
    gpgv: ressource de bloc de clef « /home/eole/.gnupg/trustedkeys.gpg » : erreur d'ouverture de fichier
    gpgv: Signature faite le mer. 20 janv. 2016 11:24:15 CET avec la clef DSA d'identifiant F562870C
    gpgv: Impossible de vérifier la signature : clef publique introuvable
    dpkg-source: avertissement: impossible de vérifier la signature sur ./e2guardian_X.Y.Z-D.dsc
    dpkg-source: info: extraction de e2guardian dans e2guardian-X.Y.Z
    dpkg-source: info: extraction de e2guardian_X.Y.Z.orig.tar.gz
    dpkg-source: info: extraction de e2guardian_X.Y.Z-D.debian.tar.xz
    dpkg-source: info: mise en place de 0001-Support-of-one-log-file-per-e2-instance.patch
    
    eole@server:~$ cd e2guardian-*
    eole@server:~/e2guardian-X.Y.Z$
    
  4. Installer les dépendances de compilation → voir debian/control
    eole@server:~/e2guardian-X.Y.Z$ sudo apt-get install $(grep-dctrl -S e2guardian -ns Build-Depends debian/control | tr -d '\n ' | sed -e 's/,/ /g; s,([^)]*),,g; s,$,\n,')
    
  5. Modifier les fichiers d’entête afin d’augmenter FD_SETSIZE
    eole@server:~/e2guardian-X.Y.Z$ rgrep -l 'FD_SETSIZE[[:space:]]*[[:digit:]]' /usr/include/ | sudo xargs sed -i -E 's,(FD_SETSIZE[[:space:]]+)[[:digit:]]+,\165535,'
    
  6. Compiler le paquet binaire pour l’architecture courante
    eole@server:~/e2guardian-X.Y.Z$ dpkg-buildpackage -B -uc
    

Envoi des paquets sur le dépôt Debian

Afin d’outre passer la compilation automatique EOLE, il faut :

  1. Envoyer les paquets binaires en premier
  2. Envoyer le paquet source en dernier

Paquets binaires

Il faut signer le fichier .changes par l’utilisateur de compilation (buildd@pollux.eole.lan):

  1. Créer un répertoire temporaire sur pollux
    buildd@pollux:~$ mkdir temp
    buildd@pollux:~$ cd temp
    
  2. Envoies les fichiers sur buildd@pollux.eole.lan
    eole@server:~/e2guardian-X.Y.Z$ scp ../*.changes ../*.deb buildd@pollux.eole.lan:temp/
    
  3. Signer le paquet binaire
    buildd@pollux:~/temp$ debsign -kbuildd@listeseole.ac-dijon.fr *.changes
    
  4. Envoyer le paquet sur le dépôt Debian d’EOLE
    buildd@pollux:~/temp$ dput eole *.changes
    
  5. Nettoyer le répertoire
    buildd@pollux:~/temp$ rm -f *
    

Paquet source

Il faut signer le fichier _source.changes par l’utilisateur de compilation (buildd@pollux.eole.lan):
  1. Envoies les fichiers sur buildd@pollux.eole.lan:temp/ : les fichier _source.changes, .dsc et tous les fichiers listés par ce dernier (Section Files: du fichier .dsc)
  2. Signer le paquet source
    buildd@pollux:~/temp$ debsign -kbuildd@listeseole.ac-dijon.fr *.changes
    
  3. Envoyer le paquet sur le dépôt Debian d’EOLE
    buildd@pollux:~/temp$ dput eole *.changes
    
  4. Nettoyer le répertoire
    buildd@pollux:~/temp$ cd
    buildd@pollux:~$ rm -rf temp/