FreeBSD / omake -P raises Fatal error: exception Invalid_argument("FAM not enabled")

FreeBSDは最後の理想郷に思えた。
なぜか、~/*.coreがいっぱいある。

$ sudo pkg_add -r omake
...
$ omake -P
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.04 sec)
Fatal error: exception Invalid_argument("FAM not enabled")

-Pの無いomakeなんて。

$ cd /usr/ports/devel/omake
$ sudo make install clean
...
--- Checking for FAM... (NOT found)
...
$ ls -al /usr/local/lib/libfam*
-rw-r--r--  1 root  wheel  137820  7 31 17:28 /usr/local/lib/libfam.a
-rwxr-xr-x  1 root  wheel     805  7 31 17:28 /usr/local/lib/libfam.la
lrwxr-xr-x  1 root  wheel      11  7 31 17:28 /usr/local/lib/libfam.so -> libfam.so.0
-rwxr-xr-x  1 root  wheel   91159  7 31 17:28 /usr/local/lib/libfam.so.0

やはりomake -Pはできない。

どうやら、/usr/ports/devel/omake/work/omake-0.9.8.5/lib/configure/fam.omで何やらlibfamの存在チェックをしているが、そこでlibfamが存在しないと判定されてる気配。

/etc/make.confに、CFLAGS=-I/usr/local/include, LDFLAGS=-L/usr/local/libまたは、sudo CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make install clean


しょうがないから、ハードコード。gamin版。fam版は-DHAVE_FAMNOEXISTSを削除

$ cat ./work/omake-0.9.8.5/lib/configure/fam.om
open configure/Configure

#
# Figure out if FAM is installed
#
.STATIC:
    FAM_AVAILABLE = true
    FAM_CFLAGS = -DFAM_ENABLED -DHAVE_FAMNOEXISTS
    FAM_CLIBS = -lfam
# これ以降の設定は適用させない
# コメントアウトなり条件文を調整するなり適宜

これだけだと、/usr/bin/ld: cannot find -lfamとか素敵なエラーを吐く。
FreeBSD的にそれが正しいのか悪いのか判断しかねるので、ld.so.confをいじったりはせず、ocamlopt.optからccを呼び出す時のCFLAGSを適当かつ強引に設定する。

$ sudo vim ./work/omake-0.9.8.5/lib/build/OCaml.om
-public.OCAMLFLAGS    = -warn-error A
+public.OCAMLFLAGS    = -warn-error A -ccopt -L/usr/local/lib

さらにfam.hがネーヨとかおっしゃりやがりますので、ln -s /usr/local/include/fam.h /usr/include/fam.h
本当は-I/usr/local/includeを指定すればいいんだけど、OCAMLFLAGSに指定しても、ccまで伝播しなかった。
ヘッダなら後で消しても平気ダシネ
厳かにsudo make install clean
fam.hのリンクを作っていたなら、rm /usr/include/fam.h

$ omake -P
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.06 sec)
- scan sources/lib/core/config scan-cxx-config.cpp
+ g++ -pipe -std=c++0x -Wall -O0 -g -D_DEBUG -rdynamic -fPIC -fPIE -Wl,--export-dynamic,-rpath,$ORIGIN -I. -I/usr/local/include/ClearSilver -I/usr/local/include/python2.6 -I/usr/local/include -MM config.cpp
cc1plus: error: unrecognized command line option "-std=c++0x"
...

・・・さて、gcc45いれようか。

ubuntu9.10 Windows7+wubi = No wubildr

Windows7+Wubiの場合に発生する?かもしれない素敵なエラー
Wubiインストール後に再起動すると、どうやらWindowsブートローダーからUbuntuのローダーを起動することはできているが、結局は"No wubildr"やら言われて起動出来ないという話。

Windows7は何かしらのそれなりには深いであろうと思われる理由から、インストール時に100Mの小さなパーティションを作る場合がある。
管理ツールなりで、そのパーティションに適当なドライブレターを割り振って、そこへC:/wubildrとC:/wubildr.mbrをコピーしてやる。
前者だけでも平気かも。

ちなみに、bcdedit+Freebsdの場合に、boot1置いたりするのもそこ。

9.10、やっぱり茶色いです。

c++ 関数内static変数はexitで終了してもデストラクタは正しく呼ばれる

ちょっとうろ覚えで心配になったから確認

#include <iostream>
#include <stdlib.h>

struct Logger {
    int n;
    Logger(int n) : n(n) {
        std::cout<<"Constructed:"<<n<<std::endl;
    }
    ~Logger() {
        std::cout<<"Destructed:"<<n<<std::endl;
    }
};

Logger & holder() {
    static Logger log(0);
    return log;
}

int main() {
    Logger log(1);
    holder();
    exit(0);
}
% g++ test.cpp && ./a.out
Constructed:1
Constructed:0
Destructed:0

static変数のほうは、正しくデストラクタが呼ばれている。
ローカル変数のほうも、デストラクタが起動しないのが正しいので、問題無し。

fc11 apache - mod_fcgid and suexec

盛大にハマったのでメモ。

% sudo setenforce 0
% sudo getenforce 
Permissive
% sudo /etc/rc.d/init.d/httpd restart
...

suexecを無効化すれば正常に動作する。
ただの開発環境なのに、suexecは大げさ。
でも、suexecでの動作テストにもなるから、有効にしておきたいのが人情。
戻すときはsudo setenforce 1

% sudo tail /var/log/httpd/suexec.log
...
[2009-06-16 19:46:45]: uid: (500/****) gid: (500/****) cmd: test.fcgi
[2009-06-16 19:46:45]: command not in docroot (/home/****/public_html/cgi-bin/test.fcgi
% sudo /usr/sbin/suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="apache"
 -D AP_LOG_EXEC="/var/log/httpd/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=500
 -D AP_USERDIR_SUFFIX="public_html"

mod_userdirは、UserDirがAP_USERDIR_SUFFIXと同じである限りはsuexecとよろしくやってくれるから、mod_userdir経由のアクセス(/~hoge/...)でなら素でおkだぜ〜という情報もあるが、うちの環境ではDocroot以下に無いといわれてダメだった。
それなりのハマリどころらしく、いろいろ情報はあるが、これだ!というのがなかなか。

> >>169
> じゃ
> mount --bind /home /var/www/home

fedora apache2 DocumentRoot Options +Indexesが効かない

% sudo tail /var/log/httpd/error.log
...
[Mon Jun 15 08:38:00 2009] [error] [client 127.0.0.1] Directory index forbidden by Options directive: /****

% sudo vim /etc/httpd/conf.d/welcome.conf

# 
# This configuration file enables the default "Welcome"
# page if there is no default index page present for
# the root URL.  To disable the Welcome page, comment
# out all the lines below.
#
+#<LocationMatch "^/+$">
+#    Options -Indexes
+#    ErrorDocument 403 /error/noindex.html
+#</LocationMatch>

すごいバッドノウハウだと思います。