Commit b1d5ec99 authored by Steven Fackler's avatar Steven Fackler Committed by GitHub
Browse files

Merge pull request #663 from sfackler/circle

Switch over Linux tests to CircleCI
parents 605b8af4 c8ba960b
Loading
Loading
Loading
Loading
+4 −83
Original line number Diff line number Diff line
language: rust
sudo: required
rust: stable
dist: trusty

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

os: osx
cache:
  cargo: true
  directories:
    - $HOME/libressl
    - $HOME/openssl
script:
- cargo run --manifest-path=systest/Cargo.toml
- cargo test --manifest-path=openssl/Cargo.toml
+3 −2
Original line number Diff line number Diff line
# rust-openssl

[![Build Status](https://travis-ci.org/sfackler/rust-openssl.svg?branch=master)](https://travis-ci.org/sfackler/rust-openssl)
[![CircleCI](https://circleci.com/gh/sfackler/rust-openssl.svg?style=shield)](https://circleci.com/gh/sfackler/rust-openssl) [![Build Status](https://travis-ci.org/sfackler/rust-openssl.svg?branch=master)](https://travis-ci.org/sfackler/rust-openssl) [![Build status](https://ci.appveyor.com/api/projects/status/d1knobws948pyynk/branch/master?svg=true)](https://ci.appveyor.com/project/sfackler/rust-openssl/branch/master)


[Documentation](https://docs.rs/openssl).

circle.yml

0 → 100644
+143 −0
Original line number Diff line number Diff line
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

openssl/test/run.sh

deleted100755 → 0
+0 −34
Original line number Diff line number Diff line
#!/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

test/add_target.sh

0 → 100755
+32 −0
Original line number Diff line number Diff line
#!/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
Loading