2008年1月10日木曜日

ja-plain2がbrokenなんですけど……(未解決)

実況:ハマる ports いじり。




ja-mhの件で、過去自分が使ったことのあるものでBROKENなものが他にあるのか、調べてみると……
(参考: http://portsmon.freebsd.org/portsconcordanceforbroken.py
なんと懐かしのplain2が壊れている。
FreeBSD 7.0 では gcc4.2.1 なわけだけど、コンパイラオプションの -fwritable-strings が無いため、らしい。

なら外してみればいいじゃない!(ぉ

(本当はrootでやっちゃいけません。たぶん。)



vmbsd7# cd /usr/ports/japanese
vmbsd7# cp -r plain2 plain2.org
vmbsd7# cd plain2


こちゃこちゃとMakefileを書いてみよう。




vmfbsd7# diff -u plain2.org/Makefile plain2/Makefile
--- plain2.org/Makefile 2008-01-09 21:35:05.000000000 +0900
+++ plain2/Makefile 2008-01-09 22:20:32.000000000 +0900
@@ -22,14 +22,14 @@
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:R}p${PORTVERSION:E}.orig
BUILD_WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:R}p${PORTVERSION:E}.orig/src

-MAKE_ARGS= CC="${CC}" CFLAGS="${CFLAGS} -DBSD -DKANJI -DPICTURE -DHTML -fwritable-strings"
+MAKE_ARGS= CC="${CC}" CFLAGS="${CFLAGS} -DBSD -DKANJI -DPICTURE -DHTML"
ALL_TARGET= ${PORTNAME}

.include

-.if ${OSVERSION} >= 700042
-BROKEN= Broken with gcc 4.2
-.endif
+#.if ${OSVERSION} >= 700042
+#BROKEN= Broken with gcc 4.2
+#.endif

post-patch:
@${REINPLACE_CMD} -e \


結果。
http://www1.odn.ne.jp/taraijpn/plain2_errlog.txt

なにが恐ろしいってbinary出来てるんだよなあ……おそるおそる実行してみよう。
(やっぱりrootでやっちゃいけません。)




vmfbsd7# ./plain2 -tex ./plain2.h
Segmentation fault (core dumped)



そりゃそうだ。まあ plain2.h に手を入れて warningを消すことを考えよう。

http://www1.odn.ne.jp/taraijpn/patch-src::plain2.h




vmbsd7# make
(中略)
===> Building for ja-plain2-2.54.1_2
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c plain2.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c readfile.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c miscutil.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c section.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c example.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c list.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c plaintxt.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c spacing.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c headfoot.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c hint.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c justify.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c texout.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c output.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c renumout.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c macro.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c htmlout.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c roffout.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c analyze.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c table.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c title.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c picture.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -c ftitle.c
cc -O2 -fno-strict-aliasing -pipe -DBSD -DKANJI -DPICTURE -DHTML -o plain2 plain2.o readfile.o miscutil.o section.o example.o list.o plaintxt.o spacing.o headfoot.o hint.o justify.o texout.o output.o renumout.o macro.o htmlout.o roffout.o analyze.o table.o title.o picture.o ftitle.o
vmbsd7#



美しい :D

だがしかし。




vmfbsd7# ./plain2 -tex plain2.h
Segmentation fault (core dumped)


……あれー?

次回: -fwritable-strings に込められた意味とは!?
(過去どこかのblogでまったく同じハマり方をしている記事を見かけています。)

0 件のコメント: