Как мне собрать Unity из исходного кода?

Я хотел бы знать, как я собирал бы Unity из исходного кода в текущей версии разработки. Пожалуйста, охватывайте следующие темы:

  • Какие пакеты нужны для компиляции Unity?
  • Где я могу получить текущий исходный код?
  • Каковы шаги для фактической настройки и компиляции Unity?
  • Можно ли безопасно запустить последнюю версию вместе с версией из репозиториев?

6 ответов

Решение

Создание единства из источника

В этом руководстве вы создадите отдельную версию ствола 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 - количество параллельных заданий. Хорошее правило - запускать в два раза больше ядер на вашем процессоре. Таким образом, на обычном двухъядерном компьютере вы должны запустить 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,


Полезная ссылка:

Я создал сценарий на основе сценария сборки Wayland и этих инструкций для автоматизации установки необходимых компонентов, клонирования, обновления, настройки и сборки Unity.

https://github.com/bitshifter/Unity-Build/raw/master/build-unity.sh

Сборка в вашем домашнем каталоге

Иногда по причинам тестирования полезно собирать Unity и nux в вашем домашнем каталоге, чтобы вы могли попытаться проверить, не зафиксировано ли что-то в транке, без перебора пакетов и / или PPA. Я спросил Джейсона Смита (Unity Dev), как он строит Unity, и он объяснил мне свой метод:

  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 и я запускаю его каждый раз, когда хочу построить Unity. Так в основном 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. Build Unity:

    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
    

ПРИМЕЧАНИЕ: это создает nux и unity в вашем домашнем каталоге, здесь нет необходимости в sudo или чем-то подобном.

  • Выйдя из системы и вернувшись, вы автоматически запустите эту версию Unity / nux, так как она была встроена. ~/.compiz
  • Чтобы вернуться к обычным пакетам, просто выйдите из системы, удалите ~/.compiz и войдите снова.

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

Это позволит вам расположить панель запуска справа, снизу, сверху и т. Д.

Здесь есть отличная официальная документация - Развивающееся Единство.

Вот выдержка из него по сборке Unity - установка из исходного кода и компиляция

Строим Единство

Эти инструкции помогут вам построить единство из источника. Однако есть несколько вещей, которые следует учитывать:

  • Рекомендуется никогда не копировать что-либо, что вы создали локально, вне вашей домашней директории. Это вызывает проблемы, особенно когда мы собираем всю оболочку рабочего стола. Если вам удастся испортить общесистемную оболочку рабочего стола, вы станете очень грустным программистом!
  • Предполагается, что вы используете точную версию Ubuntu.
  • Предполагается также, что вы хотите построить единство из ствола (то есть, lp:unity).

Получение исходного кода:

Если у вас еще не установлен 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

Компиляция 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 вам будут доступны перечисленные выше функции. Чтобы избежать закрытия и повторного открытия терминала, мы можем прочитать их вручную только один раз:

. ~/.bash_functions

Теперь вы должны быть в состоянии выполнить:

remake-unity

от trunk/ каталог, который мы создали ранее. Вот и все - вы строите единство!

В последнее время установка стала хитрее: в Compiz был добавлен новый модуль с именем GTK Load (или он потерпит крах в XInternAtom). Нам нужно активировать этот модуль, чтобы использовать 4.0.1, но активация его приведет к сбою единицы 3.8.

Становится трудно держать их обоих. Я сделал это так:

  • перейдите в папку compiz-1 и переименуйте все.so в.so1, кроме libgtkloader.so
  • перезагрузите компиз с Unity 4.0.1
  • активировать модуль загрузки gtk в compizconfig-settings-manager
  • переименуйте библиотеки обратно в.so
  • перезапустите compiz.
Другие вопросы по тегам