140607 lib o-mini_con-ryoon

33
1 pkgsrcを使った*BSDでの LibreOffice 4.2のビルド Ryo ONODERA <[email protected]> <[email protected]> LibreOffice mini Conference 2014 Tokyo/Japan 2014-06-07

Upload: ryo-onodera

Post on 12-May-2015

659 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 140607 lib o-mini_con-ryoon

1

pkgsrcを使った*BSDでのLibreOffice 4.2のビルド

Ryo ONODERA<[email protected]><[email protected]>

LibreOffice mini Conference 2014 Tokyo/Japan

2014-06-07

Page 2: 140607 lib o-mini_con-ryoon

2

Who am I?

● 名前: Ryo ONODERA● いわゆるIT産業とは無関係な仕事をしています

● 2010年からpkgsrc developer● NetBSDのCVS treeにもcommitできるので、瑣末なものはcommitしている時もあります

● 最近は、Xinuos (旧SCO)のOSにpkgsrcを移植しようとしています● SCO OpenServer 5.0.7/3.2、SCO OpenServer 6.0/5、UnixWare 7.1.4+● GCCのサポートがなかったり、最近のバージョンでは削除されていたりするので、GCC

をどうにかしないといけないのではないかと思っています。i386だけなので、linker/compiler/includeの癖が分かればそんなに難しくないはず?

● NetBSD的には、このMacBook Air 11-inch mid 2012でプレゼンテーションができるようになりました。DRMKMS kernel

Page 3: 140607 lib o-mini_con-ryoon

3

pkgsrcとは (1/2)

● http://www.pkgsrc.org/ Portable package build system● The NetBSD Foundation傘下のプロジェクト● パッケージ管理システムと言って良いと思う

– パッケージ管理システムの定義は難しいようなので…● ソフトウェアのインストールの仕方を共有するのが目的のプロジェクトだと思っています● 古くて良くないCVSで管理

– cvs -d :pserver:[email protected]:/cvs/cvsroot login (passwd = anoncvs)

– cvs -d :pserver:[email protected]:/cvs/cvsroot co pkgsrc● 対応22プラットフォーム (ただしサポートのレベルは様々)

– AIX、 BSDOS、 Cygwin、 Darwin/Mac OS X、 DragonFly、 FreeBSD、 FreeMiNT、 GNU/kFreeBSD、 HP-UX 、 Haiku、 IRIX、 Interix/SFU/SUA、 Linux、 Minix3、 MirBSD、 NetBSD、 OSF1、 OpenBSD、 QNX、 SCO OpenServer 5、 Solaris/illumos、 UnixWare

Page 4: 140607 lib o-mini_con-ryoon

4

pkgsrcとは (2/2)

● /usr/pkg以下にインストールpkgのsrcなのでpkgsrc (らしい)● FreeBSD Portsの移植から始まった● ソースコードからビルドする

– cd pkgsrc/misc/libreoffice4 (tree内でパッケージを選んで)– make install (実行コマンドは共通)

● バイナリーパッケージもある● 私の中では、buildlink3という仕組みが素晴しいと思っているが、説明は割愛し

ます● pkgsrcと似た仕組みは他にもあるので、名前だけ紹介。深くは知りません…● FreeBSD Ports、 OpenBSD Ports、 DragonFly DPorts、 Gentoo Portage、

Fink、 MacPorts、 Homebrew、 Arch Build System など● http://wiki.netbsd.org/users/ryoon/sourcecode_based_installation_packag

e_management_systems/ にリンク集があります

Page 5: 140607 lib o-mini_con-ryoon

5

*BSDとは (1/2)

● the University of California, Berkeley由来● BSD = Berkeley Software Distribution● AT&T UNIXへのアドオンから改造版へ。TCP/IPの生まれ故郷● アイデンティティーは、BSDライセンスなのではないかと

思っている(今は、4条項のオリジナルBSDライセンスはお勧めされていない)

