# Підручник зі скрипту &kdesvn-build;

Michael
Pyne

    michael.pyne@kdemail.net

Carlos
Woelz

    carloswoelz@imap-mail.com

Юрій
Чорноіван

    yurchor@ukr.net

Переклад українською
2006
2007
2008
Michael Pyne
2005
Carlos Woelz
&FDLNotice;
2008-08-09
1.6.3

&kdesvn-build; — це скрипт, який збирає і встановлює &kde; безпосередньо з початкових кодів, які можна знайти у сховищі SVN &kde;.

KDE
kdesdk
SVN
Subversion
Розробка KDE

## Вступ

&kdesvn-build; — це скрипт, який допомагає користувачам встановити &kde; зі сховища &subversion; цього стільничного середовища.

Тут наведено документацію з синтаксису і параметрів файла налаштувань &kdesvn-build;, параметрів командного рядка програми, можливостей програми, а також здійснено огляд всіх необхідних для збирання &kde; з початкових кодів кроків, зокрема дій, які вам слід виконати за допомогою інших інструментів, або, іншими словами, дій, які не може бути виконано автоматично скриптом &kdesvn-build;.

## Початок роботи

У цій главі ми продемонструємо, як скористатися &kdesvn-build; для звантаження модулів зі сховища &kde; і їх збирання. Тут ми наведемо базові пояснення щодо структури системи керування версіями &kde; і кроків, які вам слід виконати до запуску скрипту.

Всі питання, обговорені у цій главі, докладніше викладено у Покроковому довіднику зі збирання &kde; з початкових кодів, розміщеному на веб-сайті команди контролю за якістю &kde;. Якщо ви компілюєте &kde; вперше, вам варто прочитати цей підручник або проконсультуватися з цим довідником. Там ви знайдете докладні відомості щодо інструментів пакування та потрібних пакунків, типових проблем з компіляцією, стратегій і запуску нововстановленого &kde;.

Крім того, у вікі &kde; TechBase міститься перелік дій для збирання &kde; з вихідних кодів.

### Підготовка системи до збирання &kde;

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

Рекомендуємо вам звантажувати і збирати &kde; на окремому обліковому запису користувача. Якщо у вашій системі вже встановлено пакунки &kde;, найкращим вибором є створення окремого (призначеного) користувача для збирання і запуску нового &kde;. Перевагою збирання &kde; для призначеного користувача є те, що ви не зможете пошкодити базову систему, а отже збережете можливість комфортної роботи, якщо щось піде не так.

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

#### Перевірка готовності вашої системи до збирання &kde; з початкових кодів

Перш ніж почати користування скриптом &kdesvn-build; (або будь-якого іншого інструменту для збирання), вам слід встановити інструменти для розробки і бібліотеки, потрібні для &kde;. Повний список потрібних інструментів можна знайти на сторінці Вимог для збирання &kde;. Список потрібних пакунків для &kde; 4 можна знайти на сторінці KDE TechBase.

Ось список деяких з потрібних для збирання програм:

- Якщо ви збираєте &kde; 3, вам слід встановити GNU Autotools (тобто &automake; і &autoconf;).

- Якщо ви збираєте &kde; 4, вам потрібно встановити &cmake;. Номер потрібної версії може змінюватися, залежно від версії &kde; 4, яку ви збираєте, точніше про все можна дізнатися з сайта TechBase.

- Клієнтська програма &subversion; з підтримкою Secure HTTP (https). Щоб переконатися, що потрібну підтримку зібрано, ви можете виконати команду ``svn `--version```. Якщо модуль ra_dav повідомляє, що він підтримує схему https, систему налаштовано належним чином.

- Компілятор gcc з підтримкою C++. Найкраще підтримуються версії 3.3 і вище.

- Не забудьте прочитати сторінку вимог для компіляції &kde;, щоб переконатися, що включено всі інші потрібні бібліотеки.

Єдиним винятком є бібліотека &Qt;. Зазвичай, &kdesvn-build; встановлюватиме копію &Qt;, встановили ви його чи ні, отже вам не потрібно попередньо встановлювати цю бібліотеку. Якщо ви не бажаєте скористатися копією &Qt;, вам слід виконати такі кроки:

- Не забудьте вилучити модуль qt-copy з вашого файла налаштувань, оскільки він вам не потрібен, якщо ви не вилучите цей модуль, збирання середовища триватиме довше.

- Змініть параметр qtdir у вашому файлі налаштувань так, щоб він вказував на &Qt; вашої системи. Це, зазвичай еквівалентно до встановлення змінної середовища для вашої системи $`QTDIR`.

- Якщо у вашій системі ще не встановлено бібліотеку &Qt;, встановіть її, зокрема всі відповідні пакунки -dev або -devel. Для збирання &kde; 3.5 вам потрібна версія не старіша за &Qt; 3.3, для збирання ж &kde; 4 — версія &Qt; 4.4.

  Якщо ви збираєте &kde; 4, наполегливо рекомендуємо вам скористатися версією qt-copy з &Qt;, так можна забезпечити застосування рекомендованих латок (це типова поведінка, якою керує параметр apply-qt-patches).

Деякі з цих пакунків поділено на бібліотеки (або програми) і пакунки для розробки. Вам знадобляться принаймні програма або бібліотека і її пакунок для розробки. Якщо ви не певні, встановлюйте все. Перелік потрібних вам бібліотек залежатиме від переліку модулів, які ви маєте намір зібрати, кожен з модулів має власні вимоги. На сторінці &kde; TechBase ви знайдете докладніші відомості щодо специфічних інструментів і методик, які використовуються для встановлення і пошуку потрібного програмного забезпечення.

#### Налаштування &kdesvn-build;

##### Встановлення &kdesvn-build;

Ймовірно, у вашій системі вже встановлено версію скрипту &kdesvn-build;. Але, якщо це не так, ви можете звантажити його з домашньої сторінки &kdesvn-build; або знайти цей скрипт у його домівці у сховищі кодів &kde;.

&kdesvn-build; включено до модуля kdesdk, цей модуль у переважній кількості випадків вже встановлено вашим дистрибутивом. Якщо ви звантажили &kdesvn-build; з мережі, переконайтеся, що ви використовуєте саме звантажену вами версію. Ви можете скористатися параметром команди --version, щоб переконатися, що ви запустили потрібну вам версію.

1. Щоб звантажити &kdesvn-build; з домашньої сторінки програми, просто відкрийте домашню сторінку &kdesvn-build; і звантажте найостанніший відповідний випуск. Цей випуск буде запаковано, розпакувати його можна за допомогою &ark; або `tar`. Архів міститиме сам скрипт &kdesvn-build; і простий файл налаштування (`kdesvn-buildrc-sample`).

2. Крім того, ви можете звантажити зі сховища його вихідних кодів &kdesvn-build; за адресою: http://websvn.kde.org/trunk/KDE/kdesdk/scripts/. За цією адресою знаходиться каталог скриптів набору для розробки програмного забезпечення &kde;, який є домашнім для &kdesvn-build;. Ви можете натиснути запис `kdesvn-build`: ваш переглядач відкриє сторінку, з якої ви можете звантажити останню версію програми. Виконайте звантаження і збережіть скрипт до зручного для вас місця на жорсткому диску вашого комп’ютера. Звантажте також `kdesvn-buildrc-sample`, якщо цей файл вам потрібен.

Байдуже, яку методику ви використовуєте, вам слід не забути зробити файл `kdesvn-build` виконуваним. Для зручності вам слід розташувати скрипт у каталозі, вказаному у змінній середовища `PATH`, у іншому випадку ви можете зіткнутися з тим, що оболонка повідомить вам про те, що команду не було знайдено, крім того, ви можете помилково запустити застарілу встановлену версію програми.

##### Підготовка файла налаштувань

Хоча для роботи &kdesvn-build; не потрібно створювати файл налаштувань, такий файл зробить виконання потрібних завдань набагато простішим. За допомогою файла налаштувань ви можете керувати переліком модулів, які буде встановлено, або вилучити модулі, які ви не бажаєте встановлювати. Типово, &kdesvn-build; встановлює &kde; з найзагальнішими параметрами, які можуть не відповідати вашим потребам. Отже, найкращим способом роботи програми є використання файла налаштувань.

Файл налаштувань повинен називатися `.kdesvn-buildrc`. Цей файл слід встановити у вашій домашній теці (`~/`), у ньому містяться всі дані налаштування, потрібні для запуску скрипту, зокрема параметри налаштування, параметри компіляції, адреса вихідних кодів, назва теки призначення для встановлення (префікс), модулі, які слід зібрати тощо. Типові дані налаштування можна знайти у файлі `kdesvn-buildrc-sample`, ви можете зробити копію цього файла з назвою `~/.kdesvn-buildrc`, а потім змінити її.

Докладніші відомості щодо синтаксису файла налаштувань можна знайти у розділах і .

### Визначення даних налаштувань

Щоб користуватися &kdesvn-build;, вам слід мати файл з назвою `.kdesvn-buildrc` у вашому домашньому каталозі, у цьому файлі визначаються загальні параметри і перелік модулів, які ви бажаєте звантажити і зібрати.

Ви можете скористатися іншим файлами налаштувань &kdesvn-build;, відповідну процедуру описано у розділі . Якщо у вас є потреба у використанні декількох наборів налаштувань, будь ласка, ознайомтеся з цим розділом. Надалі ми вважатимемо, що налаштування зберігаються у файлі `~/.kdesvn-buildrc`.

Найпростішим способом початкового налаштування є використання файла `kdesvn-buildrc-sample` як зразка. Достатньо змінити загальні параметри так, щоб вони відповідали вашим потребам, а також змінити список модулів, які ви бажаєте зібрати.

Насправді типових параметрів буде достатньо для збирання &kde;. Ймовірно, що серед параметрів, які ви захочете змінити, можуть бути:

- binpath, призначений для зміни списку каталогів, у яких скрипт шукатиме команди. Цей параметр у точності відповідає змінній`PATH` оболонки.

- use-stable-kde призначений для зміни типової версії для збирання модулів &kde;. За звичайних умов &kdesvn-build; збиратиме поточну версію (trunk) &kde; (зараз поточною версією є &kde; 4). Якщо ви бажаєте зібрати останній стабільний випуск &kde; замість використання пакунків з дистрибутива (поточною стабільною гілкою є &kde; 3.5) вам слід встановити для цього параметра значення true.

- kdedir, який змінює каталог призначення, куди буде встановлено &kde;. Типовим є каталог `~/kde`, тобто середовище буде встановлено для одного (вашого) користувача.

- qtdir, який керує шляхом до встановленої бібліотеки &Qt;, яку слід використовувати. Типовим є використання модуля qt-copy зі сховища &subversion; &kde; (`~/kdesvn/build/qt-copy`).

  Для версій Qt, які підтримують встановлення, цей параметр керує також тим, куди слід встановлювати qt-copy.

