在 FreeBSD 6.x/7.x 上編譯 OpenOffice.org 2.02

本文內容已過時,要裝的話直接裝應該就好了。

因為 JDK 1.4 實在有點舊了,
而且拿來編 openoffice 2.02 編到一半還會有找不到 symbol 的問題,
實在很懶得去解,
後來拿 JDK 1.5 去編還是有問題,
但是在 Google 上一搜就發現了解法:
http://article.gmane.org/gmane.os.freebsd.devel.openoffice/301

簡單說...
就是要先把舊的 bison 砍掉(如果有的話),
然後去 devel/bison2 把 2.x 版的 bison 裝起來。
再來要到 /usr/local/jdk1.5.0/jre/lib 下面做一個 symbolic link,
把 xawt/libmawt.so 這個檔案 link 到這層目錄來(因為編譯時 gcc 的 -L 路徑只有指到這層)。

然後因為新版 Java 把 enum 定義成保留字,
所以要先去 editors/openoffice.org-2.0 做 make LOCALIZED_LANG=zh-TW patch 做完 build 前該做的事,
然後到這個 path 下:
/usr/ports/editors/openoffice.org-2.0/work/<名稱要看版本>/xmerge/source/xmerge/java/org/openoffice/xmerge/
把這三個檔案裡叫做 enum 的變數改名:
ConvertData.java
converter/xml/xslt/DocumentDeserializerImpl.java
converter/xml/xslt/PluginFactoryImpl.java

然後要去 /usr/local/linux-sun-jdk1.4.2/jre/lib 用 unzip -q 解開 rt.jar,
在 /usr/local/jdk1.5.0/jre/lib 下的 rt.jar 也一起解開來,
從 linux-sun-jdk1.4.2 解出來的 rt.jar 會有 org/apache 這個目錄,
把它整個 copy 到 jdk1.5.0 這邊解出來所對應的目錄下(因為 JDK 1.5.0 拿掉了這個 package),
再用 zip -0qr 把它壓回去擺好。

最後 make JAVA_VERSION=1.5 LOCALIZED_LANG=zh-TW install clean 就可以了,
JAVA_VERSION=1.5 不打的話會去找 1.4.2 版然後說找不到,
這樣就能把 openoffice.org-2.0 編出來了。