● AT&T UNIXと裁判になって、再出発● メジャーどころでは、DragonFly、 FreeBSD、 NetBSD、

OpenBSD、 PC-BSDなどがある● 他にもあるが、試せてません

Page 6: 140607 lib o-mini_con-ryoon

6

*BSDとは (2/2)

● LinuxともSysVR4とも違う、BSD独自の流儀がある● もちろん、GNUの流儀とも違う● POSIX互換は目指しているらしい● SysVR4やLinuxの良い所も取り込まれているはず● すみませんが、詳しくは説明できません…

Page 7: 140607 lib o-mini_con-ryoon

7

pkgsrcの仕組み (1/4)

● pkgsrc/category/package というディレクトリーの形で、パッケージを分類し収録している

– 43のカテゴリーに分類されている– archivers audio benchmarks iology bootstrap cad chat comms

converters cross databases devel distfiles editors emulators filesystems finance fonts games geography graphics ham inputmethod lang mail math mbone meta-pkgs misc multimedia net news parallel pkgtools print security shells sysutils textproc time wm www x11

● bmakeというNetBSDで使われているmakeの方言でMakefileの形で書く

● 配布物の取得からインストールまで● ライセンスによってブロックすることも可能

Page 8: 140607 lib o-mini_con-ryoon

8

pkgsrcの仕組み (2/4)

● 典型的には、以下のようなファイル/ディレクトリーがある

● DESCR … パッケージの解説文章● Makefile … 本体● PLIST … インストールされるファイルの一覧● buildlink3.mk … ライブラリー等だった場合に依存関係を記述するのに使う

● distinfo … 配布物のチェックサムなど● patches/ … ビルドに必要なパッチファイルを格納する

ディレクトリー

Page 9: 140607 lib o-mini_con-ryoon

9

pkgsrcの仕組み (3/4)

● # $NetBSD: Makefile,v 1.6 2014/06/01 04:01:06 ryoon Exp $●

● DISTNAME= libe-book-0.0.3● PKGREVISION= 1● CATEGORIES= converters● MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=libebook/}● EXTRACT_SUFX= .tar.bz2●

● MAINTAINER= [email protected]● HOMEPAGE= http://sourceforge.net/projects/libebook/● COMMENT= Library for importing non-HTML reflowable e-book formats● LICENSE= mpl-2.0 OR gnu-lgpl-v2.1●

● TOOL_DEPENDS+= gperf-[0-9]*:../../devel/gperf●

● GNU_CONFIGURE= yes● USE_LIBTOOL= yes● USE_TOOLS+= gmake pkg-config● USE_LANGUAGES= c c++●

● CONFIGURE_ARGS+= --disable-tests● CONFIGURE_ARGS+= --without-docs● \● .include "../../converters/libwpd/buildlink3.mk"● .include "../../devel/boost-libs/buildlink3.mk"● .include "../../devel/zlib/buildlink3.mk"● .include "../../textproc/icu/buildlink3.mk"● .include "../../textproc/libxml2/buildlink3.mk"● .include "../../mk/bsd.pkg.mk"

● CVS keyword展開● 配布物のファイル名とパッケージ

名● カテゴリー● 配布物の取得元● メンテナー● 依存するライブラリー以外のパッ

ケージの情報● ビルドの仕組みに関する情報

(GNU Autotools/Libtool/CMake/プログラミング言語など)

● 依存するライブラリーの情報

Page 10: 140607 lib o-mini_con-ryoon

10

pkgsrcの仕組み (4/4)

● 使い始めるに当たっては…● NetBSDでは、bmakeがmake(1)として標準搭載されてい

るので、特に準備は必要ない

– $ cd /usr/pkgsrc/misc/libreoffice4 && make install● NetBSD以外のOSでは、pkgsrcのbootstrap作業が必要に

なる

– # cd /usr/pkgsrc/bootstrap && ./bootstrap --varbase /usr/pkg/var とか

– $ cd /usr/pkgsrc/misc/libreoffice4 && /usr/pkg/bin/bmake install