- svn-server, який визначає адресу &url;, звідки слід звантажувати вихідні коди. Цей параметр буде корисним, якщо ви є розробником з обліковим записом у &subversion; &kde;.

Після розділу загальних параметрів (global) йде список модулів для збирання, обмежених рядками module ... end module. Вам слід перевірити, що список цих модулів збігається зі списком модулів, які ви маєте намір зібрати. Типових параметрів з файла `kdesvn-buildrc-sample` має бути достатньо для отримання повноцінного встановлення &kde;. Збережіть результат редагування як файл `.kdesvn-buildrc` у вашій домашній теці.

Якщо ви бажаєте точніше налаштувати файл `.kdesvn-buildrc`, зверніться до розділу , щоб отримати докладніші відомості щодо всіх параметрів налаштування.

### Використання скрипту &kdesvn-build;

Тепер ви підготувалися до запуску скрипту. У вікні термінала увійдіть до системи від імені користувача, якого ви використаєте для компіляції &kde;, і виконайте команду:

    &percnt;su - назва_облікового_запису
    &percnt;kdesvn-build

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

&kdesvn-build; записує до журналу дані, виведені всіма виконаними скриптом командами. Типово, файли журналу зберігаються у теці `~/kdesvn/log`. Щоб дізнатися про причину помилки для модуля у останній команді &kdesvn-build;, зазвичай, досить зазирнути до файла `~/kdesvn/log/latest/назва модуля/error.log`.

У цьому файлі ви знайдете повідомлення про помилку, яка призвела до невдалої спроби збирання модуля. Якщо у нижній частині цього файла ви бачите повідомлення про відсутність певних пакунків, спробуйте встановити пакунок (зокрема відповідні пакунки -dev) перед повторною спробою збирання модуля, і передайте скрипту параметр --reconfigure після встановлення пакунків, яких не вистачає.

Або, якщо помилка є помилкою збирання, ймовірно, що помилка пов’язана з вадою вихідних кодів &kde;, яку, як ми сподіваємося, буде усунуто протягом декількох днів. Якщо цю помилку не буде усунуто протягом цього часу, не вагайтеся і напишіть листа на адресу kde-devel@kde.org (можливо, вам доведеться оформити підписку на цей список листування), щоб повідомити розробникам про невдалу спробу збирання.

Ви можете знайти приклади помилок і знайти способи їх усування, а також загальні підказки та стратегії збирання &kde; на сторінці Покрокових настанов зі збирання &kde;.

Для отримання докладніших відомостей щодо можливостей журналювання &kdesvn-build;, будь ласка, зверніться до розділу .

### Налаштування середовища на запуск зібраного &kde;

Припустімо, що ви увійшли до системи від імені призначеного для збирання &kde; користувача, і що у системі вже встановлено якусь версію &kde;. В такому випадку запуск вашої копії &kde; може бути дещо ускладненим, оскільки зібране &kde; має отримати пріоритет над старою версією. Вам слід змінити змінні середовища, щоб забезпечити запуск потрібної версії середовища.

#### Зміна ваших параметрів профілю запуску

Файл `.bash_profile` є файлом параметрів входу до системи популярної оболонки bash, яка використовується у багатьох дистрибутивах &Linux;. Якщо ви використовуєте іншу оболонку, можливо, вам доведеться скоригувати приклади, наведені у цьому розділі, так, щоб вони відповідали оболонці, яку ви використовуєте.

Відкрийте або створіть файл `.bash_profile` у домашньому каталозі за допомогою вашого улюбленого редактора, і додайте в кінець файла наступні рядки. Якщо ви збираєте модуль qt-copy (це типова поведінка), додайте:

    QTDIR=(шлях до qtdir)   # Типовим є ~/kdesvn/build/qt-copy.
    KDEDIR=(шлях до kdedir) # Типовим є ~/kde.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
    MANPATH=$QTDIR/doc/man:$MANPATH

    # Дійте у відповідності до того, чи встановлено змінну LD_LIBRARY_PATH.
    if [ -z $LD_LIBRARY_PATH ]; then
      LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib
    else
      LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
    fi

    export QTDIR KDEDIRS PATH MANPATH LD_LIBRARY_PATH

або, якщо ви не збираєте qt-copy (а замість неї використовуєте системну бібліотеку &Qt;), додайте такі рядки:

    KDEDIR=(шлях до каталогу kde)  # Наприклад, типово ~/kde.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH

    # Діяти відповідно, якщо ще не встановлено LD_LIBRARY_PATH.
    if [ -z $LD_LIBRARY_PATH ]; then
      LD_LIBRARY_PATH=$KDEDIR/lib
    else
      LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH
    fi

    export KDEDIRS PATH LD_LIBRARY_PATH

Якщо ви не використовуєте призначеного користувача, встановіть іншу змінну середовища $`KDEHOME` для вашого нового середовища у вашому `.bash_profile`:

    export KDEHOME="${HOME}/.kde-svn"

    # Створити каталог, якщо це потрібно
    [ ! -e ~/.kde-svn ] && mkdir ~/.kde-svn

Якщо пізніше ваше меню KDE буде порожнім, або переповненим записами програм з вашого дистрибутива, можливо, вам доведеться встановити змінну середовища XDG у вашому файлі `.bash_profile`:

    XDG_CONFIG_DIRS="/etc/xdg"
    XDG_DATA_DIRS="${KDEDIR}/share:/usr/share"
    export XDG_CONFIG_DIRS XDG_DATA_DIRS

#### Запуск &kde;

Тепер, коли ви налаштували параметри вашого середовища на використання належної версії &kde;, вам також слід переконатися, що ви використовуєте правильний скрипт `startkde`.

Відкрийте текстовий файл `.xinitrc` з вашого домашнього каталогу або за потреби створіть його. Додайте до файла такий рядок:

    exec ${KDEDIR}/bin/startkde

У деяких дистрибутивах, ймовірно, вам доведеться виконати певні дії з файлом `.xsession`, який також знаходиться у вашому домашньому каталозі. Такі дії знадобляться, якщо ви використовуєте графічні інструменти керування входом до системи, такими як &kdm;, gdm або xdm.

Тепер запустіть вашу свіжу версію &kde;: у системах &BSD; і &Linux; з підтримкою віртуальних терміналів натискання комбінацій клавіш &Ctrl;&Alt;F1 ... &Ctrl;&Alt;F12 використовується для перемикання до віртуальних консолей з номерами від 1 до 12. Таким чином, ви можете запускати декілька стільничних середовищ одночасно. Перші шість терміналів є текстовими, а наступні шість — графічними.

Якщо після запуску вашого комп’ютера ви бачите інструмент графічного входу до системи, ви можете скористатися новим середовищем &kde;, навіть якщо його пункту немає у списку. У більшості інструментів входу до системи, зокрема у &kdm;, є пункт, призначений для Нетипового сеансу. За використання цього пункту параметри вашого сеансу буде завантажено з файла `.xsession` у вашому домашньому каталозі. Якщо ви вже змінили цей файл у спосіб, описаний вище, використання цього пункту завантажить ваш новий встановлений &kde;.

Якщо це не так, ви можете спробувати інший спосіб, який, зазвичай, працює: натисніть комбінацію клавіш &Ctrl;&Alt;F2 і ви побачите текстовий термінал. Введіть ваші реєстраційні дані вашого призначеного користувача і введіть команду:

    startx -- :1

Ви можете запускати &kde;, зібраний з вихідних кодів, і ваш старий &kde; одночасно! Увійдіть до системи за допомогою реєстраційних даних вашого звичайного користувача, запустіть стабільну версію стільниці &kde;. Натисніть комбінацію клавіш &Ctrl;&Alt;F2 (або F1, F3 тощо), — ви побачите текстовий термінал. Увійдіть до системи від імені вашого призначеного користувача &subversion; &kde; і введіть команду:

    startx -- :1

Ви можете повернутися до стільниці &kde; вашого звичайного користувача натисканням клавіатурного скорочення у вже запущеній стільниці. Цією комбінацією, зазвичай, є &Ctrl;&Alt;F7, можливо, у вашому випадку останньою клавішею буде F6 або F8. Щоб повернутися до вашої зібраної &kdesvn-build; версії &kde;, ви можете скористатися подібною є комбінацією клавіш, але у ній останньою буде інша функціональна клавіша. Наприклад, якщо вам потрібно було ввести &Ctrl;&Alt;F7, щоб перемкнути на вашу звичайну версію &kde;, вам доведеться ввести &Ctrl;&Alt;F8, щоб повернутися до вашого зібраного &kdesvn-build; &kde;.

## Можливості скрипту

### Огляд можливостей

Серед можливостей &kdesvn-build;:

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

- &kdesvn-build; може, за допомогою веб-сайта &kdesvn-build; і сервера FTP &kde; (FTP з версії &kdesvn-build; 1.4), забезпечити пришвидшення звантаження певних модулів. Якщо модуль, який ви звантажуєте, вже було запаковано на веб-сайті, &kdesvn-build; звантажить знімок і підготує його до використання на вашому комп’ютері.

  Це пришвидшить роботу і полегшить вам звантаження з анонімних серверів &subversion; kde.org.

- Додаткове пришвидшення можна отримати, якщо почати процес збирання модуля одразу після того, як вихідні коди цього модуля буде звантажено. (Ця можливість доступна починаючи з версії 1.6)

- Чудова підтримка модуля qt-copy, зокрема, за бажання, застосування латок виправлення вад і оптимізації модуля qt-copy.

- &kdesvn-build; має можливості розфарбування виведених даних.

- &kdesvn-build; не потребує наявності графічного інтерфейсу для роботи. Отже, ви можете збирати &kde; без потреби у переходу до графічного середовища.

- Підтримка встановлення типових параметрів для всіх модулів (зокрема параметрів компіляції і налаштування). Крім того, такі параметри, зазвичай, можна змінити для окремих модулів.

  Крім того, &kdesvn-build; додасть стандартні прапорці, потрібні для зберігання повідомлень про труднощі і помилки: вам не доведеться копіювати їх для пошуку у мережі власноруч.

- &kdesvn-build; може звантажувати певні гілки або версії модуля. Ви можете вказати для звантаження навіть окрему версію певного модуля.

- &kdesvn-build; може автоматично перемикати каталог вихідних кодів для звантаження з іншого сховища, гілки або випуску. Цю дію буде виконано автоматично, якщо ви зміните параметр, який вказує якою має бути адреса &url; сховища, але вам доведеться скористатися параметром --svn-only, щоб надати змогу &kdesvn-build; дізнатися про те, що скрипту можна виконувати таке перемикання.

- &kdesvn-build; може звантажувати лише частини модуля у тих випадках, коли вам потрібна лише одна програма з великого модуля.

