Característiques avançades

Construir parcialment un mòdul

És possible construir només peces des d'un únic mòdul del KDE. Per exemple, possiblement voldreu compilar només un programa d'un mòdul. El kdesrc-build té característiques per a facilitar-ho. Hi ha diverses maneres complementàries de fer-ho.

Eliminar directoris d'una construcció

És possible descarregar tot un repositori, però fent que el sistema de construcció ometi alguns directoris quan realitza la construcció. Això requereix que el mòdul empri el CMake i que el sistema de compilació del mòdul permeti que l'eliminació del directori sigui opcional.

Això es controla amb l'opció do-not-compile.

Important

Aquesta opció almenys requereix que el sistema de construcció del mòdul es reconfiguri després de canviar-la. Això es fa utilitzant l'ordre kdesrc-build --reconfigure mòdul.

Per a eliminar el directori python del procés de construcció del kdebindings:

module kdebindings
  do-not-compile python
end module

Nota

Aquesta funció depèn d'algunes convencions estàndard utilitzades en la majoria dels mòduls del KDE. Per tant, podria no funcionar per a tots els programes.

Admetre branques i etiquetatge al kdesrc-build

Què són les branques i les etiquetes?

El Git admet la gestió de l'historial del codi font del KDE. El KDE utilitza aquest suport per a crear branques per al desenvolupament i per a etiquetar el repositori de tant en tant amb una nova versió.

Per exemple, els desenvolupadors del KMail poden estar treballant en una nova característica en una branca diferent per a evitar trencar la versió utilitzada per la majoria dels desenvolupadors. Aquesta branca té un desenvolupament continu en el seu interior, fins i tot mentre la branca principal (anomenada master) pot seguir amb el seu desenvolupament.

Una etiqueta, d'altra banda, és punt específic del repositori de codi font en una posició en el temps. L'equip d'administració del KDE, l'utilitza per a marcar una versió de codi adequada per al seu llançament i permetre que els desenvolupadors encara treballin en el codi.

Com utilitzar les branques i les etiquetes

El suport per a les branques i etiquetes es gestiona mitjançant un conjunt d'opcions, les quals van des d'una sol·licitud genèrica per a una versió, fins a un URL específic de descàrrega per a usuaris avançats.

El mètode més fàcil és utilitzar les opcions «branch» i «tag». Simplement utilitzeu l'opció juntament amb el nom de la branca o etiqueta desitjada per a un mòdul, i el kdesrc-build intentarà determinar la ubicació apropiada dins del repositori del KDE per a descarregar. Això funciona molt bé per a la majoria dels mòduls del KDE.

Per a descarregar el kdelibs del KDE 4.6 (el qual simplement es coneix com la branca 4.6):

module kdelibs
  branch 4.6
  # Altres opcions...
end module

O, per a descarregar el kdemultimedia tal com es va llançar amb el KDE 4.6.1:

module kdemultimedia
  tag 4.6.1
  # Altres opcions...
end module

Suggeriment

Podeu especificar un valor global de branca. Però si ho feu, no oblideu especificar una branca diferent per als mòduls que no han d'utilitzar la branca global!

Aturar aviat la construcció

La construcció continua normalment fins i tot si es produeixen fallades

El kdesrc-build normalment actualitzarà, construirà i instal·larà tots els mòduls a la llista especificada de mòduls a construir, fins i tot si un mòdul falla en la seva construcció. Habitualment, això és una comoditat per a permetre actualitzar els paquets de programari fins i tot si es comet un error simple en un dels repositoris d'origen durant el desenvolupament que fa que la construcció es trenqui.

No obstant això, és possible que vulgueu que el kdesrc-build aturi el que està fent una vegada que un mòdul falli en construir i instal·lar. Això pot ajudar a estalviar temps que es malgastarà intentant avançar quan els mòduls que queden a la llista de construcció tampoc no es podran construir amb èxit, especialment si mai heu construït correctament els mòduls a la llista.

No s'atura aviat amb --no-stop-on-failure

El mètode primari per a fer-ho és usar l'opció de la línia d'ordres --no-stop-on-failure quan executeu kdesrc-build.

Aquesta opció també es pot definir al fitxer de configuració perquè sigui el mode normal d'operació.

