I cannot build datrie on Mac OS X

ยอดดู 52 ครั้ง
ข้ามไปที่ข้อความที่ยังไม่อ่านรายการแรก

Vee Satayamas

ยังไม่อ่าน,
13 ต.ค. 2550 14:19:4013/10/50
ถึง thai-linux...@googlegroups.com
สวัสดีครับ

ผม build datrie จาก cvs ไม่ได้. ไม่รู้ว่าผมทำอะไรผิดหรือว่า build ไม่ได้จริงๆ. เหมือนจะติดๆตอนใช้ nmedit มี error message แบบนี้ครับ

gcc -dynamiclib   -o .libs/libdatrie.0.dylib  .libs/fileutils.o .libs/darray.o .libs/tail.o .libs/trie.o .libs/alpha- map.o .libs/sb-trie.o  -install_name  /Users/veesatayamas/lib/libdatrie.0.dylib -compatibility_version 1 -current_version 1.1
nmedit -s .libs/libdatrie-symbols.expsym .libs/libdatrie.0.dylib
nmedit: symbols names listed in: .libs/libdatrie- symbols.expsym not in: /Users/veesatayamas/Develop/software/datrie/datrie/.libs/libdatrie.0.dylib
_       sb_trie_close
_       sb_trie_delete
_       sb_trie_enumerate
_       sb_trie_open
_       sb_trie_retrieve
_       sb_trie_root
_       sb_trie_save
_       sb_trie_state_clone
_       sb_trie_state_free
_       sb_trie_state_get_data
_       sb_trie_state_is_leaf
_       sb_trie_state_is_terminal
_       sb_trie_state_is_walkable
_       sb_trie_state_rewind
_       sb_trie_state_walk
_       sb_trie_store
_       trie_close
_       trie_delete
_       trie_enumerate
_       trie_open
_       trie_retrieve
_       trie_root
_       trie_save
_       trie_state_clone
_       trie_state_free
_       trie_state_get_data
_       trie_state_is_leaf
_       trie_state_is_walkable
_       trie_state_rewind
_       trie_state_walk
_       trie_store
_EXPORTS
make: *** [libdatrie.la] Error 1

วีร์

--
Homepage: http://www.vee-u.com/

veer

ยังไม่อ่าน,
16 ต.ค. 2550 14:50:4916/10/50
ถึง Thai Linux/FOSS developers
ด้วย patch แบบข้างล่าง ก็ลงได้. ถึงแม้ว่าจะงงๆว่าทำไมได้ก็ตาม.

diff -Nuar datrie.orig/autogen.sh datrie/autogen.sh
--- datrie.orig/autogen.sh 2007-10-16 15:39:58.000000000 +0700
+++ datrie/autogen.sh 2007-10-17 00:14:22.000000000 +0700
@@ -2,8 +2,8 @@

set -x
autoheader
-libtoolize --force
-aclocal
-automake --add-missing
-autoconf
+glibtoolize --force
+aclocal-1.6
+automake-1.6 --add-missing
+/usr/bin/autoconf

diff -Nuar datrie.orig/datrie/libdatrie.def datrie/datrie/
libdatrie.def
--- datrie.orig/datrie/libdatrie.def 2007-10-16 15:39:58.000000000
+0700
+++ datrie/datrie/libdatrie.def 2007-10-17 00:13:39.000000000 +0700
@@ -1,32 +1,31 @@
-EXPORTS
- sb_trie_open
- sb_trie_close
- sb_trie_save
- sb_trie_retrieve
- sb_trie_store
- sb_trie_delete
- sb_trie_enumerate
- sb_trie_root
- sb_trie_state_clone
- sb_trie_state_free
- sb_trie_state_rewind
- sb_trie_state_walk
- sb_trie_state_is_walkable
- sb_trie_state_is_terminal
- sb_trie_state_is_leaf
- sb_trie_state_get_data
- trie_open
- trie_close
- trie_save
- trie_retrieve
- trie_store
- trie_delete
- trie_enumerate
- trie_root
- trie_state_clone
- trie_state_free
- trie_state_rewind
- trie_state_walk
- trie_state_is_walkable
- trie_state_is_leaf
- trie_state_get_data
+sb_trie_open
+sb_trie_close
+sb_trie_save
+sb_trie_retrieve
+sb_trie_store
+sb_trie_delete
+sb_trie_enumerate
+sb_trie_root
+sb_trie_state_clone
+sb_trie_state_free
+sb_trie_state_rewind
+sb_trie_state_walk
+sb_trie_state_is_walkable
+sb_trie_state_is_terminal
+sb_trie_state_is_leaf
+sb_trie_state_get_data
+trie_open
+trie_close
+trie_save
+trie_retrieve
+trie_store
+trie_delete
+trie_enumerate
+trie_root
+trie_state_clone
+trie_state_free
+trie_state_rewind
+trie_state_walk
+trie_state_is_walkable
+trie_state_is_leaf
+trie_state_get_data


