On Tue, Apr 11, 2006 at 10:23:39AM +0100, Keir Fraser wrote:
>
> On 11 Apr 2006, at 09:50, Horms wrote:
>
> >>I think all the scripts currently specify /bin/bash. You could define
> >>SHELL or SH in Config.mk, default to /bin/bash, and use that variable
> >>in place of 'sh'.
> >
> >Understood, if they are indeed all using /bin/bash at the moment. It
> >seems as well to just specify bash. It can be made more flexible if the
> >need arises. Here is an updated patch.
>
> Let's not risk any regressions: it should be /bin/bash, and apart from
> the configurability argument it's also cleaner imo to define a wrapper
> variable for /bin/bash in Config.mk.
Understood
--
Horms
build: Don't assume that mkbuildtree is executable
In some cases, say for instance for some bizarre reason the tree was
checked out of CVS, which doesn't necessarily store file permissions,
mkbuildtree may not be executable.
I had trouble deciding between chmoding mkbuildtree, which changes the
tree, and running sh mkbuildtree, which assumes its a shell script. I
settled on the latter.
As all the scripts currently specify /bin/bash, it is used, rather than sh
which was in the original version of this patch. This can be overridden by
setting MKBUILD_SHELL in the environment.
MKBUILD_SHELL was chosen over SHELL as the latter has special significance
within make.
Signed-Off-By: Horms <horms@xxxxxxxxxxxx>
Config.mk | 2 ++
Makefile | 3 +++
buildconfigs/Rules.mk | 8 ++++++--
buildconfigs/mk.linux-2.6-xen | 4 ++--
linux-2.6-xen-sparse/mkbuildtree | 10 ++++++----
tools/debugger/gdb/gdbbuild | 3 ++-
tools/misc/xen-clone | 5 ++++-
7 files changed, 25 insertions(+), 10 deletions(-)
--- x/Config.mk
+++ x/Config.mk
@@ -92,4 +92,6 @@ XENSTAT_XENTOP ?= y
VTPM_TOOLS ?= n
+MKBUILD_SHELL ?= /bin/bash
+
-include $(XEN_ROOT)/.config
--- x/Makefile
+++ x/Makefile
@@ -172,6 +172,9 @@ help:
@echo ' install into prefix/lib/python<VERSION>'
@echo ' instead of <PREFIX>/lib/python'
@echo ' true if set to non-empty value, false
otherwise'
+ @echo ' MKBUILD_SHELL'
+ @echo ' - shell used to invoke various mkbuild
scripts'
+ @echo ' default is /bin/bash'
# Use this target with extreme care!
.PHONY: uninstall
--- x/buildconfigs/Rules.mk
+++ x/buildconfigs/Rules.mk
@@ -99,14 +99,18 @@ endif
linux-2.6-xen.patch: ref-linux-$(LINUX_VER)/.valid-ref
rm -rf tmp-$@
cp -al $(<D) tmp-$@
- ( cd linux-2.6-xen-sparse && ./mkbuildtree ../tmp-$@ )
+ ( cd linux-2.6-xen-sparse && \
+ MKBUILD_SHELL="$(MKBUILD_SHELL)" $(MKBUILD_SHELL) \
+ ./mkbuildtree ../tmp-$@ )
diff -Nurp $(patsubst ref%,pristine%,$(<D)) tmp-$@ > $@ || true
rm -rf tmp-$@
%-xen.patch: ref-%/.valid-ref
rm -rf tmp-$@
cp -al $(<D) tmp-$@
- ( cd $*-xen-sparse && ./mkbuildtree ../tmp-$@ )
+ ( cd $*-xen-sparse && \
+ MKBUILD_SHELL="$(MKBUILD_SHELL)" $(MKBUILD_SHELL) \
+ ./mkbuildtree ../tmp-$@ )
diff -Nurp $(patsubst ref%,pristine%,$(<D)) tmp-$@ > $@ || true
rm -rf tmp-$@
--- x/buildconfigs/mk.linux-2.6-xen
+++ x/buildconfigs/mk.linux-2.6-xen
@@ -22,8 +22,8 @@ $(LINUX_DIR)/include/linux/autoconf.h: r
rm -rf $(LINUX_DIR)
cp -al $(<D) $(LINUX_DIR)
# Apply arch-xen patches
- ( cd linux-$(LINUX_SERIES)-xen-sparse ; \
- LINUX_ARCH=$(LINUX_ARCH) ./mkbuildtree ../$(LINUX_DIR) )
+ ( cd linux-$(LINUX_SERIES)-xen-sparse && \
+ LINUX_ARCH=$(LINUX_ARCH) bash ./mkbuildtree ../$(LINUX_DIR) )
# Re-use config from install dir if one exits else use default config
CONFIG_VERSION=$$(sed -ne 's/^EXTRAVERSION = //p'
$(LINUX_DIR)/Makefile); \
[ -r
$(DESTDIR)/boot/config-$(LINUX_VER)$$CONFIG_VERSION-$(EXTRAVERSION) ] && \
バイナリー・ファイル/dev/nullとto-work/linux-2.6-xen-sparse/.mkbuildtree.swpは違います
--- x/linux-2.6-xen-sparse/mkbuildtree
+++ x/linux-2.6-xen-sparse/mkbuildtree
@@ -90,8 +90,9 @@ abs_to_rel ${AD} ${AS}
RS=$DESTPATH
# Arch-specific pre-processing
-if [ -x arch/${LINUX_ARCH}/xen-mkbuildtree-pre ]; then
- arch/${LINUX_ARCH}/xen-mkbuildtree-pre
+if [ -e arch/${LINUX_ARCH}/xen-mkbuildtree-pre ]; then
+ MKBUILD_SHELL="$MKBUILD_SHELL" $MKBUILD_SHELL \
+ arch/${LINUX_ARCH}/xen-mkbuildtree-pre
fi
# Remove old copies of files and directories at the destination
@@ -115,6 +116,7 @@ relative_lndir ../../../${RS}/../xen/inc
# Arch-specific post-processing
cd ${AD}
-if [ -x arch/${LINUX_ARCH}/xen-mkbuildtree-post ]; then
- arch/${LINUX_ARCH}/xen-mkbuildtree-post
+if [ -e arch/${LINUX_ARCH}/xen-mkbuildtree-post ]; then
+ MKBUILD_SHELL="$MKBUILD_SHELL" $MKBUILD_SHELL \
+ arch/${LINUX_ARCH}/xen-mkbuildtree-post
fi
--- x/tools/debugger/gdb/gdbbuild
+++ x/tools/debugger/gdb/gdbbuild
@@ -1,5 +1,6 @@
#!/bin/sh
+[ "$MKBUILD_SHELL" ] || MKBUILD_SHELL="/bin/bash"
[ "$GDB_MIRROR" ] || GDB_MIRROR="ftp://ftp.gnu.org/gnu/gdb/"
rm -rf gdb-6.2.1 gdb-6.2.1-linux-i386-xen
@@ -7,7 +8,7 @@ rm -rf gdb-6.2.1 gdb-6.2.1-linux-i386-xe
tar xjf gdb-6.2.1.tar.bz2
cd gdb-6.2.1-xen-sparse
-./mkbuildtree ../gdb-6.2.1
+MKBUILD_SHELL="$MKBUILD_SHELL" $MKBUILD_SHELL ./mkbuildtree ../gdb-6.2.1
cd ..
mkdir gdb-6.2.1-linux-i386-xen
--- x/tools/misc/xen-clone
+++ x/tools/misc/xen-clone
@@ -5,6 +5,8 @@
# this script contains some CL site specific details, but can easily be adapted
#
+MKBUILD_SHELL=${MKBUILD_SHELL:-/bin/bash}
+
# test which site we're on
[ -d /usr/groups/xeno/ -a -d /usr/groups/srgboot ] && SITE=UCCL
@@ -113,7 +115,8 @@ else
# Turn linux into xenolinux then build it
cd xenolinux-${LINUX_VER}-sparse
- ./mkbuildtree ../../linux-${LINUX_VER}
+ MKBUILD_SHELL="$MKBUILD_SHELL" $MKBUILD_SHELL \
+ ./mkbuildtree ../../linux-${LINUX_VER}
cd ../..
mv linux-${LINUX_VER} xenolinux-${LINUX_VER}
cd xenolinux-${LINUX_VER}
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|