Suche senden
Hochladen
140607 lib o-mini_con-ryoon
•
2 gefällt mir
•
1,524 views
R
Ryo ONODERA
Folgen
Melden
Teilen
Melden
Teilen
1 von 33
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
自分的pkgsrcの課題
自分的pkgsrcの課題
Ryo ONODERA
pkgsrcユーザー向け設定
pkgsrcユーザー向け設定
Ryo ONODERA
最近のrubyのインストール方法
最近のrubyのインストール方法
Kazuhiro Nishiyama
第1回 Open Build Service 道場
第1回 Open Build Service 道場
Fuminobu Takeyama
Open Build Service で deb パッケージをビルドしてみた
Open Build Service で deb パッケージをビルドしてみた
Fuminobu Takeyama
Jenkins tips 20161014
Jenkins tips 20161014
Hideaki Ishijima
LibreOfficeの品質向上活動について
LibreOfficeの品質向上活動について
Masataka Kondo
「Dockerはいいぞ」 for Laboratory LT
「Dockerはいいぞ」 for Laboratory LT
ShimpeiIwamaru
Empfohlen
自分的pkgsrcの課題
自分的pkgsrcの課題
Ryo ONODERA
pkgsrcユーザー向け設定
pkgsrcユーザー向け設定
Ryo ONODERA
最近のrubyのインストール方法
最近のrubyのインストール方法
Kazuhiro Nishiyama
第1回 Open Build Service 道場
第1回 Open Build Service 道場
Fuminobu Takeyama
Open Build Service で deb パッケージをビルドしてみた
Open Build Service で deb パッケージをビルドしてみた
Fuminobu Takeyama
Jenkins tips 20161014
Jenkins tips 20161014
Hideaki Ishijima
LibreOfficeの品質向上活動について
LibreOfficeの品質向上活動について
Masataka Kondo
「Dockerはいいぞ」 for Laboratory LT
「Dockerはいいぞ」 for Laboratory LT
ShimpeiIwamaru
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
NAKAOKU Takahiro
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
Mishimasyk 3 20140705
Mishimasyk 3 20140705
Takayuki Serizawa
Outputz.vim
Outputz.vim
ryota ichie
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
知己 久保
LibPGEN 1st Step Guide
LibPGEN 1st Step Guide
slankdev
20110205.linux 0.01
20110205.linux 0.01
YAMANE Toshiaki
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
Kenjiro Kubota
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
AdvancedTechNight
Bossan dentoo
Bossan dentoo
kubo39
Seurity Camp Award 2016
Seurity Camp Award 2016
slankdev
How To Drink Wsgi
How To Drink Wsgi
Atsushi Odagiri
Adtech College#7 GitHubを中心とした開発フロー
Adtech College#7 GitHubを中心とした開発フロー
Naoyuki Yamada
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
mganeko
Serverless on GCP
Serverless on GCP
Hayato Yoshikawa
Clack meetup #1 lt
Clack meetup #1 lt
Atsushi Odagiri
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料
slankdev
Datalab and colaboratory
Datalab and colaboratory
Hayato Yoshikawa
LibreOffice mini Conference 2014 QA
LibreOffice mini Conference 2014 QA
Shinji Enoki
Recent Information about LibreOffice
Recent Information about LibreOffice
Masataka Kondo
Weitere ähnliche Inhalte
Was ist angesagt?
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
NAKAOKU Takahiro
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
Mishimasyk 3 20140705
Mishimasyk 3 20140705
Takayuki Serizawa
Outputz.vim
Outputz.vim
ryota ichie
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
Tetsuyuki Kobayashi
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
知己 久保
LibPGEN 1st Step Guide
LibPGEN 1st Step Guide
slankdev
20110205.linux 0.01
20110205.linux 0.01
YAMANE Toshiaki
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
Kenjiro Kubota
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
AdvancedTechNight
Bossan dentoo
Bossan dentoo
kubo39
Seurity Camp Award 2016
Seurity Camp Award 2016
slankdev
How To Drink Wsgi
How To Drink Wsgi
Atsushi Odagiri
Adtech College#7 GitHubを中心とした開発フロー
Adtech College#7 GitHubを中心とした開発フロー
Naoyuki Yamada
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
mganeko
Serverless on GCP
Serverless on GCP
Hayato Yoshikawa
Clack meetup #1 lt
Clack meetup #1 lt
Atsushi Odagiri
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料
slankdev
Datalab and colaboratory
Datalab and colaboratory
Hayato Yoshikawa
Was ist angesagt?
(20)
Unityで関数型言語ぽく書く 如法会#1
Unityで関数型言語ぽく書く 如法会#1
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
Mishimasyk 3 20140705
Mishimasyk 3 20140705
Outputz.vim
Outputz.vim
組み込みLinuxでのGolangのススメ(Go con版)
組み込みLinuxでのGolangのススメ(Go con版)
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
LibPGEN 1st Step Guide
LibPGEN 1st Step Guide
20110205.linux 0.01
20110205.linux 0.01
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
Bossan dentoo
Bossan dentoo
Seurity Camp Award 2016
Seurity Camp Award 2016
How To Drink Wsgi
How To Drink Wsgi
Adtech College#7 GitHubを中心とした開発フロー
Adtech College#7 GitHubを中心とした開発フロー
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
Serverless on GCP
Serverless on GCP
Clack meetup #1 lt
Clack meetup #1 lt
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料
Datalab and colaboratory
Datalab and colaboratory
Andere mochten auch
LibreOffice mini Conference 2014 QA
LibreOffice mini Conference 2014 QA
Shinji Enoki
Recent Information about LibreOffice
Recent Information about LibreOffice
Masataka Kondo
20150404 スライド
20150404 スライド
anubis_369
What's EasyHacks? / EasyHacksについて
What's EasyHacks? / EasyHacksについて
Naruhiko Ogasawara
質問サイトAsk.LibreOfficeを使ってみよう!
質問サイトAsk.LibreOfficeを使ってみよう!
Shinji Enoki
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Naruhiko Ogasawara
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
Naruhiko Ogasawara
コマンド一発でLibreOfficeをインストール
コマンド一発でLibreOfficeをインストール
雄介 荒川
Andere mochten auch
(8)
LibreOffice mini Conference 2014 QA
LibreOffice mini Conference 2014 QA
Recent Information about LibreOffice
Recent Information about LibreOffice
20150404 スライド
20150404 スライド
What's EasyHacks? / EasyHacksについて
What's EasyHacks? / EasyHacksについて
質問サイトAsk.LibreOfficeを使ってみよう!
質問サイトAsk.LibreOfficeを使ってみよう!
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementa...
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
The Basic of How to build LibreOffice / LibreOffice開発版ビルドの基礎 for Windows
コマンド一発でLibreOfficeをインストール
コマンド一発でLibreOfficeをインストール
Ähnlich wie 140607 lib o-mini_con-ryoon
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
Tomofumi Yagi
Kansai mrb gr_sakura
Kansai mrb gr_sakura
Kosuga Masakatsu
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
Takuto Matsuu
Building production server on docker
Building production server on docker
Hiroshi Miura
Building production server on docker
Building production server on docker
Hiroshi Miura
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
Kamon Nobuchika
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
Takayoshi Tanaka
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
Puppet on AWS
Puppet on AWS
Sugawara Genki
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
Tomofumi Yagi
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
kimukou_26 Kimukou
MySQL clients
MySQL clients
yoku0825
20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux
Takayoshi Tanaka
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
sandai
qmake入門
qmake入門
hermit4 Ishida
Ähnlich wie 140607 lib o-mini_con-ryoon
(20)
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
Kansai mrb gr_sakura
Kansai mrb gr_sakura
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
Building production server on docker
Building production server on docker
Building production server on docker
Building production server on docker
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
もっとも簡単なKubernetes構築 on Raspberry pi (July tech festa winter 2021)
20170527 inside .NET Core on Linux
20170527 inside .NET Core on Linux
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Puppet on AWS
Puppet on AWS
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
MySQL clients
MySQL clients
20170311 Developing & Deploying .NET Core on Linux
20170311 Developing & Deploying .NET Core on Linux
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
qmake入門
qmake入門
Mehr von Ryo ONODERA
helloSystemをインストール
helloSystemをインストール
Ryo ONODERA
NetBSD on Google Compute Engine (en)
NetBSD on Google Compute Engine (en)
Ryo ONODERA
NetBSD on Google Compute Engine
NetBSD on Google Compute Engine
Ryo ONODERA
How to package github softwares
How to package github softwares
Ryo ONODERA
FreeBSD under DigitalOcean VPS
FreeBSD under DigitalOcean VPS
Ryo ONODERA
NetBSD on Conoha VPS at JNUG BoF 2014
NetBSD on Conoha VPS at JNUG BoF 2014
Ryo ONODERA
LibreOffice 4 under NetBSD with pkgsrc (en)
LibreOffice 4 under NetBSD with pkgsrc (en)
Ryo ONODERA
LibreOffice 4 under NetBSD with pkgsrc
LibreOffice 4 under NetBSD with pkgsrc
Ryo ONODERA
Mehr von Ryo ONODERA
(8)
helloSystemをインストール
helloSystemをインストール
NetBSD on Google Compute Engine (en)
NetBSD on Google Compute Engine (en)
NetBSD on Google Compute Engine
NetBSD on Google Compute Engine
How to package github softwares
How to package github softwares
FreeBSD under DigitalOcean VPS
FreeBSD under DigitalOcean VPS
NetBSD on Conoha VPS at JNUG BoF 2014
NetBSD on Conoha VPS at JNUG BoF 2014
LibreOffice 4 under NetBSD with pkgsrc (en)
LibreOffice 4 under NetBSD with pkgsrc (en)
LibreOffice 4 under NetBSD with pkgsrc
LibreOffice 4 under NetBSD with pkgsrc
140607 lib o-mini_con-ryoon
1.
1 pkgsrcを使った*BSDでの LibreOffice 4.2のビルド Ryo ONODERA <ryo_on@yk.rim.or.jp> <ryoon@NetBSD.org> LibreOffice
mini Conference 2014 Tokyo/Japan 2014-06-07
2.
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
3.
3 pkgsrcとは (1/2) ● ● http://www.pkgsrc.org/ Portable
package build system ● The NetBSD Foundation傘下のプロジェクト ● パッケージ管理システムと言って良いと思う – パッケージ管理システムの定義は難しいようなので… ● ソフトウェアのインストールの仕方を共有するのが目的のプロジェクトだと思っています ● 古くて良くないCVSで管理 – cvs -d :pserver:anoncvs@anoncvs.jp.netbsd.org:/cvs/cvsroot login (passwd = anoncvs) – cvs -d :pserver:anoncvs@anoncvs.jp.netbsd.org:/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
4.
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/ にリンク集があります
5.
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などがある ● 他にもあるが、試せてません
6.
6 *BSDとは (2/2) ● LinuxともSysVR4とも違う、BSD独自の流儀がある ● もちろん、GNUの流儀とも違う ● POSIX互換は目指しているらしい ● SysVR4やLinuxの良い所も取り込まれているはず ● すみませんが、詳しくは説明できません…
7.
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の形で 書く ● 配布物の取得からインストールまで ● ライセンスによってブロックすることも可能
8.
8 pkgsrcの仕組み (2/4) ● 典型的には、以下のようなファイル/ディレクトリーがあ る ● DESCR …
パッケージの解説文章 ● Makefile … 本体 ● PLIST … インストールされるファイルの一覧 ● buildlink3.mk … ライブラリー等だった場合に依存関係を 記述するのに使う ● distinfo … 配布物のチェックサムなど ● patches/ … ビルドに必要なパッチファイルを格納する ディレクトリー
9.
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= ryoon@NetBSD.org ● 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/ プログラミング言語など) ● 依存するライブラリーの情報
10.
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
11.
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
12.
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
13.
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
14.
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 . とかするのも面白い
15.
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 してみてください
16.
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を使う場合そのままのようだ
17.
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を使う場合そのままのようだ
18.
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を使う場合そのままのよう だ
19.
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の場合でも、対応できそうな気が して来た
20.
20 pkgsrcでのmisc/libreoffice4 ● LibreOfficeは、そのビルドの仕組みの中に、必要とするライブラリー等 をネットワーク上から取り寄せて、独自のパッチを当ててビルドする仕 組みがある ● しかし、これはソースコードから各ユーザーがコンパイルするパッケー ジ管理システムとは相性が悪い挙動である – pkgsrc/Ports等では、配布物をあらかじめダウンロードしておける必 要がある→オフラインでもビルドできる必要がある – 再配布可能な配布物については、ミラーをしている ● メンテナンスするのにも、パッチへのパッチが必要になって面倒である ● なるべく、--with-system-*を活用し、必要なライブラリーはpkgsrcの枠 組みの中でインストールしたものを使うようにする ● しかし、まだ道半ばで、--disable-fetch-external
と--with-external- tar=/path/to/tarball を使って対処している
21.
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
22.
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
23.
23 DragonFlyでの実際 (1/2) ● DragonFlyでは、3.6.0より前までは、独自のDPortsでは なくpkgsrcを採用して来ていた ● また、GCCが4.7.3である ● 以上のことより、依存するパッケージについては、あまり 問題がないのではないかと予想された ● ● しかし、OpenJDK7 (pkgsrc/lang/openjdk7)につい て、RPATHあるいはLD_LIBRARY_PATHがおかしいの か、ビルドできなかった →
Javaサポートは無効にせざるを得なくなった
24.
24 DragonFlyでの実際 (2/2) ● 実際にビルドしてみた結果、依存するパッケージと LibreOfficeのいずれも、大きなエラーがなくビルドは完 了した – x11/libdrmについては、libkmsがbuildされるの で、PLISTが変わるので対応した ● 動作についても、特に問題ないようだ ● ● あっけなく完了
25.
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が変わったようでエラーになる)
26.
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には不適当な内容 であった
27.
27 FreeBSDでの実際 (3/3) ● ただし、FreeBSDで条件分岐すべきか、clang/libc++で 条件分岐すべきかを明確にできていない ● clangがC/C++コンパイラーになっていないFreeBSD 9.2 で試してみる必要がある ● ● NetBSD
6.99 (current)は、clangでビルドし、clangを標 準のC/C++コンパイラーにすることもできるので、それ に対応するためと思われるパッチが既に含まれていたが、 少なくともclang 3.3には不適当な内容であった
28.
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がないのでビルドできない→オフ
29.
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/76d19d004 e36e99d261ee78261e2f52cea5e4ab1#diff- e2d5a00791bce9a01f99bc6fd613a39d の内容をpatch- aaに追加。unwindサポートの扱いが悪かったらしい
30.
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を使う範囲について、明確化していく必要がある
31.
31 pkgsrc/misc/libreoffice4 ● 時間があった場合に、実際のpkgsrc/misc/libreoffice4の 中身を概観します
32.
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で複雑に書かれているので、き ちんと読み直して、理解していく必要がある ●
33.
33 おわり ● Upstream – OpenJDK7 bsd-portで、rhino.jarを読み込むと、その OpenJDK7ではLibreOfficeのJavaScriptによるscriptingの 部分がコンパイルできなくなるのが当面の課題?
私は JavaScriptでマクロを書きたかったので… – LD_LIBRARY_PATHを使わないようにならないかな…とか – *BSDのx86/x86_64以外のサポート ● pkgsrc – ヘルプのバイナリーを持って来ているのに使ってない気が する – Apache OpenOfficeにもトライしたい
Jetzt herunterladen