本文を読み飛ばす

mount_unionではまる

msdosとffsの狭間にはまりました...
make が (頭が小文字の) makefile を見に行くとは...

それでもunionfsはhpcmips的には結構便利ですね.
/varにも使ったりしてようかな.

同時期に探していたURL追記(08/07/16 23:34:38)

http://www.nisoc.or.jp/~karl/netbsd-pc98/doc/msdosfs.txt

@ 2008/4/3 7:22:18

mount_union をpkgsrc用に使ってみようと思いました.

hpcmipsで/(ffs)の容量を減らそうと思いまして.

まずはpkgsrcをLinux上でSD上に展開.
hpcmipsでもLinuxと同じ場所にマウントしてから,
mount_union してみます.

$ mount_msdos -l /dev/wd01e /media/hogehoge
$ mount_union /pkgsrc /media/hogehoge/userland4.0/pkgsrc

というわけで, この状態でMakefileをいじってみます. :

$ vi Makefile
CFLAGS= -O2 -> CFLAGS= -O

ここで詰まったんですが,

なんど「Makefile」を編集しても反映されません.

manからdebugの方法を調べてmakeしてみます.:

$ make -d p |less
...
ParseReadLine (210): '  cp ${.IMPSRC} ${.TARGET}'
ParseReadLine (211): '  chmod a+x ${.TARGET}'
Parse_SetInput: file makefile, line 0, fd 3, buf 0x0
ParseReadLine (16): 'name=hoge'
ParseReadLine (17): 'NAME=hoge'
ParseReadLine (23): 'prefix=/usr/pkg'
ParseReadLine (26): 'EXDIR=${prefix}/bin'
ParseReadLine (29): 'MANDIR=${prefix}/man/man1'
ParseReadLine (30): 'MANEXT=1'
ParseReadLine (31): 'MANMODE=644'
ParseReadLine (35): 'LIBDIR=${prefix}/share/$(name)'
ParseReadLine (36): 'LIBRARY=-DLIBDIR=\"${LIBDIR}\"'

あれ?

そうだったんです. makeがmakefileを見ているんです.
mount_union のマニュアルを見て考えてみると分かるんですが.

makeと mount_union (以下union)の動作
  1. make: makefileファイルを探す
  2. union: upper-layer(ffs)では大文字/小文字を区別するので該当なし
  3. union: lower-layer(msdos)では Makefile があるのでそちらが該当あり
  4. makeは msdos の Makefile を参照
  5. vi: Makefileファイルを探す
  6. union: upper-layer(ffs)に Makefile があるので該当あり
  7. viは ffs の Makefile を参照

以下, 1〜7の繰り返し...

とまぁmakeがMakefileじゃなくてmakefileを参照しているので
msdosのMakefileを見に行っちゃってました.

ffsでmakefileにリンクを貼って解決.:

$ ln -sf Makefile makefile

コメント

Comments powered by Disqus
宣伝: