diff --git a/.circleci/config.yml b/.circleci/config.yml index 0397d9a3..aa13f8bd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,8 +17,14 @@ jobs: no_run: type: boolean default: false + image: + type: string + default: 1.33.0 + minimal_build: + type: boolean + default: false docker: - - image: rust:1.24.1 + - image: rust:<< parameters.image >> environment: RUST_BACKTRACE: 1 OPENSSL_DIR: /opt/openssl @@ -50,62 +56,62 @@ jobs: esac rustup target add << parameters.target >> - - restore_cache: - key: openssl-<< parameters.target >>-<< parameters.library >>-<< parameters.version >> - - run: | - if [ -d "$OPENSSL_DIR" ]; then - exit 0 - fi + - unless: + condition: << parameters.vendored >> + steps: + - restore_cache: + key: openssl-<< parameters.target >>-<< parameters.library >>-<< parameters.version >> + - run: | + if [ -d "$OPENSSL_DIR" ]; then + exit 0 + fi - case "<< parameters.library >>" in - "libressl") - URL="https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-<< parameters.version >>.tar.gz" - ;; - "openssl") - URL="https://openssl.org/source/openssl-<< parameters.version >>.tar.gz" - ;; - "") - exit 0 - ;; - esac + case "<< parameters.library >>" in + "libressl") + URL="https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-<< parameters.version >>.tar.gz" + ;; + "openssl") + URL="https://openssl.org/source/openssl-<< parameters.version >>.tar.gz" + ;; + esac - case "<< parameters.target >>" in - "x86_64-unknown-linux-gnu") - OS_COMPILER=linux-x86_64 - OS_FLAGS="" - ;; - "i686-unknown-linux-gnu") - OS_COMPILER=linux-elf - OS_FLAGS=-m32 - ;; - "arm-unknown-linux-gnueabihf") - OS_COMPILER=linux-armv4 - OS_FLAGS="" - export AR=arm-linux-gnueabihf-ar - export CC=arm-linux-gnueabihf-gcc - ;; - esac + case "<< parameters.target >>" in + "x86_64-unknown-linux-gnu") + OS_COMPILER=linux-x86_64 + OS_FLAGS="" + ;; + "i686-unknown-linux-gnu") + OS_COMPILER=linux-elf + OS_FLAGS=-m32 + ;; + "arm-unknown-linux-gnueabihf") + OS_COMPILER=linux-armv4 + OS_FLAGS="" + export AR=arm-linux-gnueabihf-ar + export CC=arm-linux-gnueabihf-gcc + ;; + esac - mkdir /tmp/build - cd /tmp/build + mkdir /tmp/build + cd /tmp/build - curl -L $URL | tar --strip-components=1 -xzf - + curl -L $URL | tar --strip-components=1 -xzf - - case "<< parameters.library >>" in - "openssl") - ./Configure --prefix=$OPENSSL_DIR $OS_COMPILER -fPIC -g $OS_FLAGS no-shared - ;; - "libressl") - ./configure --prefix=$OPENSSL_DIR --disable-shared --with-pic - ;; - esac + case "<< parameters.library >>" in + "openssl") + ./Configure --prefix=$OPENSSL_DIR $OS_COMPILER -fPIC -g $OS_FLAGS no-shared + ;; + "libressl") + ./configure --prefix=$OPENSSL_DIR --disable-shared --with-pic + ;; + esac - make - make install_sw - - save_cache: - key: openssl-<< parameters.target >>-<< parameters.library >>-<< parameters.version >> - paths: - - /opt/openssl + make + make install_sw + - save_cache: + key: openssl-<< parameters.target >>-<< parameters.library >>-<< parameters.version >> + paths: + - /opt/openssl - restore_cache: key: registry - run: cargo generate-lockfile @@ -114,12 +120,15 @@ jobs: paths: - /usr/local/cargo/registry/index - restore_cache: - key: deps-1.24.1-<< parameters.target >>-<< parameters.library >>-<< parameters.version >>-{{ checksum "Cargo.lock" }} - - run: | - cargo run \ - --manifest-path=systest/Cargo.toml \ - <<# parameters.vendored >>--features vendored<> \ - --target << parameters.target >> + key: deps-<< parameters.image >>-<< parameters.target >>-<< parameters.library >>-<< parameters.version >>-{{ checksum "Cargo.lock" }} + - unless: + condition: << parameters.minimal_build >> + steps: + - run: | + cargo run \ + --manifest-path=systest/Cargo.toml \ + <<# parameters.vendored >>--features vendored<> \ + --target << parameters.target >> - run: | ulimit -c unlimited export PATH=$OPENSSL_DIR/bin:$PATH @@ -129,7 +138,7 @@ jobs: --target << parameters.target >> \ <<# parameters.no_run >>--no-run<> - save_cache: - key: deps-1.24.1-<< parameters.target >>-<< parameters.library >>-<< parameters.version >>-{{ checksum "Cargo.lock" }} + key: deps-<< parameters.image >>-<< parameters.target >>-<< parameters.library >>-<< parameters.version >>-{{ checksum "Cargo.lock" }} paths: - /usr/local/cargo/registry/cache - target @@ -147,6 +156,9 @@ jobs: vendored: type: boolean default: false + image: + type: string + default: 1.33.0 macos: xcode: "9.0" environment: @@ -155,11 +167,11 @@ jobs: - checkout - run: sudo mkdir /opt - run: sudo chown -R $USER /usr/local/ /opt - - run: curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain 1.24.1 + - run: curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain << parameters.image >> - run: sudo ln -s ~/.cargo/bin/* /usr/local/bin - run: cargo generate-lockfile - restore_cache: - key: deps-1.24.1-macos-<< parameters.vendored >>-{{ checksum "Cargo.lock" }} + key: deps-<< parameters.image >>-macos-<< parameters.vendored >>-{{ checksum "Cargo.lock" }} - run: | cargo run \ --manifest-path=systest/Cargo.toml \ @@ -170,7 +182,7 @@ jobs: --manifest-path=openssl/Cargo.toml \ <<# parameters.vendored >> --features vendored <> - save_cache: - key: deps-1.24.1-macos-<< parameters.vendored >>-{{ checksum "Cargo.lock" }} + key: deps-<< parameters.image >>-macos-<< parameters.vendored >>-{{ checksum "Cargo.lock" }} paths: - ~/.cargo/registry/cache - target @@ -191,6 +203,12 @@ openssl_101: &openssl_101 workflows: test: jobs: + - linux: + name: mimimal-version + target: x86_64-unknown-linux-musl + vendored: true + image: 1.24.1 + minimal_build: true - linux: name: musl-vendored target: x86_64-unknown-linux-musl diff --git a/appveyor.yml b/appveyor.yml index e2bbc77c..2750b03f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,10 +1,10 @@ environment: SSL_CERT_FILE: "C:\\OpenSSL\\cacert.pem" matrix: - # 1.1.0, 64/32 bit + # 1.1.1, 64 bit - TARGET: x86_64-pc-windows-msvc BITS: 64 - OPENSSL_VERSION: 1_1_0j + OPENSSL_VERSION: 1_1_1b OPENSSL_DIR: C:\OpenSSL # 1.0.2, 64/32 bit @@ -16,6 +16,8 @@ environment: BITS: 32 OPENSSL_VERSION: 1_0_2r OPENSSL_DIR: C:\OpenSSL + + # vcpkg - TARGET: x86_64-pc-windows-msvc VCPKG_DEFAULT_TRIPLET: x64-windows VCPKGRS_DYNAMIC: 1 diff --git a/openssl-sys/build/main.rs b/openssl-sys/build/main.rs index a1f163d7..02b93b90 100644 --- a/openssl-sys/build/main.rs +++ b/openssl-sys/build/main.rs @@ -247,6 +247,7 @@ due to this version mismatch. } // parses a string that looks like "0x100020cfL" +#[allow(deprecated)] // trim_right_matches is now trim_end_matches fn parse_version(version: &str) -> u64 { // cut off the 0x prefix assert!(version.starts_with("0x")); diff --git a/systest/Cargo.toml b/systest/Cargo.toml index 63f80479..bea35574 100644 --- a/systest/Cargo.toml +++ b/systest/Cargo.toml @@ -8,7 +8,7 @@ libc = "0.2" openssl-sys = { path = "../openssl-sys" } [build-dependencies] -ctest = "0.1" +ctest = "0.2" [features] vendored = ['openssl-sys/vendored'] diff --git a/systest/build.rs b/systest/build.rs index 6f3c782b..e8bd221d 100644 --- a/systest/build.rs +++ b/systest/build.rs @@ -67,7 +67,7 @@ fn main() { cfg.header("openssl/cms.h"); } - cfg.type_name(|s, is_struct| { + cfg.type_name(|s, is_struct, _is_union| { // Add some `*` on some callback parameters to get function pointer to // typecheck in C, especially on MSVC. if s == "PasswordCallback" {