2003-10-23(木) 曇ときどき晴夕方一時雨 [長年日記]
_ 野良 port KPhone (2)
/usr/local/etc/pkgtools.conf の MAKE_ARGS に
'devel/pcre' => 'WITH_UTF8=yes',
を追加。
# portinstall devel/pcre textproc/libxslt graphics/libart_lgpl2 devel/fam
で結局
# cd /usr/ports/x11/kdelibs3 # make # make install
としてしまいました。
USE_QT_VER= 3
としていましたが kdelibs3 をインストールすることになるので
USE_KDELIBS_VER= 3
とした方がよいでしょう。
# portversion -vL"=" Stale dependency: kdelibs-3.1.4 --> openldap-client-2.1.22 -- manually run 'pkgdb -F' to fix, or specify -O to force.
となってしまったのですが openldap は使っていなかったので
# pkg_deinstall openldap-client
として一旦アンインストールしました。
# cd /usr/ports/net/openldap21-client # make install clean
これで取り敢えず準備完了といったところでしょうか。やっと本題に戻ります。
# make configure (snip)
うまくいきました。
# make ===> Building for kphone-3.12 make all-recursive Making all in kphonegsm "Makefile", line 405: Need an operator "Makefile", line 437: warning: duplicate script for target "%.o" ignored "Makefile", line 442: warning: duplicate script for target "%.o" ignored "Makefile", line 446: warning: duplicate script for target "%.lo" ignored "Makefile", line 452: warning: duplicate script for target "%.lo" ignored make: fatal errors encountered -- cannot continue *** Error code 1 Stop in /usr/ports/local/kphone/work/kphone-3.12. *** Error code 1 Stop in /usr/ports/local/kphone/work/kphone-3.12. *** Error code 1 Stop in /usr/ports/local/kphone.
そういえば BSD make が走ってしまうのでしたね。ということで
USE_GMAKE= yes
を Makefile に追加して
# make ===> Building for kphone-3.12 gmake all-recursive gmake[1]: Entering directory `/usr/ports/local/kphone/work/kphone-3.12' Making all in kphonegsm gmake[2]: Entering directory `/usr/ports/local/kphone/work/kphone-3.12/kphonegsm' gmake[2]: `all' に対して行うべき事はありません。 gmake[2]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12/kphonegsm' Making all in ilbc gmake[2]: Entering directory `/usr/ports/local/kphone/work/kphone-3.12/ilbc' gmake[2]: `all' に対して行うべき事はありません。 gmake[2]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12/ilbc' Making all in dissipate2 gmake[2]: Entering directory `/usr/ports/local/kphone/work/kphone-3.12/dissipate2' /bin/sh ../libtool --mode=compile --tag=CXX c++ -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/usr/X11R6/include -I./.. -I/usr/local /include -I/usr/local/include -I/usr/X11R6/include -D_GETOPT_H -DQT_THREAD_SUPPORT -pthread -O2 -fno-exceptions -fno-check-new -Wall -pedan tic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long -Wnon-virtual-dtor -fno-builtin -O -pipe -mcpu=pentiumpro -c udpm essagesocket.cpp c++ -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/usr/X11R6/include -I./.. -I/usr/local/include -I/usr/local/include -I/usr/X11R6/incl ude -D_GETOPT_H -DQT_THREAD_SUPPORT -pthread -O2 -fno-exceptions -fno-check-new -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwri te-strings -Wno-long-long -Wnon-virtual-dtor -fno-builtin -O -pipe -mcpu=pentiumpro -Wp,-MD,.deps/udpmessagesocket.pp -c udpmessagesocket.cpp -fPIC -DPIC -o .libs/udpmessagesocket.o In file included from udpmessagesocket.cpp:3: /usr/include/netinet/ip.h:71: field `ip_src' has incomplete type /usr/include/netinet/ip.h:71: field `ip_dst' has incomplete type /usr/include/netinet/ip.h:153: syntax error before `[' token /usr/include/netinet/ip.h:155: field `ipt_addr' has incomplete type /usr/include/netinet/ip.h:156: 'n_long' is used as a type, but is not defined as a type. udpmessagesocket.cpp: In member function `int UDPMessageSocket::SetTOS()': udpmessagesocket.cpp:54: `SOL_IP' undeclared (first use this function) udpmessagesocket.cpp:54: (Each undeclared identifier is reported only once for each function it appears in.) gmake[2]: *** [udpmessagesocket.lo] エラー 1 gmake[2]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12/dissipate2' gmake[1]: *** [all-recursive] エラー 1 gmake[1]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12' gmake: *** [all-recursive-am] エラー 2 *** Error code 2 Stop in /usr/ports/local/kphone.
まず、
/usr/include/netinet/ip.h:71: field `ip_src' has incomplete type /usr/include/netinet/ip.h:71: field `ip_dst' has incomplete type
から <netinet/ip.h> の include が Linux と FreeBSD で異なっていると予想して
# find /usr/ports -name Makefile -or -name "patch-*" | xargs grep "<netinet/ip.h>" /usr/ports/comms/sredird/files/patch-aa: #include <netinet/ip.h> /usr/ports/ftp/prozilla/files/patch-connect.c: #include <netinet/ip.h> /usr/ports/ftp/prozilla/files/patch-ftp-retr.c: #include <netinet/ip.h> /usr/ports/ftp/prozilla/files/patch-ftpsearch.c: #include <netinet/ip.h> /usr/ports/ftp/prozilla/files/patch-http-retr.c: #include <netinet/ip.h> /usr/ports/ftp/prozilla/files/patch-ping.c: #include <netinet/ip.h> /usr/ports/mail/pop3vscan/files/patch-pop3vscan.c: #include <netinet/ip.h> /usr/ports/net/asterisk/files/patch-channels::chan_h323.c: #include <netinet/ip.h> /usr/ports/net/gkrellmmultiping2/files/patch-pinger.c: #include <netinet/ip.h> /usr/ports/net/netdude/files/patch-protocols-icmp::nd_icmp.h:+#include <netinet/ip.h> /usr/ports/net/netdude/files/patch-protocols-ip::nd_ip_callbacks.c: #include <netinet/ip.h> /usr/ports/net/netdude/files/patch-protocols-tcp::nd_tcb.c: #include <netinet/ip.h> /usr/ports/net/netdude/files/patch-protocols-udp::nd_udp.c: #include <netinet/ip.h> /usr/ports/net/pipsecd/files/patch-ab: #include <netinet/ip.h> /usr/ports/net/tcpview/files/patch-aa: #include <netinet/ip.h> /usr/ports/net/wmwave/files/patch-wmwave.c:+#include <netinet/ip.h> /usr/ports/security/nbaudit/files/patch-includes.h: #include <netinet/ip.h> /usr/ports/security/skip/files/patch-bu: #include <netinet/ip.h> /usr/ports/sysutils/wminet/files/patch-ab:+#include <netinet/ip.h>
早速拝見させていただきました。
# less /usr/ports/comms/sredird/files/patch-aa --- sredird.c.orig Mon Sep 20 15:26:54 1999 +++ sredird.c Tue Dec 21 11:02:48 1999 @@ -43,7 +43,12 @@ #include <fcntl.h> #include <syslog.h> #include <termios.h> -#include <termio.h> +#ifndef __FreeBSD__ /* FreeBSD */ +#include <termio.h> /* Doesn't exist on FreeBSD */ +#else +#include <netdb.h> /* Necessary for getprotobyname(3) function */ +#include <netinet/in_systm.h> /* Reqired for netinet/ip.h */ +#endif /* FreeBSD */ #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> @@ -129,6 +134,14 @@ /* Default modem state polling in milliseconds (100 msec should be enough) */ #define ModemStatePolling 100 +/* FreeBSD specific definitions */ +#ifdef __FreeBSD__ /* FreeBSD */ +struct tms mytms; +#define times(NULL) times(&mytms) /* Coz times(NULL) coredumps on FreeBSD */ +#define SOL_TCP getprotobyname("TCP")->p_proto /* SOL_TCP and SOL_IP undefined */ +#define SOL_IP getprotobyname("IP")->p_proto /* on FreeBSD */ +#endif /* FreeBSD */ + (snip)
いきなり答えのような気が。。。
--- dissipate2/udpmessagesocket.cpp.orig Fri Jun 13 16:26:10 2003 +++ dissipate2/udpmessagesocket.cpp Thu Oct 23 21:36:22 2003 @@ -1,5 +1,7 @@ #include <sys/types.h> #include <sys/socket.h> +#include <netinet/in_systm.h> +#include <netinet/in.h> #include <netinet/ip.h> #include <errno.h> #include <string.h> @@ -8,6 +10,8 @@ #include <unistd.h> #include <strings.h> #include <udpmessagesocket.h> + +#define SOL_IP getprotobyname("IP")->p_proto /* on FreeBSD */ UDPMessageSocket::UDPMessageSocket( void )
patch を作って
# make (snip) siputil.cpp:7:22: features.h: No such file or directory gmake[2]: *** [siputil.lo] エラー 1 gmake[2]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12/dissipate2' gmake[1]: *** [all-recursive] エラー 1 gmake[1]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12' gmake: *** [all-recursive-am] エラー 2 *** Error code 2 Stop in /usr/ports/local/kphone.
というわけで、work/kphone-3.12/dissipate2/siputil.cpp を見ると
4 #include <sys/socket.h> 5 #include <sys/time.h> 6 #include <sys/errno.h> 7 #include <features.h> 8 #include <net/if_arp.h> 9 #include <net/route.h> 10 #include <sys/ioctl.h>
となっているので
# find /usr/ports -name Makefile -or -name "patch-*" | xargs grep "<features.h>" /usr/ports/astro/openuniverse/files/patch-b:+//#include <features.h> /usr/ports/devel/linuxthreads/files/patch-aa:-#include <features.h> /usr/ports/devel/linuxthreads/files/patch-aa:-#include <features.h> /usr/ports/graphics/pvmpov/files/patch-ac:-#include <features.h> /usr/ports/graphics/pvmpov/files/patch-ac:+/*#include <features.h>*/ /usr/ports/lang/icc/files/patch-ia32::include::yvals.h:-#include <features.h> /* Get glibc version __GLIBC__ and __GLIBC_MINOR__*/ /usr/ports/science/xmakemol/files/patch-ab:+#include <features.h> /usr/ports/science/xmakemol/files/patch-ab:+#include <features.h> /usr/ports/security/pam_pwdfile/files/patch-aa:-#include <features.h>
単に削ればよいのかなぁということで
--- dissipate2/siputil.cpp.orig Tue Aug 19 19:48:03 2003 +++ dissipate2/siputil.cpp Thu Oct 23 21:47:59 2003 @@ -4,7 +4,6 @@ #include <sys/socket.h> #include <sys/time.h> #include <sys/errno.h> -#include <features.h> #include <net/if_arp.h> #include <net/route.h> #include <sys/ioctl.h>
再び make
# make (snip) In file included from sipprotocol.cpp:11: extern_md5.h:7: syntax error before `[' token gmake[2]: *** [sipprotocol.lo] エラー 1 gmake[2]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12/dissipate2' gmake[1]: *** [all-recursive] エラー 1 gmake[1]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12' gmake: *** [all-recursive-am] エラー 2 *** Error code 2 Stop in /usr/ports/local/kphone.
またコケました。work/kphone-3.12/dissipate2/extern_md5.h を見ると
4 #ifdef DO_MD5 5 6 #define HASHLEN 16 7 typedef u_char HASH[HASHLEN]; 8 #define HASHHEXLEN 32 9 typedef char HASHHEX[HASHHEXLEN+1]; 10 #define IN
u_char が定義されていないのかなぁ?
# find /usr/include | xargs grep "u_char" | grep -i typedef /usr/include/netatm/atm_sys.h:typedef u_char Aal_t; /usr/include/netatm/atm_sys.h:typedef u_char Encaps_t; /usr/include/sys/soundcard.h:typedef u_char sbi_instr_data[32]; /usr/include/sys/types.h:typedef unsigned char u_char; /usr/include/vm/vm.h:typedef u_char vm_prot_t; /* protection codes */ /usr/include/vm/vm_object.h:typedef u_char objtype_t; /usr/include/pcap.h:typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
FreeBSD では <sys/types.h> を include しないとダメらしいです。
--- dissipate2/sipprotocol.cpp.orig Thu Oct 23 14:54:27 2003 +++ dissipate2/sipprotocol.cpp Thu Oct 23 21:52:02 2003 @@ -8,6 +8,7 @@ #include <stdio.h> #include <stdlib.h> #include <siputil.h> +#include <sys/types.h> #include <extern_md5.h> #include <base64.h> #include <sipprotocol.h>
懲りずに make
# make (snip) /usr/bin/ld: cannot find -lpthread gmake[2]: *** [kphone] エラー 1 gmake[2]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12/kphone' gmake[1]: *** [all-recursive] エラー 1 gmake[1]: Leaving directory `/usr/ports/local/kphone/work/kphone-3.12' gmake: *** [all-recursive-am] エラー 2 *** Error code 2 Stop in /usr/ports/local/kphone.
# find /usr/ports -name Makefile -or -name "patch-*" | xargs grep "\-lpthread" (snip)
大量に見つかりました。
@${REINPLACE_CMD} -e 's|-lpthread|${PTHREAD_LIBS}|g' hoge
としている場合が多いようです。念のため ${PTHREAD_LIBS} も確認します。/usr/ports/Mk/bsd.port.mk に
.if ${OSVERSION} < 500016 PTHREAD_CFLAGS= -D_THREAD_SAFE PTHREAD_LIBS= -pthread .else PTHREAD_CFLAGS= -D_THREAD_SAFE PTHREAD_LIBS= -lc_r .endif
とあるので矢張り Makefile の中で置換するほうが安全です。ということで
USE_REINPLACE= yes
と
post-configure: @${REINPLACE_CMD} -e "s|-lpthread|${PTHREAD_LIBS}|g" ${WRKSRC}/kphone/Makefile
を Makefile に追加しました。これで何とか make build までとおりました。
_ ipnatでH.323プロクシ
otsune さんの日記を見ていたら「ipnatのH.323 Proxy」という言葉が気になって検索してみたらotsune さんの日記のページが TOP でした。otsune さんの Web Page は勉強になります。
_ Cyberbit フォント
おとなしく READMEfirst.txt を読んでみます。すると
The 3 Cyberbit fonts (Version 2.0) are:
Cyberbit.ZIP -- the original multilingual font.
CyberCJK.ZIP -- a subset of Cyberbit. Contains Chinese, Japanese and Korean characters.
CyberBas.ZIP -- Cyberbit minus CyberCJK. Particularly good for ISO-8859-x languages.
[READMEfirst.txtより引用]
とあるので Cyberbit.ZIP があれば良いのかなぁといった感じです。
_ モトヤシーダ フォント
フォントダウンロード会員登録が必要です。
_ Windows用 EPSON TrueTypeFont Ver3.0
【ご使用条件】
エプソンプリンタをご使用になる目的においてのみ、本ソフトウェアを
ご使用いただけます。
[Windows用 EPSON TrueTypeFont Ver3.0より引用]
だそうです。