Skip to content

Continuously publish Cargo builds #3239

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 7, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 143 additions & 43 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,49 +1,149 @@
language: rust
rust:
- stable
- beta
- nightly
sudo: false
script:
- ./configure --prefix=$HOME/cargo-install --disable-cross-tests --disable-optimize
- make
- make test
- make distcheck
- make doc
- make install
- make uninstall
after_success: |
[ $TRAVIS_BRANCH = master ] &&
[ $TRAVIS_PULL_REQUEST = false ] &&
[ $(uname -s) = Linux ] &&
pip install ghp-import --user $USER &&
$HOME/.local/bin/ghp-import -n target/doc &&
git push -qf https://${TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages
env:
global:
# apparently we use too much memory and if there's more than one rustc then
# when compiling Cargo's unit tests some compilers will be randomly kill
# -9'd
- CARGOFLAGS=-j1
- secure: scGpeetUfba5RWyuS4yt10bPoFAI9wpHEReIFqEx7eH5vr2Anajk6+70jW6GdrWVdUvdINiArlQ3An2DeB9vEUWcBjw8WvuPtOH0tDMoSsuVloPlFD8yn1Ac0Bx9getAO5ofxqtoNg+OV4MDVuGabEesqAOWqURNrBC7XK+ntC8=
rust: stable
sudo: required
dist: trusty
os: linux
services:
- docker

matrix:
include:
- os: osx
rust: stable
# stable linux builds, tested
- env: TARGET=x86_64-unknown-linux-gnu
ALT=i686-unknown-linux-gnu
IMAGE=dist
MAKE_TARGETS="test distcheck doc install uninstall"
- env: TARGET=i686-unknown-linux-gnu
IMAGE=dist
MAKE_TARGETS=test-unit-i686-unknown-linux-gnu
CFG_DISABLE_CROSS_TESTS=1

# stable osx builds, tested
- env: TARGET=x86_64-apple-darwin
ALT=i686-apple-darwin
MAKE_TARGETS="test distcheck doc install uninstall"
MACOSX_DEPLOYMENT_TARGET=10.7
os: osx
before_install:
- export OPENSSL_INCLUDE_DIR=`brew --prefix openssl`/include
- export OPENSSL_LIB_DIR=`brew --prefix openssl`/include
- env: TARGET=i686-apple-darwin
MAKE_TARGETS=test
MACOSX_DEPLOYMENT_TARGET=10.7
CFG_DISABLE_CROSS_TESTS=1
os: osx
before_install:
- export OPENSSL_INCLUDE_DIR=`brew --prefix openssl`/include
- export OPENSSL_LIB_DIR=`brew --prefix openssl`/lib

branches:
only:
- master

addons:
apt:
sources:
- kalakris-cmake
packages:
- cmake
- g++-multilib
- lib32stdc++6
- export OPENSSL_LIB_DIR=`brew --prefix openssl`/include

# stable musl target, tested
- env: TARGET=x86_64-unknown-linux-musl
IMAGE=x86_64-musl
CFG_DISABLE_CROSS_TESTS=1
MAKE_TARGETS=test-unit-$TARGET

# cross compiled targets
- env: TARGET=arm-unknown-linux-gnueabi
IMAGE=cross
- env: TARGET=arm-unknown-linux-gnueabihf
IMAGE=cross
- env: TARGET=armv7-unknown-linux-gnueabihf
IMAGE=cross
- env: TARGET=aarch64-unknown-linux-gnu
IMAGE=cross
- env: TARGET=i686-unknown-freebsd
IMAGE=cross
- env: TARGET=x86_64-unknown-freebsd
IMAGE=cross
- env: TARGET=x86_64-unknown-netbsd
IMAGE=cross
- env: TARGET=mips-unknown-linux-gnu
IMAGE=cross
- env: TARGET=mipsel-unknown-linux-gnu
IMAGE=cross
- env: TARGET=mips64-unknown-linux-gnuabi64
IMAGE=cross
rust: nightly
- env: TARGET=mips64el-unknown-linux-gnuabi64
IMAGE=cross
rust: nightly
- env: TARGET=s390x-unknown-linux-gnu
IMAGE=cross
rust: nightly
- env: TARGET=powerpc-unknown-linux-gnu
IMAGE=cross
rust: beta
- env: TARGET=powerpc64-unknown-linux-gnu
IMAGE=cross
rust: beta
- env: TARGET=powerpc64le-unknown-linux-gnu
IMAGE=cross
rust: beta

# beta/nightly builds
- env: TARGET=x86_64-unknown-linux-gnu
ALT=i686-unknown-linux-gnu
IMAGE=dist
MAKE_TARGETS="test distcheck doc install uninstall"
DEPLOY=0
rust: beta
- env: TARGET=x86_64-unknown-linux-gnu
ALT=i686-unknown-linux-gnu
IMAGE=dist
MAKE_TARGETS="test distcheck doc install uninstall"
DEPLOY=0
rust: nightly

exclude:
- rust: stable

