Додаткові можливості

Часткове збирання модуля

Існує також можливість збирання окремих фрагментів окремого модуля KDE. Наприклад, ви можете зібрати лише одну з програм модуля. У kdesrc-build передбачено засоби для полегшення такого збирання. Існує декілька шляхів виконати подібне збирання.

Вилучення каталогів з процесу збирання

Ви можете наказати скрипту отримати усе сховище, але наказати системі збирання не виконувати збирання у деяких каталогах. Щоб цим можна було скористатися, у модулі має бути використано CMake, система збирання модуля має уможливлювати виключення певного каталогу.

Кероване параметром do-not-compile.

Важливо

Для того, щоб зміни, внесені цим параметром, набули чинності, вам слід запустити скрипт налаштування системи збирання відповідного модуля ще раз. Це можна зробити за допомогою команди kdesrc-build --reconfigure назва_модуля.

Щоб вилучити каталог python з процесу збирання kdebindings, додайте такі рядки:

module kdebindings
  do-not-compile python
end module

Примітка

Працездатність цієї функції залежить від виконання деяких стандартів, які використовуються у більшості модулів KDE. Саме тому вона може не працювати для деяких програм.

Підтримка версій і випусків у kdesrc-build

Що таке версія (branch) і випуск (tag)?

Git підтримує керування журналом змін коду KDE. KDE використовує цю підтримку для створення версій, які розробляються, і створення сховищ випусків для зберігання коду випущених версій середовища.

Наприклад, розробники KMail можуть працювати над новою можливістю у іншій версії, щоб уникнути можливої непрацездатності версії, над якою працює більшість інших розробників. У цій версії відбувається розробка, хоча розробка також відбувається і у основному сховищі версій (яке називається master).

З іншого боку, випуск є певною точкою у сховищі коду у певний момент часу. Таке сховище використовується командою адміністрування KDE для позначення версії коду, придатної для випуску, а також надає розробниками можливість доопрацьовувати їх код.

Як користуватися версіями і випусками?

Підтримка версій і випусків забезпечується набором параметрів, які призначено для виконання дій у діапазоні від загального запису на певну версію, до визначення адреси URL для отримання досвідченими користувачами.

Найпростішим способом є використання параметрів branch і tag. Ви можете просто скористатися параметром з аргументом-назвою бажаної версії або випуску модуля, — kdesrc-build спробує визначити належну адресу у сховищі KDE для отримання коду. Для більшості модулів KDE таких спосіб працює дуже добре.

Щоб отримати kdelibs зі складу KDE 4.6 (відповідне сховище відоме як версія 4.6):

module kdelibs
  branch 4.6
  # інші параметри...
end module

Або, щоб отримати kdemultimedia у вигляді, у якому цей модуль було випущено у KDE 4.6.1:

module kdemultimedia
  tag 4.6.1
  # інші параметри...
end module

Підказка

Ви можете вказати загальне значення версії (branch). Але, якщо ви це зробите, не забудьте вказати іншу версію для модулів, які не використовують загальної нумерації версій!

Передчасне зупинення збирання

Якщо станеться помилка, збирання, зазвичай, продовжується

Зазвичай, kdesrc-build оновлюватиме, збиратиме і встановлюватиме усі модулі у вказаному списку модулів для збирання, навіть якщо якийсь модуль не вдасться зібрати. Так зроблено для зручності: це уможливлює оновлення пакунків програмного забезпечення, навіть якщо у якомусь зі сховищ є помилка, якої припустилися при розробці і яка призводить до помилок під час збирання.

Втім, може виникнути потреба у зупинці дій, які виконує kdesrc-build, щойно не вдасться зібрати і встановити якийсь модуль. Це може заощадити час, який могло б бути витрачено на спроби зібрати решту модулів у списку збирання, які також не можна буде успішно зібрати, особливо, якщо ви ще не збирали успішно модулі у списку.

Вимикання передчасної зупинки за допомогою --no-stop-on-failure

Основним способом досягнення мети є використання параметра командного рядка --no-stop-on-failure при запуску kdesrc-build.

