平衡点


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 走らせた結果として FCFLAGSLDLIBS を追加する、 なんて面倒な事をする必要はないだろう、というか。

# 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, LDLIBSAC_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!

というわけで

  • 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を抑制する

とか呟いていたら, 本家に補足されていた.

追記にある通り

# source: scheme
  (setq mime-pgp-verify-when-preview nil)

で, とりあえず様子見(期待通り, の様な気がしているけれど).


連絡先など
最近の日記
一覧
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|02|03|04|08|09|10|11|12|
2013|01|02|03|04|05|06|08|09|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|09|10|
2016|02|03|
2017|01|02|03|05|06|07|09|11|12|
2018|03|06|07|10|11|12|
2019|01|02|03|04|05|07|10|12|
2020|01|02|03|04|05|08|09|10|11|12|
2021|01|02|03|05|06|07|08|09|11|12|
2022|01|02|03|04|05|06|08|10|11|12|
2023|02|03|04|06|08|09|11|12|
2024|01|02|03|
Back to Top ▲