summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2019-05-25 21:17:27 +0200
committerNikos Mavrogiannopoulos <nmav@redhat.com>2019-05-29 17:05:04 +0200
commitd9a3653c9a58fcbc7d07bf0f142d646deccc3c65 (patch)
tree5b01ef11ea525a88f8c37dd92f41fe56a89656c1
parenta67fa87f5382e40a08fdcbd4be554bb786c26b32 (diff)
downloadgnutls-tmp-fix-libopts.tar.gz
Do not regenerate autogen files if --enable-local-libopts is giventmp-fix-libopts
This addresses issue on installed systems which have autogen but use --enable-local-libopts. In these systems if the installed autogen would not match the local libopts library version compilation would fail because the auto-generated files depend on the corresponding to autogen version libopts internals. Resolves: #772 Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r--.gitlab-ci.yml4
-rw-r--r--configure.ac2
-rw-r--r--src/Makefile.am18
3 files changed, 23 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7fc747f5ff..ac6a8eb6ac 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -385,9 +385,13 @@ MinGW64:
echo ':DOSWin:M::MZ::/usr/bin/wine64:' > /proc/sys/fs/binfmt_misc/register &&
mkdir -p build && cd build
- dash ../configure --disable-gcc-warnings --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --cache-file ../cache/config.cache --with-included-libtasn1 --disable-guile --disable-nls --with-included-unistring --enable-local-libopts --disable-full-test-suite --disable-non-suiteb-curves --disable-doc
+ # generate the certtool autogen file to check whether later compilation will modify it
+ - mingw64-make -C src certtool-args.c.bak
- mingw64-make -j$(nproc)
- mingw64-make -C tests check -j$(nproc)
- cd ..
+ # since we use --enable-local-libopts the generated files must equal the .bak
+ - cmp build/src/certtool-args.c build/src/certtool-args.c.bak || false
tags:
- shared
- docker
diff --git a/configure.ac b/configure.ac
index 2112606601..e0c5c25d5b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -735,7 +735,7 @@ if test "$enable_tools" != "no" || test "$enable_doc" != "no"; then
*** autogen not found. Will not link against system libopts.
*** ]])
dnl simulate specifying option on the command line
- enable_local_libopts=yes
+ included_libopts=yes
fi
LIBOPTS_CHECK([src/libopts])
if test "$NEED_LIBOPTS_DIR" = "true";then
diff --git a/src/Makefile.am b/src/Makefile.am
index 0374924c53..501bca58c1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -272,6 +272,23 @@ libcmd_systemkey_la_LIBADD += $(LTLIBREADLINE) $(INET_PTON_LIB) $(LIB_CLOCK_GETT
SUFFIXES = .stamp .def .c.bak .h.bak
+if NEED_LIBOPTS
+# case --enable-local-libopts: We do not call AUTOGEN unless the .bak files are missing
+.def.stamp:
+ @b=`echo $@ | sed 's/.stamp$$//'`; \
+ if ! test -f $${srcdir}$${b}.c.bak;then \
+ echo "No .bak files found; will call autogen"; \
+ $(AM_V_GEN) $(AUTOGEN) $<; \
+ else \
+ echo "Re-using .bak files"; \
+ srcdir=$(srcdir)/; \
+ rm -f $${b}.c $${b}.h; \
+ cp -p $${srcdir}$${b}.c.bak $${b}.c; \
+ cp -p $${srcdir}$${b}.h.bak $${b}.h; \
+ fi
+ touch $@
+else
+# default case. We call autogen, and if that fails we resort to the bundled files.
.def.stamp:
$(AM_V_GEN) $(AUTOGEN) $< || { \
srcdir=''; \
@@ -281,6 +298,7 @@ SUFFIXES = .stamp .def .c.bak .h.bak
cp -p $${srcdir}$${b}.h.bak $${b}.h; \
} && \
touch $@
+endif
.c.c.bak:
-@rm -f $@