สร้าง FireFox ตัดคำภาษาไทยจากรหัสต้นฉบับ

อัดรูปดิจิตอล ทำสมุดภาพของคุณเอง
รอรับได้. ท่องเที่ยว แต่งงาน ฯลฯ

www.tanabutr.co.th/photobook


เขียนเรื่องเกี่ยวกับ FireFox ไปก็หลายครั้งแล้ว, ว่าจะไม่เขียนแล้วเพราะกลัวว่าจะซ้ำกับของเก่า. ต้องกล่าวนำก่อนว่าเนื้อหาอันนี้เป็นการแนะนำวิธีการคอมไพล์ FireFox จากรหัสต้นฉบับแบบทั่วไปและไม่ยึดติดกับดิสทริบิวชันที่ใช้อยู่.

เตรียมรหัสต้นฉบับ

ก่อนอื่นต้องดาว์นโหลดรหัสต้นฉบับ FireFox มาจากเว็บไซด์ของ mozilla.org โดยตรงจากลิงก์ต่อไปนี้

เมื่อกระจายรหัสต้นฉบับด้วยคำสั่ง tar jxvf firefox-1.0-source.tar.bzแล้วจะได้ไดเรกทอรีชื่อ mozilla. ขั้นตอนต่อไปคือดาว์นโหลดแพช (patch) ภาษาไทยต่างๆจากลิงก์ต่อไปนี้.

สมมติว่าดาว์นโหลดแพชทั้งสองมาไว้ในไดเรกทอรีปัจจุบันเรียบร้อยแล้ว.

$ ls 
firefox-1.0-source.tar.bz2
firefox-1.0-thai-env.patch
mozilla/
mozilla-1.7.3-firefox-1.0-thunderbird-0.9-icuthai.patch

แพชของ FireFox

ตามที่คุณสัมพันธ์บอกไว้ทาง tlwg-devel ว่าในบางระบบอาจจะมีปัญหาเกี่ยวกับไลบรารี freetype รุ่นใหม่ๆทำให้เอาซอร์สมาคอมไพล์ดื้อๆจะไม่ผ่าน. ต้องไปเอาแพชของ FireFox มาแพชก่อน. ผมไปดูมาที่ bugzilla เอาแพชมาแพชแล้วแต่แพชไม่ได้. สุดท้ายเลยใช้แพชที่มากับ Gentoo ที่อยู่ในเครื่องครับ. ดาว์นโหลดเก็บไว้กับที่เดียวกันกับแพชอื่นๆ.

ตรวจสอบไลบรารี icu

แพชที่ใช้ในครั้งนี้ต้องการไลบรารี icu. ให้ลองสั่งคำสั่งต่อไปนี้.

$ icu-config --version
3.2

ถ้าตัวเลขที่แสดงมากกว่า 3.0 เป็นอันว่าใช้ได้. ถ้าไม่มีคำสั่งนี้แสดงว่าอาจจะไม่ไลบรารี icu ในระบบ.

แพชภาษาไทยอีกตัวหนึ่งซึ่งเป็นคนละตัวกับตัวอย่างในที่นี้ไม่ใช้ไลบรารี icu คือ firefox-cttex-wbr-b3.patch.gz . แพชนี้สร้างโดยคุณวุฒิชัย, ส่วนแพชแบบใช้ไลบรารี icu สร้างโดยคุณสัมพันธ์. ถ้าไม่อยากใช้ไลบรารี icu ก็ให้แพชของคุณวุฒิชัย.

แพชรหัสต้นฉบับ

คำสั่งที่ใช้ในการแก้รหัสต้นฉบับคือคำสั่ง patch. คำสั่งนี้จะรับข้อมูลจากข้อมูลนำเข้ามาตรฐานและใช้ตัวเลือก -pN บอกความลึกของโครงสร้างไดเรกทอรีที่ต้องการแพช. ตัวเลือก -b ใช้ให้สร้างไฟล์สำรองเก็บเนื้อหาก่อนเปลี่ยนแปลง.

