Joan (discussió | contribucions)
Joan (discussió | contribucions)
Cap resum de modificació
Línia 1: Línia 1:
[[Category:SAPO]]
[[Category:SAPO]]


=== Sistema de compilació automatitzat del SAPO ===
== Sistema de compilació automatitzat del SAPO ==


==== Pasos ====
=== Pasos ===
===== Actualització/obtenció del codi =====
==== Actualització/obtenció del codi ====


El primer pas és obtenir una copia actualitzada del codi que es troba en el servidor SVN (svn.cadt.com).
El primer pas és obtenir una copia actualitzada del codi que es troba en el servidor SVN (svn.cadt.com).
Línia 41: Línia 41:
l'auto-generació de documentació.
l'auto-generació de documentació.


===== Compilació =====
==== Compilació ====


Un cop obtingut/actualitat el codi de tots els paquets i dependències es pot procedir a la generació dels paquets.
Un cop obtingut/actualitat el codi de tots els paquets i dependències es pot procedir a la generació dels paquets.
Línia 71: Línia 71:
|}
|}


===== Distribució =====
==== Distribució ====


<pre>
<pre>
~/scripts/sapo_build <sapo_release> <arch>
~/scripts/sapo_build <sapo_release> <arch>
</pre>
</pre>

Revisió del 09:31, 2 feb 2017


Sistema de compilació automatitzat del SAPO

Pasos

Actualització/obtenció del codi

El primer pas és obtenir una copia actualitzada del codi que es troba en el servidor SVN (svn.cadt.com).

Això es pot fer des de sapo-builder@containers.cadt.com invocant l'script de perl :

~/scripts/sapo_source_update <sapo_release>

On <sapo_release> es la versió del sapo.

L'script procedeix de la següent manera:

  • Intenta determinar el directori base on es descarregarà el codi mirant la variable SVN_BASE. Si no existeix o no apaunta a un directori

intenta amb /svn/svn.cadt.com /svn ~/SVN

  • descarrega/actualtiza $SVN_BASE/Make.rules
  • crea el directori $SVN_BASE/sapo si no existeix
  • actualitza/descarrega svn://svn.cadt.com/sapo-<sapo_release> a $SVN_BASE/sapo/<sapo_release>
  • llegeix els fitxers de paquets (*.list) per totes les arquitectures que es troben a: $SVN_BASE/sapo/<sapo_release>/programs/
  • descarrega/actualitza tots els paquets llistats en els fixers *.list ,però només la versió indicada
  • inicialitza la llista de dependencies no resoltes a partir dels fitxers lib_versions.dep obtinguts del directori base de la versió del paquet que es vol compilar
  • descarrega/actualitza les llibreries necessaries per resoldre les dependències fins que s'han resolt totes les dependencies o no pot obtenir les llibreries necessaries del SVN
  • verifica que no hi hagin dependències circulars i genera la seqüència en que s'han de compilar i opcionalment instal·lar els diferents paquets i llibreries.
  • per cada arquitectura genera un fitxer que conté la seqüència de pasos per fer la compilació i el guarda a $SVN_BASE/sapo/<sapo_release>/programs/<arch>-build.csv
  • genera un un fitxer .txt amb el llistat de tots els paquets i el desa a: $SVN_BASE/sapo/<sapo_release>/programs/package_list.txt . Aquest fitxer s'utilitza més endavant per

l'auto-generació de documentació.

Compilació

Un cop obtingut/actualitat el codi de tots els paquets i dependències es pot procedir a la generació dels paquets.

A diferència del anterior, part del procés depèn de l'arquitectura per la se està generant el paquet i diverses accions s'hauran de repetir per cada una de les arquitectures destí.

Per evitar els problemes de configurar un cross-compiler, s'ha optat per tenir diversos nodes de compilació: un per cada arquitectura. Per evitar tenir un servidor dedicat a cada arquitectura s'ha optat per usar virtualització. En concret totes les arquitectures Linux s'han virtualitzat usant containers. S'ha optat per aquesta solució ja que:

  • Rendiment gairabé idèntic a usar una màquina real.
  • Permet compartir directoris entre els diferents nodes. Això facilita compartir dades entre els nodes i també simplifica la actualització de codi i scripts.
  • Facilitat de manipular diverses versions del mateix node.

També per evitar problemes en el futur s'ha optat per conectar-se als nodes via SSH cosa que ens aïlla del tipus de virtualització utilitzat.

Node OS Arquitectura Hostatjat a Port SSH
centos3_devel CentOS 3 (x86) linux-rhel3 containers.cadt.com 2203
centos6_devel CentOS 6 (x86) linux-rhel6 containers.cadt.com 2206
centos7_devel CentOS 7 (x86_64) linux64-rhel7 containers.cadt.com 2207

Distribució

~/scripts/sapo_build <sapo_release> <arch>