คอมไพล์ GNOME ใช้เองด้วย JHBuild - ติดตั้ง JHBuild

6 September, 2007 - 08:41
Submitted by thep

ตอนที่แล้ว วางแผนกันแล้ว คราวนี้มาเริ่มติดตั้ง JHBuild กัน

Check Out JHBuild

JHBuild รุ่นล่าสุดสำหรับ GNOME สามารถ check out ได้จาก GNOME SVN:

$ svn co http://svn.gnome.org/svn/jhbuild/trunk jhbuild

คุณสามารถใช้โพรโทคอล svn:// ก็ได้ ถ้า http:// ใช้ไม่ได้ในเครือข่ายของคุณ:

$ svn co svn://svn.gnome.org/svn/jhbuild/trunk jhbuild

(สำหรับคนที่มี svn account กับ GNOME ก็ใช้ svn+ssh:// นะครับ)

ติดตั้ง JHBuild

เมื่อ check out มาแล้ว สำรวจดูจะเห็น autogen.sh และ configure.ac ดูเหมือนต้องใช้ autotools แต่ไม่ต้องครับ กรณีนั้นใช้กับการ build พวกเอกสารเท่านั้น ถ้าคุณเพียงแต่จะใช้ build โปรแกรมอย่างเดียว ก็นี่เลย:

$ make -f Makefile.plain install

จะติดตั้ง jhbuild ไว้ที่ $HOME/bin ของคุณ แถมติดตั้งเมนูเรียก jhbuild แบบ GUI ไว้ที่เมนู Applications > Programming อีกต่างหาก.. แต่เอาเข้าจริง ผมไม่ได้ใช้ GUI หรอก เพราะส่วนมากจะสั่ง build แบบ background มากกว่า ดังจะกล่าวต่อไป

ตั้งค่า JHBuild

ค่า config ของ jhbuild กำหนดที่ ~/.jhbuildrc เป็นแฟ้มภาษา python โดยจะมีตัวอย่างของแฟ้มนี้อยู่ในแฟ้ม sample.jhbuildrc ใน source tree ของ jhbuild คัดลอกไปแก้ได้เลย ค่าสำคัญที่น่าสนใจได้แก่:

svnroots['svn.gnome.org']
สำหรับผู้ที่มี SVN account ก็ควรกำหนดเป็น svn+ssh://... URL จะได้ commit ได้ด้วย แต่สำหรับ anonymous user ก็ไม่จำเป็นต้องตั้งค่านี้ ยกเว้นกรณีที่ค่าปริยายใช้ไม่ได้ในเครือข่ายของคุณ
moduleset
คือชุด GNOME ที่จะ build เช่น 'gnome-2.20' คุณสามารถตรวจดู moduleset ทั้งหมดที่มีอยู่ได้จากไดเรกทอรี modulesets/ ใน jhbuild source tree
modules
คือรายการ module ที่จะ build จากบรรดา module ทั้งหมดที่มีใน moduleset โดยทั่วไปก็จะ build meta package ชื่อ 'meta-gnome-desktop' ซึ่งจะไปดึงเอา official GNOME package ทั้งหมดมา ถ้าคุณสนใจ module อื่นนอกเหนือ official GNOME ก็เลือกเพิ่มได้ เช่น 'meta-gnome-proposed' สำหรับ module ที่เสนอเพิ่มในรุ่นถัดไป, 'epiphany-extensions' สำหรับ extention ทั้งหลายของ epiphany ซึ่ง module นี้ยังไม่อยู่ใน official GNOME ฯลฯ
skip
รายการ module ที่จะข้ามไป โดยใช้จากของระบบแทน หรือจะไม่ใช้เลย เช่น ตามปกติ dbus, dbus-glib, hal, avahi จะถูก build เป็นส่วนหนึ่งของ GNOME ในฐานะ external dependency แต่อย่างที่เราวางแผนไว้ว่าจะใช้ของระบบแทน ก็เพิ่มรายการเหล่านี้เข้าไป ใครขี้เกียจรอ build mozilla ก็อาจเพิ่มได้ตรงนี้ แล้วติดตั้ง development package ของ xulrunner แทน เป็นต้น
checkoutroot
คือไดเรกทอรีหลักที่จะเก็บโค้ดที่ check out จากแหล่ง ก็ดูรูปแบบเอาจากตัวอย่างนะครับ
prefix
คือไดเรกทอรีหลักที่จะติดตั้ง GNOME ที่ build แล้ว เช่น ถ้าจะติดตั้งที่ /home/gnome-svn ก็กำหนดที่นี่

ที่เหลือก็มีคำอธิบายใน comment ของแฟ้มตัวอย่างนะครับ หรือจะอ่านจาก manual ของ JHBuild ก็ได้

และเพื่อความสะดวกในการเรียก คุณอาจเพิ่ม $HOME/bin ในตัวแปรสภาพแวดล้อม $PATH ของคุณด้วย

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

$ jhbuild sanitycheck

ขาดอะไรก็ติดตั้งเพิ่มให้เขานะครับ ที่สำคัญคือ jhbuild ใช้ python ขาดไม่ได้เป็นอันขาด ส่วนเครื่องมือพื้นฐานอย่าง autoconf, automake ฯลฯ พวกนี้ คุณอาจใช้ของระบบก็ได้ หรือจะ build เองด้วยคำสั่งนี้ก็ได้:

$ jhbuild bootstrap

แต่จากประสบการณ์ ผมแนะนำว่าใช้ของระบบดีกว่า เพราะเอาเข้าจริง คุณก็จะสั่ง bootstrap แค่ครั้งเดียวนี่แหละ ในขณะที่ถ้าใช้ของระบบ จะมีการอัปเกรดตามปกติของ distro อยู่ตลอด ทำให้เครื่องมือของคุณไม่เก่า ฉะนั้น พอเริ่มใช้ JHBuild ในเครื่องหลัง ๆ ของผม ผมไม่ใช้ bootstrap เลย แต่พยายามติดตั้งแพกเกจที่จำเป็นให้ครบในระบบ คือ:

  • python
  • autoconf
  • automake
  • libtool
  • gettext
  • pkg-config

เรียบร้อยละ ตอนหน้ามา build กัน

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <img> <blockquote> <h3> <h4>
  • Lines and paragraphs break automatically.

More information about formatting options

Captcha
This question is used to make sure you are a human visitor and to prevent spam submissions.
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.