LibreOffice 4 under NetBSD
(with pkgsrc)

Ryo ONODERA
<ryoon@NetBSD.org>
2013-11-18
関東LibreOfficeオフラインミーティング#10
Who am I?
●

Name: Ryo ONODERA

●

E-mail: ryo_on@yk.rim.or.jp / ryoon@NetBSD.org

●

Twitter: @ryo_on

●

2010年からpkgsrc developerをしています。

●

●

2013-09-15からLibreOfficeをNetBSDで動かせるようにpkgsrcに
入れる作業をしています。
http://pkgsrc.se/bbmaint.php?maint=ryoon@NetBSD.org で メ ン
テナンスしているパッケージを見ることができます。(これ以外
にもアップデートしていますが)
2
Abstract
●

●

●

●

●

NetBSD/amd64とNetBSD/i386でLibreOffice 4.1.1.2をbuildし
た状況を報告します。どちらのプラットフォームでもbuild
はできました。
buildの手順を共有するために、NetBSDの標準パッケージ管
理フレームワークであるpkgsrcを使いました。
NetBSD 6.*では正常に動いています。NetBSD 5.2は設定
ウィンドウを表示させようとするとクラッシュします。
4.1.1.2をpkgsrcにインポートした後、4.1.2.3がリリースさ
れたのでアップデートしました。
今は、4.1.3.2にしてあります。
3
What is NetBSD?
●

●

BSD (Berkeley System Distribution)と呼ばれる、AT&T UNIXへ
の追加ソフトウェアの形で始められたものの末裔の一つです。
NetBSDの他にも以下のようなものなどがあります。
–
–

OpenBSD

–

DragonFly

–
●

FreeBSD

MirBSDなどなど

こ れ ら は 独 自 の カ ー ネ ル を 持 っ て お り 、 Linux デ ィ ス ト リ
ビューションのような関係ではありません。

4
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
典型的なpkgsrcのファイル
●

cat Makefile

●

DISTNAME=

●

CATEGORIES=

●

MASTER_SITES=

${MASTER_SITE_XORG:=app/}

●

EXTRACT_SUFX=

.tar.bz2

●

xauth-1.0.8

●

x11

MAINTAINER=

joerg@NetBSD.org

●

HOMEPAGE=

●

http://xorg.freedesktop.org/

●

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/buildlink3.mk"

●

.include "../../x11/libXmu/buildlink3.mk"

●

.include "../../mk/bsd.pkg.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
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. documentfoundation.org/l ibreoffice/src/4.1.3/
E
E XT CT_S UFX= . tar.xz
RA
MAINT INER= ryoon@NetB SD.org
A
HOMEP AGE = http: //www.li breoffice.org/
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/bsd.prefs.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 
35c94d2df8893241173de1d16b6034c0-swingExSrc.zip 
35efabc239af896dfb79be7ebdd6e6b9-gent iumbasic-fonts-1.10.zip 
39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip 
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 
798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip 
7a15edea7d415ac5150ea403e27401fd-open-sans-font -ttf-1.10.tar.gz 
8ce2f cd72becf 06c41f7201d15373ed9-l ibrepository-1.1.6.zip 
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. 2.zip 
ace6ab49184e329db254e454a010f56d-libxm -1.1.7. zip 
l
2e482c7567908d334785ce7d69ddff f7-comm
ons-codec-1. 6-src.tar.gz 
ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip 
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 ineG-20120116.zip 
ea570af93c284aa9e5621cd563f54f4d-bsh-2.0b1-src.tar.gz 
eeb2c7ddf0d302f ba4bfc6e97eac9624-l ibbase-1.1.6. zip 
f872f4ac066433d8ff92f5e316b36f f9-dej avu-fonts-ttf-2.33.zip 
f94d9870737518e3b597f9265f 4e9803-l ibserializer-1.1. 6.zip 
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 ice.org/src/

.endfor
DISTF
ILES +=e7a384790b13c29113e22e596ade9687-LinLiberti neG-20120116. zip

●

Makefileのみ左側に掲載し
ましたが、非常に長いので
見えません。

S IT S.e7a384790b13c29113e22e596ade9687-LinLiberti neG-20120116. zip=htt p:// www. num
E
bertext.org/ linux/
DISTF
ILES +=185d60944ea767075d27247c3162b3bc-unowi nreg.dll
S IT S.185d60944ea767075d27247c3162b3bc-unowi nreg.dl l=http: //download.go-oo.org/ extern/
E
.include "options. m
k"
.include "../. ./mk/bsd.prefs.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 l.com
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/editpic.pl
REP LA CE _P E RL+= sd/res/ webview/poll.pl
REP LA CE _P E RL+= sd/res/ webview/savepic. pl
REP LA CE _P E RL+= sd/res/ webview/show.pl
REP LA CE _P E RL+= sd/res/ webview/webview.pl
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
=

