From c17597a4fb1795911a2ae126fa0734b6ae1c663a Mon Sep 17 00:00:00 2001 From: Elms Date: Fri, 5 Feb 2021 10:40:31 -0800 Subject: [PATCH] build: arbitrary path for `make check` To support builds in other directories, unit.test and wolfcrypt test must be aware of the source and build directory. --- .gitignore | 4 +++ Makefile.am | 2 -- configure.ac | 10 +++++- scripts/include.am | 1 + scripts/unit.test | 15 --------- scripts/unit.test.in | 8 +++++ wolfcrypt/test/include.am | 3 +- wolfcrypt/test/test.c | 56 +++++++++++++++++++--------------- wolfcrypt/test/test_paths.h.in | 25 +++++++++++++++ 9 files changed, 79 insertions(+), 45 deletions(-) delete mode 100755 scripts/unit.test create mode 100644 scripts/unit.test.in create mode 100644 wolfcrypt/test/test_paths.h.in diff --git a/.gitignore b/.gitignore index 0e10af5f9..e4b39ed6e 100644 --- a/.gitignore +++ b/.gitignore @@ -242,6 +242,10 @@ linuxkm/libwolfssl.mod.c linuxkm/module_exports.c linuxkm/linuxkm/get_thread_size +# autotools generated +scripts/unit.test +wolfcrypt/test/test_paths.h + # MPLAB Generated Files (OS X) mcapi/wolfcrypt_mcapi.X/nbproject/Makefile-* mcapi/wolfcrypt_mcapi.X/nbproject/Package-default.bash diff --git a/Makefile.am b/Makefile.am index c0477397c..78e0e45ee 100644 --- a/Makefile.am +++ b/Makefile.am @@ -23,8 +23,6 @@ noinst_DATA = SUBDIRS_OPT = DIST_SUBDIRS_OPT = -DISTCHECK_CONFIGURE_FLAGS = CPPFLAGS=-DDISTCHECK_BUILD - #includes additional rules from aminclude.am @INC_AMINCLUDE@ DISTCLEANFILES+= aminclude.am diff --git a/configure.ac b/configure.ac index 054a7b4e3..fd60f815c 100644 --- a/configure.ac +++ b/configure.ac @@ -6145,7 +6145,15 @@ AC_SUBST([LIB_STATIC_ADD]) # FINAL AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h]) -AC_CONFIG_FILES([Makefile wolfssl/version.h wolfssl/options.h cyassl/options.h support/wolfssl.pc rpm/spec]) +AC_CONFIG_FILES([Makefile + wolfssl/version.h + wolfssl/options.h + cyassl/options.h + support/wolfssl.pc + rpm/spec + wolfcrypt/test/test_paths.h + ]) +AC_CONFIG_FILES([scripts/unit.test],[chmod +x scripts/unit.test]) AX_CREATE_GENERIC_CONFIG AX_AM_JOBSERVER([yes]) diff --git a/scripts/include.am b/scripts/include.am index fafdb43ab..dc47aad84 100644 --- a/scripts/include.am +++ b/scripts/include.am @@ -82,6 +82,7 @@ dist_noinst_SCRIPTS+= scripts/ocsp.test endif dist_noinst_SCRIPTS+= scripts/unit.test +noinst_SCRIPTS+= scripts/unit.test.in endif endif diff --git a/scripts/unit.test b/scripts/unit.test deleted file mode 100755 index 6383a9800..000000000 --- a/scripts/unit.test +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -# for makefile use PWD as it is safe to assume location of execution -if [ "$MAKELEVEL" != "" ]; then - DIRNAME=$PWD; -else - DIRNAME="$(dirname "$0")/.."; -fi - -bwrap_path="$(command -v bwrap)" -if [ -n "$bwrap_path" ]; then - exec "$bwrap_path" --unshare-net --dev-bind / / "$DIRNAME/tests/unit.test" "$@" -else - exec "$DIRNAME/tests/unit.test" "$@" -fi diff --git a/scripts/unit.test.in b/scripts/unit.test.in new file mode 100644 index 000000000..2bb3012ad --- /dev/null +++ b/scripts/unit.test.in @@ -0,0 +1,8 @@ +#!/bin/sh + +bwrap_path="$(command -v bwrap)" +if [ -n "$bwrap_path" ]; then + exec "$bwrap_path" --unshare-net --dev-bind / / "@builddir@/tests/unit.test" "$@" +else + exec "@builddir@/tests/unit.test" "$@" +fi diff --git a/wolfcrypt/test/include.am b/wolfcrypt/test/include.am index 37b4a8b95..905333ee8 100644 --- a/wolfcrypt/test/include.am +++ b/wolfcrypt/test/include.am @@ -12,8 +12,7 @@ noinst_PROGRAMS+= wolfcrypt/test/testwolfcrypt wolfcrypt_test_testwolfcrypt_SOURCES = wolfcrypt/test/test.c wolfcrypt_test_testwolfcrypt_LDADD = src/libwolfssl.la $(LIB_STATIC_ADD) wolfcrypt_test_testwolfcrypt_DEPENDENCIES = src/libwolfssl.la -noinst_HEADERS += wolfcrypt/test/test.h - +noinst_HEADERS += wolfcrypt/test/test.h wolfcrypt/test/test_paths.h.in endif endif diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index 12ed8759a..ada142640 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -94,8 +94,14 @@ _Pragma("GCC diagnostic ignored \"-Wunused-function\""); #endif #ifdef USE_FLAT_TEST_H + #ifdef HAVE_CONFIG_H + #include "test_paths.h" + #endif #include "test.h" #else + #ifdef HAVE_CONFIG_H + #include "wolfcrypt/test/test_paths.h" + #endif #include "wolfcrypt/test/test.h" #endif @@ -11641,20 +11647,20 @@ byte GetEntropy(ENTROPY_CMD cmd, byte* out) #elif defined(WOLFSSL_uTKERNEL2) #define CERT_PREFIX "/uda/" #define CERT_PATH_SEP "/" -#else +#endif + +#ifndef CERT_PREFIX #define CERT_PREFIX "./" +#endif +#ifndef CERT_PATH_SEP #define CERT_PATH_SEP "/" #endif -#define CERT_ROOT CERT_PREFIX "certs" CERT_PATH_SEP - -#ifdef DISTCHECK_BUILD -/* This is the path used during distcheck by autotools. - * Using a temp directory passed in would be more flexible */ - #define CERT_TEMPDIR "./_build/sub/" -#else - #define CERT_TEMPDIR CERT_PREFIX +#ifndef CERT_WRITE_TEMP_DIR + #define CERT_WRITE_TEMP_DIR CERT_PREFIX #endif +#define CERT_ROOT CERT_PREFIX "certs" CERT_PATH_SEP + /* Generated Test Certs */ #if !defined(USE_CERT_BUFFERS_1024) && !defined(USE_CERT_BUFFERS_2048) && \ !defined(USE_CERT_BUFFERS_3072) && !defined(USE_CERT_BUFFERS_4096) @@ -11746,44 +11752,44 @@ byte GetEntropy(ENTROPY_CMD cmd, byte* out) #ifndef NO_WRITE_TEMP_FILES #ifdef HAVE_ECC #ifdef WOLFSSL_CERT_GEN - static const char* certEccPemFile = CERT_TEMPDIR "certecc.pem"; + static const char* certEccPemFile = CERT_WRITE_TEMP_DIR "certecc.pem"; #endif #if defined(WOLFSSL_CERT_GEN) && !defined(NO_RSA) - static const char* certEccRsaPemFile = CERT_TEMPDIR "certeccrsa.pem"; - static const char* certEccRsaDerFile = CERT_TEMPDIR "certeccrsa.der"; + static const char* certEccRsaPemFile = CERT_WRITE_TEMP_DIR "certeccrsa.pem"; + static const char* certEccRsaDerFile = CERT_WRITE_TEMP_DIR "certeccrsa.der"; #endif - static const char* eccCaKeyPemFile = CERT_TEMPDIR "ecc-key.pem"; - static const char* eccPubKeyDerFile = CERT_TEMPDIR "ecc-public-key.der"; - static const char* eccCaKeyTempFile = CERT_TEMPDIR "ecc-key.der"; + static const char* eccCaKeyPemFile = CERT_WRITE_TEMP_DIR "ecc-key.pem"; + static const char* eccPubKeyDerFile = CERT_WRITE_TEMP_DIR "ecc-public-key.der"; + static const char* eccCaKeyTempFile = CERT_WRITE_TEMP_DIR "ecc-key.der"; #ifdef HAVE_PKCS8 - static const char* eccPkcs8KeyDerFile = CERT_TEMPDIR "ecc-key-pkcs8.der"; + static const char* eccPkcs8KeyDerFile = CERT_WRITE_TEMP_DIR "ecc-key-pkcs8.der"; #endif #if defined(WOLFSSL_CERT_GEN) || \ (defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_TEST_CERT)) - static const char* certEccDerFile = CERT_TEMPDIR "certecc.der"; + static const char* certEccDerFile = CERT_WRITE_TEMP_DIR "certecc.der"; #endif #endif /* HAVE_ECC */ #ifndef NO_RSA #if defined(WOLFSSL_CERT_GEN) || \ (defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_TEST_CERT)) - static const char* otherCertDerFile = CERT_TEMPDIR "othercert.der"; - static const char* certDerFile = CERT_TEMPDIR "cert.der"; + static const char* otherCertDerFile = CERT_WRITE_TEMP_DIR "othercert.der"; + static const char* certDerFile = CERT_WRITE_TEMP_DIR "cert.der"; #endif #ifdef WOLFSSL_CERT_GEN - static const char* otherCertPemFile = CERT_TEMPDIR "othercert.pem"; - static const char* certPemFile = CERT_TEMPDIR "cert.pem"; + static const char* otherCertPemFile = CERT_WRITE_TEMP_DIR "othercert.pem"; + static const char* certPemFile = CERT_WRITE_TEMP_DIR "cert.pem"; #endif #ifdef WOLFSSL_CERT_REQ - static const char* certReqDerFile = CERT_TEMPDIR "certreq.der"; - static const char* certReqPemFile = CERT_TEMPDIR "certreq.pem"; + static const char* certReqDerFile = CERT_WRITE_TEMP_DIR "certreq.der"; + static const char* certReqPemFile = CERT_WRITE_TEMP_DIR "certreq.pem"; #endif #endif /* !NO_RSA */ #if !defined(NO_RSA) || !defined(NO_DSA) #ifdef WOLFSSL_KEY_GEN - static const char* keyDerFile = CERT_TEMPDIR "key.der"; - static const char* keyPemFile = CERT_TEMPDIR "key.pem"; + static const char* keyDerFile = CERT_WRITE_TEMP_DIR "key.der"; + static const char* keyPemFile = CERT_WRITE_TEMP_DIR "key.pem"; #endif #endif diff --git a/wolfcrypt/test/test_paths.h.in b/wolfcrypt/test/test_paths.h.in new file mode 100644 index 000000000..e4428c459 --- /dev/null +++ b/wolfcrypt/test/test_paths.h.in @@ -0,0 +1,25 @@ +/* wolfcrypt/test/test_paths.h + * + * Copyright (C) 2006-2020 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + +#ifndef NO_FILESYSTEM + #define CERT_PREFIX "@abs_top_srcdir@/" + #define CERT_WRITE_TEMP_DIR "@abs_top_builddir@/" +#endif /* NO_FILESYSTEM */