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

64

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

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

Ответы:

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включены репозитории исходного кода (aka ), вы можете вместо этого использовать:

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.


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

htorque
источник
Я думаю, что есть очень важная вещь: клонировать версию, которую мы в настоящее время используем, например, в Ubuntu 12.04, я пытался клонировать последнюю версию Nux, и это было грязно, потому что Nux использовал, sharedptrно кажется, что gcc на 12.04 не поддержка, или нужно добавить флаг в файлы make. Итак, клонирование точной версии, подходящей для моей системы, очень важно.
Мухаммед Хьюди
Ни одна из частей 0 не работает над 14.04 ...
Годдард
xserver-xorg-video-dummy: Зависит от: xorg-video-abi-15 Зависит от: xserver-xorg-core (> = 2: 1.14.99.902)
Годдард
9

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

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

кулачок
источник
7

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

Иногда по причинам тестирования полезно собирать 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и войдите снова.
Хорхе Кастро
источник
6

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

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

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

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

Вот выдержка из него по сборке 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/каталога, который мы создали ранее. Вот и все - вы строите единство!

Нитин Венкатеш
источник
2

В последнее время установка стала более сложной: в 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.
Yann
источник