Page 11: 140607 lib o-mini_con-ryoon

11

ターゲット (1/2)

● ここからが本題です● 現在、LibreOfficeは、pkgsrc/misc/libreoffice4 として収録

されており、そのバージョンは4.2.4.2であり、これをビルドすることを目的とする

– pkgsrc/misc/libreofficeというのもあって、バージョン3系列のようですが、ビルドしたことはありません

● ビルドする環境としては、以下とする。メジャーなBSDだと思います

– DragonFly/amd64 3.6.0 (先日3.8.0が出てしまいました)– FreeBSD/amd64 10.0– OpenBSD/amd64 5.5

Page 12: 140607 lib o-mini_con-ryoon

12

ターゲット (2/2)

● LibreOfficeをビルドするのに関連するであろう、各OSの仕様は以下のようである

● DragonFly/amd64 3.6.0

– C/C++コンパイラー: GCC 4.7.3– アーキテクチャー: x86_64

● FreeBSD/amd64 10.0

– C/C++コンパイラー: llvm/clang 3.3– アーキテクチャー: x86_64

● OpenBSD/amd64 5.5

– C/C++コンパイラー: GCC 4.2.1– アーキテクチャー: x86_64

Page 13: 140607 lib o-mini_con-ryoon

13

LibreOfficeと*BSDサポート (1/3)

● まず以下のようにして、LibreOfficeがターゲットOSのサポートをしているのか確認した

– どこかにサポートしているOSやアーキテクチャーの種類について書かれているのかもしれないが、見付けられていない

● ソースツリーで、以下のように実行して、各OS用のサポートファイルが存在することを確認した

– $ find . | grep -i dragonfly● ./solenv/gbuild/platform/DRAGONFLY_X86_64_GCC.mk● ./solenv/gbuild/platform/DRAGONFLY_INTEL_GCC.mk

– $ find . | grep -i freebsd● ./solenv/gbuild/platform/FREEBSD_INTEL_GCC.mk● ./solenv/gbuild/platform/FREEBSD_X86_64_GCC.mk● ./desktop/test/deployment/update/platform/freebsd_x86_64.oxt● ./desktop/test/deployment/update/platform/freebsd_x86.oxt● (パッチは省略)

– $ find . | grep -i openbsd● ./distro-configs/LibreOfficeOpenBSD.conf● ./solenv/gbuild/platform/OPENBSD_INTEL_GCC.mk● ./solenv/gbuild/platform/OPENBSD_X86_64_GCC.mk

Page 14: 140607 lib o-mini_con-ryoon

14

LibreOfficeと*BSDサポート (2/3)

● ちなみに、NetBSDの場合は以下のようである

– $ find . | grep -i netbsd● ./solenv/gbuild/platform/NETBSD_X86_64_GCC.

mk● ./solenv/gbuild/platform/NETBSD_INTEL_GCC.m

k● grep -ri netbsd . とかするのも面白い

Page 15: 140607 lib o-mini_con-ryoon

15

LibreOfficeと*BSDサポート (3/3)

● 以上より、いずれのターゲットOSの場合にも、サポートファイルは存在し、以下のような条件を前提にしていると考えられる

– C/C++コンパイラー: GCC– アーキテクチャー: x86またはx86_64

● Linuxの場合には、S/390x、 SPARC、 MIPS、 ARM、 Power、 HP-PA、 m68kなどもサポートされているようだ

– $ find . | grep -i linux してみてください

Page 16: 140607 lib o-mini_con-ryoon

16

DragonFly/amd64の場合

● solenv/gbuild/platform/DRAGONFLY_X86_64_GCC.mk が他のOSと違う部分が書かれているファイルであると考えられる

– gb_COMPILERDEFAULTOPTFLAGS := -O2– include $(GBUILDDIR)/platform/unxgcc.mk– gb_CppunitTest_CPPTESTPRECOMMAND :=

