Projet

Général

Profil

Samba » Historique » Version 12

Version 11 (Joël Cuissinat, 09/04/2019 17:23) → Version 12/69 (Joël Cuissinat, 09/04/2019 21:19)

h1. Compilation de Samba

{{toc}}

h2. État des lieux

Lors de la rédaction de cet article, la version de samba sur EOLE 2.7.0 et 2.7.1 (bionic) était la 4.9.2 et le but était de passer en 4.9.5 (compilée par "Debian":https://packages.debian.org/sid/samba) avec les patches (CVE) de la "4.9.6":https://www.samba.org/samba/history/samba-4.9.6.html.

Ceci tout en conservant nos deux patches actuels :
* 0035-workaround-bug-when-demoting-RODC.patch
* 0036-dlz-bind-zone-transfer-restriction.patch

h2. Dépôts Samba

https://dev-eole.ac-dijon.fr/projects/samba/repository

Sur la forge EOLE, on retrouve le dépôt samba ainsi que des dépôts pour chacune les librairies associées :
* cmocka
* ldb
* talloc
* tdb
* tevent

h3. Dépôts distants

Pour Samba, plusieurs dépôts sont disponibles.
Il est recommandé de commencer par cloner le dépôt Debian (salsa) afin que la branche master pointe vers celui-ci puis de déclarer les autres dépôts distants :
<pre>
git clone https://salsa.debian.org/samba-team/samba.git
git remote add dev-eole https://dev-eole.ac-dijon.fr/git/samba.git
git remote add samba https://git.samba.org/samba.git
</pre>

Une fois ces opérations réalisées, on doit obtenir la configuration suivante :
<pre>
# git remote -v
dev-eole ssh://git@dev-eole.ac-dijon.fr/samba.git (fetch)
dev-eole ssh://git@dev-eole.ac-dijon.fr/samba.git (push)
origin https://salsa.debian.org/samba-team/samba.git (fetch)
origin https://salsa.debian.org/samba-team/samba.git (push)
samba https://git.samba.org/samba.git (fetch)
samba https://git.samba.org/samba.git (push)
</pre>

NB : Le dépôt officiel de Samba n'a pas été utilisé dans les manipulation réalisées ce jour ;)

h3. Branches distantes

Les branches que nous utilisons sont les suivantes :
* @master@ : branche de packaging Debian
* @upstream_4.9@ : sources samba-4.9 importées par Debian
* @pristine-tar@ : upstream tarball au format "pristine"
* @dist/eole/2.7.0/master@ : branche de packaging EOLE

NB : Pour forcer l'utilisation du dépôt "origin" pour la branche @pristine-tar@, la commande suivante pourra être utilisée :
<pre>
git checkout -b pristine-tar origin/pristine-tar
</pre>

h2. Préparer le paquet

h3. Fusionner les modifications

Pour commencer, mettre toutes les branches à jour :
<pre>
git pull
</pre>

À titre informatif, il est possible de lister tous les commits ajoutés depuis le dernier paquet EOLE à l'aide des tags (exemple) :
<pre>
git log debian/2%4.9.2+dfsg-2-8-ga9af810f873..debian/2%4.9.5+dfsg-3
</pre>

Se positionner sur la branche de packaging EOLE et fusionner le tag souhaité (le dernier en général) :
<pre>
git checkout dist/eole/2.7.0/master
git merge debian/2%4.9.5+dfsg-3
</pre>

Cela entraîne généralement quelques conflits mais pas trop complexes :

* @debian/changelog@: move EOLE entries at the proper place in history
* @debian/patches/series@: keep EOLE/MTES patches



h3. Vérifier/Corriger les dépendances

Pour vérifier les dépendances de compilation, il est possible d'utiliser la commande indiquée dans le fichier README.sources :
<pre>
FIXME : grep ^VERSION ...
</pre>

Mais il faut également analyser en détail les versions (et les noms) des paquets mentionnés dans la section @Build-Depends@ du fichier @debian/control@.



XXX Puis exporter le "upstream tarball" depuis la branche de packaging EOLE :
<pre>

gbp export-orig
</pre>