tools, build system: Detect distro-variant directories at build-time

In b59f87f56b1e, the defaults for some of the directory config
variables implicitly changed.  In this commit we arrange for the
defaults to be auto-detected (with the same logic as the run-time
scripts use).

This will make the build more likely to produce answers which the
builder intends.  (And, in particular, it should un-break the
automated tests, which didn't set these variables explicitly and
therefore got broken by b59f87f56b1e.)

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
Ian Jackson committed 2010-09-21 12:17:04 +01:00
1 parent 89acd8b4d6
commit 39ae85c6ee
2 files changed
+23 -13

No files matched your search

+14 -4
View File
@@ -31,11 +31,21 @@ DOCDIR ?= $(SHAREDIR)/doc/xen
MANDIR ?= $(SHAREDIR)/man
BASH_COMPLETION_DIR ?= $(CONFIG_DIR)/bash_completion.d
# These are the Red Hat settings.
# arguments: variable, common path part, path to test, if yes, if no
define setvar_dir
ifndef $(1)
ifneq (,$(wildcard $(2)$(3)))
$(1) ?= $(2)$(4)
else
$(1) ?= $(2)$(5)
endif
endif
endef
# See distro_mapping.txt for other options
CONFIG_LEAF_DIR ?= sysconfig
SUBSYS_DIR ?= /var/run/subsys
INITD_DIR ?= /etc/rc.d/init.d
$(eval $(call setvar_dir,CONFIG_LEAF_DIR,,/etc/sysconfig,sysconfig,default))
$(eval $(call setvar_dir,SUBSYS_DIR,/var/run,/subsys,/subsys,))
$(eval $(call setvar_dir,INITD_DIR,/etc,/rc.d/init.d,/rc.d/init.d,/init.d))
ifneq ($(EXTRA_PREFIX),)
EXTRA_INCLUDES += $(EXTRA_PREFIX)/include
+9 -9
View File
@@ -2,26 +2,26 @@ 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 |
| Red Hat | 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.
The existence of these directories are tested at build-time (on the
build host, via the "setvar_dir" macro in Config.mk) and for some
scripts at run-time. If the Red Hat directory exists, it is used;
otherwise the Debian one is used.
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.
You can override this by setting the variables in the environment or
your ".config" (which is included by .config).
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
For example if a new distro uses /etc/bork as its 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.
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.