ฉันจะสร้างความสามัคคีจากแหล่งที่มาได้อย่างไร


64

ฉันต้องการทราบว่าฉันจะสร้าง Unity จากซอร์สโค้ดในรุ่นพัฒนาปัจจุบันได้อย่างไร กรุณาครอบคลุมหัวข้อต่อไปนี้:

  • แพ็คเกจใดที่จำเป็นในการรวบรวม Unity
  • ฉันจะรับซอร์สโค้ดปัจจุบันได้จากที่ใด
  • ขั้นตอนในการกำหนดค่าและคอมไพล์ Unity มีอะไรบ้าง
  • เป็นไปได้ไหมที่จะใช้เวอร์ชั่นล่าสุดควบคู่ไปกับเวอร์ชั่นจากที่เก็บอย่างปลอดภัย?

คำตอบ:


65

การสร้างความสามัคคีจากแหล่งที่มา

ในคู่มือนี้คุณจะสร้างรุ่น Unity trunk แยกจากกัน (ติดตั้งในเครื่องกับโฮมไดเร็กตอรี่ของคุณ), ดังนั้นคุณไม่ต้องกังวลกับการทำลายเวอร์ชั่นจากที่เก็บของ Ubuntu และคุณไม่จำเป็นต้องได้รับอนุญาต root ตลอดทั้ง กระบวนการทั้งหมด (ยกเว้นสำหรับการติดตั้งการอ้างอิงสร้าง)

0. การติดตั้งการอ้างอิงสร้าง

คุณจะต้องเรียกใช้สิ่งนี้หนึ่งครั้งเพื่อติดตั้งการพึ่งพา build ที่จำเป็นทั้งหมด:

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 trunk เพื่อรวบรวม:

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. การถอด Unity

นำสามไดเรกทอรี$SOURCE, และ$PREFIX~/.compiz-1


ลิงค์ที่มีประโยชน์:


ฉันคิดว่ามีสิ่งที่สำคัญมากในการโคลนรุ่นที่เราใช้อยู่ในปัจจุบันเช่นบน Ubuntu 12.04 ฉันพยายามโคลน Nux เวอร์ชันล่าสุดและมันยุ่งเพราะ Nux ใช้sharedptrแต่ดูเหมือนว่า gcc ใน 12.04 จะไม่ สนับสนุนหรือต้องการเพิ่มการตั้งค่าสถานะลงในไฟล์ make ดังนั้นการโคลนเวอร์ชั่นที่แน่นอนที่เหมาะสมกับระบบของฉันเป็นสิ่งสำคัญมาก
มูฮัมหมัด Hewedy

หนึ่งในส่วนที่ 0 ไม่ทำงานในวันที่ 14.04 ...
Goddard

xserver-xorg-video-dummy: ขึ้นอยู่กับ: xorg-video-abi-15 ขึ้นอยู่กับ: xserver-xorg-core (> = 2: 1.14.99.902)
Goddard

9

ฉันสร้างสคริปต์ตามสคริปต์การสร้าง Wayland และคำแนะนำเหล่านี้เพื่อทำการติดตั้งสิ่งที่จำเป็นต้องมีโดยอัตโนมัติโคลนการอัปเดตการกำหนดค่าและการสร้างความสามัคคี

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


7

อาคารในไดเรกทอรีบ้านของคุณ

บางครั้งสำหรับเหตุผลในการทดสอบมันมีประโยชน์ในการสร้าง Unity และ nux ในโฮมไดเร็กตอรี่ของคุณเพื่อที่คุณจะได้ลองดูว่ามีบางอย่างที่ถูกแก้ไขใน trunk โดยไม่มีการเข้าไปยุ่งกับแพ็คเกจและ / หรือ PPAs ฉันถาม Jason Smith (Unity Dev) ว่าเขาสร้าง Unity ได้อย่างไรและเขาอธิบายวิธีการของเขาให้ฉัน:

  1. ตรวจสอบให้แน่ใจว่าคุณมีbuildทั้งหมดที่อ้างอิงจากคำตอบนี้

  2. ก่อนอื่นให้สร้างไดเรกทอรีในบ้านของคุณชื่อ "staging" นี่คือที่ที่เราจะสร้างความสามัคคี สร้างสคริปต์เล็กน้อยที่จะเตรียมสภาพแวดล้อมการสร้างแทนที่โฮมไดเรกทอรีของคุณเอง:

    #!/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และฉันเรียกใช้ทุกครั้งที่ฉันต้องการสร้างความสามัคคี ดังนั้นโดยทั่วไป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. สร้างความสามัคคี:

    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