- Для розробників: &kdesvn-build; нагадає вам про те, що ви використовуєте svn+ssh://, але ssh-agent не запущено, оскільки таке використання призведе до повторних запитів на пароль від &ssh;.

- Можливість звітів електронною поштою про помилки, які буде надіслано користувачеві.

- Можливість вилучення каталогу збирання модуля після його встановлення для економії місця за рахунок збільшення наступного часу збирання.

- Адреси каталогів, які використовуються &kdesvn-build; можна налаштувати (навіть для окремих модулів).

- Можливість використання &sudo;, або іншої вказаної користувачем команди для встановлення модулів, призначеної для того, щоб &kdesvn-build; не потрібно було запускати від імені привілейованого користувача.

- &kdesvn-build; типово запускається зі зниженими правами доступу, це надає вам змогу використовувати &kdesvn-build; під час роботи з іншими програмами.

- Підтримка використання випусків і гілок &subversion; &kde;.

- &kdesvn-build; використовуватиме методику, яка гарантує успішне збирання.

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

- &kdesvn-build; може швидко виконати часткове збирання модуля безпосередньо з командного рядка, якщо вам потрібно оновити лише частину модуля.

- &kdesvn-build; автоматично звантажить і створить потрібний каталог `/admin` для модуля, якщо його не було у перший раз звантажено зі сховища &subversion; з якоїсь причини. Це стосується лише модулів &kde;, оскільки /admin не потрібен для qt-copy або модулів &kde; 4.

- &kdesvn-build; покаже поступ збирання за використання &unsermake; і &cmake;, і завжди стежитиме за часом процесу збирання, отже ви знатимете про тривалість збирання.

- Виконання автоматичних спроб перебудови модулів, під час збирання яких було використано покрокове збирання (make), збирання яких могло бути порушено після певних внесків до сховища.

- Постачається з вбудованим набором типових параметрів, щоб відповідають збиранню базового середовища &kde; для одного користувача з анонімного сховища &subversion;.

- Вбудована підтримка &unsermake;.

- Використання тильди у параметрах налаштування. Наприклад, ви можете вказати:

      qtdir ~/kdesvn/build/qt-copy

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

- Ви можете вказати загальні параметри, які буде застосовано до всіх звантажених модулів, крім того, ви можете визначити параметри для окремих модулів.

- Оскільки іноді autotools розсинхронізуються зі змінами у дереві вихідних кодів, ви можете примусити цей інструмент до перебудови модуля шляхом створення файла з назвою .refresh-me у каталозі збирання потрібного модуля або запуску &kdesvn-build; з параметром `--refresh-build`.

- Ви можете вказати значення різноманітних змінних середовища, які буде використано під час збирання, зокрема `KDEDIR`, `QTDIR`, `DO_NOT_COMPILE` і `CXXFLAGS`.

- Запис команд до журналу. Журнали датуватимуться і нумеруватимуться так, що у вас завжди буде журнал запуску скрипту. Крім того, буде створено символічне посилання з назвою latest, яке завжди вказуватиме на найсвіжіший запис журналу у каталозі журналу.

- Якщо ви використовуєте збирання &kde; для окремого користувача, а не загальносистемне збирання (для чого вам слід увійти до облікового запису root для встановлення), ви можете скористатися скриптом для встановлення середовища для вас. Автор не наглядає за цим кодом, крім того, цей код широко використовує виклики функції `system()`, отже, автор не рекомендує запускати цей код від імені користувача root.

- Ви можете скористатися параметром make-install-prefix для того, щоб додати перед рядком команди ``make` `install`` окрему команду, це корисно, якщо ви використовуєте &sudo;.

- Ви можете звантажити лише частину модуля &subversion; &kde;. Наприклад, ви можете звантажити лише taglib з kdesupport або лише K3B з extragear/multimedia. Скрипт автоматично звантажить kde-common за потреби у працездатності зібраного програмного забезпечення.

- Ви можете вказати програмі, що слід виконати фальшиву послідовність операцій. Якщо ви передасте параметр `--pretend` або `-p` до рядка команди, скрипт надасть вам дуже докладний опис команд, які потрібно виконати скрипту, без справжнього виконання команд.

### Запис журналів збирання &kdesvn-build;

#### Огляд ведення журналу

Ведення журналу — це можливість &kdesvn-build;, за використання якої дані, виведені будь-якої командою, яку запускає &kdesvn-build;, буде збережено до файла для наступного вивчення, якщо це буде потрібно. Так зроблено, тому що ці дані часто потрібні для визначення причин помилки під час збирання, оскільки існує багато причин, через які збирання може бути невдалим.

##### Компонування каталогів журналу

Журнали завжди зберігаються у каталозі журналів. Адреса каталогу журналів визначається параметром log-dir, типовим значенням якого є `${source-dir}/log` (де ${source-dir} є значенням параметра source-dir. Надалі у цьому розділі ми посилатимемося на значення відповідного параметра як ${log-dir}).

У каталозі ${log-dir} буде створено набір каталогів, по одному на кожен запуск &kdesvn-build;. Кожен з каталогів матиме назву, що відбиватиме дату запуску скрипту і номер запуску. Наприклад, для другого запуску &kdesvn-build; 26 травня 2009 року буде створено каталог з назвою `2009-05-26-02`, де 2009-05-26 позначатиме дату а -02 порядковий номер запуску.

Крім того, для зручності, &kdesvn-build; створить посилання на журнали останнього запуску з назвою `latest`. Отже, журнали для найостаннішого запуску &kdesvn-build; мають завжди зберігатися у теці `${log-dir}/latest`.

Крім того, кожен з каталогів запусків &kdesvn-build; сам містить набір каталогів, по одному на кожен модуль &kde;, який &kdesvn-build; намагається зібрати. У цьому каталозі також міститиметься файл `build-status`, за допомогою якого ви зможете визначити, які модулі було зібрано, а які зібрати не вдалося.

Якщо у самому модулі міститься підмодуль (наприклад, extragear/multimedia, playground/utils, або KDE/kdelibs), йому відповідатиме власний підкаталог у каталозі журналу. Наприклад, журнали KDE/kdelibs після останнього запуску &kdesvn-build; можна буде знайти у `${log-dir}/latest/KDE/kdelibs`, а не у каталозі `${log-dir}/latest/kdelibs`.

У кожному з каталогів модулів ви знайдете набір файлів для кожної з дій, які виконуватиме &kdesvn-build;. Якщо &kdesvn-build; оновлює модуль, ви побачите файли з назвами на зразок `svn-co.log` (звантаження модуля) або `svn-up.log` (якщо відбувалося оновлення модуля, який вже було звантажено). Якщо було запущено скрипт `configure`, слід очікувати появи журналу `configure.log` у цьому каталозі.

Якщо сталася помилка, ви побачите пояснення її причину у одному з файлів. Щоб вам легше було знайти файл, у якому міститься помилка, &kdesvn-build; створить посилання з файла, що містить помилку (на зразок `build-1.log` на файл з назвою `error.log`).

Результатом всього цього буде те, що ви знатимете чому не вдалося зібрати модуль після останнього запуску &kdesvn-build;, для цього вам слід для початку знайти файл з назвою `${log-dir}/latest/назва модуля/error.log`.

Якщо файл `error.log` є порожнім (особливо після встановлення), ймовірно, жодних помилок не сталося. Деякі з інструментів, які використовуються системою збирання &kde;, іноді помилково повідомляють про помилку, коли насправді помилок не сталося.

Крім того, деякі з команд уникатимуть переспрямування виведення даних &kdesvn-build; і за певних обставин обходять файл журналу (зазвичай, під час виконання першого звантаження &subversion;), в такому випадку помилки не можна буде знайти файл журналу, — всі помилки буде виведено до &konsole; або програми термінала, з якої ви запустили &kdesvn-build;.

## Формат файла .kdesvn-buildrc

Щоб скористатися цим скриптом, вам потрібен файл з назвою `.kdesvn-buildrc`, розташований у вашому домашньому каталозі, у цьому файлі описано модулі, які ви бажаєте звантажити і зібрати.

Його буде запущено з загальними параметрами, вказаними у такий спосіб:

    global
    назва_параметра значення_параметра
    [...]
    end global

Після цього повинні йти один або декілька розділів модулів, вказаних таким чином:

    module назва_модуля
    назва_параметра значення_параметра
    [...]
    end module

Параметр назва_модуля має бути назвою модуля зі сховища &subversion; &kde; (наприклад, kdelibs або kdebase). Деякі з параметрів перевизначають глобальні параметри, деякі додають загальні параметри, а деякі з загальних параметрів не можна перевизначати.

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

- apply-qt-patches, щоб покращити можливості qt-copy.

- async, щоб виконати одночасно оновлення і збирання.

- binpath, щоб встановити значення змінної `PATH`.

- branch, щоб звантажити код для стабільної версії, а не версії, що розробляється (/trunk).

- build-dir, щоб вказати каталог для збирання.

- checkout-only, щоб звантажити лише частини модуля.

- cmake-options, щоб визначити параметри налаштування модуля за допомогою &cmake;.

- colorful-output, щоб додати кольори у дані, які виводитиме скрипт.

- configure-flags, щоб визначити параметри, згідно яких буде налаштовано модуль за допомогою configure.

- cxxflags, щоб визначити змінну `CXXFLAGS`.

- dest-dir, щоб змінити назву каталогу для модуля.

- disable-agent-check, щоб запобігти перевірці &kdesvn-build; стану ssh-agent.

- do-not-compile, щоб позначити каталоги, які слід пропустити під час збирання.

- inst-apps, щоб було зібрано і встановлено лише окремі каталоги.

- install-after-build, щоб запобігти встановленню програм після збирання.

- kdedir, щоб вказати каталог, куди буде встановлено &kde;.

- kde-languages, щоб вказати пакунки перекладу, які слід звантажити і встановити.

- libpath, щоб вказати значення змінної `LD_LIBRARY_PATH`.

- make-install-prefix, щоб запустити допоміжну програму (на зразок &sudo;) під час виконання ``make` `install``.

- make-options, щоб передати параметри програмі &make;.

- manual-build, щоб уникнути автоматичного збирання модуля.

- manual-update, щоб уникнути будь-яких автоматичних дій з модулем.

- module-base-path, щоб змінити вихідну теку звантаження модуля (корисно для використання гілок і знімків).

- niceness, щоб змінити пріоритет для процесора.

- no-rebuild-on-fail, щоб запобігти повторному запуску &make; у разі помилки.

- qtdir, щоб вказати шлях до бібліотек &Qt;.

- set-env, щоб встановити значення змінної середовища.

- source-dir, щоб змінити каталог призначення для звантаження початкових кодів.

- stop-on-failure, щоб зупиняти роботу &kdesvn-build; одразу після того, як трапиться помилка.