ส่วน libthai ก็แก้คล้ายกันก็ลงได้. น่าจะเป็นที่ version ของ libtool
และ automake. ส่วนอีกปัญหาหนึ่งคือ libthai ใช้ pkgconfig หา datrie ก็
หาเจอจริง แต่ว่าไม่ไปเปลี่ยนค่า LDFLAGS และ CFLAGS. ไม่แน่ใจว่าบน
platform อื่นเป็นอย่างไร.

Theppitak Karoonboonyanan

ยังไม่อ่าน,
16 ต.ค. 2550 22:21:4716/10/50
ถึง thai-linux...@googlegroups.com
On 10/17/07, veer <vsata...@gmail.com> wrote:

> ด้วย patch แบบข้างล่าง ก็ลงได้. ถึงแม้ว่าจะงงๆว่าทำไมได้ก็ตาม.

ขอบคุณที่ช่วย debug บน mac ให้ครับ

> autoheader
> -libtoolize --force
> -aclocal
> -automake --add-missing
> -autoconf
> +glibtoolize --force
> +aclocal-1.6
> +automake-1.6 --add-missing
> +/usr/bin/autoconf

ไม่มี glibtoolize บน GNU/Linux
บน mac มีทั้งคู่แต่ต่างกัน หรือว่ามีแต่ glibtoolize ครับ?

automake --version นี่ ปกติได้รุ่นไหนครับ?
/me นึกถึง autogen script รุ่นเดิม ๆ ที่มีการเช็กยาวเหยียด..
อาจต้องกลับไปใช้แบบนั้น

auto* อื่นไม่ต้องใส่ path เต็ม แต่ autoconf ต้อง?

เอ แปลกดีที่ต้องเอา tab ออกถึงจะผ่าน โปรเจกต์อื่นเขาจะมีปัญหา
แบบนี้ไหมหนอ

> ส่วน libthai ก็แก้คล้ายกันก็ลงได้. น่าจะเป็นที่ version ของ libtool
> และ automake. ส่วนอีกปัญหาหนึ่งคือ libthai ใช้ pkgconfig หา datrie ก็
> หาเจอจริง แต่ว่าไม่ไปเปลี่ยนค่า LDFLAGS และ CFLAGS. ไม่แน่ใจว่าบน
> platform อื่นเป็นอย่างไร.

บน Debian:

$ pkg-config --libs libthai
-lthai -ldatrie
$ pkg-config --cflags libthai

$

(CFLAGS ไม่มีค่าอะไรเพราะติดตั้ง header ที่ /usr/include
เวลา include ตั้งใจให้ใช้รูปแบบ <thai/thailib.h> อยู่แล้ว)

เทพ.
--
Theppitak Karoonboonyanan
http://linux.thai.net/~thep/

Vee Satayamas

ยังไม่อ่าน,
17 ต.ค. 2550 00:33:4217/10/50
ถึง thai-linux...@googlegroups.com
สวัสดีครับ

เมื่อ 10/17/07, Theppitak Karoonboonyanan <th...@linux.thai.net> เขียนว่า:

ไม่มี glibtoolize บน GNU/Linux
บน mac มีทั้งคู่แต่ต่างกัน หรือว่ามีแต่ glibtoolize ครับ?

มีแต่ glibtoolize ครับ.

automake --version นี่ ปกติได้รุ่นไหนครับ?
/me นึกถึง autogen script รุ่นเดิม ๆ ที่มีการเช็กยาวเหยียด..
อาจต้องกลับไปใช้แบบนั้น

ถ้าไม่ลงเพิ่มบน Mac OS X 10.4.x เป็น version 1.6 ครับ.

auto* อื่นไม่ต้องใส่ path เต็ม แต่ autoconf ต้อง?

ผมลงไว้หลายตัวหนะครับ ต้องการบังคับให้ใช้ default ของ os x ( เพราะว่าลองใช้ที่ลงจาก macports แล้ว build ไม่ผ่าน. ประมาณว่าเรียก ./configure แล้วนิ่งไปเลย ).

เอ แปลกดีที่ต้องเอา tab ออกถึงจะผ่าน

เอา EXPORTS ออกด้วยอะครับ

> ส่วน libthai ก็แก้คล้ายกันก็ลงได้. น่าจะเป็นที่ version ของ libtool
> และ automake. ส่วนอีกปัญหาหนึ่งคือ  libthai ใช้ pkgconfig หา datrie ก็
> หาเจอจริง แต่ว่าไม่ไปเปลี่ยนค่า LDFLAGS และ CFLAGS. ไม่แน่ใจว่าบน
> platform อื่นเป็นอย่างไร.

บน Debian:

