mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
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:
1 parent
89acd8b4d6
commit
39ae85c6ee
2 files changed
+23
-13
No files matched your search
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||