Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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 d...
Abstract
●

●

●

●

●

NetBSD/amd64とNetBSD/i386でLibreOffice 4.1.1.2をbuildし
た状況を報告します。どちらのプラットフォームでもbuild
はできました。
buildの手順...
What is NetBSD?
●

●

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

●

FreeBSD Portsを元にNetBSDに移植したものが最初です。
現在は21種のプラットフォームに移植されています(pkgsrc-2013Q3の
アナウンスより)。
–

●

●

AIX, ...
典型的なpkgsrcのファイル
●

cat Makefile

●

DISTNAME=

●

CATEGORIES=

●

MASTER_SITES=

${MASTER_SITE_XORG:=app/}

●

EXTRACT_SUF...
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-${...
build方法について
●

●

関東LibreOfficeオフラインミーティング#8でも、ご紹介されていたWikiのページ
を参考にしました。
https://wiki.documentfoundation.org/Development/...
autogen.shの研究
●

●

●

●

要するに、configure.acからconfigureを生成し
て、configureを実行している。
autogen.shに渡したオプションは、configureに渡される。
pkgsrc...
configureの研究
●

まずは、どのようなオプションがあるのか、./configure –helpをしてみました。
–

configure自体は、GNU Autotoolsで生成されているが、念のため
GNU_CONFIGURE=ye...
試行1回目
●

●

●

●

harfbuzzがicuサポートを持っていないといけない。pkgsrcではデフォルト
では有効でないので、有効化した。pkgsrcのharfbuzzのデフォルトも変更
する必要あり(pkgsrcへのインポート...
修正1回目
●

●

●

●

●

本当はいろいろ試行錯誤した訳ですが、それを全てまとめて書き
ます。
download.lstを見て、使用するtar ballを追加すると同時に、一部
のものは、pkgsrcから使うように設定しました(つ...
試行2回目
●

●

●

●

●

●

●

何回かエラーで停止しては手直しをしていきました。
e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zipも必
要。http:/...
エラーとパッチの作成
●

●

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

–

●

rscというコマンドが-pthreadという...
ビルド1回目
●

●

●

ここまでで、Javaと言語パックのない(言語パックとして
は、en_USのみ)LibreOfficeが作成されました。
pkgsrcはインストールするファイルをPLISTファイルに列
挙しているので、それを作成し...
ビルド2回目
●

●

●

●

●

●

Javaサポートが有効になっていないのを、この時発見しました。コピー&ペー
スト間違い。
--with-javaでビルドしてみるが、hsqldbのビルドで失敗する。
OpenJDK7を使っている...
ビルド3回目
●

●

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

●

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

●...
課題1
●

●

●

RPATHが正常に設定されない。pkgsrcのdeveloper mode
(PKG_DEVELOPER=yesな環境)では、リンクがおかしいと
エラーになる。→CHECK_SHLIBS_SUPPORTED=noで対
...
課題2
●

●

●

DragonFly、FreeBSD、OpenBSDでもbuildしたいと思いました
が、libreoffice4にたどり着く前に、さまざまなパッケージを直さない
といけないので、まだできていません。
→途中で、Cent...
ライセンス
●

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

20
おしまい

21
Upcoming SlideShare
Loading in …5
×

LibreOffice 4 under NetBSD with pkgsrc

1,618 views

Published on

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

Published in: Technology
  • DOWNLOAD THAT BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book that can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer that is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story That Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money That the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths that Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

LibreOffice 4 under NetBSD with pkgsrc

  1. 1. LibreOffice 4 under NetBSD (with pkgsrc) Ryo ONODERA <ryoon@NetBSD.org> 2013-11-18 関東LibreOfficeオフラインミーティング#10
  2. 2. 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
  3. 3. 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
  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= 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
  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. 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
  8. 8. 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
  9. 9. autogen.shの研究 ● ● ● ● 要するに、configure.acからconfigureを生成し て、configureを実行している。 autogen.shに渡したオプションは、configureに渡される。 pkgsrc的には、 HAS_CONFIGURE=yes CONFIGURE_SCRIPT=./autogen.sh のように指定する。 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-4.1.1.2を指定した。 tar ballの展開にBSD tar/GNU tarが必要だった。ビルドにもGNU tarが必要になるので、GNU tarで統一することにしました。 この時点では気付きませんでしたが、Javaサポートがtypoのせい で無効になっていました…。 12
  13. 13. 試行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
  14. 14. エラーとパッチの作成 ● ● やっと本格的にビルドが進むようになりました。 エラーが発生した。configureオプションでどうにもできないので、パッチ を作って対応しました。 – – ● rscというコマンドが-pthreadというオプションを受け取れないらしい。 CFLAGSがそのまま渡っているのを修正。patches/patchsolenv_gbuild_AllLangResTarget.mk ファイルのinstallコマンドによるコピー時に、root/rootを想定している 箇所があるので、ローカルユーザー権限を使用するように修 正。patches/patch-sysui_CustomTarget__slackware.mk ライブラリーの中でエラーになったものは、--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でも必 要。http://download.go-oo.org/extern/ から入手するように設定。 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によ りクラッシュする問題があります(libvcllo.so)。→boostとgccとlibvclloの 組み合わせがいけないような… → どうやってもうまく行く組み合わせが見付けられないので、中断。 Microsoft PowerPointで作ったファイルの一部が開けない事があるのは 確認していますが、公開できるファイルでないので、どうやって、bug reportしたら良いのか… 19
  20. 20. ライセンス ● This article is licensed under CC-BY 3.0 Unported. See http://creativecommons.org/licenses/by/3.0/deed.en_US 20
  21. 21. おしまい 21

×