- svn-server, щоб змінити сервер, звідки буде звантажено початкові коди.

- use-unsermake, щоб було використано систему збирання &unsermake;.

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

### Таблиця параметрів

Назва параметра | Модуль -> Загальна поведінка | Нотатки
--- | --- | ---

apidox

Перевизначає загальний параметр

Цей параметр використовувався для вмикання збирання документації модуля програмного інтерфейсу KDE. Його було вилучено у версії &kdesvn-build; 1.6.3, оскільки він не підтримується у KDE 4. Ви можете знайти мережеву документацію з програмного інтерфейсу за адресою kde.org. Крім того, можна зібрати документацію з програмного інтерфейсу KDE 4 за допомогою скрипту, включеного до модуля kdesdk (каталог /scripts). Докладніше про це можна дізнатися на сайті KDE TechBase. Звичайно ж, ви можете вручну зібрати документацію з програмного інтерфейсу для старіших модулів.

apply-qt-patches | Перевизначає загальний параметр | Цей параметр корисний лише для qt-copy. Якщо ви надасте йому ненульове значення, перед збиранням буде запущено скрипт apply-patches у qt-copy для того, щоб застосувати неофіційні латки до qt-copy. Оскільки саме ці латки є причиною використання qt-copy, а не офіційної версії &Qt;, вам варто увімкнути цей параметр. Типовим є вмикання цих латок.

async

Неможливо перевизначити

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

Цей параметр додано починаючи з версії 1.6 програми.

binpath

Перевизначає загальний параметр

Встановіть для цього параметра значення, щоб визначити значення змінної середовища PATH на час збирання. Ви не зможете перевизначити значення цього параметра для окремого модуля. Типовим значенням параметра є `/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin`. Значенням цієї змінної середовища має бути відокремлений двокрапками список шляхів до ваших каталогів для збирання. Шляхи `$`KDEDIR`/bin` і `$`QTDIR`/bin` буде додано автоматично. Ви можете додати тильду (~) для всіх шляхів, які ви додаєте за допомогою цього параметра.

branch

Перевизначає загальний параметр

Встановіть значення для цього параметра, щоб програма звантажила певну версію &kde;, а не типову гілку trunk, у якій розробляється &kde;. Наприклад, щоб звантажити версію &kde; 3.4, вам слід встановити значення цього параметра 3.4.

Зауважте, що певні модулі використовують іншу назву версії. Наприклад, нумерація версій модуля arts не збігається з номерами версій &kde;. Номером версії arts для &kde; 3.4 є 1.4.

Якщо &kdesvn-build; не вдається належним чином звантажити версію з цим параметром, ймовірно, вам доведеться вручну вказати адресу &url;, з якої слід виконати звантаження за допомогою параметра override-url.

build-dir

Перевизначає загальний параметр

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

- Шлях відносно каталогу вихідних кодів з &subversion; &kde; (див. параметр source-dir). Це типовий спосіб, спосіб, у який скрипт працював до версії 0.61. Цей режим буде обрано, якщо ви введете назву каталогу, яка не починається з тильди (~) або похилої риски (/).

  Типовим значенням є `build`.

- Абсолютний шлях. Якщо ви вкажете шлях, назва якого починається з /, цей шлях буде використано безпосередньо. Наприклад, `/tmp/kde-obj-dir/`.

- Шлях відносно вашого домашнього каталогу. Якщо ви вкажете шлях, назва якого починатиметься з ~, буде використано шлях відносно вашого домашнього каталогу, подібно до використання тильди у командній оболонці. Наприклад, `~/builddir` визначить каталог збирання `/home/user-name/builddir`.

Як це не дивно, ви можете змінити значення цього параметра для кожного з модулів окремо.

checkout-only

Перевизначає загальний параметр

Встановіть значення для цього параметра, щоб звантажити вихідні коди &subversion; файл за файломs. Значенням має бути відокремлений пробілами список каталогів, які слід звантажити. Якщо ви не включили адміністративний каталог, його буде включено автоматично (за потреби). За послідовного звантаження адміністративний каталог буде взято з kde-common, там де він існує на сервері &subversion;. Хоча цей параметр може перезвантажувати загальний параметр, пам’ятайте, що встановлення цього параметра на загальному рівні не має ніякого сенсу.

cmake-options

Додається до загальних параметрів (не можна застосовувати до qt-copy)

Скористайтеся цим параметром для того, щоб визначити, які параметри слід передати &cmake; під час створення системи збирання модуля. Якщо цей параметр використано як загальний, його буде застосовано до всіх модулів, які збирає цей скрипт. Якщо параметр визначено на рівні модуля, його буде додано в кінець загальний параметрів. За допомогою цього параметра можна вказати загальні параметри &cmake; у загальному розділі (global).

Цей параметри заміняє собою configure-flags для всіх модулів &kde; 4, оскільки для їх збирання використовується &cmake;.

Оскільки ці параметри передаються безпосередньо до командного рядка &cmake;, їх слід вказувати у тому самому вигляді, у якому їх буде передано &cmake;. Приклад:

    cmake-options -DCMAKE_BUILD_TYPE=RelWithDebInfo

Оскільки встановлення цього параметра потребує певних знань, якщо всі інші параметри &kdesvn-build; вказано правильно, ви можете просто залишити значення цього параметра порожнім.

configure-flags

Додається до загальних параметрів (за винятком qt-copy)

Скористайтеся цим параметром, щоб вказати параметри, які слід передати ./configure під час створення системи збирання модуля. Якщо цей параметр використовується на загальному рівні, його буде застосовано до всіх модулів, які збиратимуться цим скриптом. qt-copy використовує набір параметрів налаштування, відмінний від решти &kde;, отже цей параметр перевизначає загальні параметри, якщо його буде застосовано до qt-copy.

Цей параметрів стосується qt-copy і всіх модулів &kde; 3. Модулі &kde; 4 використовують &cmake;, керувати яким можна за допомогою параметра cmake-options.

colorful-output | Неможливо перевизначити | Встановіть для цього параметра значення false, щоб вимкнути розфарбування даних, які виводитиме &kdesvn-build;. Типовим значенням цього параметра є true. Зауважте, що &kdesvn-build; не виводитиме розфарбовані дані до інших, відмінних від термінала (на зразок xterm, &konsole; або звичайної консолі &Linux;), виводів.

cxxflags

Додається до загального параметра

Скористайтеся цим параметром, щоб вказати, які параметри слід передати `./configure` як `CXXFLAGS` під час створення системи збирання модуля. Цей параметр визначається саме тут, а не у параметрах configure-flags і cmake-options, оскільки цей параметр також встановлює змінну середовища `CXXFLAGS` під час процесу збирання.

Зауважте, що у &kde; 4 і всіх інших модулів, які використовують &cmake;, потрібно встановити значення параметра CMAKE_BUILD_TYPE рівним «none» під час налаштування модуля. Зробити це можна за допомогою параметра cmake-options.

dest-dir

Перевизначає загальний параметр

Скористайтеся цим параметром, щоб змінити назву, яку буде дано модулю на диску. Наприклад, якщо вам потрібен модуль extragear/network, за допомогою цього параметра ви можете перейменувати його на extragear-network. Зауважте, що не варто включати до назви модуля каталоги роздільники каталогів, оскільки такі назви можуть призвести до конфлікту з одним з параметрів build-dir або source-dir.

disable-agent-check

Неможливо перевизначити

Зазвичай, якщо ви використовуєте &ssh; для звантаження вихідних кодів &subversion; (наприклад, якщо ви використовуєте протокол svn+ssh), &kdesvn-build; намагатиметься перевірити і зробити так, щоб, якщо ви використовуєте агент ssh, цей агент справді керував певними профілями &ssh;. Так зроблено, щоб &ssh; не надсилав, за можливості, запитів на пароль для кожного з ваших модулів. Ви можете вимкнути таку перевірку встановленням параметра `disable-agent-check` у значення true.

do-not-compile

Перевизначає загальний параметр

Скористайтеся цим параметром, щоб обрати певний набір каталогів, які буде зібрано у модулі (замість збирання всіх каталогів). Відокремлювати каталоги у списку слід за допомогою пробілів.

Ця можливість підтримується як у &kde; 3, так і у &kde; 4. Підтримку KDE 4 було додано у &kdesvn-build; 1.6.3.

Зауважте, що вихідні коди програм все ж буде звантажено. Ви можете скористатися параметром checkout-only, щоб вказати список тек, які ви бажаєте звантажити.

Наприклад, щоб вимкнути збирання &juk; і &kscd; у модулі kdemultimedia, вам слід додати рядок "do-not-compile juk kscd" до параметрів kdemultimedia.

email-address

Неможливо перевизначити

Вкажіть цей параметр, щоб зазначити адресу, з якої, у разі потреби, &kdesvn-build; має надсилати повідомлення електронної пошти. Вам не слід перейматися встановленням цього параметра, якщо ви не маєте наміру використовувати жодну з можливостей, які використовують електронну пошту. (Типово, такі можливості вимкнено.)

У поточній версії для цього параметра потрібен лише параметр email-on-compile-error.

email-on-compile-error

Неможливо перевизначити

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

Для встановлення адреси, з якої &kdesvn-build; має надсилати повідомлення, скористайтеся параметром email-address, оскільки типове значення цього параметра може не відповідати вашим потребам.

inst-apps

Перевизначає загальний параметр

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

Будь-які зміни не набудуть чинності до наступного виконання команди `make `-f` Makefile.cvs` у автоматичному режимі скриптом або вручну, вказуванням параметра `--refresh-build` або `--recreate-configure`.

Цей параметр все ще не працює з модулями, зібраними за допомогою системи збирання &cmake;.

Зауважте, що вихідні коди програм все ж буде звантажено. Ви можете скористатися параметром checkout-only, щоб вказати список тек, які ви бажаєте звантажити.

install-after-build | Перевизначає загальний параметр | Цей параметр використовується для встановлення пакунка після його успішного збирання. Типово, цей параметр увімкнено. Якщо ви бажаєте вимкнути його, вам слід встановити для нього значення 0 у файлі налаштувань. Крім того, ви можете скористатися параметром командного рядка `--no-install`.
kdedir | Перевизначає загальний параметр | За допомогою цього параметра можна вказати каталог, до якого буде встановлено &kde; після збирання. Типовим значення параметра є `~/kde`. Якщо ви зміните значення так, що воно вказуватиме на каталог, для доступу до якого потрібні права користувача root, ймовірно, вам слід прочитати і про параметр make-install-prefix.

kde-languages

Неможливо перевизначити

За допомогою цього параметра ви можете вказати скрипту, що слід звантажити і встановити пакунки локалізації разом з &kde;. Це слід зробити, якщо ви не є мешканцем США і бажаєте, щоб &kde; було перекладено вашою рідною мовою.