before_script:
- pip install 'travis-cargo<0.2' --user && export PATH=$HOME/.local/bin:$PATH
- curl https://static.rust-lang.org/rustup.sh |
sh -s -- --add-target=$TARGET --disable-sudo -y --prefix=`rustc --print sysroot`
- if [ ! -z "$ALT" ]; then
curl https://static.rust-lang.org/rustup.sh |
sh -s -- --add-target=$ALT --disable-sudo -y --prefix=`rustc --print sysroot`;
fi
script:
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then
SRC=. src/ci/run.sh $TARGET;
else
src/ci/docker/run.sh $IMAGE $TARGET;
fi
after_success:
- travis-cargo --only nightly doc-upload

env:
global:
- DEPLOY=1
- secure: LB2o9UL90Z4CVOLVQsTbZr7ZBLA1dCLxFODuCkPkbdqG3Kl5z1yMIPMRvSbjp9KwBlIgm+Mg0R1iqphKVq+rVP5zo96K4+kEQMG+zWsPb23ZKTxiL8MK5VgCZ7s9AONCvNeCTCNAG3EyeciFr5Zr9eygVCfo0WF6JsPujYYQZx0=

notifications:
email:
on_success: never

before_deploy:
- mkdir -p deploy/$TRAVIS_COMMIT
- cp target/$TARGET/release/dist/cargo-nightly-$TARGET.tar.gz
deploy/$TRAVIS_COMMIT

deploy:
- provider: s3
bucket: rust-lang-cargo-dev
skip_cleanup: true
local_dir: deploy
upload_dir: cargo-master
acl: public_read
region: us-west-1
access_key_id: AKIAJYHGN72KKCN4DFBQ
secret_access_key:
secure: wKKDMYBVTdWLuc7+ffpjTqJs1EdM2pXpV6keUfZGv9RLRta+esh/r/cgc+UQ7+m9JHAliH8eWhlMm5ws6WDgkTvM0PTdqWBgwd24BRbAitsXX2kWfi9WgAeSJVSkIJdZ999TRpRIJu7Zc+1++fbfdD/tDv5XBirQGOJv1HynVWY=
on:
branch: auto
condition: $DEPLOY = 1

cache:
directories:
- $HOME/.cargo
- target/openssl
55 changes: 30 additions & 25 deletions Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,6 @@ OPENSSL_SHA256=e7aff292be21c259c6af26469c7a9b3ba26e9abaaffd325e3dccc9785256c431

include config.mk

ifneq ($(CFG_LOCAL_RUST_ROOT),)
export LD_LIBRARY_PATH := $(CFG_LOCAL_RUST_ROOT)/lib:$(LD_LIBRARY_PATH)
export DYLD_LIBRARY_PATH := $(CFG_LOCAL_RUST_ROOT)/lib:$(DYLD_LIBRARY_PATH)
endif

export PATH := $(dir $(CFG_RUSTC)):$(PATH)

ifdef CFG_ENABLE_NIGHTLY
Expand Down Expand Up @@ -84,44 +79,45 @@ $(foreach target,$(CFG_TARGET),$(eval $(call DIST_TARGET,$(target))))
ifdef CFG_LOCAL_CARGO
CARGO := $(CFG_LOCAL_CARGO)
else
CARGO := $(TARGET_ROOT)/snapshot/bin/cargo$(X)
CARGO := $(CFG_CARGO)
endif

all: $(foreach target,$(CFG_TARGET),cargo-$(target))

define CARGO_TARGET
cargo-$(1): $$(CARGO) target/openssl/$(1).stamp
cargo-$(1): target/openssl/$(1).stamp
$$(CFG_RUSTC) -V
$$(CARGO) --version
$$(CARGO) build --target $(1) \
--manifest-path $(S)Cargo.toml \
$$(OPT_FLAG) $$(CARGOFLAGS) $$(VERBOSE_FLAG) $$(ARGS)

test-unit-$(1): $$(CARGO)
@mkdir -p target/$(1)/cit
$$(CARGO) test --target $(1) $$(CARGOFLAGS) $$(VERBOSE_FLAG) $$(only)
test-unit-$(1): target/openssl/$(1).stamp cargo-$(1)
@mkdir -p $$(CFG_BUILD_DIR)/target/$(1)/cit
$$(CARGO) test --target $(1) \
--manifest-path $(S)Cargo.toml \
$$(OPT_FLAG) $$(CARGOFLAGS) $$(VERBOSE_FLAG) $$(only)
endef
$(foreach target,$(CFG_TARGET),$(eval $(call CARGO_TARGET,$(target))))

$(TARGET_ROOT)/snapshot/bin/cargo$(X): $(S)src/snapshots.txt
$(CFG_PYTHON) $(S)src/etc/dl-snapshot.py $(CFG_BUILD)
touch $@


# === Tests

test: style no-exes $(foreach target,$(CFG_TARGET),test-unit-$(target))

style:
sh tests/check-style.sh
(cd $(S) && sh tests/check-style.sh)

