Theppitak's blog

My personal blog.

30 มกราคม 2552

Mozilla non-source-dir build

เริ่มกระบวนการใช้พลังของ เครื่องตั้งโต๊ะจากคุณ wd ต่อ วันนี้จัดการ checkout mozilla source มาที่เครื่องใหม่ แล้วก็ถือโอกาส config การ build นอก source tree เสียเลย ซึ่งก็ไม่ยากอะไร เนื่องจากระบบ build ของ mozilla ได้ออกแบบมารองรับเรื่องนี้โดยเฉพาะอยู่แล้ว

ก็ ตามคู่มือ เลยครับ:

$ hg clone -r default http://hg.mozilla.org/mozilla-central/
$ cd mozilla-central
$ autoconf
$ cd js/src; autoconf; cd ../..

ตรง autoconf นี่ บน Debian ใช้วิธีติดตั้ง autoconf2.13 แล้วเรียก autoconf wrapper script เอา มันจะไปเลือก autoconf รุ่นที่เหมาะสม ระหว่าง 2.13 กับ 2.50 ให้เอง ซึ่ง manpage ของ Debian แนะนำให้ทำแบบนี้

จากนั้น ผมก็สร้างไดเรกทอรี ~/build เอาไว้ build โปรแกรมโดยเฉพาะ ทั้ง mozilla และ GNOME

จากนั้นก็สร้าง ~/.mozconfig เอาไว้ ตาม คู่มือ เลยครับ ปรับเอาตามสะดวก:

$ vi ~/.mozconfig
. $topsrcdir/browser/config/mozconfig

mk_add_options MOZ_OBJDIR=~/build/mozilla_hg/mozilla-central

ac_add_options --disable-optimize
ac_add_options --disable-debug
ac_add_options --enable-tests

ac_add_options --with-system-bz2
ac_add_options --with-system-jpeg
#ac_add_options --with-system-png
ac_add_options --with-system-zlib

ตรง --with-system-* ทั้งหลายนี่ ก็ลงแพกเกจ lib*-dev ของระบบเอา ไม่ต้อง build ซ้ำซ้อน ยกเว้น libpng ซึ่ง mozilla มันฟ้องว่า libpng ของระบบไม่รองรับ APNG เลยไม่ยอม build ให้ ต้องใช้โค้ดของ mozilla แทน เลย comment ออกไปก่อน

สร้างเสร็จแล้ว ก็มาถึงตอนสำคัญ คือการ build นอก source tree.. แต่นแต๊น..

$ cd ~/build/mozilla_hg/mozilla-central
$ make -f ~/vcs/mozilla_hg/mozilla-central/client.mk \
  build TOPSRCDIR=~/vcs/mozilla_hg/mozilla-central

จุดสำคัญอยู่ที่การกำหนดตัวแปร TOPSRCDIR ให้กับ make

เครื่องตั้งโต๊ะนี้ ผมกะให้เป็น build server อย่างเดียว ไม่ได้ต่อจอ ไม่ลง X server หรือ display manager ใด ๆ โปรแกรมที่ build ได้ ก็จะเป็น X client ซึ่งสามารถเรียกทำงานผ่าน SSH tunnel ได้:

$ ssh -X server
$ cd build/mozilla_hg/mozilla-central
$ dist/bin/firefox

จบละ ลดภาระการคอมไพล์ของเครื่องโน้ตบุ๊กไปได้หนึ่งเรื่อง ต่อไปก็ตา GNOME ไว้ blog ต่อคราวหน้า

ปล. blog ซะละเอียดอย่างนี้ คนที่รู้แล้วอย่าเพิ่งเบื่อนะครับ เขียนบันทึกไว้ให้มีเอกสารเป็นภาษาไทยเสียบ้าง

ป้ายกำกับ: , , ,

2 ความเห็น:

  • 31 มกราคม 2552 เวลา 15:47 , Blogger rchatsiri แถลง…

    เอ๋..แต่ว่า build คนละเรื่องจะเอา programs ที่ build มาใช้ได้เหรอครับ.?

     
  • 31 มกราคม 2552 เวลา 15:57 , Blogger Thep แถลง…

    โปรแกรมที่ build เสร็จแล้ว ก็จะอยู่ที่เครื่องที่ build ครับ เวลารันก็รันที่นั่น เพียงแต่มายีมใช้ X server ของเครื่องลูกในการแสดงผลแค่นั้น

    แต่อันที่จริง ถ้าเครื่องที่ build กับเครื่องลูกมี architecture เหมือนกัน (เช่น เป็น amd64 เหมือนกัน) ลง library ชุดเดียวกัน ก็สามารถเอา binary มารันที่เครื่องลูกได้เหมือนกัน ความจริงถ้าทำเป็น *.deb ได้เลยจะสมบูรณ์แบบครับ คือให้ apt ช่วยดึง library ที่ต้องใช้มาลงให้ได้ด้วย

     

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem