[ovs-dev] [PATCH v2] dirs: dbdir default must be based on sysconfdir.

Ansis Atteka aatteka at nicira.com
Thu Aug 2 23:57:25 UTC 2012


On Thu, Aug 2, 2012 at 4:05 PM, Ben Pfaff <blp at nicira.com> wrote:

> On Thu, Aug 02, 2012 at 03:51:05PM -0700, Ansis Atteka wrote:
> > On Thu, Aug 2, 2012 at 2:13 PM, Ben Pfaff <blp at nicira.com> wrote:
> >
> > > 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 <blp at nicira.com>
> > > ---
> > > v1->v2: Fix issues pointed out by Ansis, fix up ovs-ctl.in also.
>
> ...
>
> > > +ALL_LOCAL += $(srcdir)/python/ovs/dirs.py
> > > +$(srcdir)/python/ovs/dirs.py: python/ovs/dirs.py.template
> > >
> > It seems that the dependencies above aren't correct (see below).
>
> I totally screwed up the generation rule.  It seems that I just can't
> do anything right today.  v3 is below.  It changes only the second
> 'sed' command in python/automake.mk.
>
> > > -RUNDIR = os.environ.get("OVS_RUNDIR", "/var/run")
> > > -LOGDIR = os.environ.get("OVS_LOGDIR", "/usr/local/var/log")
> > > -DBDIR = 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""")
> > >
> > Just curious, why "local" is dropped for the default case?
>
> It wasn't supposed to be, that's just how I had my local build tree
> configured (like your example).
>
> --8<--------------------------cut here-------------------------->8--
>
> From: Ben Pfaff <blp at nicira.com>
> Date: Thu, 2 Aug 2012 16:01:49 -0700
> Subject: [PATCH] dirs: dbdir default must be based on sysconfdir.
>
> 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 <blp at nicira.com>
> ---
> v1->v2: Fix issues pointed out by Ansis, fix up ovs-ctl.in also.
> v2->v3: Fix more issues pointed out by Ansis.
>
>  lib/dirs.c.in               |   15 +++++++++++++--
>  python/automake.mk          |   29 +++++++++++++++++++++++------
>  python/ovs/dirs.py          |   20 ++++++++++++--------
>  python/ovs/dirs.py.template |   17 +++++++++++++++++
>  utilities/ovs-lib.in        |   11 +++++++++--
>  5 files changed, 74 insertions(+), 18 deletions(-)
>  create mode 100644 python/ovs/dirs.py.template
>
> diff --git a/lib/dirs.c.in b/lib/dirs.c.in
> index 2b998b9..658a74b 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 const 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..c0f0db6 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[@],/usr/local/share/openvswitch,g' \
> +                -e 's,[@]RUNDIR[@],/var/run,g' \
> +                -e 's,[@]LOGDIR[@],/usr/local/var/log,g' \
> +                -e 's,[@]bindir[@],/usr/local/bin,g' \
> +                -e 's,[@]sysconfdir[@],/usr/local/etc,g' \
> +                -e 's,[@]DBDIR[@],/usr/local/etc/openvswitch,g' \
> +               < $? > $@.tmp
> +       mv $@.tmp $@
>
Now I am a little bit confused. If I do ./configure --prefix="/aaa", then
what should
be the expected paths in dirs.c and dirs.py after make? I thought that they
should
match?

> +EXTRA_DIST += python/ovs/dirs.py python/ovs/dirs.py.template
> diff --git a/python/ovs/dirs.py b/python/ovs/dirs.py
> index e4b37f9..b5e68a0 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")
> -DBDIR = 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/local/share/openvswitch""")
> +RUNDIR = os.environ.get("OVS_RUNDIR", """/var/run""")
> +LOGDIR = os.environ.get("OVS_LOGDIR", """/usr/local/var/log""")
> +BINDIR = os.environ.get("OVS_BINDIR", """/usr/local/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/local/etc/openvswitch"""
> diff --git a/python/ovs/dirs.py.template b/python/ovs/dirs.py.template
> new file mode 100644
> index 0000000..370c69f
> --- /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@"""
> diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
> index 893e8d1..3c63ddd 100644
> --- a/utilities/ovs-lib.in
> +++ b/utilities/ovs-lib.in
> @@ -22,14 +22,21 @@
>  # All of these should be substituted by the Makefile at build time.
>  logdir=${OVS_LOGDIR-'@LOGDIR@'}                 # /var/log/openvswitch
>  rundir=${OVS_RUNDIR-'@RUNDIR@'}                 # /var/run/openvswitch
> -dbdir=${OVS_DBDIR-'@DBDIR@'}                    # /etc/openvswitch
> -                                                # or /var/lib/openvswitch
>  sysconfdir=${OVS_SYSCONFDIR-'@sysconfdir@'}     # /etc
>  etcdir=$sysconfdir/openvswitch                  # /etc/openvswitch
>  datadir=${OVS_PKGDATADIR-'@pkgdatadir@'}        # /usr/share/openvswitch
>  bindir=${OVS_BINDIR-'@bindir@'}                 # /usr/bin
>  sbindir=${OVS_SBINDIR-'@sbindir@'}              # /usr/sbin
>
> +# /etc/openvswitch or /var/lib/openvswitch
> +if test X"$OVS_DBDIR" != X; then
> +    dbdir=$OVS_DBDIR
> +elif test X"$OVS_SYSCONFDIR" != X; then
> +    dbdir=$OVS_SYSCONFDIR/openvswitch
> +else
> +    dbdir='@DBDIR@'
> +fi
> +
>  VERSION='@VERSION@'
>
>  LC_ALL=C; export LC_ALL
> --
> 1.7.2.5
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20120802/fba6a880/attachment-0003.html>


More information about the dev mailing list