ifeq ($(CFG_GIT),)
no-exes:
else
no-exes:
find $$(git ls-files) -type f \
(cd $(S) && find $$($(CFG_GIT) ls-files) -type f \
\( -perm -u+x -or -perm -g+x -or -perm -o+x \) \
-not -name configure -not -name '*.sh' -not -name '*.rs' \
-not -name '*.py' -not -wholename "*/rust-installer/*" | \
grep '.*' \
&& exit 1 || exit 0
&& exit 1 || exit 0)
endif

# === Misc

Expand All @@ -142,9 +138,9 @@ DOC_OPTS := --markdown-no-toc \
--markdown-css stylesheets/normalize.css \
--markdown-css stylesheets/all.css \
--markdown-css stylesheets/prism.css \
--html-in-header src/doc/html-headers.html \
--html-before-content src/doc/header.html \
--html-after-content src/doc/footer.html
--html-in-header $(S)src/doc/html-headers.html \
--html-before-content $(S)src/doc/header.html \
--html-after-content $(S)src/doc/footer.html
ASSETS := CNAME images/noise.png images/forkme.png images/Cargo-Logo-Small.png \
stylesheets/all.css stylesheets/normalize.css javascripts/prism.js \
javascripts/all.js stylesheets/prism.css images/circle-with-i.png \
Expand All @@ -155,14 +151,19 @@ doc: $(foreach doc,$(DOCS),target/doc/$(doc).html) \
$(foreach asset,$(ASSETS),target/doc/$(asset)) \
target/doc/cargo/index.html

target/doc/cargo/index.html:
$(CARGO) doc --no-deps
target/doc/cargo/index.html: target/openssl/$(CFG_BUILD).stamp cargo-$(CFG_BUILD)
$(CARGO) doc --no-deps --target $(CFG_BUILD) \
--manifest-path $(S)Cargo.toml $(OPT_FLAG)

$(DOC_DIR)/%.html: src/doc/%.md src/doc/html-headers.html src/doc/header.html src/doc/footer.html
$(DOC_DIR)/%.html: \
$(S)src/doc/%.md \
$(S)src/doc/html-headers.html \
$(S)src/doc/header.html \
$(S)src/doc/footer.html
@mkdir -p $(@D)
$(CFG_RUSTDOC) $< -o $(@D) $(DOC_OPTS)

$(DOC_DIR)/%: src/doc/%
$(DOC_DIR)/%: $(S)src/doc/%
@mkdir -p $(@D)
cp $< $@

Expand All @@ -172,6 +173,7 @@ OPENSSL_OS_arm-unknown-linux-gnueabihf := linux-armv4
OPENSSL_OS_armv7-unknown-linux-gnueabihf := linux-armv4
OPENSSL_OS_i686-unknown-freebsd := BSD-x86-elf
OPENSSL_OS_i686-unknown-linux-gnu := linux-elf
OPENSSL_OS_i686-unknown-linux-musl := linux-elf
OPENSSL_OS_mips-unknown-linux-gnu := linux-mips32
OPENSSL_OS_mipsel-unknown-linux-gnu := linux-mips32
OPENSSL_OS_mips64-unknown-linux-gnuabi64 := linux64-mips64
Expand All @@ -191,6 +193,7 @@ OPENSSL_AR_arm-unknown-linux-gnueabihf := arm-linux-gnueabihf-ar
OPENSSL_AR_armv7-unknown-linux-gnueabihf := armv7-linux-gnueabihf-ar
OPENSSL_AR_i686-unknown-freebsd := i686-unknown-freebsd10-ar
OPENSSL_AR_i686-unknown-linux-gnu := ar
OPENSSL_AR_i686-unknown-linux-musl := ar
OPENSSL_AR_mips-unknown-linux-gnu := mips-linux-gnu-ar
OPENSSL_AR_mips64-unknown-linux-gnuabi64 := mips64-linux-gnuabi64-ar
OPENSSL_AR_mips64el-unknown-linux-gnuabi64 := mips64el-linux-gnuabi64-ar
Expand All @@ -209,6 +212,7 @@ OPENSSL_CC_arm-unknown-linux-gnueabihf := arm-linux-gnueabihf-gcc
OPENSSL_CC_armv7-unknown-linux-gnueabihf := armv7-linux-gnueabihf-gcc
OPENSSL_CC_i686-unknown-freebsd := i686-unknown-freebsd10-gcc
OPENSSL_CC_i686-unknown-linux-gnu := gcc
OPENSSL_CC_i686-unknown-linux-musl := musl-gcc
OPENSSL_CC_mips-unknown-linux-gnu := mips-linux-gnu-gcc
OPENSSL_CC_mips64-unknown-linux-gnuabi64 := mips64-linux-gnuabi64-gcc
OPENSSL_CC_mips64el-unknown-linux-gnuabi64 := mips64el-linux-gnuabi64-gcc
Expand All @@ -224,6 +228,7 @@ OPENSSL_CC_x86_64-unknown-netbsd := x86_64-unknown-netbsd-gcc

SETARCH_i686-unknown-linux-gnu := setarch i386
OPENSSL_CFLAGS_i686-unknown-linux-gnu := -m32
OPENSSL_CFLAGS_i686-unknown-linux-musl := -m32

define BUILD_OPENSSL
ifdef OPENSSL_OS_$(1)
Expand Down
Loading