LD_LIBRARY_PATH=$(WORKDIR)/UnpackedTarball/cppunit/src/cppunit/.libs:/usr/pkg/lib

● pkgsrcが標準のパッケージ管理システムだった頃の設定であるようだ

● 基本的には、Unix-like OSでGCCを使う場合そのままのようだ

Page 17: 140607 lib o-mini_con-ryoon

17

FreeBSD/amd64の場合

● solenv/gbuild/platform/FREEBSD_X86_64_GCC.mk が他のOSと違う部分が書かれているファイルであると考えられる

– gb_COMPILERDEFAULTOPTFLAGS := -O2– include $(GBUILDDIR)/platform/unxgcc.mk

● llvm/clang用のファイルは存在していない● 同じく、Unix-like OSでGCCを使う場合そのままのようだ

Page 18: 140607 lib o-mini_con-ryoon

18

OpenBSD/amd64の場合

● solenv/gbuild/platform/OPENBSD_X86_64_GCC.mk が他のOSと違う部分が書かれているファイルであると考えられる

– gb_COMPILERDEFAULTOPTFLAGS := -O2– gb_STDLIBS := $(PTHREAD_LIBS)– include $(GBUILDDIR)/platform/unxgcc.mk

● libpthreadをわざわざ使うように指定しているようだが、なぜかは不明

● それ以外はUnix-like OSでGCCを使う場合そのままのようだ

Page 19: 140607 lib o-mini_con-ryoon

19

Unix-like OSでGCCを使う場合

● いずれのターゲットOSでも参照されていた、Unix-like OSでGCCを使う場合 (unxgcc.mk) について、簡単に確認した

● 名前に反して、llvm/clangについても書かれている

– ifeq ($(COM_GCC_IS_CLANG),) など● GNU makeの関数ばかりで、良く分からない…● しかし、llvm/clangをC/C++コンパイラーにしている

FreeBSD/amd64 10.0の場合でも、対応できそうな気がして来た

Page 20: 140607 lib o-mini_con-ryoon

20

pkgsrcでのmisc/libreoffice4

● LibreOfficeは、そのビルドの仕組みの中に、必要とするライブラリー等をネットワーク上から取り寄せて、独自のパッチを当ててビルドする仕組みがある

● しかし、これはソースコードから各ユーザーがコンパイルするパッケージ管理システムとは相性が悪い挙動である

– pkgsrc/Ports等では、配布物をあらかじめダウンロードしておける必要がある→オフラインでもビルドできる必要がある

– 再配布可能な配布物については、ミラーをしている● メンテナンスするのにも、パッチへのパッチが必要になって面倒である● なるべく、--with-system-*を活用し、必要なライブラリーはpkgsrcの枠

組みの中でインストールしたものを使うようにする● しかし、まだ道半ばで、--disable-fetch-external と--with-external-

tar=/path/to/tarball を使って対処している

Page 21: 140607 lib o-mini_con-ryoon

21

依存するパッケージ

● hsqldb18-[0-9]*:../../databases/hsqldb18● openjdk7-[0-9]*:../../lang/openjdk7● openjdk7>=1.7.0.72.20090924:../../lang/openjdk7● libabw>=0.0.1:../../converters/libabw● libwpd>=0.9.5:../../converters/libwpd● libcdr>=0.0.6:../../converters/libcdr● libwpg>=0.1.3nb1:../../converters/libwpg● lcms2>=2.2:../../graphics/lcms2● libe-book>=0.0.2:../../converters/libe-book● libetonyek>=0.0.3:../../converters/libetonyek● libfreehand>=0.0.0:../../converters/libfreehand● libmspub>=0.0.6:../../converters/libmspub● libvisio>=0.0.15:../../converters/libvisio● libwps>=0.2.0:../../converters/libwps● libmwaw>=0.2.0:../../converters/libmwaw● orcus>=0.5.1:../../converters/orcus● db4>=4.8.30:../../databases/db4● shared-mime-info>=1.0nb1:../../databases/shared-mime-info● unixodbc>=2.0.11nb3:../../databases/unixodbc● postgresql91-client>=9.1.11nb1:../../databases/postgresql91-client● boost-libs-1.55.*:../../devel/boost-libs● boost-libs>=1.55.0:../../devel/boost-libs● cppunit>=1.10.2nb5:../../devel/cppunit● liblangtag>=0.4.0:../../devel/liblangtag● nss>=3.14.0:../../devel/nss● harfbuzz>=0.9.17nb2:../../fonts/harfbuzz

