Publié le: 2011-06-15

Contribute to ports (fr)

Suite à un besoin récent (sur l’excellent owncloud), je me suis demandé comment mettre à jour un port FreeBSD lorsque l’arbre de port n’est pas à jour et envoyer la demande de mise à jour aux mainteneurs de l’arbre. Nous prendrons ici l’exemple d’owncloud.

Au premier abord cela ne semble pas facile, mais en fait c’est très simple !

Création du diff de mise à jour du port

La première chose à faire est de générer un diff de mise à jour. Tout d’abord allez dans le répertoire du port concerné, puis copiez les fichiers Makefile et distinfo

cd /usr/ports/www/owncloud
cp Makefile Makefile.old
cp distinfo distinfo.old

Ensuite éditez le fichier Makefile afin de changer d’une part la version du port (PORTVERSION) et d’autre part, le répertoire distant de téléchargement (s’il a changé, MASTER_SITES)

PORTNAME=       owncloud
PORTVERSION=    5.0.5
CATEGORIES=     www
MASTER_SITES=   http://download.owncloud.org/community/

Téléchargez ensuite l’archive contenant le port concerné, et vérifiez sa taille exacte et sa trace SHA256

fetch http://download.owncloud.org/community/owncloud-5.0.5.tar.bz2
ls -l owncloud-5.0.5.tar.bz2 | awk '{print $5}'
sha256 owncloud-5.0.5.tar.bz2

Enfin changez le nom de l’archive et les valeurs correspondant au hash et à la taille.

SHA256 (owncloud-5.0.5.tar.bz2) = d1538f598f7b06a2d0494a9675a461e4bcd976e7e4ddf3
72efc1a2ec50007a31
SIZE (owncloud-5.0.5.tar.bz2) = 13865933

Pour terminer on génère le diff.

diff -u Makefile.old Makefile > port.diff
diff -u distinfo.old distinfo >> port.diff

Vous devriez avoir un contenu ressemblant à ceci dans le fichier diff:

--- Makefile.old    2013-04-19 18:13:07.000000000 +0200
 +++ Makefile    2013-04-19 18:21:13.000000000 +0200
 @@ -1,7 +1,7 @@
 # $FreeBSD: www/owncloud/Makefile 315922 2013-04-17 01:57:56Z kevlo $
 PORTNAME=    owncloud
 -PORTVERSION=    5.0.4
 +PORTVERSION=    5.0.5
 CATEGORIES=    www
 MASTER_SITES=    http://download.owncloud.org/community/
 --- distinfo.old    2013-04-19 18:13:11.000000000 +0200
 +++ distinfo    2013-04-19 18:24:25.000000000 +0200
 @@ -1,2 +1,2 @@
 -SHA256 (owncloud-5.0.4.tar.bz2) = fa6c93631368afe5b475e3173130b60be5f4f1166cd5d6f7993d242ac448f0d4
 -SIZE (owncloud-5.0.4.tar.bz2) = 13878837
 +SHA256 (owncloud-5.0.5.tar.bz2) = d1538f598f7b06a2d0494a9675a461e4bcd976e7e4ddf372efc1a2ec50007a31
 +SIZE (owncloud-5.0.5.tar.bz2) = 13865933

Envoyer la demande de mise à jour du port

Il ne nous reste plus qu’à envoyer la demande de mise à jour. On va utiliser la commande FreeBSD dédiée à cela, qui nous permettra d’envoyer un mail formatté pour cela.

send-pr -a port.diff

Cette commande ouvrir vi et un contenu comme ceci:

