Geavanceerde functies

Een module gedeeltelijk bouwen

Het is mogelijk om alleen gedeeltes van een enkele KDE module te bouwen. Bijvoorbeeld, u wilt alleen een programma uit een module compileren. kdesrc-build heeft mogelijkheden om het u makkelijk te maken. Er zijn meerdere manieren om dit te doen.

Mappen uit een bouw verwijderen

Het is mogelijk om een gehele opslagruimte te downloaden maar het bouwsysteem er een paar mappen uit te laten wanneer er wordt gebouwd. Dit vereist dat de module CMake gebruikt en dat het bouwsysteem van de module om de map te verwijderen toestaat dit optioneel te laten zijn.

Dit wordt bestuurd met de optie do-not-compile.

Belangrijk

Deze optie vereist dat u in ieder geval na een wijziging het bouwsysteem herconfigureert. Dit doet u door het commando kdesrc-build --reconfigure module te gebruiken.

Om de map python uit het kdebindings bouwproces te verwijderen:

module kdebindings
  do-not-compile python
end module

Opmerking

Deze functie is afhankelijk van enkele afspraken gebruikt in de meeste KDE modules. Het hoeft daarom niet bij alle programma's te werken.

Ondersteuning voor branching en tagging bij for kdesrc-build

Wat zijn branches en tags?

Git ondersteunt het beheer van de geschiedenis van de KDE-broncode. KDE gebruikt deze ondersteuning om voor ontwikkeling branches (afsplitsingen) te creëren, en de repository zo nu en dan te taggen (markeren) met een nieuwe versie release.

Bijvoorbeeld, de KMail-ontwikkelaars kunnen aan het werk zijn voor een nieuwe functie in een andere branch om te vermijden dat ze de versie breken die bij de meeste ontwikkelaars in gebruik is. In deze branch kunnen ontwikkelingen aan de gang zijn, terwijl in de hoofd-branch (genaamd master) ook ontwikkelingen aan de gang kunnen zijn.

Een tag, aan de andere kant, is een gespecificeerd punt van de broncode-opslagruimte op een tijdstip. Dit wordt door het administratieteam van KDE gebruikt om een versie van de code te markeren als geschikt voor uitgave en de ontwikkelaars toch te laten werken aan de code.

Het gebruik van branches en tags

Het gebruik van branches en tags regelt u met een set van opties, die variëren van een gewoon verzoek voor een versie, tot een specifieke URL om van te downloaden voor gevorderde gebruikers.

De makkelijkste methode is om de branch en tag-opties te gebruiken. U gebruikt gewoon de optie samen met de naam van de gewenste branch of tag van een module, en kdesrc-build zal proberen om de juiste locatie in de KDE repository te bepalen waarvan het moet downloaden. Bij de meeste KDE modules werkt dit vrij goed.

Om kdelibs van KDE 4.6 (die gewoon bekend staat als de 4.6 branch) te downloaden:

module kdelibs
  branch 4.6
  # other options...
end module

Of, om kdemultimedia te downloaden zoals het was released met KDE 4.6.1:

module kdemultimedia
  tag 4.6.1
  # other options...
end module

Tip

U kunt een algemene (global) branch waarde instellen. Maar als u dat doet, vergeet dan niet om een andere branch voor de modules die niet de global branch gebruiken te specificeren!

Het bouwen vroeg stoppen

Normaal gaat het bouwen door zelfs als er zaken mislukken

kdesrc-build zal normaal een update doen, alle modules in de gespecificeerde lijst van te bouwen modules bouwen en installeren, zelfs als het bouwen van een module mislukt. Dit is gewoonlijk een gemak om u het bijwerken van software pakketten te bieden zelfs als er een eenvoudig foutje is gemaakt in een van de bronopslagruimten tijdens de ontwikkeling die de oorzaak is dat het bouwen breekt.

U zou echter willen dat kdesrc-build stopt met wat het aan het doen is wanneer het bouwen en installeren van een module mislukt. Dit kan u tijd besparen die verkwist kan zijn om voortgang te maken terwijl overblijvende modulen in de te bouwen lijst niet instaat zullen zijn ook met succes te bouwen, speciaal als u nooit eerder met succes de modules in the lijst hebt gebouwd.

Niet vroeg stoppen met --no-stop-on-failure

