Projet

Général

Profil

EoleDebianPackaging24 » Historique » Version 13

« Précédent - Version 13/28 (diff) - Suivant » - Version actuelle
Daniel Dehennin, 24/07/2012 16:54
typo


Debian packaging pour EOLE 2.4

Introduction

Nous ne décrirons pas ici comment créer un paquet debian, mais
quelques règles utiles lors de la création d’un paquet debian pour
EOLE.

La principale cible de cette documentation est le packaging pour Ubuntu Precise Pangolin.

debian/changelog

La grande nouveauté du système de build pour EOLE 2.4 est l’absence de fichier debian/changelog dans la branche de packaging.

Ce dernier n’est créé et mis à jour que par le système de build lui même et n’est jamais directement accessible aux développeurs/packageurs.

Cela impose quelques restrictions (qui n’en sont pas vraiment ;-)) :

  1. Le premier paquet généré ne peut pas connaître son numéro de version par debian/changelog, il faut donc utiliser les mécanismes de git-buildpackage et se reposer sur l’utilisation de tag pour déclarer les versions upstream
  2. Tout packaging de nouvelle modification de code source upstream nécessite un tag

Le moyen mémotechnique pour s’en souvenir est de connaître la forme d’un numéro de paquet Debian:

<UPSTREAM VERSION>-<DEBIAN PACKAGE RELEASE>
  • Toute modification du code nécessite une modification de la partie <UPSTREAM VERSION> ;
  • Toute modification sur la branche de packaging qui n’implique aucun merge de la branche upstream (master chez EOLE), modifie la partie <DEBIAN PACKAGE RELEASE>.

En français on pourrait le décrire par: on publie la version <DEBIAN PACKAGE RELEASE> du paquet debian de la version <UPSTREAM VERSION> du logiciel.

debian/control

Source: <package>
Section: <(admin|web|metapackages|...)>
Priority: optional
Maintainer: Équipe Eole <eole@ac-dijon.fr>
Build-Depends: debhelper (>= 9)
Standards-Version: 3.9.3
Homepage: http://eole.orion.education.fr/diff/
Vcs-Git: http://dev-eole.ac-dijon.fr/git/<package>
Vcs-Browser: http://dev-eole.ac-dijon.fr/projects/<package>/repository

Package: <package>
Architecture: all
Depends: ${misc:Depends}
Description: <MAX 72 CHARS>
 <DESCRIPTION>
 .
 <PARAGRAPHE SEPARATED BY DOT>

Package: <package>-doc
Architecture: all
Description: <MAX 72 CHARS>
 <DESCRIPTION>
 .
 <PARAGRAPHE SEPARATED BY DOT>

Package: <package>-tests
Architecture: all
Depends: <package>
Description: <MAX 72 CHARS>
 <DESCRIPTION>
 .
 <PARAGRAPHE SEPARATED BY DOT>

Paquets sources et binaires python

Il faut ajouter :

  • Build-Depends du paquet source: python-all-dev
  • Depends du/des paquet(s) binaire(s): ${python:Depends}

debian/rules

Pour tous

#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# 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

%:
    dh $@

Pour paquet python

#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# 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

%:
    dh $@ --with python2

debian/compat

9

debian/source/format

La valeur ce paramètre découle de la réponse à ces trois questions :

  1. Qui a la responsabilité de l’incrémentation du numéro de version ;
  2. Est-il permis que la branche dite upstream (chez EOLE, la branche master) soit vide ;
  3. Est-il possible qu’entre deux paquets debian, il y ait des modifications de fichiers en dehors du répertoire debian/ sans nouveau tag de version upstream.

Il est interdit de modifier les sources dans le packaging

L’idée est de dire que le paquet debian ne peut pas contenir de modification du code source (tout ce qui est en dehors du répertoire debian/), sans qu’il y ait eu un nouveau numéro de version par les développeurs.

Dans notre cas, un tag nommé release/%(version)s, qui engendrera un paquet Debian avec des numéros de version comme suit :

  • %(version)s-1 pour le premier build ;
  • %(version)s-2 pour le second build qui ne doit corriger que des erreurs de packaging ou avoir un patch pour upstream dans debian/patches ;
  • %(version)s-3 pour le troisième build qui ne doit corriger que des erreurs de packaging ou avoir un patch pour upstream dans debian/patches ;
3.0 (quilt)

Il est possible de modifier les sources dans le packaging ou il n’y a pas de source upstream

Les modifications de code source sont autorisées sur la branche de packaging sans nouveau tag upstream.
La branche upstream peut-être complètement vide (cas des métapaquets de dépendances *-pkg)

3.0 (native)

debian/copyright

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: <package
Source: <UPSTREAM URL>

Files: *
Copyright: <YEAR1>,<YEAR2>,<YEAR3> <UPSTREAM AUTHOR NAME> <UPSTREAM AUTHOR EMAIL>
Copyright: <YEAR1>,<YEAR2>,<YEAR3> <UPSTREAM AUTHOR NAME> <UPSTREAM AUTHOR EMAIL>
License: GPL-3+

Files: debian/*
Copyright: <YEAR1>,<YEAR2>,<YEAR3> Équipe EOLE <eole@ac-dijon.fr>
License: GPL-3+

License: GPL-3+
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 .
 This package is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <http://www.gnu.org/licenses/>.
 .
 On Debian systems, the complete text of the GNU General
 Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".