トップ «前の日記(2003-10-22(水)) 最新 次の日記(2003-10-24(金))» 編集

とた日記


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 は勉強になります。

_ 中曽根さん

*BSD Diary Links 経由、杉村さんの日記より。私はハッキリ言って老害だと思うのですが。宮澤さんは潔いですね。

_ 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より引用]

だそうです。