mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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>
This commit is contained in:
1 parent
2b8ba91b50
commit
a2b4af7d77
18 files changed
+94
-58
No files matched your search
@@ -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
|
||||
|
||||
+7
-3
@@ -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
|
||||
|
||||
|
||||
+17
-14
@@ -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" &
|
||||
|
||||
+2
-4
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 "$@"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
+4
-13
@@ -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
|
||||
|
||||
|
||||