There was no easy way to use a ddlog installation from one of the tarballs provided by the ddlog developers, because these put the binaries in a subdirectory of an installation directory instead of in a system- or user-level bin directory. This commit makes that easier: just do "--with-ddlog=$INSTALLDIR".
Signed-off-by: Ben Pfaff <[email protected]> --- Documentation/intro/install/general.rst | 37 +++++++++++++++++++----- acinclude.m4 | 38 +++++++++++++++++-------- 2 files changed, 56 insertions(+), 19 deletions(-) diff --git a/Documentation/intro/install/general.rst b/Documentation/intro/install/general.rst index ee48272422fe..589518846233 100644 --- a/Documentation/intro/install/general.rst +++ b/Documentation/intro/install/general.rst @@ -213,13 +213,36 @@ the default database directory, add options as shown here:: ``yum install`` or ``rpm -ivh``) and .deb (e.g. via ``apt-get install`` or ``dpkg -i``) use the above configure options. -To build with DDlog support, add ``--with-ddlog=<path to ddlog>/lib`` -to the ``configure`` command line. Building with DDLog adds a few -minutes to the build because the Rust compiler is slow. To speed this -up by about 2x, also add ``--enable-ddlog-fast-build``. This disables -some Rust compiler optimizations, making a much slower -``ovn-northd-ddlog`` executable, so it should not be used for -production builds or for profiling. +Use ``--with-ddlog`` to build with DDlog support. To build with +DDlog, the build system needs to be able to find the ``ddlog`` and +``ovsdb2ddlog`` binaries and the DDlog library directory (the +directory that contains ``ddlog_std.dl``). This option supports a +few ways to do that: + + * If binaries are in $PATH, use the library directory as argument, + e.g. ``--with-ddlog=$HOME/differential-datalog/lib``. This is + suitable if DDlog was installed from source via ``stack install`` or + from (hypothetical) distribution packaging. + + The DDlog documentation recommends pointing $DDLOG_HOME to the + DDlog source directory. If you did this, so that $DDLOG_HOME/lib + is the library directory, you may use ``--with-ddlog`` without an + argument. + + * If the binaries and libraries are in the ``bin`` and ``lib`` + subdirectories of an installation directory, use the installation + directory as the argument. This is suitable if DDlog was + installed from one of the binary tarballs published by the DDlog + developers. + +.. note:: + + Building with DDLog adds a few minutes to the build because the + Rust compiler is slow. Add ``--enable-ddlog-fast-build`` to make + this about 2x faster. This disables some Rust compiler + optimizations, making a much slower ``ovn-northd-ddlog`` + executable, so it should not be used for production builds or for + profiling. By default, static libraries are built and linked against. If you want to use shared libraries instead:: diff --git a/acinclude.m4 b/acinclude.m4 index 3f109c92a5a5..7009f1dd39c2 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -51,22 +51,36 @@ dnl ddlog (which is probably only useful for developers who are trying dnl different versions, since OVN is currently bound to a particular dnl DDlog version). AC_DEFUN([OVS_CHECK_DDLOG], [ - AC_ARG_WITH([ddlog], - [AC_HELP_STRING([--with-ddlog=.../differential-datalog/lib], - [Enables DDlog by pointing to its library dir])], - [DDLOGLIBDIR=$withval], [DDLOGLIBDIR=no]) + AC_ARG_VAR([DDLOG_HOME], [Root of the DDlog installation]) + AC_ARG_WITH( + [ddlog], + [AC_HELP_STRING([--with-ddlog[[=INSTALLDIR|LIBDIR]]], [Enables DDlog])], + [DDLOG_PATH=$PATH + if test "$withval" = yes; then + # --with-ddlog: $DDLOG_HOME must be set + if test -z "$DDLOG_HOME"; then + AC_MSG_ERROR([To build with DDlog, specify the DDlog install or library directory on --with-ddlog or in \$DDLOG_HOME]) + fi + DDLOGLIBDIR=$DDLOG_HOME/lib + test -d "$DDLOG_HOME/bin" && DDLOG_PATH=$DDLOG_HOME/bin + elif test -f "$withval/lib/ddlog_std.dl"; then + # --with-ddlog=INSTALLDIR + DDLOGLIBDIR=$withval/lib + test -d "$withval/bin" && DDLOG_PATH=$withval/bin + elif test -f "$withval/ddlog_std.dl"; then + # --with-ddlog=LIBDIR + DDLOGLIBDIR=$withval/lib + else + AC_MSG_ERROR([$withval does not contain ddlog_std.dl or lib/ddlog_std.dl]) + fi], + [DDLOGLIBDIR=no + DDLOG_PATH=no]) AC_MSG_CHECKING([for DDlog library directory]) AC_MSG_RESULT([$DDLOGLIBDIR]) if test "$DDLOGLIBDIR" != no; then - if test ! -d "$DDLOGLIBDIR"; then - AC_MSG_ERROR([ddlog library dir "$DDLOGLIBDIR" doesn't exist]) - elif test ! -f "$DDLOGLIBDIR"/ddlog_std.dl; then - AC_MSG_ERROR([ddlog library dir "$DDLOGLIBDIR" lacks ddlog_std.dl]) - fi - - AC_ARG_VAR([DDLOG]) - AC_CHECK_PROGS([DDLOG], [ddlog], [none]) + AC_ARG_VAR([DDLOG], [path to ddlog binary]) + AC_PATH_PROGS([DDLOG], [ddlog], [none], [$DDLOG_PATH]) if test X"$DDLOG" = X"none"; then AC_MSG_ERROR([ddlog is required to build with DDlog]) fi -- 2.31.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
