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

7 September, 2007 - 10:27
Submitted by thep

ติดตั้ง JHBuild พร้อม config ไปแล้วก็ลงมือ build กัน

วิธีที่จะสั่ง build แพกเกจทั้งหมดที่ config ไว้ โดยเริ่มตั้งแต่ check out, configure, make, install ก็คือ:

$ jhbuild build

JHBuild จะตรวจสอบ dependency ของ module ที่กำหนด แล้วไล่ build ตั้งแต่ปลายสุดขึ้นมาตามลำดับ

แต่คุณก็เลือก build เฉพาะสิ่งที่ต้องการ แทนที่จะ build GNOME desktop ทั้งตัวได้เหมือนกัน:

$ jhbuild build gtk+

จะ build สิ่งที่ gtk+ ต้องการตามลำดับขึ้นมาจนถึงตัว gtk+ เอง

ในกรณีที่ build ไม่ผ่านที่บาง module จะมีตัวเลือกขึ้นมาถาม เช่น:

*** error during stage build of ORBit2: ########## Error running make   *** [1/1]


  [1] rerun stage build
  [2] ignore error and continue to install
  [3] give up on module
  [4] start shell
  [5] go to stage force_checkout
  [6] go to stage configure
choice: _

คุณสามารถเลือกตัวเลือกต่าง ๆ ได้ ตามปกติถ้าไม่มีเวลาดู ผมก็อาจจะเลือกข้อ 2 เพื่อฝืนให้มันทำต่อไป แล้ว module ต่อ ๆ ไปก็จะใช้รุ่นเก่าที่ผม build ไว้ครั้งก่อน แต่ถ้าเป็นการ build ครั้งแรก คุณคงเลือกข้อ 3 จะดีกว่า แพกเกจไหนที่ต้องใช้แพกเกจนี้ก็จะไม่ถูก build

ถ้าคิดอยากจะลองแก้บั๊กด้วยตัวเอง ก็เลือกข้อ 4 เพื่อเข้าเชลล์ไปตรวจสอบและแก้บั๊ก แล้ว exit กลับออกมาที่ prompt เดิมนี้ แล้วเลือกข้อ 1 ให้มันพยายาม build ใหม่

คำตอบสำหรับคำถามนี้ คงไม่มีหลักตายตัว อาศัย programming sense ของคุณละกัน :-)

มีวิธี build แบบ non-interactive ด้วย เช่น คุณอาจจะไปสั่ง build แบบ remote ที่เครื่องอื่นในแบบ daemon หรือ cron job ก็ได้ โดยสั่ง:

$ jhbuild tinderbox -o output-dir

โดยมันจะเก็บ build log ในรูป HTML page ลงใน output-dir (ตัวอย่าง) และเลือกตัวเลือก "give up on module" โดยอัตโนมัติสำหรับ module ที่ไม่ผ่าน

ผมชอบใช้แบบ tinderbox มาก เพราะประหยัดเวลาดี ผมสามารถสั่งให้มัน build แบบ background ไว้ แล้วก็ไปทำงานอื่นได้ สักพักก็กลับมาเช็กว่ามี error ที่ module ไหนบ้าง แล้วก็ตามซ่อมเป็นตัว ๆ ไป

การสั่ง build เพียง module เดียวเท่านั้น โดยไม่ต้อง build dependency ของมัน (เช่น ในกรณีที่จะกลับมาซ่อม module ที่ build ไม่ผ่าน) ก็ใช้คำสั่ง:

$ jhbuild buildone module

การใช้งานอีกลักษณะหนึ่งที่หลายคนอาจสนใจ คือการแยกขั้นตอน check out กับการ build ออกจากกัน อาจจะดีสำหรับคนที่ build ในเครื่องที่ไม่ได้ต่อเน็ตตลอดเวลา (คนหิ้วโน้ตบุ๊กอาจจะนึกออก) ก็อาจจะ check out ให้เสร็จทีเดียว แล้วค่อย build แบบ off-line ทีหลัง

สั่ง check out source ทั้งหมดโดยไม่ build ได้โดย:

$ jhbuild update

และ build แบบ off-line ได้โดยเพิ่มตัวเลือก -n หลังคำสั่งของ JHBuild เช่น:

$ jhbuild tinderbox -n -o output-dir

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.