Comment créer Unity à partir des sources?


64

J'aimerais savoir comment je construirais Unity à partir du code source dans la version de développement actuelle. Veuillez couvrir les sujets suivants:

  • Quels paquets sont nécessaires pour compiler Unity?
  • Où pourrais-je obtenir le code source actuel?
  • Quelles sont les étapes pour réellement configurer et compiler Unity?
  • Est-il possible d'exécuter en toute sécurité la dernière version aux côtés de la version des référentiels?

Réponses:


65

Construire l'unité à partir de la source

Dans ce guide, vous construirez une version séparée de la jonction Unity (installée localement dans votre répertoire personnel). Vous n'aurez ainsi plus à craindre de corrompre la version stockée dans les référentiels Ubuntu et vous n'aurez pas non plus besoin d'autorisations d'accès root. processus entier (sauf pour l'installation des dépendances de construction).

0. Installation des dépendances de construction

Vous devrez l'exécuter une fois pour installer toutes les dépendances de construction nécessaires:

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

Si vous avez deb-srcactivé les référentiels de code source (aka ), vous pouvez plutôt utiliser:

sudo apt-get build-dep unity

1. Préparer l'environnement

Remplacez SOURCEet PREFIXpar les répertoires vous souhaitez que les fichiers source et de construction disparaissent. Dans cet exemple, je mets les deux dans mon répertoire personnel:

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. Bâtiment Nux

Vous aurez probablement besoin de récupérer la dernière version de Nuxpour compiler le tronc Unity:

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

Astuce : la plupart des ordinateurs de bureau et portables modernes ont plusieurs cœurs. Vous pouvez grandement accélérer la compilation en tirant parti de cela. La makecommande a construit une prise en charge pour ce que vous pouvez activer à l' aide du -JN commutateur où N est le nombre d'emplois pour fonctionner en parallèle. Une bonne règle consiste à exécuter 2 fois le nombre de cœurs de votre processeur. Ainsi, sur un ordinateur dual core normal, vous devez exécuter make -j4pour minimiser le temps de compilation.

3. Construire l'unité

Maintenant, récupérez le dernier code Unity et construisez-le:

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

Ça y est, déconnectez-vous et reconnectez-vous à nouveau et vous devriez exécuter la dernière version de Unity. Alternativement , vous pouvez exécuter

setsid $PREFIX/bin/unity

4. Mise à jour

Assurez-vous de préparer l'environnement comme décrit à l'étape 1, puis entrez simplement les deux répertoires de niveau supérieur nuxet unityexécutez bzr pull, reconstruisez et réinstallez.

Je suggère de supprimer et de recréer le buildrépertoire dans le unityrépertoire, pour vous assurer qu'aucun ancien fichier ne perturbe votre construction.

5. Supprimer l'unité

Supprimez les trois répertoires $SOURCE, $PREFIXet ~/.compiz-1.


Lien utile:


Je pense qu’il est très important de cloner la version que nous utilisons actuellement, par exemple sur Ubuntu 12.04, j’ai essayé de cloner la dernière version de Nux, et cela a mal tourné, car Nux l’a utilisé, sharedptrmais il semble que le gcc de 12.04 ne fonctionne pas. support, ou besoin d'un indicateur à ajouter aux fichiers make. Il est donc très important de cloner la version exacte adaptée à mon système.
Muhammad Hewedy

Aucune des parties 0 ne travaille le 14.04 ...
Goddard

xserver-xorg-video-dummy: Dépend de: xorg-video-abi-15 Dépend de: xserver-xorg-core (> = 2: 1.14.99.902)
Goddard le


7

Construire dans votre répertoire personnel

Parfois, pour des raisons de test, il est utile de créer Unity et nux dans votre répertoire personnel afin que vous puissiez voir si quelque chose est corrigé dans le tronc sans perdre son temps avec les packages et / ou les PPA. J'ai demandé à Jason Smith (Unity Dev) comment il construisait Unity et il m'a expliqué sa méthode:

  1. Assurez-vous de disposer de toutes les dépendances de construction de cette réponse.

  2. Créez d’abord dans votre maison un répertoire appelé "staging", c’est là que nous allons construire Unity. Créez un petit script qui préparera l'environnement de construction, remplacez le répertoire de base par votre propre:

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

    J'appelle cela unity.shet je l'exécute chaque fois que je veux construire Unity. Donc, fondamentalement chmod +x unity.sh, puis ./unity.shquand vous voulez construire.

  3. Construire Nux:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. Construire l'unité:

    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
    

NOTE: Ceci construit nux et unit dans votre répertoire home, vous n'avez pas besoin de sudo ici ou de quelque chose comme ça.

  • La déconnexion et le retour exécuteront automatiquement cette version de Unity / nux depuis sa construction ~/.compiz
  • Pour revenir aux paquets normaux, déconnectez-vous, supprimez-les ~/.compizet reconnectez-vous.

6

Le code source de l'environnement par défaut (Unity) est disponible dans le package unity. Installez le source avec apt-get source unityles dépendances pour le construire sudo apt-get build-dep unityet le pirater.

Cela vous permettra de positionner le lanceur à droite, en bas, en haut, etc.


Pourriez-vous préciser comment changer exactement la position? Savoir quel fichier ou quelle configuration modifier serait génial.
PitaJ

4

Il existe une excellente documentation officielle ici - Developing Unity .

Voici un extrait de la construction de Unity - installation à partir de la source et compilation

Bâtir l'unité

Ces instructions vous aideront à créer l’unité à partir de la source. Cependant, il y a quelques points à considérer:

  • Il est recommandé de ne jamais copier quoi que ce soit que vous avez construit localement en dehors de votre répertoire personnel. Cela pose des problèmes, d'autant plus que nous construisons tout le shell du bureau. Si vous parvenez à ruiner votre shell de bureau à l'échelle du système, vous deviendrez un programmeur très triste!
  • On suppose que vous utilisez la version précise d'Ubuntu.
  • Il est également supposé que vous souhaitez construire l'unité à partir du tronc (c'est-à-dire, lp: unité).