● jpeg>=9:../../graphics/jpeg● cairo>=1.12.16nb2:../../graphics/cairo● png>=1.6.0nb1:../../graphics/png● gdk-pixbuf2-xlib>=2.26.5nb1:../../graphics/gdk-pixbuf2-xlib● graphite2>=1.2:../../graphics/graphite2● librsvg>=2.40.1nb1:../../graphics/librsvg● libxml2>=2.8.0nb2:../../textproc/libxml2● python33>=3.3:../../lang/python33● lp_solve>=5.5.2.0:../../math/lp_solve● gstreamer0.10>=0.10.36nb3:../../multimedia/gstreamer0.10● gst-plugins0.10-base>=0.10.36nb3:../../multimedia/gst-plugins0.10-base● gstreamer1>=1.0.0:../../multimedia/gstreamer1● gst-plugins1-base>=1.0.0:../../multimedia/gst-plugins1-base● libcmis>=0.4.1:../../net/libcmis● cups>=1.5.4nb9:../../print/cups● poppler-cpp>=0.26.0:../../print/poppler-cpp● dbus>=0.91:../../sysutils/dbus● dbus-glib>=0.100nb1:../../sysutils/dbus-glib● desktop-file-utils>=0.10nb1:../../sysutils/desktop-file-utils● hunspell>=1.3.2:../../textproc/hunspell● hyphen>=2.8.6:../../textproc/hyphen● icu>=53.1:../../textproc/icu● libclucene>=2.2.0:../../textproc/libclucene● libodfgen>=0.0.3:../../textproc/libodfgen● libxslt>=1.1.28nb2:../../textproc/libxslt● redland>=1.0.16nb4:../../textproc/redland● curl>=7.35.0nb1:../../www/curl● libexttextcat>=3.2:../../textproc/libexttextcat● mythes>=1.2.2:../../textproc/mythes● neon>=0.30.0nb2:../../www/neon● gtk2+>=2.24.22nb3:../../x11/gtk2

Page 22: 140607 lib o-mini_con-ryoon

22

icu53対応

● --with-system-icuを設定しているので、git HEADからicu53対応のコードをバックポートした

● patch-i18npool_source_collator_collator__unicode.cxx● patch-i18npool_source_collator_data_zh__TW__charset.txt

など● として、外部のicu 53.xのAPI変更に追従した● http://cgit.freedesktop.org/libreoffice/core/commit/?

id=2d843bb104a3091a2ff2c7b4d5655f5fb1393a47● http://cgit.freedesktop.org/libreoffice/core/commit/i18n

pool/source/collator/collator_unicode.cxx?id=a3c627fe38236e82bc6008075d862b3cbfbd9ce3

Page 23: 140607 lib o-mini_con-ryoon

23

DragonFlyでの実際 (1/2)

● DragonFlyでは、3.6.0より前までは、独自のDPortsではなくpkgsrcを採用して来ていた

● また、GCCが4.7.3である● 以上のことより、依存するパッケージについては、あまり問題がないのではないかと予想された

● しかし、OpenJDK7 (pkgsrc/lang/openjdk7)について、RPATHあるいはLD_LIBRARY_PATHがおかしいのか、ビルドできなかった→ Javaサポートは無効にせざるを得なくなった

Page 24: 140607 lib o-mini_con-ryoon

24

DragonFlyでの実際 (2/2)

● 実際にビルドしてみた結果、依存するパッケージとLibreOfficeのいずれも、大きなエラーがなくビルドは完了した