Щоб скористатися цим параметром, вам слід вказати для нього значення-список мов, які слід встановити, коди мов слід відокремлювати пробілами. З кожною з мов пов’язано певний код, знайти потрібний код можна на сторінці http://i18n.kde.org/teams/.

Можна обрати і лише одну мову. Типово, не буде звантажено жодної мови, що означає, що інтерфейс і довідку &kde; буде показано лише американською англійською.

Наприклад, якщо вам потрібно встановити пакунок української мови, вам слід встановити значення цього параметра десь так: ``kde-languages` uk`. Крім того, ймовірно, для того, щоб середовище використовувало українську, вам слід належним чином налаштувати його за допомогою Центру керування (KDE 3) або Системних параметрів (KDE 4).

libpath

Перевизначає загальний параметр

Встановіть значення для цього параметра значення, щоб змінити значення змінної середовища LD_LIBRARY_PATH на час збирання. Ви не зможете перевизначити цей параметр на рівні модулів. Типовим є порожнє значення, але шляхи `$`KDEDIR`/lib` і `$`QTDIR`/lib` буде додано автоматично. Ви можете скористатися тильдою (~) у будь-якому зі шляхів, які ви додасте за допомогою цього параметра.

log-dir | Перевизначає загальний параметр | Скористайтеся цим параметром, щоб змінити каталог, у якому зберігатимуться файли журналу, створені скриптом. Цей параметр можна встановити на рівні модулі у версіях скрипту, пізніших за 0.64.

make-install-prefix

Перевизначає загальний параметр

Встановіть для цієї змінної значення відокремленого пробілами списку, який скрипт вважатиме командою і її параметрами, які передують команді ``make` `install``, призначеній для встановлення модулів. Наприклад, цей параметр буде корисним для встановлення пакунків за допомогою &sudo;, але, будь ласка, будьте обережними з використанням прав доступу адміністративного користувача.

make-options | Перевизначає загальний параметр | Встановіть значення для цієї змінної, щоб передати параметри командного рядка команді `make`. Подібні параметри будуть корисним для програм на зразок distcc або у системах з декількома процесорними ядрами.
manual-build | Перевизначає загальний параметр | Встановіть для цього параметра значення true, щоб під час процесу збирання скрипт не намагався зібрати цей модуль. Модуль все ж буде оновлено під час оновлення зі сховища &subversion;. Цей параметр у точності збігається з параметром командного рядка `--no-build`.
manual-update | Перевизначає загальний параметр | Встановіть для цього параметра значення true, щоб процес збирання не намагався оновити (і отже зібрати і встановити) цей модуль. Якщо ви встановите цей параметр для певного модуля, вам варто прокоментувати його.

module-base-path

Перевизначає загальний параметр

Встановіть цей параметр, щоб перевизначити шлях до типової теки &kdesvn-build; для потрібного модуля. Цим параметром можна, наприклад, скористатися, якщо потрібно використати певні гілки або стабільні версії бібліотек. У визначення правильного шляху неоціненну поміч вам може надати Переглядач кодів &kde;.

Зауважте, що &kdesvn-build; конструює остаточний шлях відповідно до такого шаблону: `$svn-server`/home/kde/`$module-base-path`/`$module-name`.

Типовим значенням є або trunk або trunk/KDE, залежно від назви модуля.

Ви можете скористатися варіантами branch або tag, якщо їх можна застосовувати.

niceness | Неможливо перевизначити | Значенням цього параметра є ціле число у діапазоні від 20 до 0. Чим вищим буде це число, тим нижчим встановлюватиметься пріоритет процесу &kdesvn-build;. Типовим значенням є 10.
no-svn | Перевизначає загальний параметр | Якщо для цього параметра встановлення значення «true», &kdesvn-build; не оновлюватиме код модуля автоматично. Скрипт все ж намагатиметься зібрати цей модуль, якщо згідно налаштувань його слід спробувати зібрати.
no-rebuild-on-fail | Перевизначає загальний параметр | Встановіть для цього параметра значення true, щоб завжди забороняти &kdesvn-build; намагатися перебудовувати цей модуль, якщо його не вдасться зібрати під час покрокового збирання. Зазвичай, &kdesvn-build; спробує перебудувати модуль від початку, щоб протидіяти ефекту побіжних оновлень &subversion;, які заплутують систему збирання.
override-url | Перевизначає загальний параметр | Якщо вистановите цей параметр, &kdesvn-build; використовуватиме його значення як адресу &url;, яку слід передати &subversion; повністю незмінною. Загалом, вам слід використовувати цей параметр, якщо ви бажаєте звантажити певний випуск, але &kdesvn-build; не може визначити, який випуск ви мали на увазі у параметрі branch.

qtdir

Перевизначає загальний параметр

Встановіть цей параметр для того, щоб змінити змінну середовища `QTDIR` на час збирання. Ви не зможете перевизначити цей параметр на рівні модулів. Якщо ви не вкажете значення для цього параметра, типовим значенням буде `${source-dir}/build/qt-copy`, тобто буде використано модуль qt-copy, включений до сховища коду &kde;. Ви можете вказати тильду (~) для позначення вашого домашнього каталогу.

remove-after-install

Перевизначає загальний параметр

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

Можливими значення цього параметра є:

- none — Нічого не вилучати (Типове значення).

- builddir — Вилучити каталог збирання, але не початкових кодів.

- all — Вилучити каталоги початкових кодів і збирання.

Зауважте, що використання цього параметра призведе до збільшення використання вашого каналу з’єднання (якщо ви використовуєте all) і часу, який буде використано для збирання &kde;, оскільки &kdesvn-build; не зможе виконувати покрокове збирання.

revision | Перевизначає загальний параметр | Якщо встановити для цього параметра значення, відмінне від 0 (нуля), &kdesvn-build; примусово виконає оновлення &subversion; до точно вказаної версії модуля, навіть якщо діють параметри на зразок branch. Якщо ви вже маєте модуль вказаної версії, його не буде оновлено до того часу, доки цей параметр налаштування не буде змінено або вилучено.

set-env

Перевизначає загальний параметр

Цей параметр приймає розділений пробілами набір значень, де перше значення є змінною середовища, яку слід встановити, а решта значень вважатиметься значенням змінної. Наприклад, щоб встановити для змінної `RONALD` значення McDonald, вам слід вказати у відповідному розділі таку команду:

    set-env RONALD McDonald

Цей параметр має особливість: його можна повторювати без перевизначення раніше встановлених параметрів set-env у одному і тому ж розділі файла налаштувань. Таким чином, ви можете встановити декілька змінних середовища у одному модулі (або загальних змінних).

source-dir | Перевизначає загальний параметр | Цей параметр використовується для встановлення каталогу, у якому &subversion; слід зберігати коди &kde;. Якщо ви не вкажете це значення, його типовим значенням буде `~/kdesvn`. Якщо ви маєте намір вказати це значення, вам слід використовувати абсолютний шлях.
stop-on-failure | Перевизначає загальний параметр | Встановіть для цього параметра значення true, щоб зупинити виконання скрипту, якщо під час збирання або встановлення трапляться помилки. Типово, цей параметр вимкнено.
svn-server | Перевизначає загальний параметр | Цей параметр використовується для того, щоб вказати сервер, який слід використати для звантаження з &subversion;. Типовим є анонімне сховище &subversion;, `svn://anonsvn.kde.org/`

tag

Перевизначає загальний параметр

Використовуйте цей параметр для звантаження певної версії модуля.

Зауваження: ймовірно, вам не доведеться використовувати цей параметр. Випуски &kde; можна звантажити у вигляді архівів з сайта FTP &kde; або одного з його дзеркал.

Якщо ви використовуєте &kdesvn-build;, оскільки у вас виникають труднощі з отриманням випусків &kde;, для збирання у вашому дистрибутиві, спробуйте скористатися інструментом збирання Konstruct, який працює з архівами випусків середовища.

unsermake-options | Перевизначає загальний параметр | Цей параметр подібний до параметра make-options, але використовується для &unsermake;, програми, яка приймає деякі з параметрів, які &make; не розуміє.
use-cmake | Перевизначає загальний параметр | Цей параметр було вилучено у &kdesvn-build; 1.4, оскільки для збирання всіх модулів &kde; 4 потрібен &cmake;, а використання &cmake; не дозволене для будь-яких інших модулів.

use-qt-builddir-hack

Перевизначає загальний параметр

Хоча цей параметр і може перевизначати параметр, встановлений на загальному рівні, він має сенс лише для qt-copy. Ви можете встановити для цього параметра значення true, щоб увімкнути режим роботи скрипту srcdir != builddir. Якщо такий режим буде увімкнено, &kdesvn-build; скопіює вихідні коди модуля qt-copy до каталогу збирання і виконає їх збирання у цьому каталозі. Це означає, що слід встановити для вашої змінної середовища `QTDIR` значення `${qt-copy-build-dir}/qt-copy/lib`. Крім того, вам слід відповідно змінити значення параметра qtdir. У цьому режимі має працювати і покрокове збирання &make;, оскільки під час копіювання зберігаються часові позначки файлів. Якщо ви використовуєте параметр apply-qt-patches, латки буде застосовано до коду у каталозі збирання, а не до коду у каталозі вихідних кодів. Типовим значенням параметра use-qt-builddir-hack є true.

use-stable-kde

Неможливо перевизначити

Оскільки &kdesvn-build; підтримує збирання &kde; 3 і 4, немає потреби у безпосередній вказівці скрипту, яку саме версію слід збирати. Типово, &kdesvn-build; буде збирати основну гілку розробки &kde; (вона має назву /trunk). Але зараз ця гілка використовується &kde; 4, що може бути неприйнятним для деяких користувачів.

Ви можете скористатися параметром &branch; на загальному рівні або на рівні модулів, щоб звантажити &kde; 3.5 (або 3.4 тощо). Але таке звантаження не є зручним, оскільки певні модулі (зокрема kdesupport) є спільними для 3.5 і 4. Крім того, до файла налаштувань доведеться додати багато параметрів версії.

Отже, якщо ви встановите загальний параметр у значення true, &kdesvn-build; автоматично звантажить версію &kde; 3.5 модулів, на зразок kdelibs і qt-copy, замість звантаження версії &kde; 4. Ви можете скористатися параметрами &branch; або &tag; для перевизначення версії, яку використовуватиме &kdesvn-build;. Таким чином, скрипт спростить вам звантаження &kde; 3.5 замість версії &kde; 4.

use-unsermake

Перевизначає загальний параметр

Встановіть для цього параметра значення true, щоб скористатися експериментальною програмою &unsermake; замість &automake; під час виконання скрипту configure. Використання цієї програми може значно зменшити час збирання, особливо для розподілених систем збирання. Типовим значення цього параметра є true (для більшості модулів).

