From 45c7930318818260a2f0f393c7270631b331346a Mon Sep 17 00:00:00 2001
From: gnzlbg <gonzalobg88@gmail.com>
Date: Tue, 26 Feb 2019 14:57:34 +0100
Subject: [PATCH] Test semver for all normal targets

---
 .travis.yml  | 23 +++++++++++------
 ci/semver.sh | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+), 7 deletions(-)
 create mode 100644 ci/semver.sh

diff --git a/.travis.yml b/.travis.yml
index bab134ae..fae5c7b3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,13 +11,6 @@ stages:
 matrix:
   include:
     # TOOLS
-    - name: "Semver"
-      env: TARGET=x86_64-unknown-linux-gnu
-      install: |
-        travis_retry cargo +nightly install \
-        --git https://github.com/gnzlbg/rust-semverver \
-        --branch fix_exit_code
-      script: cargo +nightly semver --api-guidelines --target="${TARGET}"
     - name: "Documentation"
       env: TARGET=x86_64-unknown-linux-gnu
       script: sh ci/dox.sh
@@ -41,6 +34,22 @@ matrix:
         #      cargo fmt --all -- --check
         #  fi
       stage: tools-and-build-and-tier1
+    - name: "Semver"
+      install: |
+        travis_retry cargo +nightly install \
+        --git https://github.com/gnzlbg/rust-semverver \
+        --branch fix_exit_code
+      script: sh ci/semver.sh
+      stage: tools-and-build-and-tier1
+    - name: "Semver"
+      install: |
+        travis_retry cargo +nightly install \
+        --git https://github.com/gnzlbg/rust-semverver \
+        --branch fix_exit_code
+      script: sh ci/semver.sh
+      os: osx
+      osx_image: xcode10
+      stage: tools-and-build-and-tier1
 
     # BUILD stable, beta, nightly
     - name: "Build Stable Rust"
diff --git a/ci/semver.sh b/ci/semver.sh
new file mode 100644
index 00000000..ac6be36f
--- /dev/null
+++ b/ci/semver.sh
@@ -0,0 +1,70 @@
+#!/usr/bin/env sh
+
+# Checks that libc does not contain breaking changes for the following targets.
+
+set -ex
+
+OS=${TRAVIS_OS_NAME}
+
+echo "Testing Semver on ${OS}"
+
+TARGETS=
+case "${OS}" in
+    *linux*)
+        TARGETS="\
+aarch64-fuchsia \
+aarch64-linux-android \
+aarch64-unknown-linux-gnu \
+aarch64-unknown-linux-musl \
+armv7-linux-androideabi \
+armv7-unknown-linux-gnueabihf \
+i586-unknown-linux-gnu \
+i586-unknown-linux-musl \
+i686-linux-android \
+i686-unknown-freebsd \
+i686-unknown-linux-gnu \
+i686-unknown-linux-musl \
+i686-pc-windows-gnu \
+x86_64-unknown-freebsd \
+x86_64-unknown-linux-gnu \
+x86_64-unknown-linux-musl \
+x86_64-unknown-netbsd \
+x86_64-unknown-cloudabi \
+x86_64-sun-solaris \
+x86_64-fuchsia \
+x86_64-pc-windows-gnu \
+x86_64-unknown-linux-gnux32 \
+x86_64-unknown-redox \
+x86_64-fortanix-unknown-sgx \
+wasm32-unknown-unknown \
+"
+    ;;
+    *osx*)
+        TARGETS="\
+aarch64-apple-ios \
+armv7-apple-ios \
+armv7s-apple-ios \
+i386-apple-ios \
+i686-apple-darwin \
+x86_64-apple-darwin \
+x86_64-apple-ios \
+"
+    ;;
+esac
+
+for TARGET in $TARGETS; do
+    # FIXME: rustup often fails to download some artifacts due to network
+    # issues, so we retry this N times.
+    N=5
+    n=0
+    until [ $n -ge $N ]
+    do
+        if rustup target add "${TARGET}" ; then
+            break
+        fi
+        n=$((n+1))
+        sleep 1
+    done
+
+    cargo +nightly semver --api-guidelines --target="${TARGET}"
+done
-- 
GitLab