[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 メーリングリストの案内