De primaire methode om dat te doen is om de optie --no-stop-on-failure op de opdrachtregel te gebruiken wanneer u kdesrc-build uitvoert.

Deze optie kan ook ingesteld worden in het configuratiebestand om het de normale modus van werken te maken.

Het is ook mogelijk om kdesrc-build bij uitvoeren te vertellen om te stoppen met bouwen na voltooiing van de huidige module waaraan gewerkt wordt. Dit in tegenstelling tot kdesrc-build interrumperen met een commando zoals Ctrl+C, die kdesrc-build onmiddellijk laat stoppen, met verlies van voortgang van de huidige module.

Belangrijk

kdesrc-build interrumperen tijdens het installeren van een module wanneer de optie use-clean-install is ingeschakeld zal betekenen dat de geïnterrumpeerde module niet beschikbaar zal zijn totdat kdesrc-build in staat is met succes de module te bouwen!

Als u het nodig hebt om kdesrc-build te interrumperen zonder een nette afsluiting in deze situatie, probeer dan tenminste dit te doen terwijl kdesrc-build een module installeert.

kdesrc-build netjes stoppen wanneer stop-on-failure is false

Zoals hierboven genoemd is het mogelijk kdesrc-build netjes vroeg te laten stoppen nadat deze de module waar nu aan wordt gewerkt heeft voltooid. Om dit te doen, moet u het POSIX-signaal HUP naar kdesrc-build zenden.

U kunt dit doen met een commando zoals pkill (op Linux® systemen) als volgt:

$ pkill -HUP kdesrc-build

Als dat met succes is gedaan zult u een bericht in de uitvoer van kdesrc-build zien zoals:

[ build ] recv SIGHUP, zal eindigen na deze module

Opmerking

kdesrc-build kan dit bericht meerdere keren laten zien afhankelijk van het aantal individuele kdesrc-build processen die actief zijn. Dit is normaal en geen indicatie van een fout.

Nadat kdesrc-build het signaal heeft bevestigd, zal het stoppen met verwerken nadat de huidige module is gebouwd en geïnstalleerd. Als kdesrc-build nog steeds broncode aan het bijwerken is toen het verzoek werd ontvangen, zal kdesrc-build stoppen nadat de broncode van de module is bijgewerkt. Nadat zowel het bijwerken als de bouwprocessen vroeg zijn gestopt, zal kdesrc-build zijn partiële resultaten afdrukken en dan eindigen.

Hoe kdesrc-build probeert zich te verzekeren van een succesvolle bouw

Automatisch herbouwen

kdesrc-build had vroeger de gewoonte om onderdelen toe te voegen bij automatische pogingen om een module te herbouwen na een mislukking (omdat soms dan deze poging tot herbouwen wel werkte, vanwege bugs in het bouwsysteem op dat moment). Dankzij de omschakeling naar CMake heeft het bouwsysteem geen last meer van deze bugs, zodat kdesrc-build niet langer meer dan een keer zal proberen een module te herbouwen. Er zijn echter situaties waar kdesrc-build toch zal proberen actie te ondernemen:

  • Als u configure-flags of cmake-options voor een module wijzigt, dan zal kdesrc-build dit detecteren en automatisch configure of cmake voor dat module herstarten.

  • Als het bouwsysteem niet bestaat (ook als kdesrc-build het niet heeft verwijderd) dan zal kdesrc-build het automatisch recreëren. Dit is handig om een volledige --refresh-build uit te kunnen voeren voor een specifiek module zonder dat het ook voor andere modules uitgevoerd te hoeven worden.

Handmatig een module herbouwen

Als u een wijziging aan de optiewaarden van een module aanbrengt, of de broncode van de module wijzigt zodanig dat kdesrc-build het niet herkent, dan kan het nodig zijn dat u handmatig de module moet herbouwen.

U kunt dit gewoon doen door kdesrc-build --refresh-build module op te starten.

Als u graag heeft dat kdesrc-build automatisch de module tijdens de volgende normale bouw update automatisch wordt herbouwd, dan kunt een speciaal bestand creëren. Elke module heeft een bouwmap. Als u u een bestand genaamd .refresh-me in de bouwmap van een module creëert, dan zal kdesrc-build de volgende keer dat het bouwproces gebeurt de module herbouwen, zelfs als het normaal gesproken de snellere incrementele bouw zou uitvoeren.

Tip

