See docs/misc/distro_mapping.txt for more details. Author: Bruce Edge Signed-off-by: Bruce Edge Index: xen-unstable.hg/config/StdGNU.mk =================================================================== --- xen-unstable.hg.orig/config/StdGNU.mk 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/config/StdGNU.mk 2010-09-17 10:54:29.000000000 -0700 @@ -49,7 +49,7 @@ CONFIG_DIR = $(PREFIX)/etc endif -SYSCONFIG_DIR = $(CONFIG_DIR)/sysconfig +SYSCONFIG_DIR = $(CONFIG_DIR)/$(CONFIG_LEAF_DIR) XEN_CONFIG_DIR = $(CONFIG_DIR)/xen XEN_SCRIPT_DIR = $(XEN_CONFIG_DIR)/scripts Index: xen-unstable.hg/Makefile =================================================================== --- xen-unstable.hg.orig/Makefile 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/Makefile 2010-09-17 10:54:29.000000000 -0700 @@ -203,7 +203,7 @@ rm -f $(D)$(CONFIG_DIR)/udev/xen-backend.rules rm -f $(D)$(CONFIG_DIR)/udev/rules.d/xend.rules rm -f $(D)$(CONFIG_DIR)/udev/xend.rules - rm -f $(D)$(CONFIG_DIR)/sysconfig/xendomains + rm -f $(D)$(SYSCONFIG_DIR)/xendomains rm -rf $(D)/var/run/xen* $(D)/var/lib/xen* rm -rf $(D)/boot/*xen* rm -rf $(D)/lib/modules/*xen* Index: xen-unstable.hg/docs/misc/distro_mapping.txt =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xen-unstable.hg/docs/misc/distro_mapping.txt 2010-09-17 11:03:23.000000000 -0700 @@ -0,0 +1,27 @@ +With directory layout differences between Red Hat, Debian, Suse and +other distros one needs to set the variables for the elements below + +-----------------+------------------+---------------+----------------+ + | RedHat (default) | Debian | Suse | +-----------------+------------------+---------------+----------------+ +CONFIG_LEAF_DIR | sysconfig | default | sysconfig | +SUBSYS_DIR | /var/run/subsys | /var/run | /var/run | +INITD_DIR | /etc/rc.d/init.d | /etc/init.d | /etc/init.d | +-----------------+------------------+---------------+----------------+ + +The build currently defaults to the elements used by Red Hat. +For others, these env variables must be set in the shell env +or modified in Config.mk before running make. + +This mechanism sets the location that files are installed to, but does +not change the code itself. Scripts that refer to files affected by these +directories must check each possible location at run time. + +To add support for new distributions that don't use the above locations, +one must grep for the above elements and add appropriate checks. + +For example if a new distro uses /etc/bork as it's config dir, It's not +sufficient to set CONFIG_LEAF_DIR=bork, one must also add tests for the +existance of the bork dir in every context where config files are read. + + Index: xen-unstable.hg/tools/xenballoon/xenballoond.init =================================================================== --- xen-unstable.hg.orig/tools/xenballoon/xenballoond.init 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/tools/xenballoon/xenballoond.init 2010-09-17 10:54:29.000000000 -0700 @@ -29,6 +29,8 @@ if [ -f /etc/sysconfig/xenballoon.conf ]; then . /etc/sysconfig/xenballoon.conf +elif [ -f /etc/default/xenballoon.conf ]; then + . /etc/default/xenballoon.conf fi # Check that balloon driver is present Index: xen-unstable.hg/tools/xenballoon/xenballoond =================================================================== --- xen-unstable.hg.orig/tools/xenballoon/xenballoond 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/tools/xenballoon/xenballoond 2010-09-17 10:54:29.000000000 -0700 @@ -21,7 +21,7 @@ # If xenbus is running and the /usr/bin/xenstore-* tools are installed, # "xenbus is enabled". # -# Parameters are documented in /etc/sysconfig/xenballoon.conf. Although +# Parameters are documented in /xenballoon.conf. Although # some are not used with directed ballooning, all must be set properly. # If xenbus is enabled, some of these parameters may be overridden by values # set by domain0 via xenbus. @@ -237,7 +237,12 @@ fi preswapnow=0 -. /etc/sysconfig/xenballoon.conf +# See docs/misc/distro_mapping.txt +if [ -f /etc/sysconfig/xenballoon.conf ]; then + . /etc/sysconfig/xenballoon.conf +elif [ -f /etc/default/xenballoon.conf ]; then + . /etc/default/xenballoon.conf +fi while true; do Index: xen-unstable.hg/tools/xenballoon/xenballoond.README =================================================================== --- xen-unstable.hg.orig/tools/xenballoon/xenballoond.README 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/tools/xenballoon/xenballoond.README 2010-09-17 11:04:19.000000000 -0700 @@ -56,16 +56,20 @@ be installed. Binaries can be obtained, for example, by building xen-vvv.gz/tools in a guest-binary-compatible development tree -Instructions to install/deploy xenballoond (in Redhat-based system): +Instructions to install/deploy xenballoond: + (see docs/misc/distro_mapping.txt for SYSCONFIG and INITD_DIR definitions) - in each guest: - ensure pre-requisites are met (see above) - - place xenballoon.conf in /etc/sysconfig + - place xenballoon.conf in - place xenballoond in /usr/sbin - - copy xenballoond.init to /etc/rc.d/init.d/xenballoond (note file rename) - - edit /etc/sysconfig/xenballoond.conf as desired (especially note that + - copy xenballoond.init to /xenballoond (note file rename) + - edit /xenballoond.conf as desired (especially note that selfballooning defaults as off) - start xenballoond with "service xenballoond start", and/or configure - xenballoond to start at init (e.g. "chkconfig xenballoond on") + xenballoond to start at init + (Red Hat e.g. "chkconfig xenballoond on") + (Debian e.g. " update-rc.d xenballoond defaults") + (Suse e.g. " insserv xenballoond") - in domain0: - if monitoring is desired, xenballoon-monitor may be installed in /usr/sbin - note that certain xenballoond.conf variables may be overridden by domain0 @@ -73,7 +77,6 @@ xenballoond.conf TODO: -080630 modifications to support SUSE-based and debian-based guests 080630 domain0 ballooning policy module 080630 experiment with more aggressive (optionally) memory minimum targets 080630 BUG: xenballoond doesn't properly record the fact that it's running; Index: xen-unstable.hg/tools/hotplug/Linux/init.d/xendomains =================================================================== --- xen-unstable.hg.orig/tools/hotplug/Linux/init.d/xendomains 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/tools/hotplug/Linux/init.d/xendomains 2010-09-17 10:54:29.000000000 -0700 @@ -46,8 +46,18 @@ exit 0 fi -LOCKFILE=/var/lock/subsys/xendomains -XENDOM_CONFIG=/etc/sysconfig/xendomains +# See docs/misc/distro_mapping.txt +if [ -d /var/lock/subsys ]; then + LOCKFILE=/var/lock/subsys/xendomains +else + LOCKFILE=/var/lock/xendomains +fi + +if [ -d /etc/sysconfig ]; then + XENDOM_CONFIG=/etc/sysconfig/xendomains +else + XENDOM_CONFIG=/etc/default/xendomains +fi test -r $XENDOM_CONFIG || { echo "$XENDOM_CONFIG not existing"; if [ "$1" = "stop" ]; then exit 0; Index: xen-unstable.hg/tools/hotplug/Linux/init.d/xend =================================================================== --- xen-unstable.hg.orig/tools/hotplug/Linux/init.d/xend 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/tools/hotplug/Linux/init.d/xend 2010-09-17 10:54:29.000000000 -0700 @@ -40,14 +40,20 @@ echo "xencommons should be started first." exit 1 fi - mkdir -p /var/lock/subsys - touch /var/lock/subsys/xend + # mkdir shouldn't be needed as most distros have this already created. Default to using subsys. + # See docs/misc/distro_mapping.txt + mkdir -p /var/lock + if [ -d /var/lock/subsys ] ; then + touch /var/lock/subsys/xend + else + touch /var/lock/xend + fi xend start await_daemons_up ;; stop) xend stop - rm -f /var/lock/subsys/xend + rm -f /var/lock/subsys/xend /var/lock/xend ;; status) xend status Index: xen-unstable.hg/tools/hotplug/Linux/Makefile =================================================================== --- xen-unstable.hg.orig/tools/hotplug/Linux/Makefile 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/tools/hotplug/Linux/Makefile 2010-09-17 10:54:29.000000000 -0700 @@ -62,16 +62,17 @@ .PHONY: install install: all install-initd install-scripts $(HOTPLUGS) +# See docs/misc/distro_mapping.txt for INITD_DIR location .PHONY: install-initd install-initd: - [ -d $(DESTDIR)$(CONFIG_DIR)/init.d ] || $(INSTALL_DIR) $(DESTDIR)$(CONFIG_DIR)/init.d + [ -d $(DESTDIR)$(INITD_DIR) ] || $(INSTALL_DIR) $(DESTDIR)$(INITD_DIR) [ -d $(DESTDIR)$(SYSCONFIG_DIR) ] || $(INSTALL_DIR) $(DESTDIR)$(SYSCONFIG_DIR) - $(INSTALL_PROG) $(XEND_INITD) $(DESTDIR)$(CONFIG_DIR)/init.d - $(INSTALL_PROG) $(XENDOMAINS_INITD) $(DESTDIR)$(CONFIG_DIR)/init.d + $(INSTALL_PROG) $(XEND_INITD) $(DESTDIR)$(INITD_DIR) + $(INSTALL_PROG) $(XENDOMAINS_INITD) $(DESTDIR)$(INITD_DIR) $(INSTALL_PROG) $(XENDOMAINS_SYSCONFIG) $(DESTDIR)$(SYSCONFIG_DIR)/xendomains - $(INSTALL_PROG) $(XENCOMMONS_INITD) $(DESTDIR)$(CONFIG_DIR)/init.d + $(INSTALL_PROG) $(XENCOMMONS_INITD) $(DESTDIR)$(INITD_DIR) $(INSTALL_PROG) $(XENCOMMONS_SYSCONFIG) $(DESTDIR)$(SYSCONFIG_DIR)/xencommons - $(INSTALL_PROG) init.d/xen-watchdog $(DESTDIR)$(CONFIG_DIR)/init.d + $(INSTALL_PROG) init.d/xen-watchdog $(DESTDIR)$(INITD_DIR) .PHONY: install-scripts install-scripts: Index: xen-unstable.hg/tools/hotplug/Linux/init.d/xen-watchdog =================================================================== --- xen-unstable.hg.orig/tools/hotplug/Linux/init.d/xen-watchdog 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/tools/hotplug/Linux/init.d/xen-watchdog 2010-09-17 10:54:29.000000000 -0700 @@ -18,7 +18,24 @@ # # Source function library. -. /etc/init.d/functions +if [ -e /etc/init.d/functions ] ; then + . /etc/init.d/functions +elif [ -e /lib/lsb/init-functions ] ; then + . /lib/lsb/init-functions + success () { + log_success_msg $* + } + failure () { + log_failure_msg $* + } +else + success () { + echo $* + } + failure () { + echo $* + } +fi start() { local r Index: xen-unstable.hg/Config.mk =================================================================== --- xen-unstable.hg.orig/Config.mk 2010-09-17 10:40:05.000000000 -0700 +++ xen-unstable.hg/Config.mk 2010-09-17 10:54:29.000000000 -0700 @@ -31,6 +31,12 @@ MANDIR ?= $(SHAREDIR)/man BASH_COMPLETION_DIR ?= $(CONFIG_DIR)/bash_completion.d +# These are the Red Hat settings. +# See distro_mapping.txt for other options +CONFIG_LEAF_DIR ?= sysconfig +SUBSYS_DIR ?= /var/run/subsys +INITD_DIR ?= /etc/rc.d/init.d + ifneq ($(EXTRA_PREFIX),) EXTRA_INCLUDES += $(EXTRA_PREFIX)/include EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBLEAFDIR)