2009年11月12日(木) あったらしい朝が来たー… [同日]
● [memo] Sunbirdのtrunkを作る (作り始め編)
subirdの拡張をいじる続きをしようとして、 どうせならturnkのsunbirdを作ってみたくなった。
Sunbird - Build Informationから辿って、まずはソースコードをいただく。 ってあれ?http://hg.mozilla.org/comm-central/ ってもしかしたら全部入りか。
じゃあ Mozilla Developer CenterのSimple Sunbird Buildのページに従って、
# yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development' # yum install mercurial autoconf213
autoconf213が入った他は、subvesionだけ更新されましたよ。
$ cd ~/local/src/comm-central $ python client.py checkout Executing command: ['hg', 'pull', '-R', './.'] http://hg.mozilla.org/comm-central/ から取り込み中 変更点を探索中 チェンジセットを追加中 マニフェストを追加中 ファイルの変更を追加中 24 のチェンジセット(66 の変更を 52 ファイルに適用)を追加 (作業領域の更新は 'hg update') Executing command: ['hg', 'update', '-r', 'default', '-R', './.'] 52 個のファイルが更新, 0 個のファイルがマージ, 0 個のファイルが削除, 0 個のファイルが衝突未解決 Updated to revision 37475ff90d36f232c43ec813b248724c709a685a. Executing command: ['hg', 'clone', 'http://hg.mozilla.org/mozilla-central/', './mozilla'] 全チェンジセットを取得中 チェンジセットを追加中 マニフェストを追加中 ファイルの変更を追加中 ファイルの変更を追加中 761 のチェンジセット(3182 の変更を 675 ファイルに適用)を追加(+6個のヘッド) 作業領域の更新中 470 個のファイルが更新, 0 個のファイルがマージ, 0 個のファイルが削除, 0 個のファイルが衝突未解決 Executing command: ['hg', 'update', '-r', 'default', '-R', './mozilla/extensions/inspector'] 0 個のファイルが更新, 0 個のファイルがマージ, 0 個のファイルが削除, 0 個のファイルが衝突未解決 Updated to revision ae971cfdf236379219a0c6c88b20eeed68fff8c9. CVS checkout begin: 2009-11-12 14:30:00 UTC Executing command: ['cvs', '-d', ':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot', '-q', 'checkout', '-P', '-r', 'LDAPCSDK_6_0_6D_MOZILLA_RTM', '-d', 'c-sdk', 'mozilla/directory/c-sdk'] cvs checkout: warning: failed to open /home/zunda/.cvspass for reading: No such file or directory U c-sdk/.cvsignore U c-sdk/Makefile.in U c-sdk/README.configure U c-sdk/README.rpm U c-sdk/aclocal.m4 U c-sdk/build.mk U c-sdk/build_mozldap_rpm U c-sdk/component_versions.mk U c-sdk/configure U c-sdk/configure.in U c-sdk/gmakefile.win U c-sdk/mozldap.pc.in U c-sdk/mozldap.spec U c-sdk/package.mk <中略> CVS checkout end: 2009-11-12 14:30:17 UTC Executing command: ['hg', 'clone', 'http://hg.mozilla.org/venkman/', './mozilla/extensions/venkman'] 全チェンジセットを取得中 チェンジセットを追加中 マニフェストを追加中 ファイルの変更を追加中 614 のチェンジセット(1362 の変更を 219 ファイルに適用)を追加(+5個のヘッド) 作業領域の更新中 163 個のファイルが更新, 0 個のファイルがマージ, 0 個のファイルが削除, 0 個のファイルが衝突未解決 Executing command: ['hg', 'update', '-r', 'default', '-R', './mozilla/extensions/venkman'] 0 個のファイルが更新, 0 個のファイルがマージ, 0 個のファイルが削除, 0 個のファイルが衝突未解決 Updated to revision 5136feaccce8795a0fdeba21a725a72732d4c9cb. $ echo 'ac_add_options --enable-application=calendar' > .mozconfig # let's build Sunbird... $ echo 'mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-sb-release' >> .mozconfig # ...in this directory... $ echo 'mk_add_options MOZ_MAKE_FLAGS="-j4"' >> .mozconfig # ...quickly.
念のためscreenの中に行って
$ make -f client.mk <中略> checking for alsa... Package alsa was not found in the pkg-config search path. Perhaps you should add the directory containing `alsa.pc' to the PKG_CONFIG_PATH environment variable No package 'alsa' found configure: error: Need alsa for Ogg or Wave decoding on Linux. Disable with --disable-ogg --disable-wave. *** Fix above errors and then restart with "make -f client.mk build" make[1]: *** [configure] エラー 1 make[1]: ディレクトリ `/home/zunda/local/src/comm-central' から出ます make: *** [/home/zunda/local/src/comm-central/objdir-sb-release/Makefile] エラ ー 2
あらら。alsa-lib-develをインストールしてふたたび。
<前略> checking for libnotify >= 0.4... Package libnotify was not found in the pkg-config search path. Perhaps you should add the directory containing `libnotify.pc' to the PKG_CONFIG_PATH environment variable No package 'libnotify' found configure: error: Library requirements (libnotify >= 0.4) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them. configure: error: /home/zunda/local/src/comm-central/mozilla/configure failed for mozilla *** Fix above errors and then restart with "make -f client.mk build" make[1]: *** [configure] エラー 1 make[1]: ディレクトリ `/home/zunda/local/src/comm-central' から出ます make: *** [/home/zunda/local/src/comm-central/objdir-sb-release/Makefile] エラ ー 2
はいー。libnotify-develをインストール。次は、
$ make -f client.mk
Adding client.mk options from /home/zunda/local/src/comm-central/.mozconfig:
MOZ_OBJDIR=$(TOPSRCDIR)/objdir-sb-release
MOZ_MAKE_FLAGS=-j4
make -j4 -C /home/zunda/local/src/comm-central/objdir-sb-release
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/objdir-sb-release' に入ります
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/objdir-sb-release' から出ます
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/objdir-sb-release' に入ります
/usr/bin/gmake -C mozilla default
gmake[2]: ディレクトリ `/home/zunda/local/src/comm-central/objdir-sb-release/mozilla' に入ります
gmake[2]: *** ターゲット `default' を make するルールがありません. 中止.
gmake[2]: ディレクトリ `/home/zunda/local/src/comm-central/objdir-sb-release/mozilla' から出ます
make[1]: *** [default] エラー 2
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/objdir-sb-release' から出ます
make: *** [build] エラー 2
リリース版と開発版とでオプションを変えるのだろう。 .mozconfigのMOZ_OBJDIRを@TOPSRCDIR@/obj-@CONFIG_GUESS@にしてみた。
<前略> checking for curl/curl.h... no configure: error: Couldn't find curl/curl.h which is required for the crash reporter. Use --disable-crashreporter to disable the crash reporter.
libcurl-develをインストールしてみた。
$ make -f client.mk
Adding client.mk options from /home/zunda/local/src/comm-central/.mozconfig:
MOZ_OBJDIR=$(TOPSRCDIR)/obj-$(CONFIG_GUESS)
MOZ_MAKE_FLAGS=-j4
make -j4 -C /home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu' に入ります
/usr/bin/gmake -C mozilla default
gmake[2]: ディレクトリ `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla' に入ります
gmake[2]: *** ターゲット `default' を make するルールがありません. 中止.
gmake[2]: ディレクトリ `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla' から出ます
make[1]: *** [default] エラー 2
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu' から出ます
make: *** [build] エラー 2
うーん。 MDCのConfiguring Build Optionsのページに従って、 .mozconfigにmk_add_options MOZ_CO_PROJECT=calendarを足してみる。
<前略> checking for libIDL-config... no checking for libIDL - version >= 0.6.3... no *** The libIDL-config script installed by libIDL could not be found *** If libIDL was installed in PREFIX, make sure PREFIX/bin is in *** your path, or set the LIBIDL_CONFIG environment variable to the *** full path to libIDL-config. checking for libIDL-2.0 >= 0.8.0... Package libIDL-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `libIDL-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'libIDL-2.0' found configure: error: Library requirements (libIDL-2.0 >= 0.8.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them. configure: error: /home/zunda/local/src/comm-central/mozilla/configure failed for mozilla <後略>
なんだか2種類のエラーが交互に見えている気がしてきた。 とりあえず、libIDL-develを入れてみた。今度は違うエラーになったな。
<前略> checking for iwlib.h... no configure: error: Can't find header iwlib.h for Necko WiFi scanning (might be in package libiw-dev (Ubuntu) or wireless-tools-devel (Fedora)); use --disable-necko-wifi to disable <後略>
wireless-tools-develをインストール。 今度はコンパイラが起動するところまで行きました。
● [memo] Sunbirdのtrunkを作る (とりあえずここまで編)
あう。
c++ -fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-long-long -pedantic -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -Os -freorder-blocks -fno-reorder-functions -fPIC -shared -Wl,-z,defs -Wl,-h,libnecko.so -o libnecko.so nsNetModule.o -lpthread -Wl,-rpath-link,/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/bin -Wl,-rpath-link,/usr/local/lib -Wl,--whole-archive ../base/src/libneckobase_s.a ../dns/src/libneckodns_s.a ../socket/base/libneckosocket_s.a ../streamconv/src/libnkconv_s.a ../streamconv/converters/libnkcnvts_s.a ../mime/src/libnkmime_s.a ../cache/src/libnkcache_s.a ../protocol/about/src/libnkabout_s.a ../protocol/data/src/libnkdata_s.a ../protocol/file/src/libnkfile_s.a ../protocol/ftp/src/libnkftp_s.a ../protocol/http/src/libnkhttp_s.a ../protocol/res/src/libnkres_s.a ../protocol/viewsource/src/libnkviewsource_s.a ../wifi/src/libneckowifi_s.a -Wl,--no-whole-archive -L../../dist/bin -L../../dist/lib /home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/lib/libunicharutil_s.a -L/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/bin -lxpcom -lxpcom_core -L/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/bin -L/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -L../../modules/zlib/src -lmozz -Wl,--version-script -Wl,/home/zunda/local/src/comm-central/mozilla/build/unix/gnu-ld-scripts/components-version-script -Wl,-Bsymbolic -ldl -lm ../cache/src/libnkcache_s.a(nsDiskCacheDeviceSQL.o): In function `DCacheHash(char const*)': nsDiskCacheDeviceSQL.cpp:(.text+0x402b): undefined reference to `nsDiskCache::Hash(char const*, unsigned int)' nsDiskCacheDeviceSQL.cpp:(.text+0x403a): undefined reference to `nsDiskCache::Hash(char const*, unsigned int)' /usr/bin/ld: libnecko.so: hidden symbol `nsDiskCache::Hash(char const*, unsigned int)' isn't defined /usr/bin/ld: final link failed: Nonrepresentable section on output collect2: ld returned 1 exit status gmake[6]: *** [libnecko.so] Error 1 gmake[6]: Leaving directory `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/netwerk/build'
(追記) この時点での.mozconfig
ac_add_options --enable-application=calendar mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@ mk_add_options MOZ_MAKE_FLAGS="-j4" mk_add_options MOZ_CO_PROJECT=calendar
次に確認するべきなのはMomongaのspecファイルかな。.mozconfigにいろいろ書いてる。http://developer.momonga-linux.org/viewvc/pkgs/trunk/pkgs/sunbird/sunbird.spec
最近のツッコまれどころ