Merge pull request #663 from sfackler/circle
Switch over Linux tests to CircleCI
This commit is contained in:
commit
b1d5ec99dd
87
.travis.yml
87
.travis.yml
|
|
@ -1,87 +1,8 @@
|
||||||
language: rust
|
language: rust
|
||||||
sudo: required
|
|
||||||
rust: stable
|
rust: stable
|
||||||
dist: trusty
|
os: osx
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- TARGET=x86_64-unknown-linux-gnu
|
|
||||||
- BUILD_OPENSSL_VERSION=1.0.1u
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
# osx
|
|
||||||
- os: osx
|
|
||||||
env: TARGET=x86_64-apple-darwin
|
|
||||||
|
|
||||||
# ARM-bit version compat
|
|
||||||
- env: >
|
|
||||||
TARGET=arm-unknown-linux-gnueabihf
|
|
||||||
BUILD_OPENSSL_VERSION=1.0.2k
|
|
||||||
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc
|
|
||||||
QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf
|
|
||||||
RUST_TEST_THREADS=1
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- gcc-arm-linux-gnueabihf
|
|
||||||
- qemu-user-static
|
|
||||||
- libc6-dev-armhf-cross
|
|
||||||
- binfmt-support
|
|
||||||
- env: >
|
|
||||||
TARGET=arm-unknown-linux-gnueabihf
|
|
||||||
BUILD_OPENSSL_VERSION=1.1.0f
|
|
||||||
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc
|
|
||||||
QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf
|
|
||||||
RUST_TEST_THREADS=1
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- gcc-arm-linux-gnueabihf
|
|
||||||
- qemu-user-static
|
|
||||||
- libc6-dev-armhf-cross
|
|
||||||
- binfmt-support
|
|
||||||
|
|
||||||
# Minimum version supported
|
|
||||||
- rust: 1.10.0
|
|
||||||
|
|
||||||
# beta/nightly channels
|
|
||||||
- rust: beta
|
|
||||||
- rust: nightly
|
|
||||||
|
|
||||||
# 64-bit version compat
|
|
||||||
- env: BUILD_OPENSSL_VERSION=1.0.2k
|
|
||||||
- env: BUILD_OPENSSL_VERSION=1.1.0f
|
|
||||||
|
|
||||||
# 32-bit version compat
|
|
||||||
- env: TARGET=i686-unknown-linux-gnu BUILD_OPENSSL_VERSION=1.0.1u
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- gcc-multilib
|
|
||||||
- env: TARGET=i686-unknown-linux-gnu BUILD_OPENSSL_VERSION=1.0.2k
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- gcc-multilib
|
|
||||||
- env: TARGET=i686-unknown-linux-gnu BUILD_OPENSSL_VERSION=1.1.0f
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- gcc-multilib
|
|
||||||
|
|
||||||
# LibreSSL
|
|
||||||
- env: BUILD_LIBRESSL_VERSION=2.5.0
|
|
||||||
|
|
||||||
- env: BUILD_LIBRESSL_VERSION=2.5.4
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- ./openssl/test/build.sh
|
|
||||||
- rustup target add $TARGET || true
|
|
||||||
script:
|
|
||||||
- ./openssl/test/run.sh
|
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
cargo: true
|
cargo: true
|
||||||
directories:
|
script:
|
||||||
- $HOME/libressl
|
- cargo run --manifest-path=systest/Cargo.toml
|
||||||
- $HOME/openssl
|
- cargo test --manifest-path=openssl/Cargo.toml
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
# rust-openssl
|
# rust-openssl
|
||||||
|
|
||||||
[](https://travis-ci.org/sfackler/rust-openssl)
|
[](https://circleci.com/gh/sfackler/rust-openssl) [](https://travis-ci.org/sfackler/rust-openssl) [](https://ci.appveyor.com/project/sfackler/rust-openssl/branch/master)
|
||||||
|
|
||||||
|
|
||||||
[Documentation](https://docs.rs/openssl).
|
[Documentation](https://docs.rs/openssl).
|
||||||
|
|
||||||
|
|
@ -22,7 +23,7 @@ below.
|
||||||
On Linux, you can typically install OpenSSL via your package manager. The
|
On Linux, you can typically install OpenSSL via your package manager. The
|
||||||
headers are sometimes provided in a separate package than the runtime libraries
|
headers are sometimes provided in a separate package than the runtime libraries
|
||||||
- look for something like `openssl-devel` or `libssl-dev`. You will also need the
|
- look for something like `openssl-devel` or `libssl-dev`. You will also need the
|
||||||
regular development utilities, like `pkg-config`, as the custom build script relies
|
regular development utilities, like `pkg-config`, as the custom build script relies
|
||||||
on them.
|
on them.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,143 @@
|
||||||
|
defaults: &DEFAULT
|
||||||
|
working_directory: ~/build
|
||||||
|
docker:
|
||||||
|
- image: jimmycuadra/rust:1.18.0
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- run: apt-get update
|
||||||
|
- run: apt-get install -y curl
|
||||||
|
- run: RUST_VERSION=1.18.0 ./test/add_target.sh
|
||||||
|
- restore_cache:
|
||||||
|
key: registry
|
||||||
|
- run: cargo generate-lockfile
|
||||||
|
- save_cache:
|
||||||
|
key: registry-{{ epoch }}
|
||||||
|
paths:
|
||||||
|
- ~/.cargo/registry/index
|
||||||
|
- run: echo "${LIBRARY}-${VERSION}-${TARGET}" > ~/lib_key
|
||||||
|
- restore_cache:
|
||||||
|
key: lib-{{ checksum "~/lib_key" }}-{{ checksum "test/build_openssl.sh"}}
|
||||||
|
- run: ./test/build_openssl.sh
|
||||||
|
- save_cache:
|
||||||
|
key: lib-{{ checksum "~/lib_key" }}-{{ checksum "test/build_openssl.sh"}}
|
||||||
|
paths:
|
||||||
|
- ~/openssl
|
||||||
|
- restore_cache:
|
||||||
|
key: deps-1.18.0-{{ checksum "Cargo.lock" }}-{{ checksum "~/lib_key" }}
|
||||||
|
- run: |
|
||||||
|
export OPENSSL_DIR=$HOME/openssl
|
||||||
|
case "${NO_RUN}" in
|
||||||
|
"1") CMD=build;;
|
||||||
|
"") CMD=run;;
|
||||||
|
esac
|
||||||
|
cargo $CMD --manifest-path=systest/Cargo.toml --target $TARGET
|
||||||
|
- run: |
|
||||||
|
export OPENSSL_DIR=$HOME/openssl
|
||||||
|
export PATH=$OPENSSL_DIR/bin:$PATH
|
||||||
|
if [ "${NO_RUN}" = "1" ]; then
|
||||||
|
TEST_ARGS=--no-run
|
||||||
|
fi
|
||||||
|
cargo test \
|
||||||
|
--manifest-path=openssl/Cargo.toml \
|
||||||
|
--target $TARGET \
|
||||||
|
--all-features \
|
||||||
|
$TEST_ARGS
|
||||||
|
- save_cache:
|
||||||
|
key: deps-1.18.0-{{ checksum "Cargo.lock" }}-{{ checksum "~/lib_key" }}
|
||||||
|
paths:
|
||||||
|
- target
|
||||||
|
- ~/.cargo/registry/cache
|
||||||
|
|
||||||
|
openssl_110: &OPENSSL_110
|
||||||
|
LIBRARY: openssl
|
||||||
|
VERSION: 1.1.0f
|
||||||
|
|
||||||
|
openssl_102: &OPENSSL_102
|
||||||
|
LIBRARY: openssl
|
||||||
|
VERSION: 1.0.2l
|
||||||
|
|
||||||
|
openssl_101: &OPENSSL_101
|
||||||
|
LIBRARY: openssl
|
||||||
|
VERSION: 1.0.1u
|
||||||
|
|
||||||
|
libressl_new: &LIBRESSL_OLD
|
||||||
|
LIBRARY: libressl
|
||||||
|
VERSION: 2.5.0
|
||||||
|
|
||||||
|
libressl_new: &LIBRESSL_NEW
|
||||||
|
LIBRARY: libressl
|
||||||
|
VERSION: 2.5.5
|
||||||
|
|
||||||
|
x86_64: &X86_64
|
||||||
|
TARGET: x86_64-unknown-linux-gnu
|
||||||
|
|
||||||
|
i686: &I686
|
||||||
|
TARGET: i686-unknown-linux-gnu
|
||||||
|
|
||||||
|
armhf: &ARMHF
|
||||||
|
TARGET: arm-unknown-linux-gnueabihf
|
||||||
|
NO_RUN: 1
|
||||||
|
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
|
||||||
|
CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_AR: arm-linux-gnueabihf-ar
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
jobs:
|
||||||
|
x86_64-openssl-1.1.0:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_110, *X86_64]
|
||||||
|
x86_64-openssl-1.0.2:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_102, *X86_64]
|
||||||
|
x86_64-openssl-1.0.1:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_101, *X86_64]
|
||||||
|
i686-openssl-1.1.0:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_110, *I686]
|
||||||
|
i686-openssl-1.0.2:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_102, *I686]
|
||||||
|
i686-openssl-1.0.1:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_101, *I686]
|
||||||
|
armhf-openssl-1.1.0:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_110, *ARMHF]
|
||||||
|
armhf-openssl-1.0.2:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_102, *ARMHF]
|
||||||
|
armhf-openssl-1.0.1:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*OPENSSL_101, *ARMHF]
|
||||||
|
x86_64-libressl-old:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*LIBRESSL_OLD, *X86_64]
|
||||||
|
x86_64-libressl-new:
|
||||||
|
<<: *DEFAULT
|
||||||
|
environment:
|
||||||
|
<<: [*LIBRESSL_NEW, *X86_64]
|
||||||
|
workflows:
|
||||||
|
version: 2
|
||||||
|
tests:
|
||||||
|
jobs:
|
||||||
|
- x86_64-openssl-1.1.0
|
||||||
|
- x86_64-openssl-1.0.2
|
||||||
|
- x86_64-openssl-1.0.1
|
||||||
|
- i686-openssl-1.1.0
|
||||||
|
- i686-openssl-1.0.2
|
||||||
|
- i686-openssl-1.0.1
|
||||||
|
- armhf-openssl-1.1.0
|
||||||
|
- armhf-openssl-1.0.2
|
||||||
|
- armhf-openssl-1.0.1
|
||||||
|
- x86_64-libressl-old
|
||||||
|
- x86_64-libressl-new
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
MAX_REDIRECTS=5
|
|
||||||
|
|
||||||
if [ -n "${BUILD_LIBRESSL_VERSION}" ]; then
|
|
||||||
NAME=libressl
|
|
||||||
URL1="http://ftp3.usa.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${BUILD_LIBRESSL_VERSION}.tar.gz"
|
|
||||||
URL2="http://ftp.eu.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${BUILD_LIBRESSL_VERSION}.tar.gz"
|
|
||||||
OUT="/tmp/libressl-${BUILD_OPENSSL_VERSION}.tar.gz"
|
|
||||||
elif [ -n "${BUILD_OPENSSL_VERSION}" ]; then
|
|
||||||
NAME=openssl
|
|
||||||
URL1="https://openssl.org/source/openssl-${BUILD_OPENSSL_VERSION}.tar.gz"
|
|
||||||
URL2="http://mirrors.ibiblio.org/openssl/source/openssl-${BUILD_OPENSSL_VERSION}.tar.gz"
|
|
||||||
OUT="/tmp/openssl-${BUILD_OPENSSL_VERSION}.tar.gz"
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
me=$0
|
|
||||||
myname=`basename ${me}`
|
|
||||||
|
|
||||||
cmp --silent ${me} ${HOME}/${NAME}/${myname} && exit 0 || echo "cache is busted"
|
|
||||||
|
|
||||||
rm -rf "${HOME}/${NAME}"
|
|
||||||
|
|
||||||
if [ "${TRAVIS_OS_NAME}" == "osx" ]; 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/build
|
|
||||||
cp ${me} /tmp/build/${myname}
|
|
||||||
cd /tmp/build
|
|
||||||
|
|
||||||
curl -o ${OUT} -L --max-redirs ${MAX_REDIRECTS} ${URL1} \
|
|
||||||
|| curl -o ${OUT} -L --max-redirs ${MAX_REDIRECTS} ${URL2}
|
|
||||||
|
|
||||||
tar --strip-components=1 -xzf ${OUT}
|
|
||||||
|
|
||||||
if [ -n "${BUILD_LIBRESSL_VERSION}" ]; then
|
|
||||||
./configure --prefix=${HOME}/libressl
|
|
||||||
else
|
|
||||||
./Configure --prefix=${HOME}/openssl ${OS_COMPILER} -fPIC ${OS_FLAGS}
|
|
||||||
fi
|
|
||||||
|
|
||||||
make -j$(nproc)
|
|
||||||
make install
|
|
||||||
cp ${myname} ${HOME}/${NAME}/${myname}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
case "$BUILD_OPENSSL_VERSION" in
|
|
||||||
1.0.2*)
|
|
||||||
FEATURES="v102"
|
|
||||||
;;
|
|
||||||
1.1.0*)
|
|
||||||
FEATURES="v110"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo Using features: $FEATURES
|
|
||||||
|
|
||||||
if [ -n "${BUILD_LIBRESSL_VERSION}" -a -d "$HOME/libressl/lib" ]; then
|
|
||||||
echo "Testing build libressl-${BUILD_LIBRESSL_VERSION}"
|
|
||||||
export OPENSSL_DIR=${HOME}/libressl
|
|
||||||
export LD_LIBRARY_PATH="${HOME}/libressl/lib:${LD_LIBRARY_PATH}"
|
|
||||||
export PATH="${HOME}/libressl/bin:${PATH}"
|
|
||||||
|
|
||||||
elif [ -n "${BUILD_OPENSSL_VERSION}" -a -d "$HOME/openssl/lib" ]; then
|
|
||||||
echo "Testing build openssl-${BUILD_LIBRESSL_VERSION}"
|
|
||||||
export OPENSSL_DIR="${HOME}/openssl"
|
|
||||||
export LD_LIBRARY_PATH="${HOME}/openssl/lib:${LD_LIBRARY_PATH}"
|
|
||||||
export PATH="${HOME}/openssl/bin:${PATH}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$TARGET" == "arm-unknown-linux-gnueabihf" ]; then
|
|
||||||
FLAGS="--no-run"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cargo run --manifest-path systest/Cargo.toml --target $TARGET -v
|
|
||||||
exec cargo test --manifest-path openssl/Cargo.toml --target $TARGET \
|
|
||||||
--features "$FEATURES" -v $FLAGS
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
case "${TARGET}" in
|
||||||
|
"x86_64-unknown-linux-gnu")
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
"i686-unknown-linux-gnu")
|
||||||
|
apt-get install -y --no-install-recommends gcc-multilib
|
||||||
|
;;
|
||||||
|
"arm-unknown-linux-gnueabihf")
|
||||||
|
echo "deb http://emdebian.org/tools/debian/ jessie main" \
|
||||||
|
> /etc/apt/sources.list.d/crosstools.list
|
||||||
|
curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add -
|
||||||
|
dpkg --add-architecture armhf
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
gcc-arm-linux-gnueabihf \
|
||||||
|
libc6-dev:armhf
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
OUT=/tmp/std.tar.gz
|
||||||
|
curl -o ${OUT} https://static.rust-lang.org/dist/rust-std-${RUST_VERSION}-${TARGET}.tar.gz
|
||||||
|
|
||||||
|
WORKDIR=/tmp/std
|
||||||
|
mkdir -p ${WORKDIR}
|
||||||
|
cd ${WORKDIR}
|
||||||
|
|
||||||
|
tar --strip-components=1 -xzf ${OUT}
|
||||||
|
|
||||||
|
./install.sh
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ -d ~/openssl ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${LIBRARY}" in
|
||||||
|
"libressl")
|
||||||
|
URL1="http://ftp3.usa.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${VERSION}.tar.gz"
|
||||||
|
URL2="http://ftp.eu.openbsd.org/pub/OpenBSD/LibreSSL/libressl-${VERSION}.tar.gz"
|
||||||
|
;;
|
||||||
|
"openssl")
|
||||||
|
URL1="https://openssl.org/source/openssl-${VERSION}.tar.gz"
|
||||||
|
URL2="http://mirrors.ibiblio.org/openssl/source/openssl-${VERSION}.tar.gz"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "${TARGET}" in
|
||||||
|
"x86_64-unknown-linux-gnu")
|
||||||
|
OS_COMPILER=linux-x86_64
|
||||||
|
;;
|
||||||
|
"i686-unknown-linux-gnu")
|
||||||
|
OS_COMPILER=linux-elf
|
||||||
|
OS_FLAGS=-m32
|
||||||
|
;;
|
||||||
|
"arm-unknown-linux-gnueabihf")
|
||||||
|
OS_COMPILER=linux-armv4
|
||||||
|
export AR=arm-linux-gnueabihf-ar
|
||||||
|
export CC=arm-linux-gnueabihf-gcc
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
mkdir -p /tmp/build
|
||||||
|
cd /tmp/build
|
||||||
|
|
||||||
|
OUT=/tmp/openssl.tgz
|
||||||
|
MAX_REDIRECTS=5
|
||||||
|
curl -o ${OUT} -L --max-redirs ${MAX_REDIRECTS} ${URL1} \
|
||||||
|
|| curl -o ${OUT} -L --max-redirs ${MAX_REDIRECTS} ${URL2}
|
||||||
|
|
||||||
|
tar --strip-components=1 -xzf ${OUT}
|
||||||
|
|
||||||
|
PREFIX=${HOME}/openssl
|
||||||
|
case "${LIBRARY}" in
|
||||||
|
"openssl")
|
||||||
|
./Configure --prefix=${PREFIX} ${OS_COMPILER} -fPIC ${OS_FLAGS} no-shared
|
||||||
|
;;
|
||||||
|
"libressl")
|
||||||
|
./configure --prefix=${PREFIX} --disable-shared --with-pic
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
make -j$(nproc)
|
||||||
|
make install
|
||||||
Loading…
Reference in New Issue