LibreOffice 4 under NetBSD with pkgsrc


Published on

LibreOffice 4をNetBSDでビルドしました。

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

LibreOffice 4 under NetBSD with pkgsrc

  1. 1. LibreOffice 4 under NetBSD (with pkgsrc) Ryo ONODERA <> 2013-11-18 関東LibreOfficeオフラインミーティング#10
  2. 2. Who am I? ● Name: Ryo ONODERA ● E-mail: / ● Twitter: @ryo_on ● 2010年からpkgsrc developerをしています。 ● ● 2013-09-15からLibreOfficeをNetBSDで動かせるようにpkgsrcに 入れる作業をしています。 で メ ン テナンスしているパッケージを見ることができます。(これ以外 にもアップデートしていますが) 2
  3. 3. Abstract ● ● ● ● ● NetBSD/amd64とNetBSD/i386でLibreOfficeをbuildし た状況を報告します。どちらのプラットフォームでもbuild はできました。 buildの手順を共有するために、NetBSDの標準パッケージ管 理フレームワークであるpkgsrcを使いました。 NetBSD 6.*では正常に動いています。NetBSD 5.2は設定 ウィンドウを表示させようとするとクラッシュします。をpkgsrcにインポートした後、がリリースさ れたのでアップデートしました。 今は、にしてあります。 3
  4. 4. What is NetBSD? ● ● BSD (Berkeley System Distribution)と呼ばれる、AT&T UNIXへ の追加ソフトウェアの形で始められたものの末裔の一つです。 NetBSDの他にも以下のようなものなどがあります。 – – OpenBSD – DragonFly – ● FreeBSD MirBSDなどなど こ れ ら は 独 自 の カ ー ネ ル を 持 っ て お り 、 Linux デ ィ ス ト リ ビューションのような関係ではありません。 4
  5. 5. What is pkgsrc? ● ● FreeBSD Portsを元にNetBSDに移植したものが最初です。 現在は21種のプラットフォームに移植されています(pkgsrc-2013Q3の アナウンスより)。 – ● ● AIX, BSD/OS, Cygwin, OS X, DragonFly, FreeBSD, FreeMiNT, GNU/kFreeBSD, HP-UX, Haiku, IRIX, Interix/SFU/SUA, Linux, Minix3, MirBSD, NetBSD, OSF1, OpenBSD, QNX, Solaris/illumos, UnixWare pkgsrc/category/packagename ディレクトリーで、make installと実行 することによって、ソースの取得からビルド、インストールまで実行 できます。 四半期に1回安定板をリリースしていて、9月30日にpkgsrc-2013Q3ブ ランチができました。 5
  6. 6. 典型的なpkgsrcのファイル ● cat Makefile ● DISTNAME= ● CATEGORIES= ● MASTER_SITES= ${MASTER_SITE_XORG:=app/} ● EXTRACT_SUFX= .tar.bz2 ● xauth-1.0.8 ● x11 MAINTAINER= ● HOMEPAGE= ● ● COMMENT= X authentication utility ● ● ● $NetBSD: distinfo,v 1.5 2013/10/11 20:36:20 wiz Exp $ ● ● ● cat distinfo ● ● SHA1 (xauth-1.0.8.tar.bz2) = 481d42acbfe30f8593be07d70c258b18f8c877db RMD160 (xauth-1.0.8.tar.bz2) = f0bcd17d10d5dd7cec0825298403fecb9d29dff5 Size (xauth-1.0.8.tar.bz2) = 146794 bytes ● GNU_CONFIGURE= USE_TOOLS+= yes ● pkg-config ● ● ● .include "../../x11/libXext/" ● .include "../../x11/libXmu/" ● .include "../../mk/" cat PLIST @comment $NetBSD: PLIST,v 1.2 2013/10/11 20:36:20 wiz Exp $ ● bin/test_xauth ● bin/xauth ● man/man1/xauth.1 6
  7. 7. llibreoffice4のファイル # $NetB SD: Makefi le,v 1.6 2013/11/03 03:40:49 ryoon E xp $ V ER= 4. 1.3.2 DISTNA M =libreoff ice-${V ER} E P KGNA M =libreoff ice4-${VE R} E CAT GORIE S=misc E MAS T R_SITE S= http: //download. ibreoffice/src/4.1.3/ E E XT CT_S UFX= . tar.xz RA MAINT INER= ryoon@NetB A HOMEP AGE = http: // COMM NT= Office productivi ty suit e, 4.x branch E LI CE NS E= gnu-lgpl-v3 # Wit h -O2, when preference window i s opened, soffice.bin crashes with S IGFPE . .include "../. ./mk/" .if !empty(MACHINE _P LA T FORM:M NetB S D-5.*) B UILDLINK _TRANSFORM rename:-O2: -O += .endif # LibreOfice's M akefile has its own pararell build mechanism. A void conflict. MAK E_JOBS _S A F no E= CHE CK _S HLIB S_SUPP ORTED= no DIST_S UB DI R=li breoff ice P YT HON_VE RSIONS _A CCE P T D= 33 E LO_B OOT T P= ${DI STNAME} S RA LO_COMP ONE NTS= dict ionari es hel p translati ons DISTF ILES += ${LO_B OOTST P}${E XTRA CT_S UFX } RA E XT CT_ONLY= ${LO_B OOTSTRA P}${E X T CT UFX } RA RA _S .for com ponent in ${LO_COM ONE NT P S} DISTF ILES += l ibreoff ice-${component}-${V ER}.tar.xz E XT CT_ONLY+= RA libreoff ice-${component}-${V ER}.t ar.xz .endfor MORE_DIS T FILES = 0168229624cfac409e766913506961a8-ucpp-1.3. 2.tar.gz 0279a21fab6f245e85a6f 85f ea54f511-source-code-font-1.009.t ar.gz 0be45d54cc5e1c2e3102e32b8c190346-liberation-fonts-ttf -1.07.1.tar.gz 5c781723a0d9ed6188960defba8e91cf-liberati on-fonts-ttf-2.00.1.t ar.gz 1756c4fa6c616ae15973c104cd8cb256-Adobe-Core35_A F s-314.t ar.gz M 1e9ddfe25ac9577da709d7b2ea36f939-source-sans-font-1.036.tar.gz 1f 24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz 2a177023f9ea8ec8bd00837605c5df 1b-jakarta-tomcat-5.0. 30-src. tar. gz 625ff5f2f 968dd908bca43c9469d6e6b-com mons-l ang-2.4-src.t ar.gz 2c9b0f83ed5890af02c0df1c1776f 39b-com mons-httpcli ent -3.1-src.tar.gz 3404ab6b1792ae5f16bbd603bd1e1d03-libf ormula-1. 1.7.zi p 35efabc239af896dfb79be7ebdd6e6b9-gent 3bdf40c0d199af31923e900d082ca2dd-libfonts-1. 1.6.zi p 3c219630e4302863a9a83d0ef de889db-commons-logging-1.1.1-src. tar. gz 46e92b68e31e858512b680b3b61dc4c1-m ythes-1.2. 3.t ar.gz 36271d3fa0d9dec1632029b6d7aac925-libl angtag-0. 5.1.tar.bz2 7a15edea7d415ac5150ea403e27401fd-open-sans-font -ttf-1.10.tar.gz 8ce2f cd72becf 06c41f7201d15373ed9-l 97b2d4dba862397f446b217e2b623e71-libl oader-1.1.6. zip b85436266b2ac91d351ab5684b181151-libwpg-0.2.2.tar.bz2 a2f6010987e1c601274ab5d63b72c944-hyphen-2.8.4.tar.gz a7983f859eafb2677d7ff386a023bc40-xsltml_2.1. ace6ab49184e329db254e454a010f56d-libxm -1.1.7. zip l 2e482c7567908d334785ce7d69ddff f7-comm ons-codec-1. 6-src.tar.gz b2371dc7cf 4811c9d32146eec913d296-libcm s-0.3.0.tar.gz i c3c1a8ba7452950636e871d25020ce0d-pt-serif-font-1.0000W.tar.gz 46eb0e7f213ad61bd5dee0c494132cb0-libwps-0. 2.9.tar.bz2 db60e4fde8dd6d6807523deb71ee34dc-libl ayout-0.2.10.zi p d8bd5eed178db6e2b18eeed243f85aa8-flut e-1.1.6.zi p e7a384790b13c29113e22e596ade9687-LinLibert ea570af93c284aa9e5621cd563f54f4d-bsh-2.0b1-src.tar.gz eeb2c7ddf0d302f ba4bfc6e97eac9624-l ibbase-1.1.6. zip f872f4ac066433d8ff92f5e316b36f f9-dej f94d9870737518e3b597f9265f 4e9803-l ibserializer-1.1. libcdr-0.0.14.tar.bz2 libm spub-0. 0.6.tar.bz2 8473296c671b6e3dd8197f4145e0854b-libodfgen-0.0.2.tar.bz2 b63e6340a02ff 1cacf eadb2c42286161-JLanguageT ool-1.7.0.tar.bz2 05f84c95b610c21c5fd510d10debcabf-mari adb-native-client-1.0.0.tar.bz2 08c85a6d6d793daee14e10e22eefdc4b-m dds_0.8.1. tar.bz2 ea91f 2fb4212a21d708aced277e6e85a-vigra1. 4.0.tar.gz 185d60944ea767075d27247c3162b3bc-unowinreg.dll # libm waw-0. 1.10.t ar.bz2 # 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0. zip # ac4781e01619be13461bb2d562b94a7b-cppunit-1.13.1.tar.gz # ea2acaf 140ae40a87a952caa75184f 4d-liborcus-0.5.1.tar.bz2 # 26b3e95ddf 3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz # libvisio-0.0. 28. tar.bz2 # 972afb8fdf02d9e7517e258b7fa7f0eb-libwpd-0.9.8.tar.bz2 # ae330b9493bd4503ac390106f f6060d7-libextt extcat-3.4.3. tar. bz2 .for md in ${M ORE_DIS T FILE S} DISTF ILES += ${m d} S IT S.${md}= E http: //dev-www. libreoff .endfor DISTF ILES +=e7a384790b13c29113e22e596ade9687-LinLiberti neG-20120116. zip ● Makefileのみ左側に掲載し ましたが、非常に長いので 見えません。 S IT S.e7a384790b13c29113e22e596ade9687-LinLiberti neG-20120116. zip=htt p:// www. num E linux/ DISTF ILES +=185d60944ea767075d27247c3162b3bc-unowi nreg.dll S IT S.185d60944ea767075d27247c3162b3bc-unowi nreg.dl l=http: // extern/ E .include "options. m k" .include "../. ./mk/" # tar: Invalid header, starting valid header search. E XT CT_USI NG= RA WRK SRC= gtar ${WRK DIR}/${LO_BOOT T S RAP } B UILD_DE PE NDS += p5-A rchive-Zip-[0-9]*:. ./../ archivers/p5-Archi ve-Z ip # dm ake script s use relative path with -rpath-l ink ld argument s, whi ch # is a no-go wi th norm pkgsrc wrappers. al # dm ake is slowl y beeing removed from the LibreOf fice build process # and thi s option wil l hopef ully becom unneeded in the f uture e WRA PP E R_SK IP _T NS F RA ORM =yes USE _LA NGUA GE S+= USE _LI BTOOL= c c++ yes # GUN t ar i s real ly needed. S ome Makefil es depends on GNUTAR. USE _T OOLS += autom ake bash bison gmake gt ar perl pkg-config unzip zip PT HRE AD_OP T += S require HAS _CONF IGURE = yes # Do not use /t m outsi de of WRK SRC. p, CONF IGURE _E NV += T P DIR=${WRK SRC}/ tmp M CONF IGURE _A RGS+= --prefix=${DE S T DIR}${P RE F X}/ ${P KGNA ME_NOREV } I CONF IGURE _A RGS+= --disable-ccache CONF IGURE _A RGS+= --disable-dbus CONF IGURE _A RGS+= CONF IGURE _A RGS+= CONF IGURE _A RGS+= --disable-epm --disable-fetch-external --disable-gconf CONF IGURE _A RGS+= --disable-gnom s e-vf CONF IGURE _A RGS+= --disable-kde4 CONF IGURE _A RGS+= CONF IGURE _A RGS+= --disable-lockdown --disable-odk CONF IGURE _A RGS+= --disable-opengl CONF IGURE _A RGS+= --disable-randr-l ink CONF IGURE _A RGS+= --disable-systray # Enabli ng crashrep causes error. Non-offi cial build does not need it. CONF IGURE _A RGS+= --disable-crashdump CONF IGURE _A RGS+= --enabl e-ext-presenter-m inimizer # Enabli ng GIO causes error. losessioninstal ponent not found. CONF IGURE _A RGS+= CONF IGURE _A RGS+= --disable-gio --enabl e-gstreamer CONF IGURE _A RGS+= --enabl e-gtk3 CONF IGURE _A RGS+= --enabl e-l ockdown CONF IGURE _A RGS+= CONF IGURE _A RGS+= --enabl e-odk --enabl e-python=system #CONF GURE _ARGS += --enabl e-release-build I CONF IGURE _A RGS+= --enabl e-ext-wiki-publi sher CONF IGURE _A RGS+= --enabl e-ext-nlpsol ver CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-alloc=system --wi th-compat-oowrappers CONF IGURE _A RGS+= --wi th-ext ernal-t ar=${DISTDIR}/${DIS T UBDIR} _S CONF IGURE _A RGS+= --wi th-f onts CONF IGURE _A RGS+= CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-l ang="ALL" --wi th-myspell-dict s --wi th-parallelism =${MAK E _JOB S:Q} CONF IGURE _A RGS+= --wi th-system-clucene CONF IGURE _A RGS+= --wi th-system-li bxml CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-system-boost --wi th-boost-libdir=${B UILDLINK_PREFIX .boost-libs}/ lib CONF IGURE _A RGS+= --wi th-system-cairo CONF IGURE _A RGS+= --wi th-system-curl CONF IGURE _A RGS+= CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-system-dicts --wi th-system-expat --wi th-system-harfbuzz CONF IGURE _A RGS+= --wi th-system-hunspel l CONF IGURE _A RGS+= --wi th-system-icu CONF IGURE _A RGS+= CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-system-jars --wi th-system-jpeg --wi th-system-lcm s2 CONF IGURE _A RGS+= --wi th-system-li bexttextcat CONF IGURE _A RGS+= --wi th-system-li bpng CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-system-li bvi sio --wi th-system-li bwpd CONF IGURE _A RGS+= --wi th-system-li bxml CONF IGURE _A RGS+= --wi th-system-lpsolve CONF IGURE _A RGS+= CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-system-mesa-headers --wi th-system-nss --wi th-system-openldap CONF IGURE _A RGS+= --wi th-system-openssl CONF IGURE _A RGS+= --wi th-system-li bmwaw CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-system-orcus --wi th-system-poppler CONF IGURE _A RGS+= --wi th-system-post gresql CONF IGURE _A RGS+= --wi th-system-redland CONF IGURE _A RGS+= CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi th-system-neon --wi th-system-zlib --wi thout-system-beanshell # internal vi gra should be used for effective developement. CONF IGURE _A RGS+= CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi thout-system-vigra --wi th-vendor="pkgsrc" --wi thout-doxygen CONF IGURE _A RGS+= --wi thout-junit CONF IGURE _A RGS+= --wi thout-krb5 CONF IGURE _A RGS+= CONF IGURE _A RGS+= --wi thout-gssapi --wi thout-system-apache-com mons CONF IGURE _A RGS+= --wi th-system-cppunit CONF IGURE _A RGS+= --wi thout-system-jf reereport # internal sane should be used for effective developement. CONF IGURE _A RGS+= --wi thout-system-sane CONF IGURE _A RGS+= --wi thout-system-servl et-api # m REP LA CE_PE RL are needed. ore REP LA CE _P E RL=sd/res/ webvi ew/ REP LA CE _P E RL+= sd/res/ webview/ REP LA CE _P E RL+= sd/res/ webview/savepic. pl REP LA CE _P E RL+= sd/res/ webview/ REP LA CE _P E RL+= sd/res/ webview/ LO_P ROGRA MS= sbase scalc sdraw simpress sm soffi ce swriter ath # Base depends on java, we don't i nst all t he icon LO_DES K T OP_F ILES = calc.desktop draw.desktop im press.desktop math.desktop st artcent er.desktop writer.desktop CONF IGURE _S CRIP T = ./ MAK E_ENV+= ROOT_USE R=${ROOT_USE R} MAK E_ENV+= ROOT_GROUP =${ROOT _GROUP } B UILD_M KE _F GS += VE RB OSE =yes A LA B UILD_T RGE T A = dev-install B UILDLINK _TRANSFORM rm -ldl += : INSTALLA T ION_DIRS = bin share/applicati ons post-extract : ${M DIR} -p ${WRK SRC}/src K .for md in ${M ORE_DIS T FILE S} ${LN} -s ${DIS T DIR}/${DIS T _SUB DIR}/${m ${WRK S RC}/src/${m d} d} .endfor mkdir ${WRKS RC}/tm p do-instal l: cd ${WRKS RC} && make install post-i nst all: .for f i n ${LO_P ROGRA M } S cd ${DE STDIR}${P RE F }/bin & & ${LN} -s ../${PK GNA M _NORE V }/program ${f} IX E / .endfor .for f i n ${LO_DE SK T OP_F ILES } cd ${DE STDIR}${P RE F }/share/applications & & ${LN} -s ${DES T IX DIR}${PREFIX }/${PK GNA M _NORE V}/share/ xdg/${f} E .endfor .include "../. ./convert ers/ libvisi o/buil dlink3. m k" .include "../. ./convert ers/ libwpd/" .include "../. ./convert ers/ libwpg/" .include "../. ./convert ers/ libwps/" .include "../. ./convert ers/ libmwaw/" .include "../. ./convert ers/ orcus/ bui ldl" .include "../. ./databases/ db4/buildlink3. m k" .include "../. ./databases/ openldap-cl ient/buildl" .include "../. ./databases/ shared-mime-info/buil" .include "../. ./databases/ uni xodbc/" .include "../. ./mk/pgsql.buildlink3. m k" .include "../. ./devel/boost-libs/buil dli nk3.m k" .include "../. ./devel/cppunit/ bui ldli" .include "../. ./devel/gperf /buildl" .include "../. ./devel/li bexeci nfo/" .include "../. ./devel/nss/buil" .include "../. ./devel/zlib/buil" .include "../. ./fonts/fontconfi g/buildlink3.m k" .include "../. ./fonts/harfbuzz/buildl" .include "../. ./mk/j peg.buildl" .include "../. ./graphics/cairo/buildl" .include "../. ./graphics/freetype2/buil dlink3. m k" .include "../. ./graphics/gdk-pixbuf2-xlib/ buil dlink3.m k" .include "../. ./graphics/lcm s2/buildlink3.m k" .include "../. ./graphics/librsvg/buil dli nk3.m k" .include "../. ./graphics/png/buil" #. incl ude ".. /../graphi cs/sane-backends/bui ldli" #. incl ude ".. /../graphi cs/vigra/buildlink3.m k" .include "../. ./lang/python/appli cat" .include "../. ./math/lp_solve/buildl" .include "../. ./mult im edia/gstream er0.10/bui ldli" .include "../. ./mult im edia/gst-pl ugi ns0.10-base/buildl" .include "../. ./mult im edia/gstream er1/buildli" .include "../. ./mult im edia/gst-pl ugi ns1-base/buildl" .include "../. ./print /cups/buil" .include "../. ./print /poppler-cpp/ bui ldl" .include "../. ./print /poppler-includes/buil dlink3. m k" .include "../. ./sysutils/deskt op-file-ut ils/" .include "../. ./textproc/expat /buildl" .include "../. ./textproc/hunspell /" .include "../. ./textproc/icu/buildlink3. m k" .include "../. ./textproc/libclucene/bui ldli nk3.m k" .include "../. ./textproc/libxml2/buil dli nk3.m k" .include "../. ./textproc/libxsl t/buildlink3. m k" .include "../. ./textproc/redland/buil dli nk3.m k" .include "../. ./textproc/libext textcat/" .include "../. ./textproc/m ythes/buil dli nk3.m k" .include "../. ./www/curl/buil" .include "../. ./www/neon/buildl" .include "../. ./x11/ gtk2/" .include "../. ./x11/ gtk3/" .include "../. ./x11/ libX 11/buildl" .include "../. ./x11/ libX cursor/buildlink3. m k" .include "../. ./x11/ libX ext/buildlink3. m k" .include "../. ./x11/ libX fixes/ bui ldli" .include "../. ./x11/ libX i/buildlink3. m k" .include "../. ./x11/ libX inerama/ bui ldl" .include "../. ./x11/ libX randr/ bui ldli" .include "../. ./x11/ libX render/buildlink3. m k" .include "../. ./x11/ libX t/buildlink3. m k" .include "../. ./mk/dlopen. bui ldli" .include "../. ./mk/pthread.buildl" .include "../. ./mk/" 7
  8. 8. build方法について ● ● 関東LibreOfficeオフラインミーティング#8でも、ご紹介されていたWikiのページ を参考にしました。 今回は、のtar ballからbuildすることにしました。 – – libreoffice-help- – ● libreoffice-dictionaries- – ● libreoffice- libreoffice-translations- pkgsrcには、libreoffice 3系統のパッケージがあったので、基本的な所は流用する ことにします (pkgsrc/misc/libreoffice、pkgsrcl/wip/libreoffice、pkgsrc/wip/libreoffice-devel)。 NetBSD/amd64 6.99.23 (current)でbuildを進めて、他のプラットフォームでも確 認することにしました。 8
  9. 9. autogen.shの研究 ● ● ● ● 要するに、configure.acからconfigureを生成し て、configureを実行している。 autogen.shに渡したオプションは、configureに渡される。 pkgsrc的には、 HAS_CONFIGURE=yes CONFIGURE_SCRIPT=./ のように指定する。 configureはautogen.shに再生成される。 9
  10. 10. configureの研究 ● まずは、どのようなオプションがあるのか、./configure –helpをしてみました。 – configure自体は、GNU Autotoolsで生成されているが、念のため GNU_CONFIGURE=yesではなく、HAS_CONFIGUREにしている(autogen.sh経由で 呼んでいるので)。 – 様々なLibreOffice特有のオプションがあるのが分かる(--disable-odk などなど)。 --with-system-*が山ほどある。あるライブラリーをinternal/externalどちらを使える か選べる。 ● --disable-fetch-external でビルド中のtar ballのダウンロードを無効にでき る。pkgsrc的には全てのtar ballを事前に用意しておくことになるので活用する。 続いて、configureの中身を覗いてみる。 ● ● – bashを前提にした箇所(testで比較に=の代わりに==を使っている)があるのでpatchを 作成する。 10
  11. 11. 試行1回目 ● ● ● ● harfbuzzがicuサポートを持っていないといけない。pkgsrcではデフォルト では有効でないので、有効化した。pkgsrcのharfbuzzのデフォルトも変更 する必要あり(pkgsrcへのインポートの際にharfbuzzのデフォルトのオプ ションを変更しました)。 make buildを実行してみると、configureスクリプトは無事終了するが、そ の後、tar ballが足らないというメッセージが1つ出て終了する。 言われたものを使うように設定するが、1回のmake buildで1種類しか警告 してくれない→1回に15分以上かかるので、全く進まない。 警告されたファイル名でgrep -Rしてみると、download.lstというファイル に書かれていることが分かりました。 11
  12. 12. 修正1回目 ● ● ● ● ● 本当はいろいろ試行錯誤した訳ですが、それを全てまとめて書き ます。 download.lstを見て、使用するtar ballを追加すると同時に、一部 のものは、pkgsrcから使うように設定しました(つまり—withsystem-*を設定する)。 prefixも/usr/pkg/libreoffice4-を指定した。 tar ballの展開にBSD tar/GNU tarが必要だった。ビルドにもGNU tarが必要になるので、GNU tarで統一することにしました。 この時点では気付きませんでしたが、Javaサポートがtypoのせい で無効になっていました…。 12
  13. 13. 試行2回目 ● ● ● ● ● ● ● 何回かエラーで停止しては手直しをしていきました。 e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zipも必 要。 からダウンロードするようにする。 一時ファイルが/tmpに作られるようになっていたので、pkgsrcの作業領域内で作業するよう に指定した。CONFIGURE_ENV+=TMPDIR=${WRKSRC}/tmp NetBSDでパッチを当てないとビルドできないexternalライブラリーを—with-system-*化する (うまくやれば、internal libraryのbuildの際にもpatchは当てられるのが今は分かっています)。 一部の機能は、無効化した。--disable-crashdumpや--disable-gio(これは losessioninstall.componentが見付からないというエラーを直せなかったので) saneとvigreはexternalライブラリーにする意味がないらしいとArch LinuxのPKGBUILDで見た のでinternalライブラリーを使うように修正しました。 doxygenも使わないので無効化しました。 13
  14. 14. エラーとパッチの作成 ● ● やっと本格的にビルドが進むようになりました。 エラーが発生した。configureオプションでどうにもできないので、パッチ を作って対応しました。 – – ● rscというコマンドが-pthreadというオプションを受け取れないらしい。 CFLAGSがそのまま渡っているのを修正。patches/ ファイルのinstallコマンドによるコピー時に、root/rootを想定している 箇所があるので、ローカルユーザー権限を使用するように修 正。patches/ ライブラリーの中でエラーになったものは、--with-system-*に変更しまし た。ライブラリーのビルドの直前でtar ballが展開されるので、pkgsrcの仕 組みではパッチを当てられないため。後になってうまくやればできそうな ことを発見しましたが… 14
  15. 15. ビルド1回目 ● ● ● ここまでで、Javaと言語パックのない(言語パックとして は、en_USのみ)LibreOfficeが作成されました。 pkgsrcはインストールするファイルをPLISTファイルに列 挙しているので、それを作成し、インストールしました。 ウィンドウサイズがおかしいが、起動し、正常そうに動作 しているのを確認できました。 15
  16. 16. ビルド2回目 ● ● ● ● ● ● Javaサポートが有効になっていないのを、この時発見しました。コピー&ペー スト間違い。 --with-javaでビルドしてみるが、hsqldbのビルドで失敗する。 OpenJDK7を使っているのが問題らしい。hsqldb-1.8.xはJava 7に対応していな い。 --with-hsqldb-jar=/path/to/hsqldb.jarを指定して回避した。hsqljdbc.jarとかは必 要ないので、hsqldb-1.8.10の公式配布物を使えば良い。 185d60944ea767075d27247c3162b3bc-unowinreg.dll はNetBSDでも必 要。 から入手するように設定。 Javaサポートを有効にした時点で、約5時間程度のビルド所要時間になりまし た(Core i5 4-core 1.7GHz、RAM 4GB、SSD)。 16
  17. 17. ビルド3回目 ● ● ここで、言語パックをビルドすることにしました。 どの言語をビルドすべきかは分からないので全てをビルド することにしました。 ● --with-lang=””を--with-lang=”ALL”に変更しただけ。 ● ビルドに9時間かかるようになりました。 ● できたLibreOfficeは、locale (ja_JP-UTF-8)を見て、自動的 に日本語UIになるようになりました。 17
  18. 18. 課題1 ● ● ● RPATHが正常に設定されない。pkgsrcのdeveloper mode (PKG_DEVELOPER=yesな環境)では、リンクがおかしいと エラーになる。→CHECK_SHLIBS_SUPPORTED=noで対 応。相当がんばらないと直らないのではないか? pkgsrcの持っているmake -j Nの設定とLibreOfficeのビルド システムのパラレルビルドの仕組みが噛み合わな い。MAKE_JOBS_SAFE=noで対応。しかし、これは、本来 はmake -j 1しか対応していないMakefileのためのものなの で、良くない。 ビルド時間短縮のためには、使えるexternalライブラリーを 増やすことが必要となる。 18
  19. 19. 課題2 ● ● ● DragonFly、FreeBSD、OpenBSDでもbuildしたいと思いました が、libreoffice4にたどり着く前に、さまざまなパッケージを直さない といけないので、まだできていません。 →途中で、CentOS/x86_64 5.10でのbinary packagesの作成を始めてし まったので、進んでいません… →DragonFly/i386 3.4.3で近々検証予定です。 NetBSD 5.2では、SIGFPEは直りましたが、同じ箇所でSIGSEGVによ りクラッシュする問題があります(。→boostとgccとlibvclloの 組み合わせがいけないような… → どうやってもうまく行く組み合わせが見付けられないので、中断。 Microsoft PowerPointで作ったファイルの一部が開けない事があるのは 確認していますが、公開できるファイルでないので、どうやって、bug reportしたら良いのか… 19
  20. 20. ライセンス ● This article is licensed under CC-BY 3.0 Unported. See 20
  21. 21. おしまい 21