– x11/libdrmについては、libkmsがbuildされるので、PLISTが変わるので対応した

● 動作についても、特に問題ないようだ●

● あっけなく完了

Page 25: 140607 lib o-mini_con-ryoon

25

FreeBSDでの実際 (1/3)

● C/C++コンパイラーがllvm/clangなので、GCCとの違いが全て確認され対応されているかどうか心配された

● 依存するパッケージについても、同様に心配された● pkgsrcからOpenJDK7を導入できない(bootstrap kitがない)→オフ●

● 依存するパッケージについて、変更した内容は、以下の通り

– libmwawほかのファイル形式の変換ライブラリーで、C preprocessorとして、clang -Eを呼び出しているのでclang++のみを用意しているとconfigureスクリプトが失敗してしまう→ Cコンパイラーも使うものとしておく (pkgsrcのclangサポートが良くない可能性がある)

– cups (Common UNIX Printing System)がdevel/libusb1を要求しているが、FreeBSDには移植されていない→ FreeBSDは、baseにlibusb互換のライブラリーであるlibusbを持っているので、それを使えるようなbuiltin.mkを用意した

– libmwaw-0.2.0は、clang 3.3でビルドできない。0.2.1にアップデートすることでビルドできるようになった。0.3系列も公開されているが、LibreOffice 4.2.4.2では使えない (configureスクリプトを直してもAPIが変わったようでエラーになる)

Page 26: 140607 lib o-mini_con-ryoon

26

FreeBSDでの実際 (2/3)

● LibreOffice本体をビルドするに当たって、様々なエラーに遭遇した● clang++が分からないと思って、FreeBSD Portsのパッチを見てみたが、FreeBSD PortsでのLibreOffice

は、4.1.6.2なのでそのままでは当てられない● FreeBSD Portsのパッチを参考に、以下のようにパッチを作成し直した

– patch-bridges_source_cpp__uno_gcc3__linux__intel_except.cxx– patch-bridges_source_cpp__uno_gcc3__linux__intel_share.hxx– patch-bridges_source_cpp__uno_gcc3__linux__intel_uno2cpp.cxx– patch-bridges_source_cpp__uno_gcc3__linux__x86-64_share.hxx– patch-bridges_source_cpp__uno_gcc3__linux__x86-64_uno2cpp.cxx– patch-connectivity_source_parse_sqlbison.y– patch-svtools_source_control_ctrlbox.cxx

● ただし、FreeBSDで条件分岐すべきか、clang/libc++で条件分岐すべきかを明確にできていない● clangがC/C++コンパイラーになっていないFreeBSD 9.2で試してみる必要がある●

● NetBSD 6.99 (current)は、clangでビルドし、clangを標準のC/C++コンパイラーにすることもできるので、それに対応するためと思われるパッチが既に含まれていたが、少なくともclang 3.3には不適当な内容であった

Page 27: 140607 lib o-mini_con-ryoon

27

FreeBSDでの実際 (3/3)

● ただし、FreeBSDで条件分岐すべきか、clang/libc++で条件分岐すべきかを明確にできていない

● clangがC/C++コンパイラーになっていないFreeBSD 9.2で試してみる必要がある

● NetBSD 6.99 (current)は、clangでビルドし、clangを標準のC/C++コンパイラーにすることもできるので、それに対応するためと思われるパッチが既に含まれていたが、少なくともclang 3.3には不適当な内容であった

Page 28: 140607 lib o-mini_con-ryoon

28

OpenBSDでの実際 (1/3)

● C/C++コンパイラーが、GCC 4.2.1なので、これをそのまま使うことはできない。そもそもboostもビルドできない

● そこで、Mozilla Firefoxをビルドするために、あらかじめ用意していたGCC 4.6.4を使用してみることにした

● 依存するライブラリーは、GCC 4.6.4で十分であった● しかし、LibreOffice 4.2.4.2は、pdfimport部分で、以下等

