<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi Jeremy,<br>
    <br>
    Your contribution has been merged into OBM's master branch and will
    land in the next release.<br>
    Regarding Debian Stretch, we're very interested in having OBM
    installation work on this operating system. However, there's no plan
    yet for working on that topic. We did some investigations, though,
    and you can have a look at
    <a class="moz-txt-link-freetext" href="https://ci-obm.linagora.com/jira/browse/OBMFULL-6399">https://ci-obm.linagora.com/jira/browse/OBMFULL-6399</a> which
    summarizes what was found.<br>
    <br>
    Regarding OBM packaging, here are some instructions (in french) I
    wrote a few years ago that should get you you ready to patch !<br>
    <br>
    -----<br>
    <u>Paquets</u><br>
    <br>
    Les meilleures docs à lire:<br>
    <ul>
      <li><a class="moz-txt-link-freetext"
          href="https://fedoraproject.org/wiki/How_to_create_an_RPM_package">https://fedoraproject.org/wiki/How_to_create_an_RPM_package</a></li>
      <li><a class="moz-txt-link-freetext"
          href="https://wiki.debian.org/Packaging">https://wiki.debian.org/Packaging</a></li>
    </ul>
    <br>
    <br>
    Les paquets RPM sont construits grâce à des descripteurs (fichiers
    .spec) dans lesquels on déclare le ou les paquets à construire, avec
    leurs dépendances, leurs contenus, la manière de les installer, etc.
    La syntaxe est assez obscure car un grand nombre de variables sont
    définies globalement et connues des outils de constructions de
    paquets (rpmbuild). Un exemple simple pour "rentrer" dans les
    fichiers specs est <b>ca/rpm/SPECS/obm-ca.spec</b>, il est
    relativement simple d'accès.<br>
    Tous les descripteurs se trouvent avec la commande <b>find . -name
      "*.spec"</b> dans la racine du dépôt.<br>
    Les instructions principales à connaître dans un .spec sont:<br>
    <ul>
      <li>Name - le nom du paquet</li>
      <li>Requires - Déclare une dépendance d'un paquet</li>
      <li>BuildArch - Architecture cible du paquet (tous nos paquets
        sont en "noarch")<br>
      </li>
      <li>%package - Déclare une suite d'instruction pour la
        construction d'un paquet donnée</li>
      <li>%post - Déclare un script à exécuter après l'installation d'un
        paquet</li>
      <li>%install - Déclare les étapes à exécuter lors de
        l’installation d'un paquet</li>
      <li>%files - Liste les fichiers inclus dans un paquet</li>
    </ul>
    <p><br>
    </p>
    <p>Les paquets DEB sont construits grâce à des descripteurs
      multiples (chaque paquet possède un ou plusieurs, souvent
      beaucoup, fichiers de description) et un "control file" (fichier <b>control</b>).
      Le fichier control contient la description administrative du
      paquet, son nom, ses dépendances, etc. Dans un fichier control,
      les instructions à connaître sont les suivantes:<br>
    </p>
    <ul>
      <li>Package - Nom du paquet</li>
      <li>Depends - Liste des dépendances</li>
      <li>Architecture - L'architecture cible (tous nos paquets sont en
        "all")<br>
      </li>
    </ul>
    Les descripteurs d'un paquet DEB sont les suivants:<br>
    <ul>
      <li>rules - Règles de construction du paquet, choses à faire avant
        d'inclure les fichiers du .install, etc.<br>
      </li>
      <li><paquet>.postrm - Script exécuté après la
        désinstallation d'un paquet</li>
      <li><paquet>.postinst - Script exécuté après l’installation
        d'un paquet</li>
      <li><paquet>.cron.d - Fichier déployé dans /etc/cron.d/ lors
        de l'installation</li>
      <li><paquet>.dirs - Liste des dossiers à créer lors de
        l'installation</li>
      <li><paquet>.install - Liste des fichiers à inclure dans le
        paquet. Cette liste est évaluée après le fichier rules, car du
        preprocessing peut être fait.<br>
      </li>
    </ul>
    Le processus de build en lui même est basé sur de l'outillage python
    (aka. build.py) dans le répertoire <b>build-system/</b> d'OBM.
    C'est le point d'entrée pour toute la construction de paquets.<br>
    <br>
    <u>Dépôts</u><br>
    <br>
    Les outils à connaître:<br>
    <br>
    <ul>
      <li>dput (en fait c'est scp + du contrôle d'intégrité pour
        uploader des paquets vers un site distant)</li>
      <li>reprepro (outil de management des dépôts apt: ajouter de
        paquets, update de paquets, suppression de paquets, etc.)</li>
      <li>createrepo (création et update de dépôts yum)</li>
    </ul>
    <br>
    Les dépos de paquets sont de deux natures:<br>
    <ol>
      <li>Des dépôts yum pour RedHat, gérés par la commande 
        _createrepo_</li>
      <ol>
        <li>Création d'un dépôt: <b>mkdir <repo></b></li>
        <li>Upload de paquets: <b>scp</b><br>
        </li>
        <li>Update d'un dépôt: <b>cd <repo> && </b><b>rm
            -fR * && createrepo .</b><br>
        </li>
      </ol>
      <li>Des dépôts apt pour debian, gérés par les commandes _dput_ et
        _reprepro_</li>
      <ol>
        <li>Création d'un dépôt: <b>cp -a <template> <repo>
            && sed -i '/TEMPLATE</b><b>/<repo>/g'
            <repo>/conf/*</b> (on utilise une template pour créer
          un nouveau repo)</li>
        <li>Upload de paquets: <b>dput</b><br>
        </li>
        <li>Update d'un dépôt: <b>dput <package list>
            <repo> && sh <reprepro wrapper></b>
          (voir ci-dessous pour le wrapper)<br>
        </li>
      </ol>
    </ol>
    <br>
    <br>
    <u>Build Jenkins</u><br>
    <br>
    OBM est construit de la manière suivante grâce à Jenkins (<a
      class="moz-txt-link-freetext"
      href="http://ci-obm.linagora.com/jenkins/">http://ci-obm.linagora.com/jenkins/</a>):<br>
    <br>
    <ol>
      <li>Construction de tout le Java (mvn install)<br>
      </li>
      <li>Construction des paquets des trois distributions supportées en
        parallèle EL5, EL6 et Debian (debuild, rpmbuild et toute la
        clique)</li>
      <li>Déploiement des paquets sur obm.org dans les dépôts idoine en
        parallèle (dput, plus un script custom)</li>
    </ol>
    <p>Pour 3/ le script custom en question est en fait un wrapper sur
      reprepro. Il se charge d'itérer sur le répertoire _incoming_
      rempli par dput avec les nouveaux paquets et de les déployer dans
      les dépôts.<br>
    </p>
    Nous avons aussi un job Jenkins qui permet d'initialiser de nouveaux
    dépôts pour une nouvelle version OBM.<br>
    -----<br>
    <br>
    On top of that, there's a Dockerfile at the root of the repository
    that you can use to build Debian and RPM packages and quickly serve
    them using a HTTP server, allowing you to use that as repositories
    for quick testing of changes.<br>
    <br>
    Thanks a lot for your excellent work and for upstreaming your
    patches.<br>
    <br>
    Regards,<br>
    <pre class="moz-signature" cols="72">David DOLCIMASCOLO
Resp. Equipe OBM / OBM Team Lead
Resp. Adjoint Equipe OpenPaas / OpenPaas Team Deputy
-------------------------------------------
+33 6 76 20 62 28
-------------------------------------------
Tour Franklin 31 ème étage
100/101 Quartier Boieldieu
92042 PARIS LA DEFENSE 
FRANCE
-------------------------------------------
Message envoyé avec OBM, La messagerie Libre :  <a class="moz-txt-link-freetext" href="http://www.obm.org/">http://www.obm.org/</a></pre>
    <div class="moz-cite-prefix">Le 18/08/2017 à 19:43, Jérémy Carnus a
      écrit :<br>
    </div>
    <blockquote cite="mid:718e2eebe26f5eddfac6c2fe6cb70869@jcarnus.fr"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <p>Bonjour,</p>
      <p>Je me permets d'envoyer un patch qui permet a OBM de supporter
        les nouveaux TLD (par example .restaurant, etc)..</p>
      <p>J'en profite aussi pour savoir si un support de strectch est
        prevu. Si non, est-ce que quelque'un peut me dire comment jouer
        dans le packaging de OBM pour l'installer sur un debian strech.
        Cela me permettrait de tester et d'envoyer un patch si cela
        marche bien</p>
      <p>Voila</p>
      <p>Merci</p>
      <p><br>
      </p>
      <div>-- <br>
        <div class="pre" style="margin: 0; padding: 0; font-family:
          monospace">--<br>
          Jérémy Carnus</div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Obm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Obm@list.obm.org">Obm@list.obm.org</a>
<a class="moz-txt-link-freetext" href="http://list.obm.org/listinfo/obm">http://list.obm.org/listinfo/obm</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>