Bagaimana cara membangun Persatuan dari sumber?

64

Saya ingin tahu bagaimana saya akan membangun Unity dari kode sumber dalam rilis pengembangan saat ini. Silakan bahas topik-topik berikut:

  • Paket mana yang dibutuhkan untuk mengkompilasi Unity?
  • Dari mana saya mendapatkan kode sumber saat ini?
  • Apa langkah-langkah untuk benar-benar mengkonfigurasi dan mengkompilasi Unity?
  • Apakah mungkin menjalankan versi terbaru dengan aman di samping versi dari repositori?
htorque
sumber

Jawaban:

65

Membangun Kesatuan dari Sumber

Dalam panduan ini Anda akan membuat versi terpisah dari trunk Unity (diinstal secara lokal ke direktori home Anda), jadi Anda tidak perlu khawatir merusak versi dari repositori Ubuntu dan Anda juga tidak perlu mendapatkan izin root di seluruh seluruh proses (kecuali untuk menginstal dependensi build).

0. Menginstal dependensi build

Anda harus menjalankan ini sekali untuk menginstal semua dependensi build yang diperlukan:

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

Jika Anda memiliki repositori kode sumber (alias deb-src) diaktifkan, Anda bisa menggunakan:

sudo apt-get build-dep unity

1. Mempersiapkan lingkungan

Ganti SOURCEdan PREFIXdengan direktori Anda ingin sumber dan membangun file untuk pergi. Dalam contoh ini saya meletakkan keduanya di direktori home saya:

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

Anda mungkin perlu untuk mengambil versi terbaru dari Nuxuntuk mendapatkan Unity trunk untuk mengkompilasi:

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

Tip : Sebagian besar desktop dan laptop modern memiliki beberapa inti. Anda dapat mempercepat kompilasi dengan memanfaatkan ini. The makeperintah memiliki build-in dukungan untuk ini yang Anda dapat mengaktifkan menggunakan -jN switch di mana N adalah jumlah pekerjaan untuk menjalankan secara paralel. Aturan praktis yang baik adalah menjalankan 2 kali jumlah core pada prosesor Anda. Jadi, pada komputer dual core normal Anda harus menjalankan make -j4untuk meminimalkan waktu kompilasi.

3. Membangun Persatuan

Sekarang ambil kode Unity terbaru dan bangun:

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

Itu saja, logout dan kembali lagi dan Anda harus menjalankan Unity terbaru. Atau , Anda dapat berlari

setsid $PREFIX/bin/unity

4. Memperbarui

Pastikan untuk mempersiapkan lingkungan seperti yang dijelaskan pada langkah 1, kemudian cukup masukkan direktori tingkat atas nuxdan unity, jalankan bzr pull, bangun kembali, dan instal ulang.

Saya sarankan menghapus dan menciptakan kembali builddirektori di unitydirektori, untuk memastikan tidak ada file lama yang mengacaukan build Anda.

5. Menghapus Persatuan

Hapus tiga direktori $SOURCE, $PREFIXdan ~/.compiz-1.


Tautan Berguna:

htorque
sumber
Saya pikir ada hal yang sangat penting, untuk mengkloning versi yang kami gunakan saat ini, misalnya pada Ubuntu 12.04, saya sudah mencoba mengkloning Nux versi terbaru, dan itu menjadi berantakan, karena Nux digunakan sharedptrtetapi tampaknya gcc pada 12.04 tidak mendukung, atau perlu beberapa flag untuk ditambahkan ke file make. Jadi, mengkloning versi yang tepat sesuai dengan sistem saya, sangat penting.
Muhammad Hewedy
Tak satu pun dari bagian 0 bekerja pada 14,04 ...
Goddard
xserver-xorg-video-dummy: Tergantung: xorg-video-abi-15 Tergantung: xserver-xorg-core (> = 2: 1.14.99.902)
Goddard
7

Bangunan di direktori home Anda