エラーが大量に発生してビルドできない

– include/c++/bits/cpp_type_traits.h:73:3: error: template with C linkage

● どう考えても、C++コンパイラーがおかしいという結論に…。Mozilla Firefoxがビルドできるくらいなので、ちゃんとしているはずなんだけれどもな…と思いつつ、GCC 4.8.2でbuildするように方針転換をした

● OpenJDK7もbootstrap kitがないのでビルドできない→オフ

Page 29: 140607 lib o-mini_con-ryoon

29

OpenBSDでの実際 (2/3)

● GCC 4.8.2については、OpenBSD Portsから必要なパッチを借りて来て、動くようにした (意味の分かっていない部分もある)

– /usr/pkg/etc/mk.confに、GCC_REQD+=4.8と書いておく

● すると、devel/libffiがビルドできない。これはPython 2.7 (lang/python27)に必要で、Python 2.7はGTK+ 2をビルドするのに必要

– https://github.com/atgreen/libffi/commit/76d19d004e36e99d261ee78261e2f52cea5e4ab1#diff-e2d5a00791bce9a01f99bc6fd613a39d の内容をpatch-aaに追加。unwindサポートの扱いが悪かったらしい

Page 30: 140607 lib o-mini_con-ryoon

30

OpenBSDでの実際 (3/3)

● Gstreamer 0.10/1もビルドできない。Gstreamerに附属のGNU libtoolやpkgsrcのGNU libtoolではビルドできない。OpenBSD附属のlibtool (Perlで書かれている)を使うとうまく行く (何が違うのかは良く調査しないといけない)

● OpenBSD附属のlibtoolを使うようにmultimedia/gst-plugin0.10-baseやgst-plugin1-baseを修正。良い方法ではないが仕方ないとしておく

● また、configureスクリプトで、以下が欠けていたので、修正 (同じビルドできない問題でオフにされていたのかも)

– build_gstreamer=yes– build_gstreamer_0_10=yes

● それ以外は、touch(1)のオプションの違いがある位で、順調に推移●

● GCC 4.8を使う範囲について、明確化していく必要がある

Page 31: 140607 lib o-mini_con-ryoon

31

pkgsrc/misc/libreoffice4

● 時間があった場合に、実際のpkgsrc/misc/libreoffice4の中身を概観します

Page 32: 140607 lib o-mini_con-ryoon

32

まとめと今後の課題

● DragonFly/amd64 3.6.0、 FreeBSD/amd64 10.0、 OpenBSD/amd64 5.5で、pkgsrcの仕組みを使ってビルドし、正常に起動し、簡単な操作はできることを確認した

● そのために必要なOpenBSDにおけるGCC 4.8の使用範囲に関する設定以外の全ての変更をpkgsrcのCVSツリーにコミットした→よって誰でも再現可能

● Javaオプションに関しては今回は有効化できなかったので、bootstrap kitの作成を学んで有効化する

● FreeBSD/amd64 10.0、OpenBSD/amd64 5.5でビルドするのに必要な変更については、git HEADをビルドしてみて、bug reportする予定 (pkgsrc-wipにはgitからソースコードをfetchしてbuildする仕組みがあるが、それは使わない予定)

● LibreOfficeのビルドの仕組みは、GNU makeで複雑に書かれているので、きちんと読み直して、理解していく必要がある

Page 33: 140607 lib o-mini_con-ryoon

33

おわり

● Upstream

– OpenJDK7 bsd-portで、rhino.jarを読み込むと、そのOpenJDK7ではLibreOfficeのJavaScriptによるscriptingの部分がコンパイルできなくなるのが当面の課題? 私はJavaScriptでマクロを書きたかったので…

– LD_LIBRARY_PATHを使わないようにならないかな…とか– *BSDのx86/x86_64以外のサポート

● pkgsrc

– ヘルプのバイナリーを持って来ているのに使ってない気がする

– Apache OpenOfficeにもトライしたい