คอมไพล์ GNOME ใช้เองด้วย JHBuild - ติดตั้ง JHBuild
ตอนที่แล้ว วางแผนกันแล้ว คราวนี้มาเริ่มติดตั้ง 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 กัน