$ cd mozilla
$ patch -p0 < ../mozilla-firefox-1.0-4ft2.patch
$ patch -p2 -b < ../mozilla-1.7.3-firefox-1.0-thunderbird-0.9-icuthai.patch
patching file config/autoconf.mk.in
Hunk #1 succeeded at 196 (offset 12 lines).
patching file intl/lwbrk/src/nsJISx4501LineBreaker.cpp
patching file intl/lwbrk/src/nsJISx4501LineBreaker.h
$ patch -p1 -b < ../firefox-1.0-thai-env.patch patching file toolkit/locales/en-US/chrome/global/intl.properties
Hunk #2 succeeded at 16 with fuzz 2.
patching file toolkit/locales/en-US/chrome/global-platform/unix/intl.properties
patching file browser/base/locale/unix/navigator.properties
patching file xpfe/browser/resources/locale/en-US/navigator.properties
Hunk #2 succeeded at 33 with fuzz 2.
patching file gfx/src/gtk/fontEncoding.properties
Hunk #1 succeeded at 175 with fuzz 2.
patching file modules/libpref/src/init/all.js
Hunk #12 succeeded at 1499 (offset 5 lines).
Hunk #13 succeeded at 1593 (offset 5 lines).
Hunk #14 succeeded at 1633 (offset 5 lines).
Hunk #15 succeeded at 1648 (offset 5 lines).
Hunk #16 succeeded at 1666 (offset 5 lines).
Hunk #17 succeeded at 1688 (offset 5 lines).
Hunk #18 succeeded at 1760 (offset 5 lines).

คอมไพล์

สำหรับวิธีการคอมไพล์ FireFox จะแตกต่างจากธรรมดาเล็กน้อย. อ้างอิงจากคู่มือวิธีคอมไพล์, ให้สร้างไฟล์ .mozconfig ไว้ในไดเรกทอรี mozilla. แล้วเขียนเนื้อหาตามตัวอย่างเช่น

. $topsrcdir/browser/config/mozconfig
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --enable-default-toolkit=gtk2
ac_add_options --enable-xft
ac_add_options --enable-ctl

รันคำสั่ง ./configure แล้ว make ตามครับ.

$ ./configure
creating cache ./config.cache
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking build system type... i686-pc-linux-gnu
...
$ time make

ในตัวอย่างจะใช้ตัวเลือก --enable-ctl ซึ่งเป็นตัวเลือกเฉพาะสำหรับการสร้าง FireFox ให้จัดระดับสระและวรรณยุกต์เพื่อแก้ปัญหาสระลอย. การแสดงผลจะสวยขึ้นกว่าไม่ใช้, แต่ยังมีปัญหาเวลาพิมพ์ข้อความเช่นใน textarea เคอร์เซอร์จะเลื่อนไม่เป็นปรกติ. ถ้าไม่สนใจเรื่องสระลอยจะไม่ใช้ตัวเลือกนี้ก็ได้. สำหรับตัวเลือกอื่นดูได้จากการสั่งคำสั่ง ./configure --help แล้วเอาไปเขียนในไฟล์ .mozconfig.

make เป็นคำสั่งที่ใช้สร้างโปรแกรมโดยจะดูกฏต่างๆที่เขียนไว้ในไฟล์ Makefile. ส่วน time เขียนเพิ่มเข้าไปให้จับเวลาดูว่าใช้เวลาเท่าไรในการสร้างโปรแกรมนี้. คาดว่าน่าจะนานประมาณหนึ่งชั่วโมงสำหรับเครื่องธรรมดาๆ.

ติดตั้งในระบบและรัน

เปลี่ยนยูสเซอร์เป็น root, และเปลี่ยนไดเรกทอรีไปที่ mozilla.

$ su -
password:
# cd "ไดเรกทอรี mozilla"
# make install

โปรแกรม firefox จะติดตั้งไว้ในไดเรกทอรี /usr/local/bin. ให้ตรวจสอบให้แน่ใจว่าคำสั่ง firefox ที่เรียกใช้คือ /usr/local/bin/firefox ไม่ใช่ /usr/bin/firefox.

$ which firefox
/usr/local/bin/firefox
$ firefox &
หรือ
$ /usr/local/bin/firefox &

ถ้าในระบบมี FireFox ที่ติดตั้งจากแพ็กเกจของดิสทริบิวชันอยู่แล้วก็จะเป็น /usr/bin/firefox.

โปรแกรม Thunderbird และ mozilla ก็สามารถสร้างให้ตัดคำภาษาไทยได้เช่นเดียวกัน. ดูลิงก์ที่เกี่ยวข้องด้านขวามือครับ.

Comments: blogger