Зазвичай, якщо ви використовуєте цей параметр &kdesvn-build; буде автоматично підтримувати звантаження нових версій &unsermake;. Таке оновлення може спричинити незручності, особливо, якщо ви керуєте &unsermake; власноруч. У останньому випадку, ви можете вказати для цього параметра значення self, — &kdesvn-build; використовуватиме &unsermake;, але не виконуватиме ніяких дій з оновлення системи збирання.

## Параметри командного рядка і змінні середовища

Цей скрипт не використовує змінних середовища. Якщо у вас виникне потреба у встановленні змінних середовища для процесів збирання або встановлення, будь ласка, скористайтеся параметром set-env.

Цей скрипт сприймає такі параметри командного рядка:

`--async`

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

`--help`

  Показати лише короткі довідкові відомості про скрипт.

`--version`

  Показує версію програми.

`--author`

  Показує інформацію для контактів з автором.

`--color`

  Вмикає виведення інформації у кольорі.

`--nice=значення`

  Встановлює значення &niceness; рівним аргументу значення на час поточного запуску. значенням має бути ціле число у діапазоні від 0 до 20.

`--no-async`

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

`--no-color`

  Вимикає виведення інформації у кольорі.

`--pretend` (або `-p`)

  Не виконувати ніяких дій, лише імітувати їх.

`--quiet` (або `-q`)

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

`--really-quiet`

  Повідомляти лише про попередження і помилки.

`--verbose`

  Виводити докладну інформацію про те, що відбувається, і про дії, які виконує &kdesvn-build;.

`--svn-only`

  Виконати лише оновлення початкових кодів.

`--build-only`

  Виконати лише процес збирання.

`--ignore-modules`

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

`--no-svn`

  Пропустити зв’язок з сервером &subversion;.

`--no-build`

  Пропустити процес збирання.

`--no-install`

  Не встановлювати автоматично пакунки після збирання.

`--debug`

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

`--no-rebuild-on-fail`

  Не намагатися перебудовувати модулі, які не вдалося зібрати спочатку. &kdesvn-build; ніколи не намагатиметься виконувати збирання модуля, який скрипт вже намагався зібрати.

`--refresh-build`

  Повторно створити систему збирання і виконати збирання з початку.

`--reconfigure`

  Запустити скрипт налаштування ще раз, без очищення каталогу збирання.

`--recreate-configure`

  Запустити команду `make `-f` Makefile.cvs` знову, щоб створити скрипт configure і продовжити збирання у звичайному режимі. Якщо визначено цей параметр, параметр `--reconfigure` буде додано автоматично.

`--resume-from`

  Цей параметр використовується для поновлення збирання, починаючи з вказаного модуля, назва якого має бути наступним параметром командного рядка. За використання цього параметра до командного рядка буде автоматично додано параметр `--no-svn`. Крім того, вам не слід вказувати інших модулів у командному рядку.

`--rc-file`

  Інтерпретує наступний параметр командного рядка, як файл, з якого слід читати параметри налаштування. Типовим значенням цього параметра є ~/.kdesvn-buildrc.

`--run`

  Цей параметр інтерпретує наступний елемент командного рядка як назву програми, яку слід запустити. &kdesvn-build; завершить читання файла налаштувань, відновить попередні налаштування середовища, а потім виконає вказану програму.

  Але цим параметром здебільшого не можна користуватися для запуску оболонки за допомогою середовища &kdesvn-build;, оскільки інтерактивні оболонки типово змінюють принаймні частину змінних середовища (зокрема `PATH` і `KDEDIRS`) під час процедури свого запуску.

`--prefix=</шлях/до/kde>`

  За допомогою цього параметра можна змінити каталог, куди &kde; буде встановлено з командного рядка. За використання цього параметра автоматично використовуєтья параметр `--reconfigure`.

`--build-system-only`

  Зупинити виконання після команди `make `-f` Makefile.cvs`. Вам все ж доведеться запустити і скрипт configure, цю дію &kdesvn-build; виконає наступного разу. За допомогою цього скрипту ви зможете створити всі скрипти configure одразу, щоб мати змогу переглянути вивід команд `./configure `--help`` для кожного з модулів і змінити відповідним чином ваші параметри configure.

`--install`

  За використання цього параметра командного рядка скрипт намагається встановити всі модулі, які було успішно зібрано, окрім qt-copy, встановлювати який не потрібно. Якщо після `--install` буде вказано інші параметри командного рядка, всі ці параметри вважатимуться назвами модулів, які слід встановити.

`--<назва_параметра>=`

  Ви можете скористатися цим параметром, щоб перевизначити відповідний параметр у вашому файлі налаштувань для кожного з модулів. Наприклад, щоб перевизначити значення параметра log-dir, вам слід вказати: ``--log-dir=`/шлях/до/каталогу```.

`--<назва_модуля>,<назва_параметра>=`

  Ви можете скористатися цим параметром, щоб перевизначити значення відповідного параметри у вашому файлі налаштувань для певного модуля. Наприклад, щоб перевизначити значення параметра use-unsermake для kdemultimedia, you вам слід вказати: `--kdemultimedia,use-unsermake=false`.

Всі інші параметри командного рядка вважатимуться назвами модулів, які слід оновити і зібрати. Будь ласка, не плутайте збирання зі встановленням.

## Користування &kdesvn-build;

### Передмова

Зазвичай, використання &kdesvn-build; після виконання кроків розділу зводиться до виконання такої команди у терміналі:

    &percnt; kdesvn-build

Після цього &kdesvn-build; звантажить коди програм &kde;, спробує налаштувати (configure) і зібрати їх, а потім встановити програми.

Далі ми поговоримо про те, як &kdesvn-build; робить це, а також про те, які дії ви можете виконати за допомогою цього інструменту.

### Основні можливості &kdesvn-build;

#### Підтримка qt-copy

&kdesvn-build; намагається якнайкраще підтримувати модуль qt-copy у сховищі &subversion; &kde;.

qt-copy є копією початкових кодів найостаннішого випуску набору інструментів &Qt;, який використовується &kde;. У цьому модулі також міститься набір латок для оптимізації і усування вад, які ви можете за бажання накласти на початковий код. Ці латки сумісні з бібліотекою &Qt;, отже код, створений за допомогою qt-copy, запускатиметься і зі звичайним &Qt;.

Більшість відмінностей qt-copy, автоматично обробляються &kdesvn-build;. Але існує декілька відмінностей, про які вам слід знати.

- Зазвичай, значення параметра &configure-flags; якогось з модулів додається до загального значення параметра &configure-flags;. Але значення параметра &configure-flags; для qt-copy замінить загальне значення параметра, оскільки рядок команди для цього модуля відрізняється від рядків команд інших модулів.

- &kdesvn-build; автоматично визначатиме деякі додаткові змінні середовища, які потрібні для збирання qt-copy і які, зазвичай, не потрібні для збирання решти &kde;.

- Крім того, qt-copy підтримує необов’язковий набір латок для усування деяких вад і оптимізацій, які ще не увійшли до офіційної версії &Qt;. Щоб увімкнути ці латки, встановіть для параметра &apply-qt-patches; значення true. Після виконання цієї зміни вам, ймовірно, доведеться виконати команду ``kdesvn-build` `--refresh-build` `qt-copy``.

#### Стандартні прапорці, які додаються &kdesvn-build;

Щоб зекономити вам час, &kdesvn-build; додасть деякі з стандартних шляхів до вашого середовища:

- Шлях до бібліотек &kde; і &Qt; автоматично додається до змінної середовища `LD_LIBRARY_PATH`. Отже, вам не потрібно змінювати &libpath;, щоб включити відповідні каталоги.

- Шлях до програм підтримки розробки &kde; і &Qt; буде автоматично додано до змінної середовища `PATH`. Отже, вам не потрібно змінювати &binpath;, щоб включити відповідна каталоги.

- Шлях до програми pkg-config &kde; буде автоматично додано до `PKG_CONFIG_PATH`. Отже, вам не потрібно використовувати &set-env; для додавання відповідних каталогів.

- Це значення &kdedir; буде автоматично передано змінній середовища `KDEDIR` на час збирання. (Змінна `KDEDIRS` залишатиметься незмінною.)

- Це значення для &qtdir; буде автоматично передано змінній середовища `QTDIR` на час збирання.

- &kdesvn-build; автоматично скоригує середовище належним чином, беручи до уваги встановлення чи не встановлення параметра &use-unsermake;.

#### Зміна пріоритету збирання &kdesvn-build;

У сучасних операційних системах ви можете запускати програми з різним рівнем пріоритетності, це зокрема можна робити у &Linux; і &BSD;. Система розподілятиме час процесора між різними програмами відповідно до того, наскільки пріоритетними є ці програми.

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

Але &kdesvn-build; підтримуватиме достатньо великий рівень пріоритету, а отже скрипт виконуватиметься з вищим пріоритетом ніж пакетні процеси і програми з надання процесорного часу, на зразок Seti@Home.

Ви можете змінити рівень пріоритетності &kdesvn-build; на вищий або нижчий, — для цього вам достатньо змінити значення параметр &niceness; у файлі налаштувань. Значення параметра &niceness; керує тим, наскільки поблажливим &kdesvn-build; буде до інших програм. Іншими словами, встановлення більшого значення параметра &niceness; надасть &kdesvn-build; менший пріоритет. Отже, щоб надати &kdesvn-build; вищий пріоритет, зменшіть значення &niceness; (і навпаки). Значеннями параметра &niceness; можуть бути цілі числа від 0 (ніяких компромісів, — найвищий пріоритет) до 20 (найкомпромісніше виконання, — найнижчий пріоритет).

Крім того, ви можете тимчасово змінити пріоритет &kdesvn-build; за допомогою параметра командного рядка &cmd-nice;. Значення цього параметра таке саме, як і значення &niceness;.

Деякі з програм, які виконуються від імені адміністративного користувача, можна виконувати з від’ємним рівнем nice, такі програми матимуть ще вищий рівень пріоритетності. Встановлювати від’ємного (або навіть нульового) значення &niceness; для &kdesvn-build; не варто, подібні значення не зможуть значно пришвидшити роботу програми, але значно сповільнять виконання інших завдань системи, які будуть вам потрібні.

Щоб запустити &kdesvn-build; з пріоритетом nice 15 (пріоритетом, нижчим за звичайний), виконайте команду:

    &percnt; kdesvn-build --nice=15

Крім того, ви можете змінити файл налаштувань, щоб зробити зміни сталими:

    &niceness; 15

#### Встановлення від імені суперкористувача

Ймовірно, у вас може виникнути потреба у запуску &kdesvn-build; встановлення з правами доступу адміністративного користувача. Така потреба може виникнути під час загальносистемного встановлення, яке, втім, не рекомендується авторами програми. Ця можливість також корисна і під час рекомендованого збирання для окремого користувача &kde;. Причиною цього є те, що деякі у деяких модулях (особливо у модулі kdebase) програми мають встановлюватися з підвищеними правами доступу до ресурсів системи. Ці програми не зможуть отримати потрібних дозволів, якщо ви не встановите їх з підвищеними правами.

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

