平衡点
2014/02/03
_ 野良ビルドの日々
3月の地球流体データ解析・数値計算ワークショップ (dcmodel/davis チュートリアル) に向けて, 野良パッケージ群と Debian Live をゴリゴリするだけの簡単なお仕事.
うーん...
2014/02/04
_ ax_f90_library_setup.m4 みたいなの
やりたいこと
Cray の Modules の様に、 特定のライブラリの読み込みが環境変数によって指定されている時に そのライブラリ(とFortran >=90の場合はモジュール)の「場所」と「名前」 を取得する。もしくは、指定が不要であることを確認する。
じたばた
autoconf-archives に Autoconf Archive: ax_f90_library_setup があったので、これでいけるかな、と思ったが find でライブラリを探して sed かけてフラグを指定する、 という挙動だったので、ちょっと嬉しくない (例えば /usr/local/stow/ 以下にコンパイラ毎のビルドを置いておくと、 find でみつかった順にフラグを設定する)。
結果
そもそも「環境変数で勝手にフラグが設定されている」という状況なのだから、 別に configure 走らせた結果として FCFLAGS や LDLIBS を追加する、 なんて面倒な事をする必要はないだろう、というか。
# source: m4 AC_DEFUN([DC_FORTRAN_LIBRARY_CHECK],[ AC_LANG_PUSH(Fortran) ac_cv_dcf90_library_check="" AC_MSG_CHECKING([try compile $1 test without any flags]) AC_LINK_IFELSE([ program libcheck $2 end program libcheck], [ac_cv_dcf90_library_check="yes"], [ac_cv_dcf90_library_check="no"]) ac_cv_f90lib_$1_check=$ac_cv_dcf90_library_check AC_LANG_POP(Fortran) if test x"$ac_cv_f90lib_$1_check" = x"no" ; then AC_MSG_RESULT([failed]) AC_MSG_ERROR([specify $1 library file name with --with-$1=]) else AC_MSG_RESULT([ok]) fi ])
あからさまに自由形式なので Fortran >= 90 じゃないと駄目だろう (というか, 今時 FORTRAN77 でプログラム書き始めることも無い).
configure.ac の中で
# source: autoconf DC_FORTRAN_LIBRARY_CHECK( [netcdf],[use netcdf ])
みたいにして呼び出すと,
configure 実行時に default の FC, FCFLAGS, LDFLAGS, LDLIBS と AC_LINK_IFELSE でコンパイル, リンクまでを試す. # source: f90
program libcheck use netcdf end program libcheck
- 結果は ac_cv_f90lib_\$1_check に入っている.
- とはいえ AC_MSG_ERROR でメッセージ出しているので, このマクロを呼んだ時点で「コンパイルとリンクが通らなきゃ駄目よ」みたいな必須library にしか使えない.
例: LAPACK
例えば
# source: m4 DC_FORTRAN_LIBRARY_CHECK( [lapack],[real(8) :: alu(2,2), bb(2) integer :: kp(2), icon alu(1,:) = (/1.0d0,1.0d0/) alu(2,:) = (/1.0d0,0.0d0/) bb(:) = (/2.0d0,0.0d0/) call dgetrf( 2, 2, alu, 2, kp, icon ) call dgetrs('N', 2, 1, alu, 2, kp, bb, 2, icon)])
みたいに.
2014/02/11
_ ruby alternatives dropped!
- #737782 - ruby-switch: fails to work with ruby/1:1.9.3.1 - Debian Bug report logs
- #737693 - ruby: no longer provides alternatives for /usr/bin/ruby - Debian Bug report logs
というわけで
- Debian ではもう alternatives は提供しないよ!
- /usr/bin/ruby は, 現在Debianでメンテしている ruby を指すからね
- 現状は 1.9.3 だけど, すぐに 2.0 に, ゆくゆくは 2.1 にするからね.
- きりかえたい時には rbenv 使ってね
- だけど alternatives 消した影響で rbenv は今インストールできないんだ. ちょっと待ってね
という状況です.
この辺も参考に:
2014/02/14
_ live-build behind proxy
昨年は結構素直にできた筈なんだけれど, なんでこんなに嵌っているのであろうか.
- apt-cacher-ng を使って proxy 効かせたつもりが, 環境変数に http_proxy が設定されているとそっちが有効になる(?)のか, localhost に立てた apt-cacher-ng を見に行ってくれない
- 「じゃあ, http_proxy 外すか」と試すと, wget を使っている所で詰まる.
- 同じ報告: #712710 - wget in bootstrap_archive-keys doesn't work with proxies
- Version: 4.0~a20-1 で直ったよ
- それドコにあるの? まだ Official に無いんじゃない?
- てか, そもそも 4.x 系列じゃん...
というわけで.
wget を使っているのは以下の 4 つ.
- /usr/lib/live/build/binary_debian-installer
- /usr/lib/live/build/binary_disk
- /usr/lib/live/build/bootstrap_archive-keys
- /usr/lib/live/build/chroot_linux-image
- /usr/lib/live/build/source_disk
これらに LB_APT_HTTP_PROXY の有無で
WGET_OPTIONS="${WGET_OPRINTS} '-e HTTP_PROXY=proxy_host:proxy_port'"
を差し込むようにしてみた. 今ん所うまくいっている, ような気がする.
...あと --apt-http-proxy の挙動も謎. 良くわからん.
2014/02/16
_ git <-> mercurial
お仕事で Mercurial を使う事になったのだけれど Git に慣れた自分にはイマイチ手に馴染まないので git-svn みたいなの無いか, とWebを漁ってみた.
もろそのまんま. これで十分ですね. ハイ.
..と思ったけれど, 上手く動いてくれない.
良く見たらDebianパッケージのGitでは /usr/share/doc/git/contrib/remote-helpers/git-remote-hg が提供されていた. これを適当な $PATH の通った所にコピーして実行権限付けたら
% git clone hg::<hgのリポジトリ>
ができた. push/pull も Git として使えている. これは便利.
2014/02/23
_ Wanderlust (SEMI-EPG) で自動verifyを抑制する
wl-beta(というかsemi)が SEMI-EPG になったのは良いが、GPG/PGP署名があって、公開鍵を取得していないと毎度 fetch しようとするの、どうやって設定するのか。
— Youhei SASAKI (@uwabami) 2013, 7月 18
とか呟いていたら, 本家に補足されていた.
追記にある通り
# source: scheme (setq mime-pgp-verify-when-preview nil)
で, とりあえず様子見(期待通り, の様な気がしているけれど).