[Armadillo:07727] romfs-inst.sh でROMFSDIRが相対パスのとき

Yasuhisa Nakamura email@hidden
2011年 11月 21日 (月) 21:39:40 JST


中村です。

out-of-treeコンパイルでromfs-inst.shを使ってディレクトリを
まるごとインストールしようとするとき、ROMFSDIRが相対パスで
指定されていると、目的のところとは違うところにインストール
されてしまうようです。

atmark-dist開発者ガイドの「10.1. Out of Tree コンパイル」に
出てくるMakefileに
  ROOTDIR ?= ../atmark-dist-[version]
  ROMFSDIR = $(ROOTDIR)/romfs
と、相対パスでの記述があります。

これとほぼ同じように書いて、あるいは、../../atmark-dist...
などとして、カレントディレクトリにあるディレクトリhogeを
romfs/usr/hogeにディレクトリごとコピーするために
  $(ROMFSINST) /usr/hoge
とやれば再現できます。

romfs-inst.shのソースを見てみると・・・
file_copy() の

    if [ -d "${src}" ]
    then
        [ "$v" ] && echo "CopyDir ${src} ${ROMFSDIR}${dst}"
        (
            cd ${src}
            V=
            [ "$v" ] && V=v
            find . -print | grep -E -v '/CVS' | cpio -p${V}dumL ${ROMFSDIR}${dst}
        )

"cd ${src}" してから "cpio .... ${ROMFSDIR}${dst}" と
している部分が原因のようです。

どう直すか・・・
絶対パスに変換してしまうのが確実そうですが、みなさん、
相対パスから絶対パスへの変換は、どのようにやってますか?

$(shell pwd)/${ROMFSDIR} ですかね?

-- 
なかむら




armadillo メーリングリストの案内