Як створити Єдність з джерела?


64

Мені хотілося б знати, як я буду будувати Unity з вихідного коду в поточному випуску розробки. Будь ласка, висвітліть наступні теми:

  • Які пакунки потрібні для складання Unity?
  • Де б я взяв поточний вихідний код?
  • Які кроки для насправді налаштування та компіляції Unity?
  • Чи можна безпечно запускати останню версію поряд із версією із сховищ?

Відповіді:


65

Побудова єдності з джерела

У цьому посібнику ви створите відокремлену версію магістралі Unity (локально встановлена ​​у вашому домашньому каталозі), тому вам не потрібно буде турбуватися про пошкодження версії із сховищ Ubuntu, і вам також не потрібно буде отримувати права доступу до root протягом весь процес (крім встановлення залежностей збірки).

0. Встановлення залежностей побудови

Вам потрібно буде запустити це один раз, щоб встановити всі необхідні залежності побудови:

sudo apt-get install bzr cmake compiz-dev gnome-common libbamf3-dev libboost-dev \
libboost-serialization-dev libgconf2-dev libgdu-dev libglewmx1.6-dev \
libgnome-desktop-3-dev libibus-1.0-dev libindicator3-dev libjson-glib-dev \
libnotify-dev libnux-2.0-dev libpci-dev libsigc++-2.0-dev libunity-dev \
libunity-misc-dev libutouch-geis-dev libxxf86vm-dev libzeitgeist-dev xsltproc

Якщо у вас deb-srcувімкнено сховища вихідного коду (ака ), ви можете використовувати:

sudo apt-get build-dep unity

1. Підготовка навколишнього середовища

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

export SOURCE=$HOME/source/unity
export PREFIX=$HOME/build/unity

export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
export LD_RUN_PATH="$PREFIX/lib:$LD_RUN_PATH"
export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"

mkdir -p "$PREFIX"
mkdir -p "$SOURCE"
cd "$SOURCE"

2. Будівництво Nux

Можливо, вам потрібно буде взяти останню версію, Nuxщоб змусити магістраль Unity до компіляції:

bzr branch lp:nux
cd nux
./autogen.sh --disable-examples --disable-gputests --disable-tests --prefix="$PREFIX"
make -j4
make install
cd ..

Порада : Більшість сучасних настільних ПК та ноутбуків мають кілька ядер. Ви можете значно прискорити компіляцію, скориставшись цим. makeКоманда має вбудовану в підтримці для цього , який можна активувати з допомогою -jN перемикача , де N є кількістю робочих місць працювати паралельно. Добре правило - запустити в 2 рази більше ядер на вашому процесорі. Таким чином, на звичайному двоядерному комп'ютері слід запустити, make -j4щоб мінімізувати час компіляції.

3. Будівництво єдності

Тепер візьміть останній код Unity і складіть його:

bzr branch lp:unity
cd unity
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON -DCMAKE_INSTALL_PREFIX="$PREFIX"
make -j4
make install

Це все, вийдіть і знову ввійдіть, і вам слід запустити останню Unity. Як альтернативи , ви можете запустити

setsid $PREFIX/bin/unity

4. Оновлення

Не забудьте підготувати середовище, як описано в кроці 1, а потім просто введіть в каталоги верхнього рівня nuxта unityзапустіть bzr pull, відновіть та перевстановіть.

Я пропоную видалити та відтворити buildкаталог у unityкаталозі, щоб переконатися, що старі файли не псуються з вашою збіркою.

5. Видалення єдності

Видаліть три каталогу $SOURCE, $PREFIXі ~/.compiz-1.


Корисне посилання:


Я думаю, що є дуже важлива річ, щоб клонувати версію, яку ми використовуємо в даний час, наприклад, на Ubuntu 12.04, я намагався клонувати останню версію Nux, і вона стала безладною, тому що Nux використовується, sharedptrале здається, що gcc 12.04 не підтримка або потрібен прапор, який потрібно додати до файлів make. Отже, клонування точної версії, яка відповідає моїй системі, є дуже важливою.
Muhammad Hewedy

Жодна частина 0 не працює 14.04 ...
Годдард

xserver-xorg-video-dummy: Залежить: xorg-video-abi-15 Залежить: xserver-xorg-core (> = 2: 1.14.99.902)
Годдард


7

Створення в домашньому довіднику

Іноді з причин тестування корисно створити Unity та nux у своєму домашньому каталозі, щоб ви могли перевірити, чи щось зафіксовано в магістралі, не забиваючись з пакетами та / або PPA. Я запитав Джейсона Сміта (Unity Dev), як він будує Єдність, і він пояснив мені свій метод:

  1. Переконайтеся, що у вас є всі залежності побудови від цієї відповіді.

  2. Спочатку складіть каталог у своєму будинку під назвою "staging", саме тут ми побудуємо Unity. Створіть невеликий сценарій, який підготує середовище збирання, замініть домашній каталог своїм:

    #!/bin/bash
    
    PREFIX=/home/jorge/staging
    
    export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"
    export LD_LIBRARY_PATH="$PREFIX/lib/"
    export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig/"
    

    Я називаю це unity.shі запускаю його кожен раз, коли хочу створити Єдність. Так в основному chmod +x unity.shі тоді, ./unity.shколи ви хочете будувати.

  3. Збірка nux:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. З'єднайте єдність:

    bzr branch lp:unity
    cd unity
    mkdir build
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=/home/jorge/staging/ -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON
    make -j4
    make install
    