Для надання скрипту додаткових прав доступу у &kdesvn-build; передбачено параметр &make-install-prefix;. Ви можете скористатися цим параметром для того, щоб вказати команду, яка використовується для встановлення від імені іншого користувача. Рекомендуємо вам скористатися для цього програмою &sudo;, ця програма надає змогу виконувати команди від імені адміністративного користувача.

Наприклад, щоб встановити всі модулі за допомогою &sudo;, ви можете вказати щось таке:

    global
      &make-install-prefix; sudo
      # Інші параметри
    end global

Для того, щоб скористатися &make-install-prefix; для окремого модуля, вкажіть у файлі налаштувань рядки на зразок:

    module kdemultimedia
      &make-install-prefix; sudo
    end module

#### Показ поступу збирання модуля

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

Для того, щоб ви могли використовувати цю можливість, вам слід увімкнути параметр &use-unsermake; на рівні відповідного модуля. Типово, цей параметр увімкнено, але деякі з модулів не підтримують його використання, для таких модулів використання &unsermake; автоматично вимикається. Отже, якщо ви вважаєте, що увімкнули &unsermake;, але не бачити звіту про поступ збирання модуля, можливо, модуль не підтримує &unsermake;.

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

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

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

##### Звантаження частин модуля

Ймовірно, це найкращий спосіб виконати завдання. Якщо він працюватиме, ви зекономите час на звантаження і простір на диску. За використання цього способу &kdesvn-build; звантажуватиме лише частини модуля, який ви вкажете. Досягти цього можна за допомогою використання параметра &checkout-only; для модуля, — цей параметр визначає список каталогів, які слід звантажити.

Якщо ви ще не знаєте, які саме частини модуля вам слід звантажити, вам варто спочатку переглянути компонування &subversion; цього модуля за допомогою WebSVN.

Для того, щоб звантажити лише &kuser; і &kdat; з kdeadmin, ви можете скористатися &checkout-only; ось так:

    module kdeadmin
      &checkout-only; kuser kdat
    end module

Каталоги збиратимуться у тому порядку, у якому ви вкажете їх за допомогою цього параметра. Якщо у одному з каталогів буде потрібен компонент, який ще не було зібрано, вам слід не забути вказати відповідні каталоги у рядку &checkout-only; і переконатися, що потрібний компонент вказано перед назвою іншого компонента, для збирання якого потрібен перший компонент.

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

Нарешті, останнє зауваження щодо цього параметра: якщо ви зміните значення цього параметра, вам доведеться виконати команду ``kdesvn-build` `&cmd-refresh-build;` `назва_модуля``, щоб забезпечити правильне переналаштування модуля. Крім того, &kdesvn-build; ніколи не буде вилучати існуючих файлів, якщо ви усуватимете певні каталоги зі списку аргументів параметра &checkout-only; або додаватимете параметр до модуля, який вже було звантажено.

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

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

Подібним збиранням можна керувати за допомогою параметра &do-not-compile;. Цей параметр працює подібно до параметра &checkout-only;, про який ми писали раніше, — йому передається список каталогів, які не слід збирати.

Крім того, подібно до &checkout-only;, для того, щоб зміни, внесені цим параметром, набули чинності, вам слід запустити скрипт `configure` відповідного модуля ще раз. Це можна зробити за допомогою команди ``kdesvn-build` `&cmd-reconfigure;` `назва_модуля``.

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

    module kdebindings
      &do-not-compile; dcoppython
    end module

##### Збирання декількох каталогів з всього модуля

Ви можете скористатися параметром &inst-apps; для того, щоб вказати скрипту, що слід зібрати лише декілька каталогів з усього модуля (але звантажити слід всі каталоги).

Цей параметри подібний до комбінації параметрів &checkout-only; і &do-not-compile;: за його використання виконується звантаження всього модуля, подібно до &do-not-compile;, але збираються лише вказані вами каталоги, подібно до &checkout-only;. Через це, зазвичай, простіше скористатися параметром &checkout-only;.

Цього параметра стосуються всі ті попередження, про які було згадано у описах його складових: вам доведеться повторно викликати скрипт configure, якщо ви зміните значення &inst-apps;.

#### Використання &unsermake;

&unsermake; — це програма, яку розроблено для вбудовування до системи збирання &kde; і покращення процесу збирання заміною певних інструменті, які використовують типово (зокрема &automake; і &make;). Цей інструмент буде особливо корисним для тих, хто виконує розподілене збирання, оскільки у цьому випадку він є набагато швидшим за звичайну систему збирання. Але навіть під час збирання на одному комп’ютері &unsermake; є швидшим за свої аналоги.

Крім того, у &unsermake; передбачено підтримку оцінки поступу поточної процедури збирання. &kdesvn-build; використовує цю можливість для показу поступу процесу збирання. Див. також .

У &kdesvn-build; передбачено автоматичну підтримку &unsermake;. &kdesvn-build; типово використовує &unsermake; за наявності можливості використання його для збирання певного модуля.

Щоб вимкнути підтримку &unsermake; для всіх модулів, додайте такі рядки:

    global
      use-unsermake false
    end global

Щоб увімкнути &unsermake; для окремого модуля, навіть якщо цей інструмент вимкнено на загальному рівні, виконайте таку команду:

    module module-name
      use-unsermake true

      # тут буде записано інші параметри...
    end module

&kdesvn-build; автоматично оновить або звантажить &unsermake; під час виконання інших оновлень. Якщо ви надаєте перевагу самостійному керуванню &unsermake;, вимкнути подібні перевірки і звантаження можна встановленням для параметра &use-unsermake; значення self замість true.

Після такої зміни &kdesvn-build; продовжуватиме спроби використання &unsermake;, але не виконуватиме спроб оновлення. Ви можете або змінити значення параметра &binpath; так, щоб він вказував на правильний каталог &unsermake;, або звантажити і оновити &unsermake; самостійно з його модуля (у поточній версії kdenonbeta/unsermake).

#### Підтримка версій і випусків у &kdesvn-build;

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

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

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

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

У &subversion; немає ніяких відмінностей між версіями, випусками і експериментальною версією (trunk) коду. Подібне відокремлення є лише наслідком певної домовленості між розробниками. Це ускладнює належну підтримку версій і випусків у &kdesvn-build;. Все ж деякі речі можна робити і за допомогою скрипту.

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

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

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

Щоб звантажити kdelibs зі складу &kde; 3.5 (відповідне сховище відоме, як версія 3.5):

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

Або, щоб звантажити kdemultimedia у вигляді, у якому цей модуль було випущено у &kde; 3.4.3:

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

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

##### Додаткові параметри підтримки версій

&kdesvn-build; підтримує два параметри, призначені для обробки ситуацій, коли параметри &branch; і &tag; неправильно визначають шлях до сховища: &module-base-path; і &override-url;.

- Параметр &module-base-path; використовується для того, щоб допомогти &kdesvn-build; заповнити відсутню частину шляху до модуля. У сховищі &kde; всіх шляхи виглядають так: `Корінь_svn/базовий_шлях_до_модуля/назва модуля`. Зазвичай, &kdesvn-build; може визначити відповідну середню частину самостійно. Якщо програма не може цього зробити, ви можете скористатися &module-base-path;, ось так:

      module qt-copy
        # тут стабільні версії ще не працюють
        module-base-path branches/qt/3.3
      end module

  Таким чином ви накажете &kdesvn-build; звантажити qt-copy з (у нашому прикладі), `svn://anonsvn.kde.org/home/kde/branches/qt/3.3/qt-copy`.

- З іншого боку, параметр &override-url; дозволяє вам вказати точний шлях для звантаження. За допомогою цього параметра ви можете наказати &kdesvn-build; виконати звантаження з тих адрес, які скрипт не може визначити самостійно.

      module qt-copy
        # Визначення точного шляху для звантаження.
        override-url svn://anonsvn.kde.org/home/kde/branches/qt/3.3/qt-copy
      end module

  &kdesvn-build; не змінюватиме і не виправлятиме значення, яке ви вкажете для &override-url;, отже, якщо ви зміните ваш параметр &svn-server;, може виникнути потреба і у зміні цього параметра.

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

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

Через різноманітні недоліки у системі збирання &kde;, частину яких можна усунути використанням &unsermake;, &kdesvn-build; автоматично виконує послідовність кроків, за допомогою яких скрипт намагається зібрати модуль, якщо перша спроба збирання завершилася невдало.

1. Після першої спроби &kdesvn-build; просто перезапускає `make`. Вірите чи ні, але іноді такий перезапуск призводить до бажаних результатів, якщо ж це не спрацює, результати будуть відомі дуже скоро.

2. За повторної помилки &kdesvn-build; намагається повторно виконати скрипт configure для модуля, а потім ще раз зібрати його. Зазвичай, таким чином можна вирішити проблеми, пов’язані з файлом системи збирання, для якого потрібне повторне налаштування, яке не виконується системою збирання у автоматичному режимі.

   Каталог збирання модуля під час виконання цього кроку не змінюється, отже, за винятком кроку з повторного налаштування (запуску скрипту configure), у разі неможливості збирання все теж завершиться досить швидко.

3. Якщо модуль так і не вдалося зібрати, &kdesvn-build; здається і переходить до збирання іншого модуля. Але існують і способи, за допомогою яких ви можете спробувати зібрати модуль вручну.

&kdesvn-build; виявить більшість випадків, коли система збирання потребує повторного налаштування, і виконає його у автоматичному режимі.

Крім того, якщо &kdesvn-build; збирає модуль вперше, всі ці кроки можна пропустити, оскільки збирання «на порожньому місці», зазвичай, не призводить до помилок, за винятком існування серйозних проблем у коді.

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

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

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

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

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

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

    % touch ~/kdesvn/build/arts
    % kdesvn-build

##### Керування поведінкою перезбирання

Ймовірно, ви не бажатимете, щоб скрипт &kdesvn-build; завжди намагався перезібрати певний модуль. Ви можете вимкнути повторне збирання зміною значення параметра &no-rebuild-on-fail; на true.

Тимчасово вимкнути повторне збирання (на час виконання одної команди) можна за допомогою параметра командного рядка &cmd-no-rebuild-on-fail;.

    % kdesvn-build --no-rebuild-on-fail

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

&kdesvn-build; не читає змінні середовища з оболонки, звідки було викликано скрипт, як це робить більшість програм. Замість цього скрипт використовує параметри, вказані у файлі налаштувань для побудови відповідного середовища. Так зроблено головним чином для того, щоб збирання завжди виконувалося однаково (було повторюваним). Іншими словами, &kdesvn-build; може зібрати певний модуль, навіть якщо ви забули, які змінні середовища ви встановили у оболонці, звідки ви запускаєте &kdesvn-build;.