Цей параметр також можна встановити у файлі налаштувань, щоб зробити його звичайним режимом роботи.

Також можна повідомити запущеному екземпляру kdesrc-build про те, що слід зупинити збирання після завершення збирання поточного модуля, над яким працює програма. Це не те саме, що перервати роботу kdesrc-build за допомогою команди, подібної до Ctrl+C, яка перериває роботу kdesrc-build негайно із втратою поступу збирання поточного модуля.

Важливо

Переривання роботи kdesrc-build під час встановлення, якщо увімкнено параметр use-clean-install, означатиме, що модуль, збирання якого було перервано, буде недоступним, аж доки kdesrc-build не зможе його успішно зібрати!

Якщо вам потрібно перервати роботу kdesrc-build без уможливлення штатного завершення роботи у цій ситуації, принаймні намагайтеся уникнути цього під час встановлення модуля за допомогою kdesrc-build.

Штатне зупинення роботи kdesrc-build, якщо stop-on-failure має значення false

Якщо ми вже згадували вище, можна наказати kdesrc-build передчасно і штатно завершити роботу після завершення збирання якогось модуля, над яким працюватиме програма. Щоб зробити це, вам слід надіслати kdesrc-build сигнал POSIX HUP.

Зробити це можна за допомогою команди, подібної до pkill (у системах Linux®), ось так:

$ pkill -HUP kdesrc-build

Якщо завдання виконано успішно, ви побачите у виведених kdesrc-build даних повідомлення, подібне до такого:

[ build ] recv SIGHUP, will end after this module

Примітка

kdesrc-build може виводити це повідомлення декілька разів, залежно від кількості окремих активних процесів kdesrc-build. Така поведінка є звичною і не вказує на помилку.

Щойно kdesrc-build отримає сигнал, програма припинить обробку завдання після збирання і встановлення поточного модуля. Якщо під час отримання сигналу kdesrc-build перебуватиме на етапі оновлення початкового коду, при отримання сигналу kdesrc-build зупинить обробку, щойно буде завершено отримання початкового коду. Щойно процеси оновлення та збирання передчасно завершать роботу, kdesrc-build виведе дані щодо часткових результатів і завершить роботу.

Способи, у які kdesrc-build намагається забезпечити успішне збирання

Автоматичне перезбирання

У попередніх версіях kdesrc-build було передбачено можливості для автоматичного повторення спроби збирання модуля після невдалої спроби (оскільки іноді така повторна спроба буває успішною, причиною можуть бути вади у системі збирання). Завдяки переходу на CMake, система збирання вже не страждає на подібні вади, отже kdesrc-build не намагатимуться зібрати модуль повторно. Але можливі випадки, коли kdesrc-build виконає повторне збирання автоматично:

  • Якщо ви зміните configure-flags або cmake-options для певного модуля, kdesrc-build виявить ці зміни і повторно запустить скрипт configure або cmake для відповідного модуля.

  • Якщо системи збирання не існує (навіть якщо kdesrc-build не вилучав її), kdesrc-build автоматично створить її повторно. Це буде корисним, якщо ви виконуєте повне повторне збирання (--refresh-build) для певного модуля без виконання повторного збирання для інших модулів.

Перезбирання модуля вручну

Якщо ви змінили параметри певного модуля або код модуля змінився таким чином, що kdesrc-build не може його розпізнати, у вас може виникнути потреба у повторному збиранні цього модуля вручну.

Ви можете зробити це простою командою kdesrc-build --refresh-build назва_модуля.

Якщо замість цього ви бажаєте, щоб скрипт kdesrc-build автоматично перезібрав модуль під час наступного звичайного оновлення збирання, ви можете створити спеціальний файл. Кожен з модулів має власний каталог для збирання. Якщо ви створите у цьому каталозі для збирання файл з назвою .refresh-me, kdesrc-build повторно збере модуль під час наступного сеансу збирання, навіть якщо скрипт виконує швидке нарощувальне збирання.

Підказка

Типово, каталогом збирання буде ~/kde/build/назва модуля/. Якщо ви зміните значення параметра build-dir, буде замість ~/kde/build буде використано значення цього параметра.

