summaryrefslogtreecommitdiff
path: root/openssl/test
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2016-09-30 00:43:05 -0700
committerAlex Crichton <alex@alexcrichton.com>2016-10-12 22:49:55 -0700
commit43c951f743e68fac5f45119eda7c994882a1d489 (patch)
tree45169f1b92858a3ba2ad0287de1bf1ecb395804b /openssl/test
parentc1e41349fbdf6d4ff942e236500c0d639203968d (diff)
downloadrust-openssl-43c951f743e68fac5f45119eda7c994882a1d489.zip
Add support for OpenSSL 1.1.0
This commit is relatively major refactoring of the `openssl-sys` crate as well as the `openssl` crate itself. The end goal here was to support OpenSSL 1.1.0, and lots of other various tweaks happened along the way. The major new features are: * OpenSSL 1.1.0 is supported * OpenSSL 0.9.8 is no longer supported (aka all OSX users by default) * All FFI bindings are verified with the `ctest` crate (same way as the `libc` crate) * CI matrixes are vastly expanded to include 32/64 of all platforms, more OpenSSL version coverage, as well as ARM coverage on Linux * The `c_helpers` module is completely removed along with the `gcc` dependency. * The `openssl-sys` build script was completely rewritten * Now uses `OPENSSL_DIR` to find the installation, not include/lib env vars. * Better error messages for mismatched versions. * Better error messages for failing to find OpenSSL on a platform (more can be done here) * Probing of OpenSSL build-time configuration to inform the API of the `*-sys` crate. * Many Cargo features have been removed as they're now enabled by default. As this is a breaking change to both the `openssl` and `openssl-sys` crates this will necessitate a major version bump of both. There's still a few more API questions remaining but let's hash that out on a PR! Closes #452
Diffstat (limited to 'openssl/test')
-rwxr-xr-xopenssl/test/build.sh35
-rwxr-xr-xopenssl/test/run.sh33
2 files changed, 33 insertions, 35 deletions
diff --git a/openssl/test/build.sh b/openssl/test/build.sh
index 2c38f3a3..106a38d3 100755
--- a/openssl/test/build.sh
+++ b/openssl/test/build.sh
@@ -1,33 +1,48 @@
#!/bin/bash
-set -e
+
+set -ex
MAX_REDIRECTS=5
-OPENSSL=openssl-1.0.2h.tar.gz
+OPENSSL=openssl-$BUILD_OPENSSL_VERSION.tar.gz
OUT=/tmp/$OPENSSL
-SHA1="577585f5f5d299c44dd3c993d3c0ac7a219e4949"
+
+me=$0
+myname=`basename $me`
+
+cmp --silent $me $HOME/openssl/$myname && exit 0 || echo "cache is busted"
+
+rm -rf $HOME/openssl
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
exit 0
fi
-if [ "$TARGET" == "arm-unknown-linux-gnueabihf" ]; then
- export C_INCLUDE_PATH=/usr/arm-linux-gnueabihf/include
- CROSS=arm-linux-gnueabihf-
+if [ "$BUILD_OPENSSL_VERSION" == "" ]; then
+ exit 0
+fi
+
+if [ "$TARGET" == "i686-unknown-linux-gnu" ]; then
+ OS_COMPILER=linux-elf
+ OS_FLAGS=-m32
+elif [ "$TARGET" == "arm-unknown-linux-gnueabihf" ]; then
OS_COMPILER=linux-armv4
+ export AR=arm-linux-gnueabihf-ar
+ export CC=arm-linux-gnueabihf-gcc
else
OS_COMPILER=linux-x86_64
fi
mkdir -p /tmp/openssl
+cp $me /tmp/openssl/$myname
cd /tmp/openssl
curl -o $OUT -L --max-redirs $MAX_REDIRECTS https://openssl.org/source/$OPENSSL \
|| curl -o $OUT -L --max-redirs ${MAX_REDIRECTS} http://mirrors.ibiblio.org/openssl/source/$OPENSSL
-echo "$SHA1 $OUT" | sha1sum -c -
-
tar --strip-components=1 -xzf $OUT
-./Configure --prefix=$HOME/openssl shared --cross-compile-prefix=$CROSS $OS_COMPILER
-make
+./Configure --prefix=$HOME/openssl $OS_COMPILER -fPIC $OS_FLAGS
+
+make -j$(nproc)
make install
+cp $myname $HOME/openssl/$myname
diff --git a/openssl/test/run.sh b/openssl/test/run.sh
index 2c2473b1..eed7ebac 100755
--- a/openssl/test/run.sh
+++ b/openssl/test/run.sh
@@ -1,32 +1,15 @@
#!/bin/bash
set -e
-MAIN_TARGETS=https://static.rust-lang.org/dist
-
-if [ "$TEST_FEATURES" == "true" ]; then
- FEATURES="tlsv1_2 tlsv1_1 dtlsv1 dtlsv1_2 sslv3 aes_xts aes_ctr npn alpn rfc5114 ecdh_auto pkcs5_pbkdf2_hmac x509_clone ssl_context_clone x509_generator_request hmac hmac_clone dh_from_params x509_expiry"
-fi
-
-if [ "$TRAVIS_OS_NAME" != "osx" ]; then
- export OPENSSL_LIB_DIR=$HOME/openssl/lib
- export OPENSSL_INCLUDE_DIR=$HOME/openssl/include
- export LD_LIBRARY_PATH=$HOME/openssl/lib:$LD_LIBRARY_PATH
+if [ "$BUILD_OPENSSL_VERSION" != "" ]; then
+ FEATURES="aes_xts aes_ctr npn alpn rfc5114 ecdh_auto"
fi
-if [ -n "$TARGET" ]; then
- FLAGS="--target=$TARGET"
- COMMAND="build"
-
- # Download the rustlib folder from the relevant portion of main distribution's
- # tarballs.
- dir=rust-std-$TARGET
- pkg=rust-std
- curl -s $MAIN_TARGETS/$pkg-$TRAVIS_RUST_VERSION-$TARGET.tar.gz | \
- tar xzf - -C $HOME/rust/lib/rustlib --strip-components=4 \
- $pkg-$TRAVIS_RUST_VERSION-$TARGET/$dir/lib/rustlib/$TARGET
-else
- COMMAND="test"
+if [ -d "$HOME/openssl/lib" ]; then
+ export OPENSSL_DIR=$HOME/openssl
+ export PATH=$HOME/openssl/bin:$PATH
fi
-export PATH=$HOME/openssl/bin:$PATH
-(cd openssl && RUST_BACKTRACE=1 cargo $COMMAND $FLAGS --features "$FEATURES")
+cargo run --manifest-path systest/Cargo.toml --target $TARGET
+exec cargo test --manifest-path openssl/Cargo.toml --target $TARGET \
+ --features "$FEATURES"