Uitgebreide functionaliteiten

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?

Subversion 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 /trunk) ook ontwikkelingen aan de gang kunnen zijn.

Een tag, aan de andere kant, is een snapshot van de broncoderepository op een tijdstip. Dit wordt door het administratieteam van KDE gebruikt om een versie van de code te markeren als geschikt voor release en de ontwikkelaars toch te laten werken aan de code.

In Subversion is er geen verschil tussen branches, tags, of trunk wat betreft de code. Het is alleen maar een afspraak tussen de ontwikkelaars. Dit maakt het moeilijk om goed branches en tags te hanteren door kdesrc-build. Maar, er zijn toch enkele dingen die gedaan kunnen worden.

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!

Geavanceerde opties wat betref branches

kdesrc-build heeft twee opties voor situaties waar branch en tag het juiste pad incorrect bepaalt: module-base-path en override-url.

  • module-base-path gebruikt u om kdesrc-build te helpen met het invullen van het ontbrekende gedeelte van een module's pad. In de repository van KDE, zijn alle paden in de vorm svnRoot/module-base-path/module-name. Normaal gesproken kan kdesrc-build zelf het van toepassing zijnde middelste gedeelte bepalen. Als dat niet lukt, dan kunt i module-base-path, op de volgende manier gebruiken:

    module kdesupport
        # kdesupport ondersteunt verschillende tags om makkelijk het vereiste 
        # software voor een bepaalde KDE Platform release te organiseren.
        module-base-path tags/kdesupport-for-4.5
    end module
    

    Dit zorgt ervoor dat kdesrc-build gaat downloaden kdesupport van (in dit voorbeeld), svn://anonsvn.kde.org/home/kde/tags/kdesupport-for-4.5.

    Tip

    In vorige versies van kdesrc-build werd de module-base-path anders behandelt. Als u problemen tegenkomt bij het gebruik van een oude module-base-path definitie dan zou misschien moeten controleren of het daadwerkelijke pad hetzelfde is als wat kdesrc-build verwacht bij het gebruik van de optie --pretend.

  • Bij de optie override-urlis het vereist dat u het exacte pad specificeert waarvan u download. Maar, hiermee kunt u wel van paden downloaden waarmee u bij voorgaande versies van kdesrc-build geen hoop had om van te kunnen downloaden. Op dit moment zou de optie module-base-path genoeg moeten zijn om van elke Subversion bron URL te kunnen downloaden.

    Belangrijk

    kdesrc-build zal de waarde die u specificeerde voor override-url absoluut niet wijzigen of corrigeren, dus als u uw svn-server-instelling wijzigt, dan zal u dit ook moeten bijwerken.

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 ~/kdesrc/build/module/. Als u de waarde van de optie build-dir wijzigt, dan wordt dat gebruikt in plaats van ~/kdesrc/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 opdracht geven aan kdesrc-build om de bouw vanaf een andere module te starten dan wat het normaal zou doen. Dit kan handig zijn als een groep modules mislukte, of als u een de bouw in het midden af heeft gebroken. U kunt dit regelen met de hulp van 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