Jak zbudować Unity ze źródła?

64

Chciałbym wiedzieć, jak zbudować Unity z kodu źródłowego w bieżącej wersji programistycznej. Proszę omówić następujące tematy:

  • Które pakiety są potrzebne do skompilowania Unity?
  • Gdzie znajdę aktualny kod źródłowy?
  • Jakie są kroki, aby faktycznie skonfigurować i skompilować Unity?
  • Czy możliwe jest bezpieczne uruchomienie najnowszej wersji obok wersji z repozytoriów?
htorque
źródło

Odpowiedzi:

65

Budowanie jedności ze źródła

W tym przewodniku zbudujesz oddzielną wersję pnia Unity (instalowaną lokalnie w twoim katalogu domowym), więc nie musisz się martwić o uszkodzenie wersji z repozytoriów Ubuntu, a także nie będziesz musiał uzyskiwać uprawnień roota cały proces (oprócz instalowania zależności kompilacji).

0. Instalowanie zależności kompilacji

Musisz uruchomić to raz, aby zainstalować wszystkie niezbędne zależności kompilacji:

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

Jeśli masz deb-srcwłączone repozytoria kodu źródłowego (aka ), możesz zamiast tego użyć:

sudo apt-get build-dep unity

1. Przygotowanie środowiska

Wymień SOURCEi PREFIXz katalogów chcesz źródła i zbudować pliki iść. W tym przykładzie umieściłem oba w moim katalogu domowym:

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. Budowanie Nux

Prawdopodobnie będziesz musiał pobrać najnowszą wersję, Nuxaby skompilować bagażnik Unity:

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

Wskazówka : większość nowoczesnych komputerów stacjonarnych i laptopów ma kilka rdzeni. Korzystając z tego, możesz znacznie przyspieszyć kompilację. makeKomenda ma zbudować wsparcie dla tego, który można aktywować za pomocą -jN przełącznik gdzie N jest liczba miejsc pracy, aby uruchomić równolegle. Dobrą zasadą jest uruchamianie 2-krotnej liczby rdzeni procesora. Dlatego na normalnym dwurdzeniowym komputerze powinieneś uruchomić, make -j4aby zminimalizować czas kompilacji.

3. Budowanie jedności

Teraz pobierz najnowszy kod Unity i skompiluj go:

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

To wszystko, wyloguj się i zaloguj ponownie, a powinieneś uruchomić najnowszą wersję Unity. Alternatywnie możesz uruchomić

setsid $PREFIX/bin/unity

4. Aktualizacja

Przygotuj środowisko zgodnie z opisem w kroku 1, a następnie po prostu wprowadź oba katalogi najwyższego poziomu, nuxa następnie unityuruchom bzr pull, przebuduj i ponownie zainstaluj.

Sugeruję usunięcie i ponowne utworzenie buildkatalogu w unitykatalogu, aby upewnić się, że żadne stare pliki nie powodują bałaganu w twojej kompilacji.

5. Usuwanie jedności

Wykręć trzy katalogi $SOURCE, $PREFIXi ~/.compiz-1.


Przydatny link:

htorque
źródło
Myślę, że jest bardzo ważna rzecz, aby sklonować wersję, której obecnie używamy, na przykład na Ubuntu 12.04, próbowałem sklonować najnowszą wersję Nux, i poszło nie tak, ponieważ Nux użył, sharedptrale wygląda na to, że gcc na 12.04 nie wsparcie lub potrzebujesz flagi do dodania do plików make. Tak więc klonowanie dokładnej wersji odpowiedniej dla mojego systemu jest bardzo ważne.
Muhammad Hewedy,
Żadna z części 0 nie działa 14.04 ...
Goddard
xserver-xorg-video-dummy: Zależy: xorg-video-abi-15 Zależy: xserver-xorg-core (> = 2: 1.14.99.902)
Goddard
7

Budowanie w twoim katalogu domowym

