diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-06-23 17:25:51 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-06-23 17:25:51 +0100 |
commit | a2b4af7d77d66eeb6f3a82f3056889ff1d453bd0 (patch) | |
tree | 7e378a41343f4ef79acdbd5ee9427bfe6e3616e1 | |
parent | 2b8ba91b50c9536daac1ee64f4ef6737d03d349d (diff) | |
download | xen-a2b4af7d77d66eeb6f3a82f3056889ff1d453bd0.tar.gz xen-a2b4af7d77d66eeb6f3a82f3056889ff1d453bd0.tar.bz2 xen-a2b4af7d77d66eeb6f3a82f3056889ff1d453bd0.zip |
Get rid of hardcoded pathes for stubdom and hotplug scripts
- Have the buid system generate a file which exports the install paths
for the hotplug scripts and stubdom / stubdom-dm
- Move file generation code from tools/python/Makefile into a gmake
macro
in Config.mk to avoid maintenance of three duplicates each with its
own
tweaks and bugs
- Export gmake variables into ioemu as shell variables
for upcoming ioemu patches
- Do above as a gmake macro to avoid maintenance of several duplicates
- Adjust hotplug scripts to find the right xen binaries from the
install directory
- Adjust stubdom-dm to use the install directories
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
-rw-r--r-- | Config.mk | 22 | ||||
-rw-r--r-- | stubdom/Makefile | 10 | ||||
-rw-r--r-- | stubdom/stubdom-dm | 31 | ||||
-rw-r--r-- | tools/Makefile | 6 | ||||
-rw-r--r-- | tools/hotplug/Linux/block | 4 | ||||
-rw-r--r-- | tools/hotplug/Linux/network-bridge | 2 | ||||
-rw-r--r-- | tools/hotplug/Linux/network-nat | 3 | ||||
-rw-r--r-- | tools/hotplug/Linux/network-route | 3 | ||||
-rw-r--r-- | tools/hotplug/Linux/vif-bridge | 6 | ||||
-rw-r--r-- | tools/hotplug/Linux/vif-nat | 6 | ||||
-rw-r--r-- | tools/hotplug/Linux/vif-route | 6 | ||||
-rw-r--r-- | tools/hotplug/Linux/xen-hotplug-cleanup | 2 | ||||
-rw-r--r-- | tools/hotplug/Linux/xen-hotplug-common.sh | 3 | ||||
-rw-r--r-- | tools/hotplug/NetBSD/block-nbsd | 5 | ||||
-rw-r--r-- | tools/hotplug/NetBSD/vif-bridge-nbsd | 5 | ||||
-rw-r--r-- | tools/hotplug/NetBSD/vif-ip-nbsd | 5 | ||||
-rw-r--r-- | tools/hotplug/common/Makefile | 16 | ||||
-rw-r--r-- | tools/python/Makefile | 17 |
18 files changed, 94 insertions, 58 deletions
@@ -87,6 +87,28 @@ define absolutify_xen_root export XEN_ROOT endef +define buildmakevars2shellvars + PREFIX="$(PREFIX)"; \ + XEN_SCRIPT_DIR="$(XEN_SCRIPT_DIR)"; \ + export PREFIX; \ + export XEN_SCRIPT_DIR +endef + +buildmakevars2file = $(eval $(call buildmakevars2file-closure,$(1))) +define buildmakevars2file-closure + .PHONY: genpath + genpath: + rm -f $(1); \ + echo "SBINDIR=\"$(SBINDIR)\"" >> $(1); \ + echo "BINDIR=\"$(BINDIR)\"" >> $(1); \ + echo "LIBEXEC=\"$(LIBEXEC)\"" >> $(1); \ + echo "LIBDIR=\"$(LIBDIR)\"" >> $(1); \ + echo "PRIVATE_BINDIR=\"$(PRIVATE_BINDIR)\"" >> $(1); \ + echo "XENFIRMWAREDIR=\"$(XENFIRMWAREDIR)\"" >> $(1); \ + echo "XEN_CONFIG_DIR=\"$(XEN_CONFIG_DIR)\"" >> $(1); \ + echo "XEN_SCRIPT_DIR=\"$(XEN_SCRIPT_DIR)\"" >> $(1) +endef + ifeq ($(debug),y) CFLAGS += -g endif diff --git a/stubdom/Makefile b/stubdom/Makefile index cd7234980d..cdedf8f2ca 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -77,8 +77,12 @@ TARGET_LDFLAGS += -nostdlib -L$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib TARGETS=ioemu c caml grub +STUBDOMPATH="stubdompath.sh" +genpath-target = $(call buildmakevars2file,$(STUBDOMPATH)) +$(eval $(genpath-target)) + .PHONY: all -all: build +all: genpath build ifeq ($(STUBDOM_SUPPORTED),1) build: ioemu-stubdom c-stubdom pv-grub else @@ -270,8 +274,7 @@ libxc-$(XEN_TARGET_ARCH)/libxenctrl.a libxc-$(XEN_TARGET_ARCH)/libxenguest.a:: c ioemu: cross-zlib cross-libpci libxc [ -f ioemu/config-host.mak ] || \ ( $(absolutify_xen_root); \ - PREFIX=$(PREFIX); \ - export PREFIX; \ + $(buildmakevars2shellvars); \ cd ioemu ; \ LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) \ TARGET_CPPFLAGS="$(TARGET_CPPFLAGS)" \ @@ -374,6 +377,7 @@ clean: $(MAKE) -C caml clean $(MAKE) -C c clean rm -fr grub-$(XEN_TARGET_ARCH) + rm -f $(STUBDOMPATH) [ ! -d libxc-$(XEN_TARGET_ARCH) ] || $(MAKE) -C libxc-$(XEN_TARGET_ARCH) clean -[ ! -d ioemu ] || $(MAKE) -C ioemu clean diff --git a/stubdom/stubdom-dm b/stubdom/stubdom-dm index 5161e1d0ee..76068a0bd0 100644 --- a/stubdom/stubdom-dm +++ b/stubdom/stubdom-dm @@ -5,6 +5,9 @@ # dm script around stubdomains. # +. ./stubdompath.sh +stubdom_configdir="${XEN_CONFIG_DIR}/stubdoms" + # To fit xterms nicely height=339 @@ -80,7 +83,7 @@ term() { ( [ -n "$vncpid" ] && kill -9 $vncpid xm destroy $domname-dm - rm /etc/xen/stubdoms/$domname-dm + rm ${stubdom_configdir}/$domname-dm ) & # We need to exit immediately so as to let xend do the commands above exit 0 @@ -97,9 +100,9 @@ do done # Generate stubdom config file -mkdir -p /etc/xen/stubdoms &>/dev/null -echo "#This file is autogenerated, edit $domname instead!" > /etc/xen/stubdoms/$domname-dm -echo "kernel = '/usr/lib/xen/boot/ioemu-stubdom.gz'" >> /etc/xen/stubdoms/$domname-dm +mkdir -p ${stubdom_configdir} &>/dev/null +echo "#This file is autogenerated, edit $domname instead!" > ${stubdom_configdir}/$domname-dm +echo "kernel = '${XENFIRMWAREDIR}/ioemu-stubdom.gz'" >> ${stubdom_configdir}/$domname-dm vfb="sdl=$sdl, opengl=$opengl" test "$DISPLAY" && vfb="$vfb, display=$DISPLAY" @@ -110,9 +113,9 @@ test "$vncpasswd" && vfb="$vfb, vncpasswd=$vncpasswd" test "$keymap" && vfb="$vfb, keymap=$keymap" test "$monitor" && vfb="$vfb, monitor=$monitor" test "$serial" && vfb="$vfb, serial=$serial" -echo "vfb = ['$vfb']" >> /etc/xen/stubdoms/$domname-dm +echo "vfb = ['$vfb']" >> ${stubdom_configdir}/$domname-dm -echo -n "disk = [ " >> /etc/xen/stubdoms/$domname-dm +echo -n "disk = [ " >> ${stubdom_configdir}/$domname-dm j=0 for i in `xenstore-ls /local/domain/$domid/device/vbd | grep 'backend =' | awk '{print $3}'` do @@ -126,13 +129,13 @@ do vbd_devtype=`xenstore-read $vbd_front/device-type` if [ $j -ne 0 ] then - echo -n "," >> /etc/xen/stubdoms/$domname-dm + echo -n "," >> ${stubdom_configdir}/$domname-dm fi - echo -n "'$vbd_type:$vbd_disk,$vbd_dev:$vbd_devtype,$vbd_mode'" >> /etc/xen/stubdoms/$domname-dm + echo -n "'$vbd_type:$vbd_disk,$vbd_dev:$vbd_devtype,$vbd_mode'" >> ${stubdom_configdir}/$domname-dm j=$(( $j + 1 )) done -echo " ] " >> /etc/xen/stubdoms/$domname-dm -echo -n "vif = [ " >> /etc/xen/stubdoms/$domname-dm +echo " ] " >> ${stubdom_configdir}/$domname-dm +echo -n "vif = [ " >> ${stubdom_configdir}/$domname-dm j=0 for i in `xenstore-ls /local/domain/$domid/device/vif | grep 'backend =' | awk '{print $3}'` do @@ -141,13 +144,13 @@ do vif_mac=`xenstore-read $i/mac` if [ $j -ne 0 ] then - echo -n "," >> /etc/xen/stubdoms/$domname-dm + echo -n "," >> ${stubdom_configdir}/$domname-dm fi - echo -n "'mac=$vif_mac'" >> /etc/xen/stubdoms/$domname-dm + echo -n "'mac=$vif_mac'" >> ${stubdom_configdir}/$domname-dm j=$(( $j + 1 )) done -echo " ] " >> /etc/xen/stubdoms/$domname-dm -creation="xm create -c /etc/xen/stubdoms/$domname-dm target=$domid memory=32 extra=\"$extra\"" +echo " ] " >> ${stubdom_configdir}/$domname-dm +creation="xm create -c ${stubdom_configdir}/$domname-dm target=$domid memory=32 extra=\"$extra\"" (while true ; do sleep 60 ; done) | /bin/sh -c "$creation" & #xterm -geometry +0+0 -e /bin/sh -c "$creation ; echo ; echo press ENTER to shut down ; read" & diff --git a/tools/Makefile b/tools/Makefile index 0eebb00bd5..89ee9710de 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -97,10 +97,7 @@ ioemu-dir-find: fi set -e; \ $(absolutify_xen_root); \ - PREFIX=$(PREFIX); \ - XEN_SCRIPT_DIR=$(XEN_SCRIPT_DIR); \ - export PREFIX; \ - export XEN_SCRIPT_DIR; \ + $(buildmakevars2shellvars); \ cd ioemu-dir; \ ./xen-setup $(IOEMU_CONFIGURE_CROSS) @@ -109,6 +106,7 @@ subdir-all-ioemu-dir subdir-install-ioemu-dir: ioemu-dir-find subdir-clean-ioemu-dir: set -e; if test -d ioemu-dir/.; then \ $(absolutify_xen_root); \ + $(buildmakevars2shellvars); \ $(MAKE) -C ioemu-dir clean; \ fi diff --git a/tools/hotplug/Linux/block b/tools/hotplug/Linux/block index e042a7ef99..f50eeda563 100644 --- a/tools/hotplug/Linux/block +++ b/tools/hotplug/Linux/block @@ -377,5 +377,5 @@ mount it read-write in a guest domain." esac # If we've reached here, $t is neither phy nor file, so fire a helper script. -[ -x /etc/xen/scripts/block-"$t" ] && \ - /etc/xen/scripts/block-"$t" "$command" $node +[ -x ${XEN_SCRIPT_DIR}/block-"$t" ] && \ + ${XEN_SCRIPT_DIR}/block-"$t" "$command" $node diff --git a/tools/hotplug/Linux/network-bridge b/tools/hotplug/Linux/network-bridge index 95aaba0c15..676b6a62fd 100644 --- a/tools/hotplug/Linux/network-bridge +++ b/tools/hotplug/Linux/network-bridge @@ -2,7 +2,7 @@ #============================================================================ # Default Xen network start/stop script. # Xend calls a network script when it starts. -# The script name to use is defined in /etc/xen/xend-config.sxp +# The script name to use is defined in ${XEN_CONFIG_DIR}/xend-config.sxp # in the network-script field. # # This script creates a bridge (default ${netdev}), adds a device diff --git a/tools/hotplug/Linux/network-nat b/tools/hotplug/Linux/network-nat index aab793d93f..10f8d28385 100644 --- a/tools/hotplug/Linux/network-nat +++ b/tools/hotplug/Linux/network-nat @@ -2,7 +2,7 @@ #============================================================================ # Default Xen network start/stop script when using NAT. # Xend calls a network script when it starts. -# The script name to use is defined in /etc/xen/xend-config.sxp +# The script name to use is defined in ${XEN_CONFIG_DIR}/xend-config.sxp # in the network-script field. # # Usage: @@ -18,6 +18,7 @@ #============================================================================ dir=$(dirname "$0") +. "$dir/hotplugpath.sh" . "$dir/xen-script-common.sh" . "$dir/xen-network-common.sh" diff --git a/tools/hotplug/Linux/network-route b/tools/hotplug/Linux/network-route index 574441e334..0cf85b526a 100644 --- a/tools/hotplug/Linux/network-route +++ b/tools/hotplug/Linux/network-route @@ -2,7 +2,7 @@ #============================================================================ # Default Xen network start/stop script. # Xend calls a network script when it starts. -# The script name to use is defined in /etc/xen/xend-config.sxp +# The script name to use is defined in ${XEN_CONFIG_DIR}/xend-config.sxp # in the network-script field. # # Usage: @@ -17,6 +17,7 @@ #============================================================================ dir=$(dirname "$0") +. "$dir/hotplugpath.sh" . "$dir/xen-script-common.sh" evalVariables "$@" diff --git a/tools/hotplug/Linux/vif-bridge b/tools/hotplug/Linux/vif-bridge index 1b698d703b..d35144e1e9 100644 --- a/tools/hotplug/Linux/vif-bridge +++ b/tools/hotplug/Linux/vif-bridge @@ -1,12 +1,12 @@ #!/bin/bash #============================================================================ -# /etc/xen/vif-bridge +# ${XEN_SCRIPT_DIR}/vif-bridge # # Script for configuring a vif in bridged mode. # The hotplugging system will call this script if it is specified either in # the device configuration given to Xend, or the default Xend configuration -# in /etc/xen/xend-config.sxp. If the script is specified in neither of those -# places, then this script is the default. +# in ${XEN_CONFIG_DIR}/xend-config.sxp. If the script is specified in +# neither of those places, then this script is the default. # # Usage: # vif-bridge (add|remove|online|offline) diff --git a/tools/hotplug/Linux/vif-nat b/tools/hotplug/Linux/vif-nat index 75bdf5c444..74743ed761 100644 --- a/tools/hotplug/Linux/vif-nat +++ b/tools/hotplug/Linux/vif-nat @@ -1,12 +1,12 @@ #!/bin/bash #============================================================================ -# /etc/xen/vif-nat +# ${XEN_SCRIPT_DIR}/vif-nat # # Script for configuring a vif in routed-nat mode. # The hotplugging system will call this script if it is specified either in # the device configuration given to Xend, or the default Xend configuration -# in /etc/xen/xend-config.sxp. If the script is specified in neither of those -# places, then vif-bridge is the default. +# in ${XEN_CONFIG_DIR}/xend-config.sxp. If the script is specified in +# neither of those places, then vif-bridge is the default. # # Usage: # vif-nat (add|remove|online|offline) diff --git a/tools/hotplug/Linux/vif-route b/tools/hotplug/Linux/vif-route index f5fd88ed5a..0cacfcb99e 100644 --- a/tools/hotplug/Linux/vif-route +++ b/tools/hotplug/Linux/vif-route @@ -1,12 +1,12 @@ #!/bin/bash #============================================================================ -# /etc/xen/vif-route +# ${XEN_SCRIPT_DIR}/vif-route # # Script for configuring a vif in routed mode. # The hotplugging system will call this script if it is specified either in # the device configuration given to Xend, or the default Xend configuration -# in /etc/xen/xend-config.sxp. If the script is specified in neither of those -# places, then vif-bridge is the default. +# in ${XEN_CONFIG_DIR}/xend-config.sxp. If the script is specified in +# neither of those places, then vif-bridge is the default. # # Usage: # vif-route (add|remove|online|offline) diff --git a/tools/hotplug/Linux/xen-hotplug-cleanup b/tools/hotplug/Linux/xen-hotplug-cleanup index 706359d03a..0cb86d27ec 100644 --- a/tools/hotplug/Linux/xen-hotplug-cleanup +++ b/tools/hotplug/Linux/xen-hotplug-cleanup @@ -3,7 +3,7 @@ dir=$(dirname "$0") . "$dir/xen-hotplug-common.sh" -# Claim the lock protecting /etc/xen/scripts/block. This stops a race whereby +# Claim the lock protecting ${XEN_SCRIPT_DIR}/block. This stops a race whereby # paths in the store would disappear underneath that script as it attempted to # read from the store checking for device sharing. # Any other scripts that do similar things will have to have their lock diff --git a/tools/hotplug/Linux/xen-hotplug-common.sh b/tools/hotplug/Linux/xen-hotplug-common.sh index 980a62704e..d63b7660c6 100644 --- a/tools/hotplug/Linux/xen-hotplug-common.sh +++ b/tools/hotplug/Linux/xen-hotplug-common.sh @@ -17,13 +17,14 @@ dir=$(dirname "$0") +. "$dir/hotplugpath.sh" . "$dir/logging.sh" . "$dir/xen-script-common.sh" . "$dir/locking.sh" exec 2>>/var/log/xen/xen-hotplug.log -export PATH="/sbin:/bin:/usr/bin:/usr/sbin:$PATH" +export PATH="${BINDIR}:${SBINDIR}:${LIBEXEC}:${PRIVATE_BINDIR}:/sbin:/bin:/usr/bin:/usr/sbin:$PATH" export LANG="POSIX" unset $(set | grep ^LC_ | cut -d= -f1) diff --git a/tools/hotplug/NetBSD/block-nbsd b/tools/hotplug/NetBSD/block-nbsd index 915ddb755a..d853e11584 100644 --- a/tools/hotplug/NetBSD/block-nbsd +++ b/tools/hotplug/NetBSD/block-nbsd @@ -4,7 +4,10 @@ # Called by xenbackendd # Usage: block xsdir_backend_path state -PATH=/bin:/usr/bin:/sbin:/usr/sbin +DIR=$(dirname "$0") +. "${DIR}/hotplugpath.sh" + +PATH=${BINDIR}:${SBINDIR}:${LIBEXEC}:${PRIVATE_BINDIR}:/bin:/usr/bin:/sbin:/usr/sbin export PATH error() { diff --git a/tools/hotplug/NetBSD/vif-bridge-nbsd b/tools/hotplug/NetBSD/vif-bridge-nbsd index bedb387953..ecfef15012 100644 --- a/tools/hotplug/NetBSD/vif-bridge-nbsd +++ b/tools/hotplug/NetBSD/vif-bridge-nbsd @@ -4,7 +4,10 @@ # Called by xenbackendd # Usage: vif-bridge xsdir_backend_path state -PATH=/bin:/usr/bin:/sbin:/usr/sbin +DIR=$(dirname "$0") +. "${DIR}/hotplugpath.sh" + +PATH=${BINDIR}:${SBINDIR}:${LIBEXEC}:${PRIVATE_BINDIR}:/bin:/usr/bin:/sbin:/usr/sbin export PATH xpath=$1 diff --git a/tools/hotplug/NetBSD/vif-ip-nbsd b/tools/hotplug/NetBSD/vif-ip-nbsd index d8b5bb9759..ca4fd60580 100644 --- a/tools/hotplug/NetBSD/vif-ip-nbsd +++ b/tools/hotplug/NetBSD/vif-ip-nbsd @@ -4,7 +4,10 @@ # Called by xenbackendd # Usage: vif-ip xsdir_backend_path state -PATH=/bin:/usr/bin:/sbin:/usr/sbin +DIR=$(dirname "$0") +. "${DIR}/hotplugpath.sh" + +PATH=${BINDIR}:${SBINDIR}:${LIBEXEC}:${PRIVATE_BINDIR}:/bin:/usr/bin:/sbin:/usr/sbin export PATH xpath=$1 diff --git a/tools/hotplug/common/Makefile b/tools/hotplug/common/Makefile index a6e731c1ca..b95bf4ee8b 100644 --- a/tools/hotplug/common/Makefile +++ b/tools/hotplug/common/Makefile @@ -1,17 +1,22 @@ -XEN_ROOT = ../../../ +XEN_ROOT = ../../.. include $(XEN_ROOT)/tools/Rules.mk +HOTPLUGPATH="hotplugpath.sh" + # OS-independent hotplug scripts go in this directory -# Xen script dir and scripts to go there. -XEN_SCRIPTS = +# Xen scripts to go there. +XEN_SCRIPTS = $(HOTPLUGPATH) XEN_SCRIPT_DATA = +genpath-target = $(call buildmakevars2file,$(HOTPLUGPATH)) +$(eval $(genpath-target)) + .PHONY: all -all: +all: build .PHONY: build -build: +build: genpath .PHONY: install install: all install-scripts @@ -31,3 +36,4 @@ install-scripts: .PHONY: clean clean: + rm -f $(HOTPLUGPATH) diff --git a/tools/python/Makefile b/tools/python/Makefile index 67edb46306..6fa4d5b00e 100644 --- a/tools/python/Makefile +++ b/tools/python/Makefile @@ -14,20 +14,11 @@ I18NSRCFILES = $(shell find xen/xm/ -name '*.py') CATALOGS = $(patsubst %,xen/xm/messages/%.mo,$(LINGUAS)) NLSDIR = $(SHAREDIR)/locale XENPATH = "xen/util/path.py" - -.PHONY: build buildpy genpath -genpath: - rm -f $(XENPATH) - echo "SBINDIR=\"$(SBINDIR)\"" >> $(XENPATH) - echo "BINDIR=\"$(BINDIR)\"" >> $(XENPATH) - echo "LIBEXEC=\"$(LIBEXEC)\"" >> $(XENPATH) - echo "LIBDIR=\"$(LIBDIR)\"" >> $(XENPATH) - echo "SHAREDIR=\"$(SHAREDIR)\"" >> $(XENPATH) - echo "PRIVATE_BINDIR=\"$(PRIVATE_BINDIR)\"" >> $(XENPATH) - echo "XENFIRMWAREDIR=\"$(XENFIRMWAREDIR)\"" >> $(XENPATH) - echo "XEN_CONFIG_DIR=\"$(XEN_CONFIG_DIR)\"" >> $(XENPATH) - echo "XEN_SCRIPT_DIR=\"$(XEN_SCRIPT_DIR)\"" >> $(XENPATH) +genpath-target = $(call buildmakevars2file,$(XENPATH)) +$(eval $(genpath-target)) + +.PHONY: build buildpy buildpy: genpath CC="$(CC)" CFLAGS="$(CFLAGS)" $(PYTHON) setup.py build |