| Línia 17: | Línia 17: | ||
L'script procedeix de la següent manera: | 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 <nowiki>svn://svn.cadt.com/sapo-</nowiki>'''<sapo_release>''' a $SVN_BASE/sapo/'''<sapo_release>''' | ||
* descarrega/actualitza tots els paquets | * 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 | * 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 | ||
| Línia 33: | Línia 36: | ||
* 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. | * 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 | * 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 la | |||
auto-generació de documentacio. | |||
===== Compilació ===== | ===== Compilació ===== | ||
Revisió del 15:32, 30 gen 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 la
auto-generació de documentacio.
Compilació
Un cop obtinguts el codi de tots els paquets i les seves dependències es procedeix a la compilació.
A diferència del pas anterior, aquest pas s'ha de repetir per cada arquitectura cosa que en el nostre cas
implica fer un ssh a cada un dels containers següents per obtenir el sapo per totes les versions de linux que soporta:
- centos3_devel (host:containers.cadt.com port:2203)
- centos6_devel (host:containers.cadt.com port:2206)
- centos7_devel (host:containers.cadt.com port:2207)
Per la compilació, s'utilitza un script de bash enlloc de perl , ja que gairabé tot el processat de dades ja ha estat fet en el pas anterior i ara només s'ha de anar invocant el make per cada un dels elements de la llista guardada en el fitxer build.csv .
l'script responsable de la compilació s'invoca normalment de la següent manera:
~/scripts/sapo_build <sapo_release> >/tmp/build.log 2>&1
Aquest script procedeix de la següent manera per processar cada linia:
- entra al directori base de la versio del paquet/llibreria
- compila el programa executant: 'make'
- si és una llibreria l'instal.la executant: 'make install'
- si és un paquet :
- executa 'make program'
- executa 'make notes' en cas que sigui necessari
- executa 'make rpm' per generar el paquet, a menys que s'hagi desactivat amb l'opció 'nopkg' al fitxer .list corresponent
Copia al repositori
~/scripts/sapo_build <sapo_release> <arch>