Standaard is de bouwmap ~/kde/build/module/. Als u de waarde van de optie build-dir wijzigt, dan wordt dat gebruikt in plaats van ~/kde/build.

Herbouwen door .refresh-me voor de module kdelibs te gebruiken:

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

De instellingen van de omgevingsvariabelen wijzigen

Normaal gesproken gebruikt kdesrc-build om updates en het bouwproces uit te voeren de bij de start aanwezige omgeving voor het gebruik van programma's. Dit is handig voor het gebruik van kdesrc-build vanaf de commandoregel.

Maar als u de instellingen voor de omgevingsvariabelen wilt wijzigen waarvoor kdesrc-build niet direct een optie voor heeft. (Bijvoorbeeld, om de vereiste omgevingsvariabelen op te zetten om kdesrc-build door een timer zoals Cron te laten starten) Dan kunt u dit doen met de optie set-env.

Afwijkend van de meeste andere opties, kunt u deze meer dan een keer instellen, en het accepteert twee waarden, gescheiden door een spatie. De eerste is de naam van de in te stellen omgevingsvariabele, en de rest van de regel is de waarde.

Set DISTRO=BSD for all modules:

global
  set-env DISTRO BSD
end global

Hervatten van bouwprocessen

Hervatten na een mislukte of afgebroken bouwproces

U kunt kdesrc-build vertellen om te beginnen met bouwen vanaf een andere module dan dat het normaal zou doen. Dit kan nuttig zijn wanneer een set modulen mislukt of als als u een uitvoering van het bouwen middenin hebt geannuleerd. U kunt dit besturen met de optie --resume-from en de optie --resume-after.

Opmerking

Oudere versies van kdesrc-build zouden de update van de broncode overslaan bij het hervatten van een bouw. Standaard gebeurt dit niet langer, maar u kunt altijd de commandoregelparameter --no-src gebruiken om de update van de broncode over te slaan.

De start van de bouw hervatten vanaf kdebase:

% kdesrc-build --resume-from=kdebase

De start van de bouw hervatten na kdebase (in het geval dat u handmatig het probleem herstelde en de module zelf installeerde):

% kdesrc-build --resume-after=kdebase

Als de laatste kdesrc-build-bouw eindigde met een bouw-mislukking, dan kunt u ook de commandoregelparameter --resume gebruiken, wat hervat met de laatste bouw , startend met de module die mislukte. De update van de broncode en metadata worden ook overgeslagen (maar als u dit nodig heeft, dan is het in het algemeen beter om --resume-from te gebruiken).

Modules tijdens de bouw negeren

Vergelijkbaar met de manier waarop u de bouw hervat vanaf een module, in plaats daarvan kunt u ervoor kiezen om alles zoals normaal te updaten en te bouwen, en een groep modules te negeren.

Dit kunt u doen door de optie --ignore-modules te gebruiken. Met deze optie kunt u opdracht geven aan kdesrc-build om bij de update en de bouw op de commandoregel opgegeven modules te negeren.

Tijdens een complete run extragear/multimedia en kdereview negeren:

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

Vanaf de commandoregel opties wijzigen

Algemene (global) opties wijzigen

U kunt direct vanaf de commandoregel de optiewaarden ingelezen van het configuratiebestand wijzigen. Dit overschrijft de instellingen uit het configuratiebestand, maar dat is alleen maar tijdelijk. Het het heeft alleen maar effect zolang het opdrachtregel aanwezig blijft.

Bij kdesrc-build kunt u opties zoals option-name wijzigen door op de commandoregel een argument op te geven in de vorm--optie-naam=waarde. kdesrc-build zal herkennen dat het niet weet wat de optie inhoud, en de naam opzoeken in de lijst met optienamen. Als de naam onbekend is, dan geeft het een waarschuwing, anders zal het tijdelijk de instellingen in het configuratiebestand overschrijven met de door u gegeven waarde.

De optie source-dir instellen op /dev/null voor een test:

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

Module opties wijzigen

Het is ook mogelijk om opties alleen voor een specifieke module te wijzigen. De syntax is vergelijkbaar: --module,optienaam=waarde.

Deze wijziging overschrijft alle overeenkomstige instellingen in het configuratiebestand voor de gevonden module, en past alleen die waarden toe die met de optie op de commandoregel zijn opgegeven.

Een ander bouwmap gebruiken voor de kdeedu module:

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