SEND-PR: -*- send-pr -*-
SEND-PR: vim: syntax=sendpr
SEND-PR:
SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as
SEND-PR: will all comments (text enclosed in `<' and `>').
SEND-PR:
SEND-PR: Please consult the following URL if you are not sure how to
SEND-PR: fill out a problem report:
SEND-PR: http://www.freebsd.org/doc/en/articles/problem-reports/
SEND-PR:
SEND-PR: Note that the Synopsis field is mandatory.
SEND-PR:
SEND-PR: Please note that (unless you state otherwise) if your report
SEND-PR: includes a patch then it will be taken under the same license as
SEND-PR: the one on the file(s) you want to change.
SEND-PR:
SEND-PR: BE ADVISED THAT FREEBSD PROBLEM REPORTS ARE PUBLIC INFORMATION AND
SEND-PR: WILL BE PUBLISHED AS-IS ON THE PROJECT'S MAILING LISTS AND WEB SITES.
SEND-PR: DO NOT SUBMIT ANY INFORMATION YOU DO NOT WANT MADE PUBLIC.
SEND-PR:
SEND-PR: If you wish to submit a problem report confidentially, then contact
SEND-PR: the FreeBSD bugmaster (bugmaster@FreeBSD.org) to arrange for a
SEND-PR: relevant developer to be contacted.
SEND-PR:
SEND-PR: For sensitive security issues, consider contacting the FreeBSD
SEND-PR: security officer team (security-officer@freebsd.org) directly.
SEND-PR:
SEND-PR: Choose from the following categories:
SEND-PR:
SEND-PR: advocacy  alpha     amd64     arm       bin       conf
SEND-PR: docs      gnu       i386      ia64      java      kern
SEND-PR: misc      ports     powerpc   sparc64   standards threads
SEND-PR: usb       www
SEND-PR:
To: FreeBSD-gnats-submit@freebsd.org
From: Loic Blot <root>
Reply-To: Loic Blot <root>
Cc:
X-send-pr-version: 3.113
X-GNATS-Notify:

>Submitter-Id:  current-users
>Originator:    Loic Blot
>Organization:  <organization of PR author (multiple lines)>
>Confidential:  no <FreeBSD PRs are public data>
>Synopsis:      <synopsis of the problem (one line)>
>Severity:      <[ non-critical | serious | critical ] (one line)>
>Priority:      <[ low | medium | high ] (one line)>
>Category:      <choose from the list of categories above (one line)>
>Class:         <[ sw-bug | doc-bug | change-request | update | maintainer-update ] (one line)>
>Release:       FreeBSD 9.1-RELEASE amd64
>Environment:
System: FreeBSD www.unix-experience.fr 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec 4 09:23:10 UTC 2012 root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64

        <machine, os, target, libraries (multiple lines)>
>Description:
        <precise description of the problem (multiple lines)>
>How-To-Repeat:
        <code/input/activities to reproduce the problem (multiple lines)>
>Fix:

        <how to correct or work around the problem, if known (multiple lines)>
--- port.diff begins here ---
--- Makefile.old        2013-04-19 18:13:07.000000000 +0200
+++ Makefile    2013-04-19 18:21:13.000000000 +0200
@@ -1,7 +1,7 @@
 # $FreeBSD: www/owncloud/Makefile 315922 2013-04-17 01:57:56Z kevlo $

 PORTNAME=      owncloud
-PORTVERSION=   5.0.4
+PORTVERSION=   5.0.5
 CATEGORIES=    www
 MASTER_SITES=  http://download.owncloud.org/community/

--- distinfo.old        2013-04-19 18:13:11.000000000 +0200
+++ distinfo    2013-04-19 18:24:25.000000000 +0200
@@ -1,2 +1,2 @@
-SHA256 (owncloud-5.0.4.tar.bz2) = fa6c93631368afe5b475e3173130b60be5f4f1166cd5d6f7993d242ac448f0d4
-SIZE (owncloud-5.0.4.tar.bz2) = 13878837
+SHA256 (owncloud-5.0.5.tar.bz2) = d1538f598f7b06a2d0494a9675a461e4bcd976e7e4ddf372efc1a2ec50007a31
+SIZE (owncloud-5.0.5.tar.bz2) = 13865933
--- port.diff ends here ---

Il faudra éditer les champs suivants:

  • From: indiquez ici une adresse valide
  • Reply-to: indiquez une adresse de réponse valide, sur laquelle le mainteneur pourrait potentiellement vous contacter
  • Organization: votre entreprise ou association
  • Synopsis: un titre rapide expliquant le problème
  • Severity: si la mise à jour est pénalisante
  • Priority: le niveau d’urgence de la mise à jour
  • Category: ici c’est forcément ports
  • Class: ici ce sera update
  • Environment: votre système
  • Description: une description plus exhaustive du problème
  • How-To-Repeat: how to reproduce the problem
  • Fix: généralement votre diff

Une fois que tout est en ordre, vous pouvez enregistrer et fermer vi.

Pour terminer, envoyez le problème aux mainteneurs

send-pr -f /tmp/pr.Gdhq2vNb -a port.diff
s)end, e)dit or a)bort? s
send-pr: problem report sent

C’est terminé !

Vérifier l’état d’avancement de la mise à jour du port

Pour voir si votre port a été accepté et s’il a été mis à jour, référez vous à la page suivante (attention le problème n’apparaît pas tout de suite).