From 48016adf52517ce3bca36eb5c658d9a92bee736b Mon Sep 17 00:00:00 2001 From: David Garske Date: Mon, 25 Jul 2022 17:03:10 -0700 Subject: [PATCH 1/3] Script to produce a small source/header only package (with CMake support) --- scripts/include.am | 1 + scripts/makedistsmall.sh | 116 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100755 scripts/makedistsmall.sh diff --git a/scripts/include.am b/scripts/include.am index 9bebd3a67..18cbe1df7 100644 --- a/scripts/include.am +++ b/scripts/include.am @@ -100,6 +100,7 @@ EXTRA_DIST += scripts/sniffer-static-rsa.pcap \ scripts/ping.test \ scripts/benchmark.test \ scripts/memtest.sh \ + scripts/makedistsmall.sh \ scripts/openssl_srtp.test diff --git a/scripts/makedistsmall.sh b/scripts/makedistsmall.sh new file mode 100755 index 000000000..d4ff042df --- /dev/null +++ b/scripts/makedistsmall.sh @@ -0,0 +1,116 @@ +#!/bin/bash +#set -v + +# Script to produce a small source/header only package (with CMake support) +# Run this script from the wolfSSL root as `./scripts/makedistsmall.sh`. +# Package requires building with: +# cmake .. -DWOLFSSL_EXAMPLES=no -DWOLFSSL_FILESYSTEM=no + +WOLFSSL_TEMPDIR=`mktemp -d` +WOLFSSL_VERSION=`grep -Eo '[0-9]\.[0-9]\.[0-9]+' wolfssl/version.h` +echo "Detected wolfSSL Version $WOLFSSL_VERSION" + +if [ "$1" == "keep" ]; then KEEP="yes"; else KEEP="no"; fi + +# generate a wolfSSL archive with minimum sources +git clone . $WOLFSSL_TEMPDIR + +# cleanup example directories +pushd $WOLFSSL_TEMPDIR +echo "Removing files not needed..." +rm -rf ./.git* +rm -rf ./build-aux +rm -rf ./certs +rm -rf ./ctaocrypt +rm -rf ./cyassl +rm -rf ./doc +# these use test.h, which are not portable +rm -rf ./examples +rm -rf ./IDE +rm -rf ./IPP +rm -rf ./lib +rm -rf ./linuxkm +rm -rf ./m4 +rm -rf ./mcapi +rm -rf ./mplabx +rm -rf ./mqx +rm -rf ./rpm +rm -rf ./scripts +rm -rf ./sslSniffer +rm -rf ./swig +rm -rf ./tests +rm -rf ./testsuite +rm -rf ./tirtos +rm -rf ./wolfcrypt/user-crypto +rm -rf ./wrapper +rm -rf ./zephyr +rm -f *.rc *.supp *.ac *.am *.conf *.sh *.cproject *.project *.pl +rm -f Vagrantfile SCRIPTS-LIST quit input resource.h + +find . -name "*.am" -delete +find . -name "*.vcxproj" -delete +find . -name "*.vcproj" -delete +find . -name "*.sln" -delete + +# TLS/Compatiblity layer +#rm -rf ./src +#rm -rf ./wolfssl/openssl + +# wolfCrypt +rm -f ./wolfcrypt/src/*.i +#rm -f ./wolfcrypt/src/*.S +#rm -f ./wolfcrypt/src/*.asm +#rm -f ./wolfcrypt/src/arc4.c +#rm -f ./wolfcrypt/src/async.c +#rm -f ./wolfcrypt/src/blake* +#rm -f ./wolfcrypt/src/camellia.c +#rm -f ./wolfcrypt/src/chacha* +#rm -f ./wolfcrypt/src/compress.c +#rm -f ./wolfcrypt/src/cpuid.c +#rm -f ./wolfcrypt/src/curve* +#rm -f ./wolfcrypt/src/cryptocb.c +#rm -f ./wolfcrypt/src/dsa.c +#rm -f ./wolfcrypt/src/ed* +#rm -f ./wolfcrypt/src/evp.c +#rm -f ./wolfcrypt/src/fe* +#rm -f ./wolfcrypt/src/ge* +#rm -f ./wolfcrypt/src/md*.c +#rm -f ./wolfcrypt/src/pkcs* +#rm -f ./wolfcrypt/src/poly* +#rm -f ./wolfcrypt/src/pwdbased.c +#rm -f ./wolfcrypt/src/rc2.c +#rm -f ./wolfcrypt/src/ripemd.c +#rm -f ./wolfcrypt/src/rabbit.c +#rm -f ./wolfcrypt/src/signature.c +#rm -f ./wolfcrypt/src/srp.c +#rm -f ./wolfcrypt/src/wc_dsp.c +#rm -f ./wolfcrypt/src/wolfevent.c +#rm -f ./wolfcrypt/src/wc_encrypt.c +#rm -f ./wolfcrypt/src/wc_pkcs11.c + +# SP Math files +#rm -f ./wolfcrypt/src/sp_arm32.c +#rm -f ./wolfcrypt/src/sp_arm64.c +#rm -f ./wolfcrypt/src/sp_armthumb.c +#rm -f ./wolfcrypt/src/sp_cortexm.c +#rm -f ./wolfcrypt/src/sp_dsp32.c +#rm -f ./wolfcrypt/src/sp_x86_64.c + +# wolfCrypt Ports +rm -rf ./wolfcrypt/src/port +rm -rf ./wolfssl/wolfcrypt/port + +# Setup blank options.h +cp ./wolfssl/options.h.in ./wolfssl/options.h + +popd + +tar zcf wolfssl-$WOLFSSL_VERSION-small.tar.gz -C $WOLFSSL_TEMPDIR . + +if [ "$KEEP" == "no" ]; +then + echo "Removing tmp directory" + rm -rf $WOLFSSL_TEMPDIR +fi + +echo "Done" From 9e213cab19fa4cfee86f26d87ec78f8f9dd2dea1 Mon Sep 17 00:00:00 2001 From: David Garske Date: Tue, 26 Jul 2022 08:50:27 -0700 Subject: [PATCH 2/3] Fixes for the script (from Douzzer). --- scripts/makedistsmall.sh | 48 ++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/scripts/makedistsmall.sh b/scripts/makedistsmall.sh index d4ff042df..52377b731 100755 --- a/scripts/makedistsmall.sh +++ b/scripts/makedistsmall.sh @@ -6,19 +6,39 @@ # Package requires building with: # cmake .. -DWOLFSSL_EXAMPLES=no -DWOLFSSL_FILESYSTEM=no -WOLFSSL_TEMPDIR=`mktemp -d` -WOLFSSL_VERSION=`grep -Eo '[0-9]\.[0-9]\.[0-9]+' wolfssl/version.h` -echo "Detected wolfSSL Version $WOLFSSL_VERSION" - if [ "$1" == "keep" ]; then KEEP="yes"; else KEEP="no"; fi +WOLFSSL_TEMPDIR=$(mktemp -d) || exit $? + +function cleanup_on_exit() { + if [ "$KEEP" == "no" ]; + then + echo "Removing tmp directory" + rm -rf "$WOLFSSL_TEMPDIR" + else + echo "tmp directory ${WOLFSSL_TEMPDIR} left in place." + fi +} + +trap cleanup_on_exit EXIT + +WOLFSSL_VERSION=$(grep -Eo '[0-9]\.[0-9]\.[0-9]+' wolfssl/version.h) +if [ -n "$WOLFSSL_VERSION" ]; then + echo "Detected wolfSSL Version $WOLFSSL_VERSION" +else + echo "Couldn't detect wolfSSL version." + exit 1 +fi + # generate a wolfSSL archive with minimum sources -git clone . $WOLFSSL_TEMPDIR +echo "Setting up work directory..." +git clone -q -n --shared . "$WOLFSSL_TEMPDIR" || exit $? +pushd "$WOLFSSL_TEMPDIR" >/dev/null || exit $? +git checkout -q master || exit $? # cleanup example directories -pushd $WOLFSSL_TEMPDIR echo "Removing files not needed..." -rm -rf ./.git* +rm -rf -- ./.git* rm -rf ./build-aux rm -rf ./certs rm -rf ./ctaocrypt @@ -44,7 +64,7 @@ rm -rf ./tirtos rm -rf ./wolfcrypt/user-crypto rm -rf ./wrapper rm -rf ./zephyr -rm -f *.rc *.supp *.ac *.am *.conf *.sh *.cproject *.project *.pl +rm -f -- *.rc *.supp *.ac *.am *.conf *.sh *.cproject *.project *.pl rm -f Vagrantfile SCRIPTS-LIST quit input resource.h find . -name "*.am" -delete @@ -101,16 +121,12 @@ rm -rf ./wolfcrypt/src/port rm -rf ./wolfssl/wolfcrypt/port # Setup blank options.h -cp ./wolfssl/options.h.in ./wolfssl/options.h +cp ./wolfssl/options.h.in ./wolfssl/options.h || exit $? -popd +popd >/dev/null || exit $? -tar zcf wolfssl-$WOLFSSL_VERSION-small.tar.gz -C $WOLFSSL_TEMPDIR . +echo "Generating wolfssl-${WOLFSSL_VERSION}-small.tar.gz..." -if [ "$KEEP" == "no" ]; -then - echo "Removing tmp directory" - rm -rf $WOLFSSL_TEMPDIR -fi +tar zcf "wolfssl-${WOLFSSL_VERSION}-small.tar.gz" -C "$WOLFSSL_TEMPDIR" . || exit $? echo "Done" From 0f0b7c553caa2bda15ddc51afc4409cddd129458 Mon Sep 17 00:00:00 2001 From: David Garske Date: Wed, 27 Jul 2022 08:33:27 -0700 Subject: [PATCH 3/3] Keep .i files needed for fast math. Use test_paths.h from .in to remove user path info. --- scripts/makedistsmall.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/makedistsmall.sh b/scripts/makedistsmall.sh index 52377b731..46a462791 100755 --- a/scripts/makedistsmall.sh +++ b/scripts/makedistsmall.sh @@ -77,7 +77,7 @@ find . -name "*.sln" -delete #rm -rf ./wolfssl/openssl # wolfCrypt -rm -f ./wolfcrypt/src/*.i +#rm -f ./wolfcrypt/src/*.i #rm -f ./wolfcrypt/src/*.S #rm -f ./wolfcrypt/src/*.asm #rm -f ./wolfcrypt/src/arc4.c @@ -122,6 +122,7 @@ rm -rf ./wolfssl/wolfcrypt/port # Setup blank options.h cp ./wolfssl/options.h.in ./wolfssl/options.h || exit $? +cp ./wolfcrypt/test/test_paths.h.in ./wolfcrypt/test/test_paths.h || exit $? popd >/dev/null || exit $?