
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.
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
te gebruiken. --reconfigure
module
Om de map python
uit het kdebindings bouwproces te verwijderen:
modulekdebindings
do-not-compilepython
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.
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 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!
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/
. 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-name
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.
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.
De primaire methode om dat te doen is om de optie --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.
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.
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.
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
op te starten. --refresh-build
module
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/
. Als u de waarde van de optie build-dir wijzigt, dan wordt dat gebruikt in plaats van module
/~/kdesrc/build
.
Herbouwen door .refresh-me
voor de module kdelibs
te gebruiken:
%
touch
~/kdesrc/build/
kdelibs
/.refresh-me%
kdesrc-build
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
for all modules:DISTRO
=BSD
global set-envDISTRO
BSD
end global
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).
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
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
. 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.--
optie-naam
=waarde
De optie source-dir instellen op /dev/null
voor een test:
%
kdesrc-build
--pretend
--
source-dir
=/dev/null
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