มีเอกสารที่เป็นทางการที่ยอดเยี่ยมอยู่ที่นี่ - การพัฒนาความสามัคคี

นี่คือข้อความที่ตัดตอนมาจากการสร้างความสามัคคี - การติดตั้งจากแหล่งที่มาและรวบรวม

สร้างความสามัคคี

คำแนะนำเหล่านี้จะช่วยให้คุณสร้างความสามัคคีจากแหล่งที่มา อย่างไรก็ตามมีบางสิ่งที่ควรพิจารณา:

  • ขอแนะนำให้คุณอย่าคัดลอกสิ่งใด ๆ ที่คุณสร้างไว้ภายในเครื่องนอกโฮมไดเร็กตอรี่ของคุณ การทำเช่นนั้นกำลังถามปัญหาโดยเฉพาะอย่างยิ่งเมื่อเรากำลังสร้างเชลล์เดสก์ท็อปทั้งหมด หากคุณจัดการเพื่อทำลายเดสก์ทอปเชลล์ระบบของคุณคุณจะเป็นโปรแกรมเมอร์ที่น่าเศร้ามาก!
  • สันนิษฐานว่าคุณกำลังใช้งาน Ubuntu ที่แน่นอน
  • นอกจากนี้ยังสันนิษฐานว่าคุณต้องการสร้างความสามัคคีจากลำตัว (นั่นคือ lp: unity)

รับรหัสที่มา:

หากคุณยังไม่ได้ติดตั้ง Bazaar ให้ติดตั้งทันที:

sudo apt-get install bzr

คุณจะต้องทำให้ตัวเองเป็นโฟลเดอร์สำหรับรหัสความสามัคคี ทำสิ่งนี้:

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

ลองหยิบรหัสจาก launchpad:

bzr branch lp:unity trunk

อาจใช้เวลาสักครู่
การติดตั้ง Build Dependancies:

เราจำเป็นต้องได้รับการพึ่งพาสร้างเพื่อความสามัคคี โชคดีที่ apt-get ทำให้เรื่องเล็กน้อยนี้:

sudo apt-get build-dep unity

รวบรวมความสามัคคี:

ใช้ฟังก์ชันทุบตีชุดนี้เพื่อทำให้ขั้นตอนนี้ง่ายขึ้นมาก หากต้องการใช้งานให้คัดลอกรหัสทุบตีต่อไปนี้ลงในไฟล์ในไดเรกทอรีบ้านของคุณชื่อ.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
}

ตอนนี้เรียกใช้ใน terminal:

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

สิ่งนี้ทำให้มั่นใจได้ว่าในครั้งต่อไปที่คุณเปิด bash shell คุณจะสามารถใช้ฟังก์ชั่นที่ระบุไว้ด้านบนได้ เพื่อหลีกเลี่ยงการปิดและเปิดเทอร์มินัลใหม่เราสามารถอ่านมันด้วยตนเองเพียงครั้งเดียว:

. ~/.bash_functions

ตอนนี้คุณควรจะสามารถเรียกใช้:

remake-unity

จากtrunk/ไดเรกทอรีที่เราสร้างไว้ก่อนหน้านี้ แค่นั้นแหละ - คุณกำลังสร้างความสามัคคี!


2

การติดตั้งใช้งานได้ยากขึ้นเมื่อไม่นานมานี้: มีการเพิ่มโมดูลใหม่ลงใน compiz ชื่อ GTK Load (หรือจะมีปัญหาใน XInternAtom) เราจำเป็นต้องเปิดใช้งานโมดูลนี้เพื่อใช้ 4.0.1 แต่การเปิดใช้งานมันจะทำให้เกิดความผิดพลาด 3.8

มันยากที่จะเก็บทั้งคู่ไว้ วิธีที่ฉันทำคือ:

  • ไปในโฟลเดอร์ compiz-1 และเปลี่ยนชื่อทั้งหมด. so โดย. so1 ยกเว้น libgtkloader.so
  • รีสตาร์ท Compiz ด้วย unity 4.0.1
  • เปิดใช้งานโมดูล gtk Load ใน compizconfig-settings-manager
  • เปลี่ยนชื่อไลบรารีกลับเป็น. so
  • รีสตาร์ท compiz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.