Крім того, у вас може виникнути потреба у зміні тих змінних середовища, для яких у &kdesvn-build; не передбачено параметрів. Це можна зробити за допомогою параметра &set-env;.

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

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

    global
      set-env DISTRO BSD
    end global

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

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

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

Використання параметра &cmd-resume-from; скасовує спробу оновлення початкових кодів.

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

    % kdesvn-build --resume-from=kdebase

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

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

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

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

    % kdesvn-build --ignore-modules extragear/multimedia kdenonbeta

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

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

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

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

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

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

Вимикання &unsermake; з командного рядка. `--refresh-build` використовується для того, щоб зміни у налаштуваннях &unsermake; набули чинності.

    % kdesvn-build --pretend --refresh-build --use-unsermake=false

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

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

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

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

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

### Можливості, призначені для розробників &kde;

#### Перевірки агента &ssh;

&kdesvn-build; може забезпечити вимикання інструмента агента &ssh;, якщо розробник &kde;, який використовується &ssh; для доступу до сховища коду &kde;, забуде його вимкнути. Таким чином, &kdesvn-build; може нескінченно очікувати на введення розробником пароля &ssh;, отже, типово, &kdesvn-build; перевіряє, чи запущено агент перед виконанням оновлення коду.

Ці дії виконуються лише для розробників &kde;, які використовують &ssh;. Причиною цього є те, що для типового анонімного доступу для звантаження пароль не потрібен. &subversion; оброблятиме паролі для іншого можливого способу доступу для розробників &kde;, https.

Ймовірно, ви захочете вимкнути перевірку агента &ssh; у випадку, коли &kdesvn-build; помилково визначає присутність агента. Щоб вимкнути перевірку агента, встановіть для параметра `disable-agent-check` значення true.

Вимикання перевірки &ssh;-агента:

    global
      disable-agent-check true
    end global

### Інші можливості &kdesvn-build;

#### Зміна рівня докладності виводу &kdesvn-build;

У &kdesvn-build; передбачено декілька параметрів для керування об’ємом даних, які виводить скрипт. У будь-якому випадку, помилки завжди виводяться.

- Запуск &kdesvn-build; з параметром `--quiet` (скорочена форма `-q`) виводить мінімум даних. Буде показано лише важливі повідомлення, попередження або повідомлення про помилки. Відомості щодо поступу збирання, у разі їх наявності, також буде показано.

- За використання параметра `--really-quiet` (не має скороченої форми) &kdesvn-build; під час виконання покаже лише важливі повідомлення і повідомлення про помилки.

- Використання параметра `--verbose` (скорочена форма `-v`) призведе до дуже детального виводу даних &kdesvn-build;.

- Параметр `--debug` призначено лише для усування вад, за його використання &kdesvn-build; працюватиме так, наче увімкнено `--verbose`, команди виводитимуть дані до термінала, крім того, буде показано відомості, призначені для усування вад для багатьох функціональних можливостей.

#### Виведення у кольорі

Якщо ви запустите &kdesvn-build; з &konsole; або іншої програми емуляції термінала, скрипт виводитиме розфарбований текст.

Ви можете вимкнути це розфарбування за допомогою параметра `--no-color`, доданого до командного рядка або встановленням для параметра &colorful-output; у файлі налаштувань у значення false.

Вимикання виведення у кольорі у файлі налаштувань:

    global
      colorful-output false
    end global

#### Надсилання звітів про невдале збирання електронною поштою

&kdesvn-build; може надсилати звіти електронною поштою на вибрану вами адресу електронної пошти, якщо модуль не вдалося зібрати з будь-якої причини. Вам слід вказати &kdesvn-build; адресу, з якої слід надсилати електронну пошту та адресу, за якою слід надсилати сповіщення про помилку.

Після завершення спроби збирання &kdesvn-build; створить повідомлення електронної пошти, якщо спроба збирання якогось з модулів завершилася невдало. У цьому повідомленні міститиметься скорочений журнал помилок для кожного з модулів. Під час одного запуску скрипту може бути надіслано лише одне повідомлення, навіть якщо не вдалося зібрати 15 модулів.

Цю можливість типово вимкнено. Для того, щоб увімкнути її, вам слід вказати значення параметрів &email-address; і &email-on-compile-error;. Значення параметра `email-address` визначає адресу, з якої &kdesvn-build; надсилатиме повідомлення, а значення `email-on-compile-error` визначає адресу, куди слід надсилати повідомлення.

Для надсилання повідомлень &kdesvn-build; використовує стандартний модуль Perl Mail::Mailer. Цей модуль включено до складу Perl 5.8, його можна встановити і у Perl 5.6. Mail::Mailer підтримує Sendmail (і зокрема сумісні з Sendmail клієнти електронної пошти), транспорт SMTP і qmail.

Надсилання повідомлення електронною поштою з foo@example.com до bar@example.com у разі невдалої спроби збирання:

    global
      email-address          foo@example.com    # Від: адреса для будь-яких повідомлень kdesvn-build
      email-on-compile-error bar@example.com    # Кому: адреса для повідомлень про невдалі спроби збирання
    end global

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

У вас мало місця на диску, але велике бажання працювати у найсвіжішій версії &kde;? &kdesvn-build; може допомогти вам зекономити на просторі на диску під час збирання &kde; з &subversion;.

Пам’ятайте, що для збирання &kde; потрібно досить багато місця. Ось декілька з компонентів, які використовують багато місця на диску, коли ви користуєтеся &kdesvn-build;:

1. Самі звантажені коди можуть займати досить багато місця на диску. Збірка типових модулів займатиме близько 1,6 гігабайтів місця на диску. Ви можете зменшити це значення, якщо збиратимете лише потрібні вам модулі. &kdesvn-build; не вилучатиме вихідні коди з диску, навіть якщо ви вилучите відповідний запис з файла налаштувань, отже не забувайте вилучати непотрібні звантажені коди з каталогу початкових кодів. Пам’ятайте про те, що файли кодів звантажуються з інтернету, — вам не слід вилучати їх, якщо ви ними користуєтеся, принаймні, доки ви не припините користуватися &kdesvn-build;.

   Крім того, якщо у вашій системі вже встановлено &Qt; з вашого дистрибутива (і вас все у ньому влаштовує), ймовірно, вам не потрібно встановлювати модуль qt-copy. Таким чином ви можете зекономити близько 200 мегабайтів місця на диску.

   Ще одна річ, пов’язана зі способом, у який працює &subversion;: для кожного зі звантажених файлів зі сховища зберігається дві копії. &kdesvn-build; не може одразу після звантаження намагатися мінімізувати розмір коду, — код ще просто не використано.

2. &kdesvn-build; створює окремий каталог для збирання початкового коду. Іноді скрипт &kdesvn-build; має скопіювати каталог кодів для того, щоб створити фіктивний каталог збирання. За такої потреби скрипт створює для економії місця символічні посилання, отже значної витрати місця на диску не буде. Каталог збирання, зазвичай, матиме набагато більші розміри за каталог початкових кодів модуля. Наприклад, каталог збирання kdebase має розміри близько 455 мегабайтів, а каталог початкових кодів kdebase — лише близько 195 мегабайтів.

   На щастя, після успішного збирання і встановлення модуля потреба у каталозі збирання зникає. &kdesvn-build; може автоматично вилучати каталог збирання після встановлення модуля, докладніше про це можна дізнатися з наведених нижче прикладів. Зауважте, що виконання цього кроку зробить неможливим &kdesvn-build; нарощувальне збирання, яке могло б заощадити ваш час, якщо ви пізніше забажаєте знову зібрати модуль.

3. Нарешті, для встановлення самого &kde; поза межами каталогу збирання також потрібне місце на диску. Розмір цього місця, зазвичай, значно менший за розмір каталогу збирання, все ж точне співвідношення важко вказати.

Як зменшити вимоги щодо місця на диску для &kde;? Одним зі способів зменшення цього місця є використання належних параметрів компіляції, вони нададуть вам змогу зменшити розмір програм за рахунок зменшення швидкості їх виконання. Іншим, набагато ефективнішим, способом є вилучення відомостей, призначених для усування вад, з зібраного вами &kde;.

Вам слід добре все зважити, перш ніж вилучати відомості, призначені для усування вад. Робота з експериментальним програмним забезпеченням означає, що ви користуєтеся програмою, яка потенційно має більш ймовірність відмов, ніж програма зі стабільного випуску. Якщо ви користуєтеся програмами без відомостей, призначених для усування вад, вам буде дуже важко створити гарний звіт про помилку, за яким легко буде усунути ваду. Ймовірно вам доведеться знову увімкнути відомості для усування вад для відповідної програми і повторно її зібрати, щоб допомогти розробникові усунути причину відмови. Отже, вирішуйте самі, чи слід вилучати відомості для усування вад!

Вилучення каталогу збирання після встановлення модуля. Каталог початкових кодів не вилучатиметься, до зібраних програм буде додано інформацію для усування вад:

    global
      configure-flags      --enable-debug
      remove-after-install builddir        # Вилучити каталог збирання після встановлення
    end global

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

    global
      cxxflags             -Os             # Оптимізувати за розміром
      configure-flags      --disable-debug
      remove-after-install builddir        # Вилучити каталог збирання після встановлення
    end global

## &cmake;, система збирання &kde; 4

### Вступ до &cmake;

У березні 2006 року програма &cmake; виборола серед декількох інших програм право бути обраною системою збирання для &kde; 4, вона замінила систему, засновану на autotools, яку &kde; використовувало спочатку.

Сторінку вступних відомостей щодо &cmake; можна знайти у &kde; TechBase. У загальних рисах, замість запуску ``make` `-f` `Makefile.cvs``, з наступним запуском `configure` і &unsermake; (або &make;), слід просто запустити &cmake;, а потім &make;.

У &kdesvn-build; передбачено підтримку &cmake;. Деякі з параметрів &kdesvn-build; насправді є параметрами самої системи збирання, зокрема inst-apps, configure-flags і do-not-compile. Якщо доступні рівнозначні можливості, скрипт надає вам їх у розпорядження. Наприклад, відповідником параметра configure-flags є параметр cmake-options, а параметр do-not-compile підтримується і для &cmake;, починаючи з версії &kdesvn-build; 1.6.3.

Але деякі з параметрів (наприклад, inst-apps) не мають прямих відповідників, тому скрипт їх вимикає. Якщо авторові програми вдасться реалізувати їх підтримку за допомогою &cmake;, він знову увімкне ці параметри. Так чи інакше, а більшість параметрів працює подібно до параметрів старіших версій.

## Подяки і ліцензування

&underFDL;