$ pkg-config --libs libthai
-lthai -ldatrie
$ pkg-config --cflags libthai

ประเด็นนี้ เดี๋ยวไว้ผมลองดูอีกทีครับ.

ขอบคุณมากครับ

Theppitak Karoonboonyanan

ยังไม่อ่าน,
17 ต.ค. 2550 01:17:4117/10/50
ถึง thai-linux...@googlegroups.com
On 10/17/07, Vee Satayamas <vsata...@gmail.com> wrote:

> เมื่อ 10/17/07, Theppitak Karoonboonyanan <th...@linux.thai.net> เขียนว่า:
> > ไม่มี glibtoolize บน GNU/Linux
> > บน mac มีทั้งคู่แต่ต่างกัน หรือว่ามีแต่ glibtoolize ครับ?
>
> มีแต่ glibtoolize ครับ.

งั้นคงต้องเช็กหา [g]libtoolize ก่อนเรียก

> > automake --version นี่ ปกติได้รุ่นไหนครับ?
> > /me นึกถึง autogen script รุ่นเดิม ๆ ที่มีการเช็กยาวเหยียด..
> > อาจต้องกลับไปใช้แบบนั้น
>
> ถ้าไม่ลงเพิ่มบน Mac OS X 10.4.x เป็น version 1.6 ครับ.

แต่ว่าเรียก aclocal กับ automake เฉย ๆ ไม่ได้ ทั้ง ๆ ที่เป็นรุ่น 1.6
แต่ต้องเรียกในรูป aclocal-1.6, automake-1.6?

> > auto* อื่นไม่ต้องใส่ path เต็ม แต่ autoconf ต้อง?
>
> ผมลงไว้หลายตัวหนะครับ ต้องการบังคับให้ใช้ default ของ os x (
> เพราะว่าลองใช้ที่ลงจาก macports แล้ว build ไม่ผ่าน. ประมาณว่าเรียก
> ./configure แล้วนิ่งไปเลย ).

อืม.. บางคนอาจต้องการ autoconf ใน /usr/local/bin หรือใน /opt/bin
ก็แล้วแต่.. ทำไงดีหนอ ถึงจะครอบคลุมทุก case?

> > เอ แปลกดีที่ต้องเอา tab ออกถึงจะผ่าน
>
> เอา EXPORTS ออกด้วยอะครับ

ตกลงผมลองเอาออกแล้ว ยังคง build บน GNU/Linux ผ่าน
ก็เลย commit รายการนี้ไปแล้วครับ (เดี๋ยวแก้ libthai ตามด้วย)

Vee Satayamas

ยังไม่อ่าน,
17 ต.ค. 2550 04:30:5717/10/50
ถึง thai-linux...@googlegroups.com
(CFLAGS ไม่มีค่าอะไรเพราะติดตั้ง header ที่ /usr/include
เวลา include ตั้งใจให้ใช้รูปแบบ <thai/thailib.h> อยู่แล้ว)

ผมลองในเครื่อง

$ pkg-config --cflags datrie
-I/Users/veesatayamas/include 
$

ได้แบบนี้ครับ. แต่เวลา compile จริงๆ configure เหมือนไม่ได้แก้ CFLAGS ให้

วีร์


--
Homepage: http://www.vee-u.com/

Theppitak Karoonboonyanan

ยังไม่อ่าน,
17 ต.ค. 2550 05:06:3117/10/50
ถึง thai-linux...@googlegroups.com
On 10/17/07, Vee Satayamas <vsata...@gmail.com> wrote:

> > (CFLAGS ไม่มีค่าอะไรเพราะติดตั้ง header ที่ /usr/include
> > เวลา include ตั้งใจให้ใช้รูปแบบ <thai/thailib.h> อยู่แล้ว)
>
> ผมลองในเครื่อง
>
> $ pkg-config --cflags datrie
> -I/Users/veesatayamas/include
> $
>
> ได้แบบนี้ครับ. แต่เวลา compile จริงๆ configure เหมือนไม่ได้แก้ CFLAGS ให้

ถ้าพูดถึงการ build libthai เนื่องจากมีแค่มอดูล thbrk เท่านั้นที่ใช้ datrie
ก็เลยกำหนด CFLAGS, LIBADD เฉพาะใน thbrk แทนที่จะกำหนดแบบรวมที่
configure นะครับ

ส่วนถ้าพูดถึง libthai.pc ที่ติดตั้งแล้ว ก็จะมีฟิลด์ Requires: datrie อยู่แล้ว
เพราะฉะนั้น เวลาติดตั้งแล้ว pkg-config ก็ควรจะไปเอา CFLAGS, LIBS
ของ datrie มารวมเมื่อ query libthai อยู่แล้ว

เช่น ผมลอง configure & build datrie แบบนี้:

$ ../configure --prefix=/home/thep/tmp/datrie
$ make install