./autogen.sh

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/buildlink3.mk"
.include "../. ./convert ers/ libwpg/buildlink3.mk"
.include "../. ./convert ers/ libwps/buildlink3.mk"
.include "../. ./convert ers/ libmwaw/buildlink3.mk"
.include "../. ./convert ers/ orcus/ bui ldl ink3.mk"
.include "../. ./databases/ db4/buildlink3. m
k"
.include "../. ./databases/ openldap-cl ient/buildl ink3.mk"
.include "../. ./databases/ shared-mime-info/buil dlink3.mk"
.include "../. ./databases/ uni xodbc/buildlink3.mk"
.include "../. ./mk/pgsql.buildlink3. m
k"
.include "../. ./devel/boost-libs/buil dli nk3.m
k"
.include "../. ./devel/cppunit/ bui ldli nk3.mk"
.include "../. ./devel/gperf /buildl ink3.mk"
.include "../. ./devel/li bexeci nfo/buildlink3.mk"
.include "../. ./devel/nss/buil dlink3.mk"
.include "../. ./devel/zlib/buil dlink3.mk"
.include "../. ./fonts/fontconfi g/buildlink3.m
k"
.include "../. ./fonts/harfbuzz/buildl ink3.mk"
.include "../. ./mk/j peg.buildl ink3.mk"
.include "../. ./graphics/cairo/buildl ink3.mk"
.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 dlink3.mk"
#. incl ude ".. /../graphi cs/sane-backends/bui ldli nk3.mk"
#. incl ude ".. /../graphi cs/vigra/buildlink3.m
k"
.include "../. ./lang/python/appli cat ion.mk"
.include "../. ./math/lp_solve/buildl ink3.mk"
.include "../. ./mult im
edia/gstream
er0.10/bui ldli nk3.mk"
.include "../. ./mult im
edia/gst-pl ugi ns0.10-base/buildl ink3.mk"
.include "../. ./mult im
edia/gstream
er1/buildli nk3.mk"
.include "../. ./mult im
edia/gst-pl ugi ns1-base/buildl ink3.mk"
.include "../. ./print /cups/buil dlink3.mk"
.include "../. ./print /poppler-cpp/ bui ldl ink3.mk"
.include "../. ./print /poppler-includes/buil dlink3. m
k"
.include "../. ./sysutils/deskt op-file-ut ils/ desktopdb.mk"
.include "../. ./textproc/expat /buildl ink3.mk"
.include "../. ./textproc/hunspell /buildlink3.mk"
.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/buildlink3.mk"
.include "../. ./textproc/m
ythes/buil dli nk3.m
k"
.include "../. ./www/curl/buil dlink3.mk"
.include "../. ./www/neon/buildl ink3.mk"
.include "../. ./x11/ gtk2/buildlink3.mk"
.include "../. ./x11/ gtk3/buildlink3.mk"
.include "../. ./x11/ libX 11/buildl ink3.mk"
.include "../. ./x11/ libX cursor/buildlink3. m
k"
.include "../. ./x11/ libX ext/buildlink3. m
k"
.include "../. ./x11/ libX fixes/ bui ldli nk3.mk"
.include "../. ./x11/ libX i/buildlink3. m
k"
.include "../. ./x11/ libX inerama/ bui ldl ink3.mk"
.include "../. ./x11/ libX randr/ bui ldli nk3.mk"
.include "../. ./x11/ libX render/buildlink3. m
k"
.include "../. ./x11/ libX t/buildlink3. m
k"
.include "../. ./mk/dlopen. bui ldli nk3.mk"
.include "../. ./mk/pthread.buildl ink3.mk"
.include "../. ./mk/bsd.pkg.mk"

7
build方法について
●

●

関東LibreOfficeオフラインミーティング#8でも、ご紹介されていたWikiのページ
を参考にしました。
https://wiki.documentfoundation.org/Development/BuildingOnLinux
今回は、4.1.1.2のtar ballからbuildすることにしました。
–
–

libreoffice-help-4.1.1.2.tar.xz

–

●

libreoffice-dictionaries-4.1.1.2.tar.xz

–

●

libreoffice-4.1.1.2.tar.xz

libreoffice-translations-4.1.1.2.tar.xz