Terkadang untuk alasan pengujian, sangat berguna untuk membangun Unity dan nux di direktori home Anda sehingga Anda dapat mencoba untuk melihat apakah ada sesuatu yang diperbaiki di bagasi tanpa mucking dengan paket dan / atau PPA. Saya bertanya kepada Jason Smith (Unity Dev) bagaimana dia membangun Unity dan dia menjelaskan metodenya kepada saya:

  1. Pastikan Anda memiliki semua dependensi build dari jawaban ini.

  2. Pertama-tama buat direktori di rumah Anda yang disebut "staging", di sinilah kita akan membangun Unity. Buat skrip kecil yang akan menyiapkan lingkungan build, ganti direktori home dengan Anda sendiri:

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

    Saya menyebutnya unity.shdan saya jalankan setiap kali saya ingin membangun Unity. Jadi pada dasarnya chmod +x unity.shdan kemudian ./unity.shketika Anda ingin membangun.

  3. Bangun nux:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. Bangun Persatuan:

    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
    

CATATAN: Ini membangun nux dan kesatuan dalam direktori home Anda, tidak perlu untuk sudo di sini atau yang seperti itu.

  • Logout dan kembali akan menjalankan versi Unity / nux ini secara otomatis sejak dibangun ~/.compiz
  • Untuk kembali ke paket normal cukup logout, hapus ~/.compizdan masuk kembali.
Jorge Castro
sumber
6

Kode sumber untuk lingkungan default (Unity) dapat ditemukan dalam paket unity. Instal sumber dengan apt-get source unity, dependensi untuk membangunnya sudo apt-get build-dep unitydan retas.

Ini akan memungkinkan Anda memposisikan peluncur di kanan, bawah, atas, dll.

ish
sumber
Bisakah Anda memperluas bagaimana tepatnya mengubah posisi? Hanya mengetahui file atau konfigurasi apa yang akan diubah akan menjadi luar biasa.
PitaJ
4

Ada dokumentasi resmi yang luar biasa di sini - Developing Unity .

Berikut kutipan darinya untuk membangun Unity - menginstal dari sumber dan mengkompilasi

Membangun Kesatuan

Instruksi ini akan membantu Anda membangun persatuan dari sumber. Namun, ada beberapa hal yang perlu dipertimbangkan:

  • Disarankan agar Anda tidak pernah menyalin apa pun yang Anda buat secara lokal di luar direktori home Anda. Melakukannya adalah meminta masalah, terutama karena kami sedang membangun seluruh shell desktop. Jika Anda berhasil merusak shell desktop sistem Anda, Anda akan menjadi programmer yang sangat sedih!
  • Diasumsikan bahwa Anda menjalankan rilis Ubuntu yang tepat.
  • Juga diasumsikan bahwa Anda ingin membangun kesatuan dari trunk (yaitu, lp: unity).

Mendapatkan kode sumber:

Jika Anda belum menginstal Bazaar, instal sekarang:

sudo apt-get install bzr

Anda ingin membuat sendiri folder untuk kode kesatuan. Lakukan sesuatu seperti ini:

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

Mari ambil kode dari launchpad:

bzr branch lp:unity trunk

Ini mungkin memakan waktu cukup lama.
Menginstal Ketergantungan Bangunan:

Kita perlu mendapatkan dependensi build untuk persatuan. Untungnya, apt-get membuat ini sepele:

sudo apt-get build-dep unity

Kompilasi Unity:

Gunakan serangkaian fungsi bash ini untuk membuat langkah ini secara signifikan lebih mudah. Untuk menggunakannya, salin kode bash berikut ke dalam file di direktori home Anda yang disebut .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
}

Sekarang jalankan ini di terminal:

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

Ini memastikan bahwa lain kali Anda membuka bash shell fungsi yang tercantum di atas akan tersedia untuk Anda. Untuk menghindari harus menutup dan membuka kembali terminal, kita dapat membacanya secara manual hanya sekali ini:

. ~/.bash_functions

Anda sekarang dapat menjalankan:

remake-unity

dari trunk/direktori yang kami buat sebelumnya. Itu saja - Anda sedang membangun persatuan!

Nitin Venkatesh
sumber
2

Instalasi semakin rumit baru-baru ini: modul baru telah ditambahkan ke compiz bernama GTK Load (atau akan crash di XInternAtom). Kita perlu mengaktifkan modul ini untuk menggunakan 4.0.1, tetapi mengaktifkannya akan merusak kesatuan 3.8.

Semakin sulit mempertahankan keduanya. Cara saya melakukannya adalah:

  • buka folder compiz-1 dan ganti nama semua .so dengan .so1, kecuali untuk libgtkloader.so
  • restart compiz dengan unity 4.0.1
  • aktifkan modul Load gtk di compizconfig-settings-manager
  • ganti nama perpustakaan kembali menjadi .so
  • mulai kembali compiz.
Yann
sumber