Obtenir le code source:

Si vous n'avez pas déjà installé Bazaar, installez-le maintenant:

sudo apt-get install bzr

Vous voudrez vous faire un dossier pour le code d'unité. Faites quelque chose comme ça:

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

Prenons le code du tableau de bord:

bzr branch lp:unity trunk

Cela peut prendre un peu de temps.
Installation de dépendances de construction:

Nous devons obtenir les dépendances de construction pour l'unité. Heureusement, apt-get rend ceci trivial:

sudo apt-get build-dep unity

Unité de compilation:

Utilisez cet ensemble de fonctions bash pour faciliter considérablement cette étape. Pour les utiliser, copiez le code bash suivant dans un fichier de votre répertoire personnel appelé .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
}

Maintenant, lancez ceci dans un terminal:

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

Cela garantit que les fonctions énumérées ci-dessus seront disponibles lors de la prochaine ouverture d'un shell bash. Pour ne pas avoir à fermer et à rouvrir un terminal, nous pouvons les lire manuellement une seule fois:

. ~/.bash_functions

Vous devriez maintenant pouvoir exécuter:

remake-unity

à partir du trunk/répertoire que nous avons créé plus tôt. Ça y est, vous construisez l'unité!


2

L’installation est devenue plus compliquée récemment: un nouveau module a été ajouté à Compiz nommé GTK Load (ou il va planter dans XInternAtom). Nous devons activer ce module pour utiliser 4.0.1, mais son activation planterait 3.8.

Il devient difficile de garder les deux. La façon dont je l'ai fait était de:

  • allez dans le dossier compiz-1 et renommez tous les fichiers .so par .so1, à l'exception de libgtkloader.so
  • redémarrez Compiz avec Unity 4.0.1
  • activer le module de chargement gtk dans compizconfig-settings-manager
  • renommez les bibliothèques en .so
  • redémarrez Compiz.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.