pkgsrcには、libreoffice 3系統のパッケージがあったので、基本的な所は流用する
ことにします
(pkgsrc/misc/libreoffice、pkgsrcl/wip/libreoffice、pkgsrc/wip/libreoffice-devel)。
NetBSD/amd64 6.99.23 (current)でbuildを進めて、他のプラットフォームでも確
認することにしました。

8
autogen.shの研究
●

●

●

●

要するに、configure.acからconfigureを生成し
て、configureを実行している。
autogen.shに渡したオプションは、configureに渡される。
pkgsrc的には、
HAS_CONFIGURE=yes
CONFIGURE_SCRIPT=./autogen.sh
のように指定する。
configureはautogen.shに再生成される。

9
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
試行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
修正1回目
●

●

●

●

●

本当はいろいろ試行錯誤した訳ですが、それを全てまとめて書き
ます。
download.lstを見て、使用するtar ballを追加すると同時に、一部
のものは、pkgsrcから使うように設定しました(つまり—withsystem-*を設定する)。
prefixも/usr/pkg/libreoffice4-4.1.1.2を指定した。
tar ballの展開にBSD tar/GNU tarが必要だった。ビルドにもGNU
tarが必要になるので、GNU tarで統一することにしました。
この時点では気付きませんでしたが、Javaサポートがtypoのせい
で無効になっていました…。

12
試行2回目
●

●

●

●

●

●

●

何回かエラーで停止しては手直しをしていきました。
e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zipも必
要。http://www.numbertext.org/linux/ からダウンロードするようにする。
一時ファイルが/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
エラーとパッチの作成
●

●

やっと本格的にビルドが進むようになりました。
エラーが発生した。configureオプションでどうにもできないので、パッチ
を作って対応しました。
–

–

●

rscというコマンドが-pthreadというオプションを受け取れないらしい。
CFLAGSがそのまま渡っているのを修正。patches/patchsolenv_gbuild_AllLangResTarget.mk
ファイルのinstallコマンドによるコピー時に、root/rootを想定している
箇所があるので、ローカルユーザー権限を使用するように修
正。patches/patch-sysui_CustomTarget__slackware.mk

ライブラリーの中でエラーになったものは、--with-system-*に変更しまし
た。ライブラリーのビルドの直前でtar ballが展開されるので、pkgsrcの仕
組みではパッチを当てられないため。後になってうまくやればできそうな
ことを発見しましたが…

14
ビルド1回目
●

●

●

ここまでで、Javaと言語パックのない(言語パックとして
は、en_USのみ)LibreOfficeが作成されました。
pkgsrcはインストールするファイルをPLISTファイルに列
挙しているので、それを作成し、インストールしました。
ウィンドウサイズがおかしいが、起動し、正常そうに動作
しているのを確認できました。

15
ビルド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でも必
要。http://download.go-oo.org/extern/ から入手するように設定。
Javaサポートを有効にした時点で、約5時間程度のビルド所要時間になりまし
た(Core i5 4-core 1.7GHz、RAM 4GB、SSD)。

16
ビルド3回目
●

●

ここで、言語パックをビルドすることにしました。
どの言語をビルドすべきかは分からないので全てをビルド
することにしました。

●

--with-lang=””を--with-lang=”ALL”に変更しただけ。

●

ビルドに9時間かかるようになりました。

●

できたLibreOfficeは、locale (ja_JP-UTF-8)を見て、自動的
に日本語UIになるようになりました。

17
課題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
課題2
●

●

●

DragonFly、FreeBSD、OpenBSDでもbuildしたいと思いました
が、libreoffice4にたどり着く前に、さまざまなパッケージを直さない
といけないので、まだできていません。
→途中で、CentOS/x86_64 5.10でのbinary packagesの作成を始めてし
まったので、進んでいません…
→DragonFly/i386 3.4.3で近々検証予定です。
NetBSD 5.2では、SIGFPEは直りましたが、同じ箇所でSIGSEGVによ
りクラッシュする問題があります(libvcllo.so)。→boostとgccとlibvclloの
組み合わせがいけないような…
→ どうやってもうまく行く組み合わせが見付けられないので、中断。
Microsoft PowerPointで作ったファイルの一部が開けない事があるのは
確認していますが、公開できるファイルでないので、どうやって、bug
reportしたら良いのか…

19
ライセンス
●

This article is licensed under CC-BY 3.0 Unported. See
http://creativecommons.org/licenses/by/3.0/deed.en_US

20
おしまい

21

LibreOffice 4 under NetBSD with pkgsrc