Повторне збирання за допомогою .refresh-me модуля kdelibs:

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

Зміна параметрів змінних середовища

Зазвичай kdesrc-build використовує поточні параметри середовища для запуску програм, призначених для виконання оновлень та збирання. Це корисно, якщо ви запускаєте kdesrc-build з командного рядка.

Крім того, у вас може виникнути потреба у зміні тих змінних середовища, для яких у kdesrc-build не передбачено параметрів. (Наприклад, щоб визначити будь-які змінні середовища під час запуску kdesrc-build за таймером, наприклад Cron.) Це можна зробити за допомогою параметра set-env.

На відміну від інших параметрів, цей параметр можна визначати декілька разів, він приймає два записи, відокремлені пробілом. Першим з записів є назва змінної середовища, яку слід встановити, решта рядка вважається значенням цієї змінної.

Встановити значення змінної DISTRO=BSD для всіх модулів:

global
  set-env DISTRO BSD
end global

Поновлення збирання

Поновлення збирання, яке завершилося помилкою або було скасоване

Ви можете наказати kdesrc-build почати збирання з модуля, відмінного від того, з якого скрипт зазвичай розпочинає збирання. Такі налаштування можуть стати у пригоді, якщо спроба збирання певного набору модулів завершилася невдало або якщо ви перервали попередню спробу збирання. Вказати модуль можна за допомогою параметрів --resume-from та --resume-after.

Примітка

У старіших версіях kdesrc-build під час поновлення збирання оновлення кодів програм не відбувалося. Тепер програма типово цього не робить, але ви можете передати їй параметр командного рядка --no-src, щоб уникнути оновлення кодів програм.

Відновлення збирання з модуля kdebase:

% kdesrc-build --resume-from=kdebase

Відновлення збирання, починаючи з місця після kdebase (якщо ви вручну виправили ваду і встановили модуль власноруч):

% kdesrc-build --resume-after=kdebase

Якщо остання спроба збирання за допомогою kdesrc-build завершилася критичною помилкою, ви також можете скористатися параметром --resume. Використання цього параметра надасть змогу відновити останній сеанс збирання з модуля, під час збирання якого сталася критична помилка. Крім того, буде пропущено кроки оновлення коду та метаданих модулів (якщо ви хочете, щоб програма виконала ці кроки, краще скористатися параметром --resume-from).

Ігнорування модулів під час збирання

Подібно до способу, у який ви можете поновити збирання, починаючи з певного модуля, ви можете і оновити зібрати компоненти у звичайному режимі, але без певного набору модулів.

Виконати це завдання можна за допомогою параметра --ignore-modules. За допомогою цього параметра ви можете повідомити скрипту kdesrc-build про те, що слід ігнорувати всі передані як аргументи у командному рядку модулі під час виконання оновлення і збирання.

Ігнорування extragear/multimedia і kdereview під час повноцінного запуску:

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

Зміна параметрів за допомогою командного рядка

Зміна загальних параметрів

Ви можете змінити набір параметрів з файла налаштувань безпосередньо з командного рядка. Ця зміна перевизначить параметри файла налаштувань, але лише тимчасово. Ці параметри працюватимуть лише протягом виконання вказаної у командному рядку команди.

kdesrc-build надає вам змогу змінити параметри з назвою назва-параметра передаванням аргументу у командний рядок у формі --назва-параметра=значення. kdesrc-build визначає чи відомий скрипту параметр і намагається знайти назву у власному списку назв параметр. Якщо програмі не вдається знайти назву, вона попередить вас про це, у іншому випадку скрипт запам’ятає встановлене вами значення і перевизначає значення, встановлення у файлі налаштувань.

Встановлення параметра source-dir у значення /dev/null для перевірки:

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

Зміна параметрів для модулів

Крім того, можна змінити параметри, вказані для окремого модуля. Синтаксис команди, подібний до синтаксису попередньої команди: --назва_модуля,назва-параметра=значення.

Ця зміна перевизначає параметр відповідного модуля у файлі налаштувань і діє лише протягом виконання рядка команди.

Використання іншого каталогу збирання для модуля kdeedu:

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