Skip to contentSkip to conversation

cmocka: use relative paths

PATCH Superseded Steffan Karger 3 participants 4 messages Aug 21, 2018 – Apr 17, 2019

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 cmocka: use relative paths

Simplifies the build scripts, and fixes my CI, where paths on the test slave can be different from paths on the build slave.

---
 configure.ac       | 11 ++---------
 vendor/Makefile.am | 15 +++++++--------
 2 files changed, 9 insertions(+), 17 deletions(-)
configure.ac +2 -9
index 9c31435b..76d9f182 100644
@@ -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])
vendor/Makefile.am +7 -8
index 674784ab..b68d0311 100644
@@ -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
Signature · 1 line
2.17.1
#1 lore raw
Quoted 8 lines · Steffan Karger

Simplifies the build scripts, and fixes my CI, where paths on the test slave can be different from paths on the build slave.

---
 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

#2 lore raw

PATCH v2 1/1 cmocka: use relative paths

Simplifies the build scripts, and fixes my CI, where paths on the test slave can be different from paths on the build slave.

---
v2: rebase on master, fix in-source builds (thanks dazo for spotting)

 .gitignore         |  2 +-
 configure.ac       | 11 ++---------
 vendor/Makefile.am | 16 ++++++++--------
 3 files changed, 11 insertions(+), 18 deletions(-)
.gitignore +1 -1
index 25009d81..5ef9c14d 100644
@@ -56,7 +56,7 @@ doc/openvpn.8.html
 distro/rpm/openvpn.spec
 distro/systemd/*.service
 sample/sample-keys/sample-ca/
-vendor/.build
+vendor/cmocka_build
 vendor/dist
 build/msvc/msvc-generate/version.m4
 
configure.ac +2 -9
index 1e6891b1..7fe9b6e6 100644
@@ -1353,15 +1353,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="${OPTIONAL_CRYPTO_LIBS} ${OPTIONAL_PKCS11_LIBS} -lcmocka -L\$(abs_top_builddir)/vendor/dist/lib -Wl,-rpath,\$(abs_top_builddir)/vendor/dist/lib"
-TEST_CFLAGS="${OPTIONAL_CRYPTO_CFLAGS} ${OPTIONAL_PKCS11_CFLAGS} -I\$(top_srcdir)/include -I\$(abs_top_builddir)/vendor/dist/include"
+TEST_LDFLAGS="${OPTIONAL_CRYPTO_LIBS} ${OPTIONAL_PKCS11_HELPER_LIBS} -lcmocka -L\$(top_builddir)/vendor/dist/lib -Wl,-rpath,\$(top_builddir)/vendor/dist/lib"
+TEST_CFLAGS="${OPTIONAL_CRYPTO_CFLAGS} ${OPTIONAL_PKCS11_HELPER_CFLAGS} -I\$(top_srcdir)/include -I\$(top_builddir)/vendor/dist/include"
 
 AC_SUBST([TEST_LDFLAGS])
 AC_SUBST([TEST_CFLAGS])
vendor/Makefile.am +8 -8
index 674784ab..46072c3c 100644
@@ -1,18 +1,18 @@
-# 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
+# Not just '$(builddir)/cmocka', because cmocka requires an out-of-source build
+cmockabuild = $(builddir)/cmocka_build
+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 $(cmockabuild) && cmake -DCMAKE_INSTALL_PREFIX=../$(cmockadist) ../$(cmockasrc) && make && make install)
 endif
 
 check: libcmocka
Signature · 1 line
2.17.1
Acked-by on v2 1/1
#3 lore raw

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

This didn't break anything on my systems, and changes makes sense. I spotted another fix also sneaked in, replacing the incorrect OPTIONAL_PKCS11_{LIBS,CFLAGS} with the correct OPTIONAL_PKCS11_HELPER_{LIBS,CFLAGS}.

Your patch has been applied to the following branches

commit 4ded2deda0d6d33d38fbbd1f4cd4e9acc0836a89 (master) commit 84a649bee961947343be2c47041a8ec9b37e29d1 (release/2.4)

Author: Steffan Karger
Date:   Sun Oct 28 15:54:49 2018 +0100
     cmocka: use relative paths

     Signed-off-by: Steffan Karger <[email protected]...>
     Acked-by: David Sommerseth <[email protected]...>
     Message-Id: <[email protected]...>
     URL: https://www.mail-archive.com/[email protected]/msg17849.html
     Signed-off-by: David Sommerseth <[email protected]...>

- --
kind regards,

David Sommerseth

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)

iQIcBAEBCgAGBQJct4ghAAoJEIbPlEyWcf3yDboP/j6hYYlcbAibt8VYCaW9fCdo MUteapG0gP+aLsgfcLf5MAj3ArY1hWN1E2QRMaHbimyzjHG7HvoZZRbZ0TXH+adJ 7euIRQbngG/eGUozrxaYc4rVDANlY578K7rKsfsJTbl0U5JmMckmMfrN9o3dvTaY x1mtoU/9tzrKKiBUNRRF4y6IIAnGl5ll3MAA5J05i6ffoD0EekDOgOHHVwOut2un Uah1DmpKrZzL6MWuuwFG0i5x1yh6THql+usLvoVXWmzY8AUSOgfHyPNg7g0hgqx5 K2jJhuc26aLfgxwSEPOc6z41xt7lHGpjOTwfLyGx8Z0OGCykEDLwtnnea429gC48 8MvQYTefpPX7OoTJ81KLg6By1fVv9j/aGL83/PEtm8YqxZnypZRk53kj5wXNn4fJ ovs3nmQwSuwvDPIsfa636e+ZzKc9wAMI7O6BIx/JJ4DfVFe7dIuChGMnbJsDJ3dq J063yXqwleeoNUfXrDBHgrMdvXJe40nEjqAJQ5nzcxA6diu9gvJeSzD+ZaEpfQ6o ZS8lXlHeREqNaLepx+HXQGVu69SlGNb8nZhGUH5qC6Q+eghfGTmoqai25cJJzeJV 3xYBOea4k5euvLn850bf6dGvzuD8kdgmaxyd1vOJlEG1bpvz2Dy7l+rRF0tiF+FC K92L6CRrNdjMEVYnMXjy
=ogEA
-----END PGP SIGNATURE-----