และ configure & build libthai แบบนี้:

$ export PKG_CONFIG_PATH=/home/thep/tmp/datrie/lib/pkgconfig
$ pkg-config --cflags datrie
-I/home/thep/tmp/datrie/include
$ ../configure --prefix=/home/thep/tmp/libthai
$ make install

เมื่อ query libthai แบบนี้:

$ export PKG_CONFIG_PATH=/home/thep/tmp/libthai/lib/pkgconfig:$PKG_CONFIG_PATH
$ pkg-config --cflags libthai
-I/home/thep/tmp/libthai/include -I/home/thep/tmp/datrie/include

ก็ดูปกติดีนะครับ

Vee Satayamas

ยังไม่อ่าน,
17 ต.ค. 2550 06:02:4117/10/50
ถึง thai-linux...@googlegroups.com
สวัสดีครับ

เมื่อ 10/17/07, Theppitak Karoonboonyanan <th...@linux.thai.net> เขียนว่า:
แต่ว่าเรียก aclocal กับ automake เฉย ๆ ไม่ได้ ทั้ง ๆ ที่เป็นรุ่น 1.6

แต่ต้องเรียกในรูป aclocal-1.6, automake-1.6?

จริงๆ ระบุ full path ก็พอครับ ไม่ต้องใส่ 1.6 ก็ได้. แต่ผมใส่กันตัวเองงงเท่านั้นเอง.

อืม.. บางคนอาจต้องการ autoconf ใน /usr/local/bin หรือใน /opt/bin
ก็แล้วแต่.. ทำไงดีหนอ ถึงจะครอบคลุมทุก case?

อาจจะไม่ค่อยจำเป็นหรือเปล่าครับ? 

Theppitak Karoonboonyanan

ยังไม่อ่าน,
17 ต.ค. 2550 07:04:0617/10/50
ถึง thai-linux...@googlegroups.com
On 10/17/07, Vee Satayamas <vsata...@gmail.com> wrote:
> เมื่อ 10/17/07, Theppitak Karoonboonyanan <th...@linux.thai.net> เขียนว่า:
> > แต่ว่าเรียก aclocal กับ automake เฉย ๆ ไม่ได้ ทั้ง ๆ ที่เป็นรุ่น 1.6
> > แต่ต้องเรียกในรูป aclocal-1.6, automake-1.6?
>
> จริงๆ ระบุ full path ก็พอครับ ไม่ต้องใส่ 1.6 ก็ได้.
> แต่ผมใส่กันตัวเองงงเท่านั้นเอง.
>
> > อืม.. บางคนอาจต้องการ autoconf ใน /usr/local/bin หรือใน /opt/bin
> > ก็แล้วแต่.. ทำไงดีหนอ ถึงจะครอบคลุมทุก case?
>
> อาจจะไม่ค่อยจำเป็นหรือเปล่าครับ?

งั้นสรุปว่ารายการที่จำเป็นจริง ๆ ก็คือ การ detect [g]libtoolize แบบนี้?:
(ตรง DIE นี่ ผมเผื่อไว้ว่ามีการเช็กหลายรายการเฉย ๆ ก็ให้มันฟ้องให้ครบ
ก่อน exit แต่ถ้าเหลือแค่รายการเดียวก็อาจจะเอาออก)

Index: autogen.sh
===================================================================
RCS file: /home/cvs/software/datrie/autogen.sh,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 autogen.sh
--- autogen.sh 12 Aug 2006 15:58:04 -0000 1.1.1.1
+++ autogen.sh 17 Oct 2007 11:01:31 -0000
@@ -1,8 +1,25 @@
#!/bin/sh

set -x
+
+DIE=0
+
+# Detect [g]libtoolize
+if libtoolize --version > /dev/null 2>&1; then
+ LIBTOOLIZE=libtoolize
+elif glibtoolize --version > /dev/null 2>&1; then
+ LIBTOOLIZE=glibtoolize
+else
+ echo "**Error**: Missing 'libtoolize'"
+ DIE=1
+fi
+
+if [ $DIE -eq 1 ]; then
+ exit 1
+fi
+
autoheader
-libtoolize --force
+${LIBTOOLIZE} --force
aclocal
automake --add-missing
autoconf

Theppitak Karoonboonyanan

ยังไม่อ่าน,
17 ต.ค. 2550 21:25:1317/10/50
ถึง thai-linux...@googlegroups.com
On 10/17/07, Theppitak Karoonboonyanan <th...@linux.thai.net> wrote:

> งั้นสรุปว่ารายการที่จำเป็นจริง ๆ ก็คือ การ detect [g]libtoolize แบบนี้?:

commit แล้วนะครับ ทั้ง datrie และ libthai

ตอบทุกคน
ตอบกลับผู้สร้าง
ส่งต่อ
ข้อความใหม่ 0 รายการ