Some in-tree and out-of-tree code sets the OVS_SYSCONFDIR environment variable to control where /etc files go (mostly for test purposes). When the database directory (dbdir) was split off from the sysconfdir, the configure-time default continued to be based on the sysconfdir, but overriding the sysconfdir at runtime with OVS_SYSCONFDIR didn't have any effect on the dbdir, which caused a visible change in behavior for code that set the OVS_SYSCONFDIR environment variable. This commit reverts that change in behavior, by basing the dbdir on OVS_SYSCONFDIR if that environment variable is set (but the OVS_DBDIR environment variable is not).
Signed-off-by: Ben Pfaff <b...@nicira.com> --- lib/dirs.c.in | 15 +++++++++++++-- python/automake.mk | 29 +++++++++++++++++++++++------ python/ovs/dirs.py | 20 ++++++++++++-------- python/ovs/dirs.py.template | 17 +++++++++++++++++ 4 files changed, 65 insertions(+), 16 deletions(-) create mode 100644 python/ovs/dirs.py.template diff --git a/lib/dirs.c.in b/lib/dirs.c.in index 2b998b9..5a892b2 100644 --- a/lib/dirs.c.in +++ b/lib/dirs.c.in @@ -18,6 +18,7 @@ #include <config.h> #include "dirs.h" #include <stdlib.h> +#include "util.h" struct directory { const char *value; /* Actual value; NULL if not yet determined. */ @@ -68,8 +69,18 @@ ovs_logdir(void) const char * ovs_dbdir(void) { - static struct directory d = { NULL, @DBDIR@, "OVS_DBDIR" }; - return get_dir(&d); + static char *dbdir; + if (!dbdir) { + dbdir = getenv("OVS_DBDIR"); + if (!dbdir || !dbdir[0]) { + char *sysconfdir = getenv("OVS_SYSCONFDIR"); + + dbdir = (sysconfdir + ? xasprintf("%s/openvswitch", sysconfdir) + : @DBDIR@); + } + } + return dbdir; } const char * diff --git a/python/automake.mk b/python/automake.mk index 3cd6e1e..3c91d05 100644 --- a/python/automake.mk +++ b/python/automake.mk @@ -43,12 +43,15 @@ if HAVE_PYTHON nobase_pkgdata_DATA = $(ovs_pyfiles) $(ovstest_pyfiles) ovs-install-data-local: $(MKDIR_P) python/ovs - (echo "import os" && \ - echo 'PKGDATADIR = os.environ.get("OVS_PKGDATADIR", """$(pkgdatadir)""")' && \ - echo 'RUNDIR = os.environ.get("OVS_RUNDIR", """@RUNDIR@""")' && \ - echo 'LOGDIR = os.environ.get("OVS_LOGDIR", """@LOGDIR@""")' && \ - echo 'DBDIR = os.environ.get("OVS_DBDIR", """@DBDIR@""")' && \ - echo 'BINDIR = os.environ.get("OVS_BINDIR", """$(bindir)""")') \ + sed \ + -e '/^##/d' \ + -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \ + -e 's,[@]RUNDIR[@],$(RUNDIR),g' \ + -e 's,[@]LOGDIR[@],$(LOGDIR),g' \ + -e 's,[@]bindir[@],$(bindir),g' \ + -e 's,[@]sysconfdir[@],$(sysconfdir),g' \ + -e 's,[@]DBDIR[@],$(DBDIR),g' \ + < $(srcdir)/python/ovs/dirs.py.template \ > python/ovs/dirs.py.tmp $(MKDIR_P) $(DESTDIR)$(pkgdatadir)/python/ovs $(INSTALL_DATA) python/ovs/dirs.py.tmp $(DESTDIR)$(pkgdatadir)/python/ovs/dirs.py @@ -68,3 +71,17 @@ $(srcdir)/python/ovs/version.py: config.status $(ro_shell) > $(@F).tmp echo 'VERSION = "$(VERSION)"' >> $(@F).tmp if cmp -s $(@F).tmp $@; then touch $@; rm $(@F).tmp; else mv $(@F).tmp $@; fi + +ALL_LOCAL += $(srcdir)/python/ovs/dirs.py +$(srcdir)/python/ovs/dirs.py: python/ovs/dirs.py.template + sed \ + -e '/^##/d' \ + -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \ + -e 's,[@]RUNDIR[@],$(RUNDIR),g' \ + -e 's,[@]LOGDIR[@],$(LOGDIR),g' \ + -e 's,[@]bindir[@],$(bindir),g' \ + -e 's,[@]sysconfdir[@],$(sysconfdir),g' \ + -e 's,[@]DBDIR[@],$(DBDIR),g' \ + < $? > $@.tmp + mv $@.tmp $@ +EXTRA_DIST += python/ovs/dirs.py python/ovs/dirs.py.template diff --git a/python/ovs/dirs.py b/python/ovs/dirs.py index a5717fc..5ecfa43 100644 --- a/python/ovs/dirs.py +++ b/python/ovs/dirs.py @@ -1,9 +1,13 @@ -# These are the default directories. They will be replaced by the -# configured directories at install time. - import os -PKGDATADIR = os.environ.get("OVS_PKGDATADIR", "/usr/local/share/openvswitch") -RUNDIR = os.environ.get("OVS_RUNDIR", "/var/run") -LOGDIR = os.environ.get("OVS_LOGDIR", "/usr/local/var/log") -LOGDIR = os.environ.get("OVS_DBDIR", "/usr/local/etc/openvswitch") -BINDIR = os.environ.get("OVS_BINDIR", "/usr/local/bin") +PKGDATADIR = os.environ.get("OVS_PKGDATADIR", """/usr/share/openvswitch""") +RUNDIR = os.environ.get("OVS_RUNDIR", """/var/run/openvswitch""") +LOGDIR = os.environ.get("OVS_LOGDIR", """/var/log/openvswitch""") +BINDIR = os.environ.get("OVS_BINDIR", """/usr/bin""") + +DBDIR = os.environ.get("OVS_DBDIR") +if not DBDIR: + sysconfdir = os.environ.get("OVS_SYSCONFDIR") + if sysconfdir: + DBDIR = "%s/openvswitch" % sysconfdir + else: + DBDIR = """/usr/etc/openvswitch""" diff --git a/python/ovs/dirs.py.template b/python/ovs/dirs.py.template new file mode 100644 index 0000000..3f4db58 --- /dev/null +++ b/python/ovs/dirs.py.template @@ -0,0 +1,17 @@ +## The @variables@ in this file are replaced by default directories for +## use in python/ovs/dirs.py in the source directory and replaced by the +## configured directories for use in the installed python/ovs/dirs.py. +## +import os +PKGDATADIR = os.environ.get("OVS_PKGDATADIR", """@pkgdatadir@""") +RUNDIR = os.environ.get("OVS_RUNDIR", """@RUNDIR@""") +LOGDIR = os.environ.get("OVS_LOGDIR", """@LOGDIR@""") +BINDIR = os.environ.get("OVS_BINDIR", """@bindir@""") + +DBDIR = os.environ.get("OVS_DBDIR") +if not DBDIR: + sysconfdir = os.environ.get("OVS_SYSCONFDIR") + if sysconfdir: + DBDIR = "%s/openvswitch" % sysconfdir + else: + DBDIR = """@DBDIR@""" -- 1.7.2.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev