Contenu connexe
Similaire à 140607 lib o-mini_con-ryoon
Similaire à 140607 lib o-mini_con-ryoon (20)
140607 lib o-mini_con-ryoon
- 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などがある
●
他にもあるが、試せてません
- 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の形で
書く
●
配布物の取得からインストールまで
●
ライセンスによってブロックすることも可能
- 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/
プログラミング言語など)
●
依存するライブラリーの情報
- 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には不適当な内容
であった
- 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を使う範囲について、明確化していく必要がある
- 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で複雑に書かれているので、き
ちんと読み直して、理解していく必要がある
●