#Gaucheをmake -j 4したときに以下のエラーが起きました。
#make[1]: Entering directory `/tmp/Gauche-0.9/src'
/bin/bash ./genconfig
/bin/bash ./genconfig
echo "#!/usr/local/bin/gosh" > gauche-install && \
cat gauche-install.in >> gauche-install
echo "#!/usr/local/bin/gosh" > gauche-package && \
cat gauche-package.in >> gauche-package
echo "#!/usr/local/bin/gosh" > gauche-cesconv && \
cat gauche-cesconv.in >> gauche-cesconv
mv: cannot stat `gauche-config.c.tmp': No such file or directory
mv: cannot stat `gauche/arch.h.tmp': No such file or directory
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I./../gc/include -g -O2 -fPIC -fomit-frame-pointer -c gauche-config.c
mv: cannot stat `../lib/gauche/config.scm.tmp': No such file or directory
make[1]: *** [gauche/arch.h] Error 1
make[1]: *** Waiting for unfinished jobs....
#タイミングによっては問題ないこともありますが、手元の環境ではmake完了後に
#rm src/gauche-config.* src/gauche/arch.h && make -j 4
#とすれば高確率で再現できました。
#genconigが同時実行されるのが問題のようなのでgenconfigをgauche-conifg.cとconifg.scm向け、arch.h向けというように分割してみました。 http://tinyurl.com/y8jmfz7 #ソースが増殖するのはちょっといやな感じですね。tmpからscmへのリネームが競合してるということは、一時ファイル名をユニークにしてみたらどうなるでしょう? tmp.$$ などとして。
#あぁ、なるほど。ちょっとやってみます。
#/bin/bash ./genconfig
/bin/bash ./genconfig
echo "#!/usr/local/bin/gosh" > gauche-install && \
cat gauche-install.in >> gauche-install
echo "#!/usr/local/bin/gosh" > gauche-package && \
cat gauche-package.in >> gauche-package
echo "#!/usr/local/bin/gosh" > gauche-cesconv && \
cat gauche-cesconv.in >> gauche-cesconv
mv: cannot stat `gauche/arch.h.tmp.12186': No such file or directory
mv: cannot stat `gauche/arch.h.tmp.12187': No such file or directory
#意外にもうまくいかなかったです。なんでだろうな.
#修正漏れでした。。。
#OK、テストまで通った。
#diff --git a/src/genconfig.in b/src/genconfig.in
index f4269be..6ee82b9 100644
--- a/src/genconfig.in
+++ b/src/genconfig.in
@@ -81,7 +81,7 @@ libgauche_so="@LIBGAUCHE_SO@"
#============================================================
# gauche-config.c
#
-cat > gauche-config.c.tmp <<EOF
+cat > gauche-config.c.tmp.$$ <<EOF
/* Generated automatically by genconfig. DO NOT EDIT */
/* The small program gauche-config is installed in the same place
@@ -338,12 +338,12 @@ int main(int argc, char **argv)
}
EOF
-mv gauche-config.c.tmp gauche-config.c
+mv gauche-config.c.tmp.$$ gauche-config.c
#============================================================
# gauche/arch.h
#
-cat > gauche/arch.h.tmp <<EOF
+cat > gauche/arch.h.tmp.$$ <<EOF
/* Generated by genconfig. DO NOT EDIT */
#define GAUCHE_ARCH "$arch"
#define GAUCHE_LIB_DIR "$gauche_libdir"
@@ -352,12 +352,12 @@ cat > gauche/arch.h.tmp <<EOF
#define GAUCHE_SITE_ARCH_DIR "$gauche_sitearchdir"
EOF
-mv gauche/arch.h.tmp gauche/arch.h
+mv gauche/arch.h.tmp.$$ gauche/arch.h
#============================================================
# gauche/arch.h
#
-cat > ../lib/gauche/config.scm.tmp <<EOF
+cat > ../lib/gauche/config.scm.tmp.$$ <<EOF
;; Generated by genconfig. DO NOT EDIT
(define-module gauche.config
(use gauche.process)
@@ -413,7 +413,7 @@ cat > ../lib/gauche/config.scm.tmp <<EOF
EOF
-mv ../lib/gauche/config.scm.tmp ../lib/gauche/config.scm
+mv ../lib/gauche/config.scm.tmp.$$ ../lib/gauche/config.scm
# Local variables:
# mode: shell-script
#一応パッチです。
#直しました。ありがとうございます。