També és possible dir-li al kdesrc-build en temps d'execució que deixi de construir després de completar el mòdul actual en el qual està treballant. Això és en contraposició a interrompre el kdesrc-build utilitzant una ordre com Ctrl+C, que interromp immediatament el kdesrc-build, perdent el progrés del mòdul actual.

Important

La interrupció del kdesrc-build durant la instal·lació d'un mòdul quan l'opció use-clean-install està activada vol dir que el mòdul interromput no estarà disponible fins que el kdesrc-build sigui capaç de construir el mòdul amb èxit!

Si cal interrompre el kdesrc-build sense permetre una aturada ordenada en aquesta situació, almenys intenteu evitar fer-ho mentre el kdesrc-build estigui instal·lant un mòdul.

Atureu aviat el kdesrc-build quan «stop-on-failure» és «false»

Com s'ha esmentat anteriorment, és possible fer que el kdesrc-build s'aturi ordenadament aviat una vegada hagi completat el mòdul en el qual està treballant actualment. Per a fer-ho, cal enviar el senyal POSIX HUP al kdesrc-build

Això podeu fer-ho amb una ordre com pkill (en els sistemes Linux®) així:

$ pkill -HUP kdesrc-build

Si es fa correctament, veureu un missatge a la sortida del kdesrc-build semblant a:

[ build ] recv SIGHUP, acabarà després d'aquest mòdul

Nota

El kdesrc-build pot mostrar aquest missatge diverses vegades depenent del nombre de processos individuals del kdesrc-build que estiguin actius. Això és normal i no una indicació d'un error.

Una vegada que el kdesrc-build hagi reconegut el senyal, deixarà de processar després de construir i instal·lar el mòdul actual. Si el kdesrc-build encara està actualitzant el codi font quan es rebi la petició, el kdesrc-build s'aturarà després que s'hagi completat l'actualització del codi font del mòdul. Una vegada que els processos d'actualització i construcció s'hagin aturat aviat, el kdesrc-build imprimirà els seus resultats parcials i sortirà.

Com el kdesrc-build mira d'assegurar una correcta construcció

Reconstruccions automàtiques

