[Openvpn-devel] cmocka: use relative paths

Message ID 20180821220842.4193-1-steffan@karger.me
State Superseded
Headers show
Series
  • [Openvpn-devel] cmocka: use relative paths
Related show

Commit Message

Steffan Karger Aug. 21, 2018, 10:08 p.m.
Simplifies the build scripts, and fixes my CI, where paths on the test
slave can be different from paths on the build slave.

Signed-off-by: Steffan Karger <steffan@karger.me>
---
 configure.ac       | 11 ++---------
 vendor/Makefile.am | 15 +++++++--------
 2 files changed, 9 insertions(+), 17 deletions(-)

Comments

David Sommerseth Oct. 12, 2018, 11:43 a.m. | #1
On 22/08/18 00:08, Steffan Karger wrote:
> Simplifies the build scripts, and fixes my CI, where paths on the test
> slave can be different from paths on the build slave.
> 
> Signed-off-by: Steffan Karger <steffan@karger.me>
> ---
>  configure.ac       | 11 ++---------
>  vendor/Makefile.am | 15 +++++++--------
>  2 files changed, 9 insertions(+), 17 deletions(-)

This fails on my system ...

---------------------------------------------------
$ rm -rf vendor/cmocka/
$ mkdir vendor/cmocka/
$ git submodule init
$ git submodule update
Submodule path 'vendor/cmocka': checked out 'b2732b52202ae48f866a024c633466efdbb8e85a'
$ autoreconf -vi
[....]
$ ./configure
[....]
$ make check
[....]
mkdir -p ./cmocka ./dist
(cd cmocka && cmake -DCMAKE_INSTALL_PREFIX=.././dist .././cmocka && make && make install)
-- The C compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Performing Test WITH_FPIC
-- Performing Test WITH_FPIC - Success
-- Performing Test WITH_STACK_PROTECTOR
-- Performing Test WITH_STACK_PROTECTOR - Success
CMake Error at cmake/Modules/MacroEnsureOutOfSourceBuild.cmake:13 (message):
  cmocka requires an out of source build.  Please create a separate build
  directory and run 'cmake /path/to/cmocka [options]' there.
Call Stack (most recent call first):
  CMakeLists.txt:41 (macro_ensure_out_of_source_build)


CMake Error at cmake/Modules/MacroEnsureOutOfSourceBuild.cmake:14 (message):
  Remove the file CMakeCache.txt in
  /home/davids/devel/OpenVPN/openvpn/vendor/cmocka first.
Call Stack (most recent call first):
  CMakeLists.txt:41 (macro_ensure_out_of_source_build)


-- Configuring incomplete, errors occurred!
---------------------------------------------------

This patch had to be rebased on top of the latest git master, where the
merge conflict had the additional ${OPTIONAL_CRYPTO/PKCS11..} variables
in TEST_LDFLAGS and TEST_FLAGS which commit b081038c7464f7a916560b4
had brought in.  So that shouldn't really be  the cause of this error.

And for reference:

$ rpm -q cmake
cmake-2.8.12.2-2.el7.x86_64


--
kind regards,

David Sommerseth
OpenVPN Inc

Patch

diff --git a/configure.ac b/configure.ac
index 9c31435b..76d9f182 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1381,15 +1381,8 @@  AC_SUBST([sampledir])
 AC_SUBST([systemdunitdir])
 AC_SUBST([tmpfilesdir])
 
-VENDOR_SRC_ROOT="\$(abs_top_srcdir)/vendor/"
-VENDOR_DIST_ROOT="\$(abs_top_builddir)/vendor/dist"
-VENDOR_BUILD_ROOT="\$(abs_top_builddir)/vendor/.build"
-AC_SUBST([VENDOR_SRC_ROOT])
-AC_SUBST([VENDOR_BUILD_ROOT])
-AC_SUBST([VENDOR_DIST_ROOT])
-
-TEST_LDFLAGS="-lcmocka -L\$(abs_top_builddir)/vendor/dist/lib -Wl,-rpath,\$(abs_top_builddir)/vendor/dist/lib"
-TEST_CFLAGS="-I\$(top_srcdir)/include -I\$(abs_top_builddir)/vendor/dist/include"
+TEST_LDFLAGS="-lcmocka -L\$(top_builddir)/vendor/dist/lib -Wl,-rpath,\$(top_builddir)/vendor/dist/lib"
+TEST_CFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/vendor/dist/include"
 
 AC_SUBST([TEST_LDFLAGS])
 AC_SUBST([TEST_CFLAGS])
diff --git a/vendor/Makefile.am b/vendor/Makefile.am
index 674784ab..b68d0311 100644
--- a/vendor/Makefile.am
+++ b/vendor/Makefile.am
@@ -1,18 +1,17 @@ 
-# needs an absolute path bc. of the cmake invocation
-cmockasrc     = "@VENDOR_SRC_ROOT@/cmocka"
-cmockabuild   = "@VENDOR_BUILD_ROOT@/cmocka"
-cmockainstall = "@VENDOR_DIST_ROOT@"
+cmockasrc   = $(srcdir)/cmocka
+cmockabuild = $(builddir)/cmocka
+cmockadist  = $(builddir)/dist
 
 MAINTAINERCLEANFILES = \
 	$(srcdir)/Makefile.in \
 	"$(cmockabuild)" \
-	"$(cmockainstall)" \
-	"@VENDOR_BUILD_ROOT@"
+	"$(cmockadist)"
 
 libcmocka:
 if CMOCKA_INITIALIZED
-	mkdir -p $(cmockabuild) $(cmockainstall)
-	(cd $(cmockabuild) && cmake -DCMAKE_INSTALL_PREFIX=$(cmockainstall) $(cmockasrc) && make && make install)
+	mkdir -p $(cmockabuild) $(cmockadist)
+	## Compensate for the cd in the paths
+	(cd cmocka && cmake -DCMAKE_INSTALL_PREFIX=../$(cmockadist) ../$(cmockasrc) && make && make install)
 endif
 
 check: libcmocka