ПРИМІТКА. Це створює нуль і єдність у вашому домашньому каталозі, тут немає необхідності в судо або щось подібне.

  • Вихід із системи та повернення в систему запускатимуть цю версію Unity / nux автоматично, оскільки вона була вбудована ~/.compiz
  • Щоб повернутися до звичайних пакетів, просто вийдіть, видаліть ~/.compizі ввійдіть назад.

6

Вихідний код для середовища за замовчуванням (Unity) можна знайти в пакеті unity. Встановіть джерело за apt-get source unityдопомогою залежностей, за допомогою якого його можна скласти sudo apt-get build-dep unityта зламати.

Це дозволить розташувати пусковий апарат справа, знизу, вгорі тощо.


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

4

Тут є чудова офіційна документація - Розвиваюча Єдність .

Ось уривок із цього питання про створення Unity - встановлення з джерела та компіляція

Будівництво єдності

Ці інструкції допоможуть вам створити єдність від джерела. Однак слід враховувати кілька речей:

  • Рекомендується ніколи не копіювати що-небудь, що ви створили локально, за межами домашнього каталогу. Це вимагає неприємностей, тим більше що ми будуємо всю оболонку робочого столу. Якщо вам вдасться зруйнувати оболонку робочого столу для всієї системи, ви будете дуже сумним програмістом!
  • Передбачається, що ви виконуєте точний реліз Ubuntu.
  • Також передбачається, що ви хочете побудувати єдність із стовбура (тобто lp: єдність).

Отримання вихідного коду:

Якщо у вас ще не встановлено Bazaar, встановіть його зараз:

sudo apt-get install bzr

Ви хочете зробити собі папку для коду єдності. Зробіть щось подібне:

mkdir -p ~/code/unity
cd ~/code/unity

Давайте візьмемо код з панелі запуску:

bzr branch lp:unity trunk

Це може зайняти деякий час.
Встановлення залежностей збірки:

Нам потрібно отримати побудові залежності для єдності. На щастя, apt-get робить це дрібницею:

sudo apt-get build-dep unity

Єдність:

Використовуйте цей набір функцій bash, щоб зробити цей крок значно простішим. Щоб їх використовувати, скопіюйте наступний код bash у файл у вашій домашній директорії під назвою .bash_functions:

function recreate-build-dir()
{
   rm -r build
   mkdir build
   cd build
}

function remake-autogen-project()
{
    ./autogen.sh --prefix=$HOME/staging --enable-debug
    make clean && make && make install
}

function remake-unity()
{
    recreate-build-dir
    cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DCMAKE_INSTALL_PREFIX=$HOME/staging/ -DGSETTINGS_LOCALINSTALL=ON
    make  && make install
}

function unity-env
{
 export PATH=~/staging/bin:$PATH
 export XDG_DATA_DIRS=~/.config/compiz-1/gsettings/schemas:~/staging/share:/usr/share:/usr/local/share
 export LD_LIBRARY_PATH=~/staging/lib:${LD_LIBRARY_PATH}
 export LD_RUN_PATH=~/staging/lib:${LD_RUN_PATH}
 export PKG_CONFIG_PATH=~/staging/lib/pkgconfig:${PKG_CONFIG_PATH}
 export PYTHONPATH=~/staging/lib/python2.7/site-packages:$PYTHONPATH
}

Тепер запустіть це в терміналі:

echo ". ~/.bash_functions" >> ~/.bashrc

Це гарантує, що наступного разу, коли ви відкриєте bash shell, перераховані вище функції будуть вам доступні. Щоб уникнути необхідності закривати та знову відкривати термінал, ми можемо прочитати їх вручну лише один раз:

. ~/.bash_functions

Тепер ви маєте можливість працювати:

remake-unity

з trunk/каталогу, який ми створили раніше. Ось це - ви будуєте єдність!


2

Нещодавно інсталяція стала складнішою: новий модуль був доданий до комп’ютера під назвою GTK Load (або він вийде з ладу в XInternAtom). Нам потрібно активувати цей модуль для використання 4.0.1, але його активація призведе до краху єдності 3.8.

Утримати обох стає важко. Я це робив так:

  • перейдіть у папку compiz-1 і перейменуйте всі .so на .so1, за винятком libgtkloader.so
  • перезапустити compiz з єдністю 4.0.1
  • активуйте модуль gtk Load в compizconfig-settings-manager
  • перейменуйте бібліотеки назад у .so
  • перезапустити compiz.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.