Czasami ze względów testowych przydatne jest zbudowanie Unity i Nux w twoim katalogu domowym, abyś mógł sprawdzić, czy coś jest naprawione w bagażniku, bez marnowania pakietów i / lub PPA. Zapytałem Jasona Smitha (Unity Dev), jak buduje Unity, i wyjaśnił mi swoją metodę:

  1. Upewnij się, że masz wszystkie zależności kompilacji od tej odpowiedzi.

  2. Najpierw utwórz w domu katalog o nazwie „inscenizacja”, tutaj zbudujemy Unity. Utwórz mały skrypt, który przygotuje środowisko kompilacji, zastąp katalog główny własnym:

    #!/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/"
    

    Nazywam to unity.shi uruchamiam za każdym razem, gdy chcę zbudować Jedność. Więc w zasadzie chmod +x unity.shi wtedy, ./unity.shkiedy chcesz budować.

  3. Kompiluj nux:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. Zbuduj jedność:

    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
    

UWAGA: To buduje nux i jedność w twoim katalogu domowym, nie ma potrzeby sudo tutaj ani niczego podobnego.

  • Wylogowanie i ponowne uruchomienie spowoduje automatyczne uruchomienie tej wersji Unity / nux od momentu jej wbudowania ~/.compiz
  • Aby przywrócić normalne pakiety, wyloguj się, usuń ~/.compizi zaloguj się ponownie.
Jorge Castro
źródło
6

Kod źródłowy dla domyślnego środowiska (Unity) można znaleźć w pakiecie unity. Zainstaluj źródło z apt-get source unity, zależności, z których chcesz go zbudować sudo apt-get build-dep unityi zhakuj.

Umożliwi to ustawienie programu uruchamiającego po prawej, u dołu, u góry itp.

ish
źródło
Czy możesz rozwinąć, jak dokładnie zmienić pozycję? Po prostu wiedza, jaki plik lub konfigurację zmodyfikować, byłaby świetna.
PitaJ
4

Jest tutaj doskonała oficjalna dokumentacja - Developing Unity .

Oto fragment tego, jak budować Unity - instalowanie ze źródła i kompilowanie

Budowanie jedności

Te instrukcje pomogą ci zbudować jedność ze źródła. Należy jednak wziąć pod uwagę kilka rzeczy:

  • Zaleca się, aby nigdy nie kopiować niczego zbudowanego lokalnie poza katalog domowy. Takie postępowanie wymaga kłopotów, zwłaszcza gdy budujemy całą powłokę pulpitu. Jeśli uda Ci się zepsuć ogólnosystemową powłokę pulpitu, będziesz bardzo smutnym programistą!
  • Zakłada się, że korzystasz z dokładnej wersji Ubuntu.
  • Zakłada się również, że chcesz zbudować jedność z pnia (czyli lp: jedność).

Pobieranie kodu źródłowego:

Jeśli nie masz jeszcze zainstalowanego Bazaru, zainstaluj go teraz:

sudo apt-get install bzr

Będziesz chciał zrobić sobie folder dla kodu jedności. Zrób coś takiego:

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

Weźmy kod ze startera:

bzr branch lp:unity trunk

To może zająć chwilę.
Instalowanie zależności kompilacji:

Musimy uzyskać zależności budowania dla jedności. Na szczęście apt-get czyni to trywialnym:

sudo apt-get build-dep unity

Kompilacja jedności:

Użyj tego zestawu funkcji bash, aby znacznie ułatwić ten krok. Aby z nich skorzystać, skopiuj następujący kod bash do pliku w katalogu domowym o nazwie .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
}

Teraz uruchom to w terminalu:

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

Zapewnia to, że przy następnym otwarciu powłoki bash dostępne będą funkcje wymienione powyżej. Aby uniknąć konieczności zamykania i ponownego otwierania terminala, możemy odczytać je ręcznie tylko raz:

. ~/.bash_functions

Teraz powinieneś być w stanie uruchomić:

remake-unity

z trunk/katalogu, który wcześniej utworzyliśmy. To wszystko - budujesz jedność!

Nitin Venkatesh
źródło
2

Instalacja stała się ostatnio trudniejsza: do compiz został dodany nowy moduł o nazwie GTK Load (lub zawiesi się w XInternAtom). Musimy aktywować ten moduł, aby korzystać z 4.0.1, ale aktywacja spowoduje awarię jedności 3.8.

Trudno jest utrzymać je obie. Sposób, w jaki to zrobiłem, to:

  • przejdź do folderu compiz-1 i zmień nazwę wszystkich .so na .so1, z wyjątkiem libgtkloader.so
  • uruchom ponownie compiz z unity 4.0.1
  • aktywuj moduł ładujący gtk w compizconfig-settings-manager
  • zmień nazwy bibliotek z powrotem na .so
  • uruchom ponownie compiz.
Yann
źródło