El kdesrc-build solia incloure característiques per a intentar reconstruir automàticament el mòdul després d'una fallada (ja que de vegades aquest reintent funcionava, en aquests moments a causa d'errors en el sistema de construcció). Gràcies al canvi a CMake, el sistema de construcció ja no pateix aquests errors, de manera que el kdesrc-build no intentarà compilar un mòdul més d'una vegada. No obstant això, hi ha situacions en què el kdesrc-build prendrà mesures de manera automàtica:

  • Si canvieu configure-flags o cmake-options per a un mòdul, llavors el kdesrc-build ho detectarà i tornarà a executar automàticament el configure o cmake per a aquest mòdul.

  • Si el sistema de construcció no existeix (fins i tot si el kdesrc-build no l'ha suprimit), el kdesrc-build el tornarà a crear automàticament. Això és útil per a permetre realitzar una --refresh-build completa per a un mòdul específic sense que es realitzi en els altres mòduls.

Reconstrucció manual d'un mòdul

Si realitzeu un canvi la configuració de les opcions d'un mòdul, o el codi font del mòdul canvia d'una manera que el kdesrc-build no reconeix, és possible que hàgiu de reconstruir el mòdul manualment.

Podreu fer això, executant kdesrc-build --refresh-build mòdul.

Si us agradaria que el kdesrc-build reconstrueixi automàticament el mòdul durant la pròxima actualització normal de la construcció, podreu crear un fitxer especial. Cada mòdul té un directori de construcció. Si creeu un fitxer anomenat .refresh-me en el directori de construcció d'un mòdul, el kdesrc-build reconstruirà el mòdul la pròxima vegada que succeeixi el procés de construcció, encara que normalment realitzaria la construcció incremental, la qual és més ràpida.

Suggeriment

De manera predeterminada, el directori de construcció és ~/kde/build/mòdul/. Si canvieu la configuració de l'opció build-dir, utilitzeu-la en lloc de ~/kde/build.

Reconstruïu utilitzant .refresh-me per al mòdul kdelibs:

% touch ~/kdesrc/build/kdelibs/.refresh-me
% kdesrc-build

Canviar la configuració de les variables d'entorn

Normalment, el kdesrc-build utilitza l'entorn que es troba present quan s'inicia en executar els programes per a realitzar les actualitzacions i construccions. Això és útil quan executeu el kdesrc-build des de la línia d'ordres.

No obstant això, possiblement voldreu canviar la configuració de les variables d'entorn per a les quals el kdesrc-build no proporciona directament una opció. (Per exemple, per a establir qualsevol variable d'entorn requerida quan s'executa el kdesrc-build en un temporitzador com el Cron). Això és possible amb l'opció «set-env».

A diferència de la majoria de les opcions, es pot establir més d'una vegada i accepta dues entrades, separades per un espai. El primer és el nom de la variable d'entorn a establir, i la resta de la línia serà el valor.

Establir DISTRO=BSD per a tots els mòduls:

global
  set-env DISTRO BSD
end global

Reprendre les construccions

Reprendre una construcció fallida o interrompuda

Podreu dir-li al kdesrc-build que comenci a construir des d'un mòdul diferent del que normalment faria. Això pot ser útil quan falla un conjunt de mòduls, o si cancel·leu al mig d'una execució de construcció. Podeu controlar això utilitzant les opcions --resume-from i l'opció --resume-after.

Nota

Les versions antigues de kdesrc-build ometien l'actualització del codi font en reprendre una construcció. Això ja no es fa de manera predeterminada, però sempre podreu utilitzar l'opció --no-src de la línia d'ordres per a ometre l'actualització del codi font.

Reprendre la construcció a partir del kdebase:

% kdesrc-build --resume-from=kdebase

Reprendre la construcció a partir del kdebase (en el cas que s'hagi solucionat el problema manualment i instal·lat el mòdul vosaltres mateixos):

% kdesrc-build --resume-after=kdebase

Si l'última construcció de kdesrc-build va acabar amb una fallada de construcció, també podreu utilitzar l'opció --resume de la línia d'ordres, la qual reprendrà la darrera construcció que comenci en el mòdul que va fallar. Les actualitzacions del codi font i de les metadades també s'ometran (però si les necessiteu, en general serà millor utilitzar --resume-from en el seu lloc).

Ignorar mòduls en una construcció

De manera similar a la forma en què podeu reprendre la construcció a partir d'un mòdul, podreu optar per actualitzar i construir-ho tot normalment, però ignorant un conjunt de mòduls.

Podreu fer això utilitzant l'opció --ignore-modules. Aquesta opció li diu al kdesrc-build que ignori tots els mòduls a la línia d'ordres en realitzar l'actualització i la construcció.

Ignorar extragear/multimedia i kdereview durant una execució completa:

% kdesrc-build --ignore-modules extragear/multimedia kdereview

Canviar les opcions des de la línia d'ordres

Canviar les opcions globals

Podeu canviar la configuració de les opcions llegides directament des del fitxer de configuració amb la línia d'ordres. Aquest canvi superposarà l'opció del fitxer de configuració, però només és temporal. Només té efecte mentre segueixi present a la línia d'ordres.

El kdesrc-build permet canviar les opcions nomenades com nom_opció passant un argument a la línia d'ordres en la forma --nom_opció=valor. El kdesrc-build reconeixerà quan no sàpiga quina és l'opció i cercarà el nom a la seva llista de noms d'opció. Si no reconeix el nom, us avisarà, en cas contrari, recordarà el valor en el qual la vàreu establir i superposarà qualsevol opció des del fitxer de configuració.

Establiu l'opció source-dir a /dev/null per a proves:

% kdesrc-build --pretend --source-dir=/dev/null

Canviar les opcions dels mòduls

També és possible canviar les opcions només per a un mòdul específic. La sintaxi és similar a: --mòdul,nom_opció=valor.

Aquest canvi superposarà qualsevol opció duplicada per al mòdul que es troba al fitxer de configuració, i només s'aplicarà mentre es passa l'opció sobre la línia d'ordres.

Utilitzant un directori de construcció diferent per al mòdul kdeedu:

% kdesrc-build --kdeedu,build-dir=temp-build