Програмне забезпечення KDE поділено на декілька компонентів, значну кількість яких можна зібрати за допомогою kdesrc-build. Знання зі структури компонентів допоможуть вам визначитися з модулями програмного забезпечення, які слід зібрати.
На найнижчому рівні структури перебуває бібліотека Qt™, яка дуже потужним набором інструментів, здатних працювати на багатьох програмних платформах. KDE засновано та Qt™, крім того, деякі з бібліотек, які не є частиною KDE, але потрібні для роботи KDE, також засновано на Qt™. kdesrc-build може зібрати Qt™ або скористатися вже зібраною бібліотекою, яку встановлено у системі, якщо ця бібліотека є достатньо новою.
Над Qt™ надбудовано бібліотеки, які потрібні для роботи програмного забезпечення KDE. Частина з цих бібліотек не є частиною самого KDE через свою загальну спрямованість, але вони є потрібними для роботи платформи KDE. Ці бібліотеки зібрано у єдиний модуль
kdesupport
, вони не вважаються частиною бібліотек «Frameworks».Над цими основними бібліотеками надбудовано KDE Frameworks, які іноді позначають абревіатурою KF5. Це основні бібліотеки стільниці Плазми KDE, програм KDE та іншого стороннього програмного забезпечення.
На основі Frameworks побудовано декілька інших частин:
«Сторонні» програми. Ці програми використовують KDE Frameworks або створені для запуску у середовищі Плазми KDE, але вони не є частиною або взагалі не пов’язані з проєктом KDE.
Плазма, яка є «робочим простором» стільничного середовища. Це те, що користувачі зазвичай бачать після «входу до KDE».
Комплект програм KDE. Це збірка корисного програмного забезпечення разом із платформою для розробки та стільницею Плазми, згрупована за окремими модулями, включно з допоміжними програмами, зокрема Dolphin, іграми, зокрема KSudoku, та офісним програмним забезпеченням KDE зокрема Kontact.
Нарешті, існує збірка програмного забезпечення (також розподілена на модулі), підтримку розробки якого здійснює команда KDE (зокрема забезпечує переклад, обслуговування сховища коду, надання системи стеження за вадами тощо). Випуски цього програмного забезпечення не збігаються у часі з випусками KDE, воно не є частиною Плазми або основного комплекту програм. Ці модулі називають «Extragear».
Вибором переліку модулів, які ви бажаєте зібрати, можна керувати за допомогою файла налаштування. Після розділу global
у цьому файлі можна вказати список модулів, які слід зібрати, між рядком module та рядком end module. Приклад запису модуля наведено у розділі Приклад 2.4, «Приклад запису модуля у файлі налаштувань:».
Приклад 2.4. Приклад запису модуля у файлі налаштувань:
module kdesrc-build-git
# Тут слід вказати параметри цього модуля. Приклад:
repository kde:kdesrc-build
make-options -j4 # Запускати компіляцію у 4 потоки
end module
Примітка
На практиці, така конструкція модуля зазвичай не використовується безпосередньо. Замість цього, більшість модулів визначаються наборами модулів, як це описано нижче.
Якщо використано лише записи module
, kdesrc-build збиратиме модулі у вказаному у списку порядку і не намагатиметься отримати дані будь-яких інших сховищ, які не було вказано явним чином.
Початковий код KDE розділено між багатьма відносно малими сховищами на основі Git. Щоб цією великою кількістю сховищ, які є частиною будь-якого хоч трохи корисного комплекту програмного забезпечення KDE, було простіше керувати, у kdesrc-build передбачено підтримку групування декількох модулів і обробки групи як «набору модулів».
За допомогою набору модулів ви можете оголосити декілька модулів Git, дані яких слід отримати і зібрати, подібно до окремих оголошень модулів. Для визначення кожної з адрес отримання даних модуля використовується параметр repository, визначену за його допомогою адресу буде скопійовано до адрес всіх модулів з набору.
Приклад 2.5. Використання наборів модулів
globalgit-repository-base
kde-git
kde:
end global moduleqt
# Параметри вилучено для спрощення end module module-setkde-support-libs
repository
kde-git
use-modules
automoc
attica
akonadi
end module-set # Інші модулі, якщо потрібно... modulekdesupport
end module
У розділі Приклад 2.5, «Використання наборів модулів» наведено короткий набір модулів. kdesrc-build обробляє цей набір модулів подібно до того, як виконується обробка кожного з модулів у use-modules
, якщо кожен з модулів було оголошено окремо. Значення параметра repository
буде визначено на основі значення параметра набору модулів repository
, до якого буде додано вказану назву модуля.
Крім того, набору модулів можна передавати і інші параметри, які буде скопійовано до кожного з нових модулів, створених за його допомогою. За допомогою набору модулів можна скоротити роботу з оголошення багатьох модулів Git, які зберігаються за однією адресою. Також можна надавати наборам модулів назви (як це показано у прикладі). Назви можна використовувати для посилання на цілу групу модулів у командному рядку.
Описана вище підтримка наборів модулів є загальною для будь-яких модулів на основі Git. Для сховищ git KDE у kdesrc-build передбачено додаткові можливості, якщо спрощують життя користувачів і розробників. Підтримка цих можливостей вмикається визначенням kde-projects
як repository
для набору модулів.
Зазвичай, kdesrc-build збирає лише модулі, які ви вказали у вашому файлі налаштувань, за порядком, у якому їх було вказано. Якщо ж визначено набір модулів kde-projects
, kdesrc-build може виконувати розв'язування залежностей специфічних для KDE модулів і додатково автоматично включати модулі до збирання, навіть якщо їх не було безпосередньо вказано.
Приклад 2.6. Використання наборів модулів kde-projects
# Додає лише модуль для juk (сховище kde/kdemultimedia/juk) module-setjuk-set
repository
kde-projectsuse-modules
juk
end module-set # Додає усі модулі у kde/multimedia/*, зокрема juk, # але без інших залежностей module-setmultimedia-set
repository
kde-projectsuse-modules
kde/multimedia
end module-set # Додає усі модулі у kde/multimedia/* та усі залежності kde-projects # поза kde/kdemultimedia module-setmultimedia-deps-set
repository
kde-projectsuse-modules
kde/multimedia
include-dependencies
true
end module-set # Усі модулі, створені поза цими трьома наборами модулів буде # автоматично упорядковано, незалежно від встановлення include-dependencies
Підказка
Ця конструкція набору модулів kde-projects
є основним способом оголошення про те, які модулі ви хочете зібрати.
В усіх наборах модулів використовуються параметри repository та use-modules. Набори модулів kde-projects
мають попередньо визначенен значення repository
, але інші типи наборів модулів також використовують параметр git-repository-base.
Сховища git KDE забезпечують групування пов'язаних модулів git у збірки пов'язаних модулів (наприклад kdegraphics). Git не розпізнає цього групування, але kdesrc-build може визначати такі групи, використовуючи набори модулів, у яких значенням repository
є «kde-projects
».
kdesrc-build визначить, що сховище kde-projects
потребує особливої обробки і скоригує процес збирання відповідним чином. Окрім виконання інших дій, kdesrc-build буде:
Отримувати найсвіжішу базу даних модулів з архіву git KDE.
Намагатиметься знайти модуль з вказаною назвою у списку параметра набору модулів
use-modules
з цієї бази даних.Для кожного виявленого модуля kdesrc-build шукатиму відповідне сховище у базі даних із врахуванням параметра branch-group. Якщо сховище існує і є активним для групи гілок, kdesrc-build автоматично скористається ним для отримання і оновлення початкового коду.
Примітка
У поточній базі даних деякі з записів груп модулів містять не лише збірки модулів, але і дані щодо власного сховища. У таких випадках поточна версія kdesrc-build намагатиметься скористатися сховищем Git групи, а не дочірніми сховищами записів групи.
Наведений нижче приклад демонструє використання бази даних модулів KDE для встановлення мультимедійної бібліотеки Phonon.
module-setmedia-support
# Значенням цього параметра має бути kde-projects, щоб використати базу даних модулів.repository
kde-projects
# За допомогою цього параметра можна визначити модулі, які слід шукати у базі даних.use-modules
phonon/phonon
phonon-gstreamer
phonon-vlc
end module-set
Підказка
phonon/phonon
використовується, оскільки інакше, у разі використання поточної бази даних проєкту, kdesrc-build доведеться визначатися між групою проєктів з назвою «phonon» і окремим проєктом з назвою «phonon». У поточній версії kdesrc-build вибере перший, що призведе до збирання багатьох модулів, які можуть виявитися непотрібними.
Наступний приклад є, можливо, реалістичнішим. Він демонструє можливість, доступну лише у разі використання бази даних модулів KDE: збирання всіх програм KDE з графічним інтерфейсом за допомогою єдиної команд.
module-setkdegraphics
# Значенням цього параметра має бути kde-projects, щоб можна було скористатися базою даних модулів.repository
kde-projects
# За допомогою цього параметра можна вказати модулі, які слід шукати у базі даних.use-modules
extragear
end module-set
Тут продемонстровано дві важливі можливості:
kdesrc-build надає вам змогу вказати дочірні модулі вказаного модуля, без збирання батьківського модуля за допомогою синтаксичної конструкції
. У цьому випадку таке визначення є необхідним, оскільки основний модуль, kdegraphics, позначено як неактивний, щоб його не було випадково зібрано разом з дочірніми модулями. Визначення дочірніх модулів надає змогу kdesrc-build пропустити вимкнений модуль.назва-модуля
/*kdesrc-build також не додаватиме вказаний модуль до списку збирання декілька разів. Це надасть змогу нам вручну встановити збирання
kdegraphics/libs
першим, до рештиkdegraphics
, без спроби збиранняkdegraphics/libs
двічі. Так зроблено для належної обробки залежностей. Зараз цей спосіб визначення порядку збирання лишається резервним для випадків, коли у базі даних проєктів KDE пропущено відповідні метадані щодо залежностей.
Можливо, у вас виникне потреба у збиранні всіх програм у певному модулі KDE, окрім якоїсь програми.
Наприклад, у групі kdeutils
міститься програма з назвою kremotecontrol. Якщо на вашому комп’ютері не встановлено обладнання для роботи з пристроями дистанційного керування, ви можете вирішити, що отримувати, збирати і встановлювати kremotecontrol під час кожного оновлення kdeutils
не варто.
Досягти цього можна за допомогою параметра налаштувань ignore-modules. У командному рядку те саме завдання виконує параметр --ignore-modules, який, втім, є зручнішим для одноразового фільтрування певного модуля.
Приклад 2.7. Приклад ігнорування модуля kde-project у групі
module-setutils
repository
kde-projects
# За допомогою цього параметра можна визначити модулі, які слід шукати у базі даних.use-modules
kdeutils
# За допомогою цього параметра можна «вилучити» модулі зі списку використаних модулів, визначеного вище.ignore-modules
kremotecontrol
module-setgraphics
repository
kde-projects
# За допомогою цього параметра визначаються модулі, які слід шукати у базі даних.use-modules
extragear/graphics
# За допомогою цього параметра «вилучаються» модулі, вибрані вище за допомогою use-modules. # У нашому прикладі ігноруються одразу extragear/graphics/kipi-plugins і # extragear/graphics/kipi-plugins/kipi-plugins-docsignore-modules
extragear/graphics/kipi-plugins
end module-set