| Línia 43: | Línia 43: | ||
===== Compilació ===== | ===== Compilació ===== | ||
Un cop | 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. | |||
{|class=wikitable | |||
!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 | |||
|} | |||
===== Copia al repositori ===== | ===== Copia al repositori ===== | ||
Revisió del 09:27, 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 |
Copia al repositori
~/scripts/sapo_build <sapo_release> <arch>