Я хотел бы знать, как бы я собирал Unity из исходного кода в текущем выпуске разработки. Пожалуйста, рассмотрите следующие темы:
В этом руководстве вы соберете отдельную версию ствола 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 ..
Tip: Большинство современных настольных компьютеров и ноутбуков имеют несколько ядер. Вы можете значительно ускорить компиляцию, воспользовавшись этим. Команда make
имеет встроенную поддержку, которую можно активировать с помощью переключателя -jN, где N - это количество заданий, выполняемых параллельно. Хорошее эмпирическое правило - запускать в 2 раза больше ядер на вашем процессоре. Таким образом, на обычном двухядерном компьютере вы должны запустить make -j4
, чтобы свести к минимуму время компиляции.
3. Сборка Unity
Теперь возьмите последний код 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 .
Вот отрывок из этого на сборка Unity - установка из исходных кодов и компиляция
Сборка Unity
Эти инструкции помогут вам построить единство из исходных текстов. Тем не мение, Вот несколько вещей, которые следует учитывать:
- Никогда не рекомендуется копировать что-либо, созданное локально, за пределами вашего домашнего каталога. Это напрашивается на неприятности, тем более что мы создаем всю оболочку рабочего стола. Если ты справишься испортить общесистемную оболочку рабочего стола вам будет очень грустно программист!
- Предполагается, что вы используете именно тот выпуск Ubuntu.
- Также предполагается, что вы хотите построить единство из магистрали (то есть lp: unity).
Получение исходного кода:
Если у вас еще не установлен Bazaar, установите его сейчас:
sudo apt-get install bzr
Вы захотите создать себе папку для кода единства. Делать примерно так:
mkdir -p ~ / code / unity cd ~ / код / единство
Давайте возьмем код с панели запуска:
bzr branch lp: unity trunk
Это может занять некоторое время.
Установка зависимостей сборки:Нам нужно получить зависимости сборки для единства. К счастью, apt-get делает это тривиальным:
sudo apt-get build-dep unity
Компиляция Unity:
Используйте этот набор функций bash, чтобы значительно упростить этот шаг. Чтобы использовать их, скопируйте следующий код на bash в файл у себя дома каталог с именем
.bash_functions
:функция воссоздать-build-dir () { rm -r build mkdir build cd build } функция remake-autogen-project () { ./autogen.sh --prefix = $ HOME / staging --enable-debug очистить && сделать && сделать установку } функция remake-unity () { воссоздать-построить-каталог cmake .. -DCMAKE_BUILD_TYPE = Отладка -DCOMPIZ_PLUGIN_INSTALL_TYPE = local -DCMAKE_INSTALL_PREFIX = $ HOME / staging / -DGSETTINGS_LOCALINSTALL = ON сделать && сделать установку } функция unity-env { экспорт PATH = ~ / staging / bin: $ PATH экспорт XDG_DATA_DIRS = ~ / .config / compiz-1 / gsettings / schemas: ~ / staging / share: / usr / share: / usr / local / share экспорт LD_LIBRARY_PATH = ~ / staging / lib: $ {LD_LIBRARY_PATH} экспорт LD_RUN_PATH = ~ / staging / lib: $ {LD_RUN_PATH} экспорт PKG_CONFIG_PATH = ~ / staging / lib / pkgconfig: $ {PKG_CONFIG_PATH} экспорт PYTHONPATH = ~ / staging / lib / python2.7 / site-packages: $ PYTHONPATH }
Теперь запустите это в терминале:
echo ".~ / .bash_functions ">> ~ / .bashrc
Это гарантирует, что при следующем открытии оболочки bash функции перечисленные выше будут вам доступны. Чтобы избежать закрытия и повторно откройте терминал, мы можем прочитать их вручную только один раз:
. ~ / .bash_functions
Теперь вы можете запустить:
remake-unity
из каталога
trunk /
, который мы создали ранее. Вот и все - ты построение единства!
Исходный код для среды по умолчанию (Unity) можно найти в пакете unity
. Установите исходный код с помощью apt-get source unity
, зависимостей для его сборки с помощью sudo apt-get build-dep unity
и удалите его.
Это позволит вам разместить панель запуска справа, снизу, вверху и т. д.
Иногда по тестовым причинам полезно собрать Unity и nux в вашем домашнем каталоге, чтобы вы могли попробовать посмотреть, исправлено ли что-нибудь в стволе, не тратя время на пакеты и/или PPAs. Я спросил Jason Smith (Unity Dev), как он собирает Unity, и он объяснил мне свой метод:
Убедитесь, что у вас есть все сборочные зависимости из этого ответа.
Сначала сделайте каталог в вашем доме под названием "staging", вот где мы будем собирать Unity. Создайте небольшой скрипт, который подготовит среду сборки, замените домашний каталог на ваш собственный:
#!/bin/bash.
PREFIX=/home/jorge/staging
экспортировать XDG_DATA_DIRS="$PREFIX/акция:$XDG_DATA_DIRS".
экспорт LD_LIBRARY_PATH="$PREFIX/lib/".
экспортировать PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig/".
Я называю это unity.sh
и запускаю его каждый раз, когда хочу построить Единство. Так что в основном chmod +x unity.sh
, а затем ./unity.sh
, когда вы хотите построить.
Build nux:
bzr branch lp:nux
компакт-диск
./autogen.sh --prefix=/home/jorge/staging
марка -j4
произвести установку
компакт-диск ...
Построить Единство:
bzr ветвь lp:единство
единство компакт-дисков
мкдирское строительство
создание компакт-дисков
cmake ... -DCMAKE_INSTALL_PREFIX=/home/jorge/staging/DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON
марка -j4
произвести установку
ПРИМЕЧАНИЕ: Это сборка nux и единства в вашем домашнем каталоге, здесь не нужно sudo или что-то в этом роде.
~/.compiz
~/. compiz
и снова войдите в систему.В последнее время установка стала более сложной: в compiz был добавлен новый модуль с именем GTK Load (иначе он выйдет из строя в XInternAtom). Нам нужно активировать этот модуль, чтобы использовать 4.0.1, но его активация приведет к сбою unity 3.8.
Трудно удержать их обоих. Я сделал это следующим образом: