Skip to content
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

Merge New CI Infrastructure Based on Trust/Cross Into Master #536

Merged
merged 28 commits into from
Apr 15, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
52963ab
Removed old ci infrastructure.
berkowski Feb 25, 2017
ee2bff1
Added ci templates from `trust` v0.1.1
berkowski Feb 25, 2017
129a9d8
Removed appveyor -- this is a unix only lib.
berkowski Feb 25, 2017
399b1c1
Updated .travis.yml
berkowski Feb 25, 2017
fc09d70
Enabled tests for BSD. Added mipsel & mips64el
berkowski Feb 25, 2017
9adff82
Added/removed CI arches.
berkowski Feb 25, 2017
ed0c6d3
Removed arches.
berkowski Feb 25, 2017
c1dd033
Fixed ci/script.sh to run tests when desired.
berkowski Feb 25, 2017
1e84da2
Removed 'cargo run' directives from ci script.
berkowski Feb 25, 2017
cb416ee
Disable tests on BSD targets.
berkowski Feb 25, 2017
22c37c2
Removed commented `cargo run` targets in CI
berkowski Feb 26, 2017
a859ee3
Switched bsd speed_t def. to libc::speed_t
berkowski Feb 26, 2017
2196717
Fixes nix-rust/nix#532
berkowski Feb 26, 2017
3354ffe
Fixed constants for MIPS
berkowski Mar 2, 2017
0db6ed1
Removed some socket constants from arch=arm
berkowski Mar 2, 2017
57169b8
Fixed failing ioctl tests.
berkowski Mar 2, 2017
334e826
Re-enabled errorno test for not_android.
berkowski Mar 5, 2017
90b22ff
Added missing syscalls for powerpc
berkowski Mar 4, 2017
d623db9
Removed unused libc imports in termios.
berkowski Mar 10, 2017
09c00ed
Removed tests on ARM for non-existant constants.
berkowski Mar 10, 2017
56d20ca
Split socket consts. test across ARM arch.
berkowski Mar 10, 2017
a833554
Updated changelog.
berkowski Apr 7, 2017
a8cf6cb
ci: remove thread parallelism
posborne Feb 27, 2017
86f6aa3
Use min Rust version but test beta and nightly
Susurrus Apr 15, 2017
6cfbb09
Allow failures for currently failing targets
Susurrus Apr 15, 2017
a076c7f
Increase minimum supported Rust version.
Susurrus Apr 13, 2017
48d142f
Update changelog
Susurrus Apr 15, 2017
56f5a0a
List supported targets in the README
Susurrus Apr 15, 2017
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
211 changes: 120 additions & 91 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,102 +1,131 @@
#
# Operating Environment
#
language: rust
sudo: false
# Based on the "trust" template v0.1.1
# https://github.com/japaric/trust/tree/v0.1.1

dist: trusty
services:
- docker
addons:
apt:
packages:
- gcc-multilib
- libcurl4-openssl-dev
- libelf-dev
- libdw-dev
- binutils-dev

rust:
- 1.7.0 # Oldest supported version
- stable
- beta
- nightly

#
# Environment Variables and Build Matrix
#
language: rust
services: docker
sudo: required

# This is the Rust channel that build jobs will use by default but can be
# overridden on a case by case basis down below
rust: 1.13.0

env:
global:
- PATH=$HOME/.local/bin:$PATH
- TRAVIS_CARGO_NIGHTLY_FEATURE=""
matrix:
- ARCH=x86_64
- ARCH=i686
- CRATE_NAME=nix
- CARGO_TEST_THREADS=1

os: # OSX included in build matrix explicitly
- linux
# default job
- TARGET=x86_64-unknown-linux-gnu
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs an env: after the - so that it actually sets the environment variable in a way that Travis understands.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, I think this should be done within the matrix section. If you look at the Travis output, you see TARGET being declared twice.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nevermind, found out this is a bug in Travis CI that they haven't put much effort into fixing: travis-ci/travis-ci#4681


# Failures on nightly shouldn't fail the overall build.
matrix:
fast_finish: true
# These are all the build jobs. Adjust as necessary. Comment out what you
# don't need
include:
# 32-bit and 64-bit OSX builds on oldest/stable
- os: osx
env: ARCH=x86_64
rust: stable
- os: osx
env: ARCH=i686
rust: stable
# Docker builds for other targets
- os: linux
env: TARGET=aarch64-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:arm
rust: 1.7.0
sudo: true
- os: linux
env: TARGET=arm-unknown-linux-gnueabihf DOCKER_IMAGE=posborne/rust-cross:arm
rust: 1.7.0
sudo: true
- os: linux
env: TARGET=mips-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
rust: 1.7.0
sudo: true
- os: linux
env: TARGET=mipsel-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
rust: 1.7.0
sudo: true
- os: linux
env: TARGET=arm-linux-androideabi DOCKER_IMAGE=posborne/rust-cross:android
rust: 1.7.0
sudo: true
allow_failures:
- rust: nightly
# We need to upgrade the lowest supported version. However, the build
# infrastructure for arm/mips/android is not ready yet.
- rust: 1.7.0
- env: TARGET=mips-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
- env: TARGET=mipsel-unknown-linux-gnu DOCKER_IMAGE=posborne/rust-cross:mips
- env: TARGET=arm-linux-androideabi DOCKER_IMAGE=posborne/rust-cross:android
# Linux
- env: TARGET=i686-unknown-linux-gnu
- env: TARGET=i686-unknown-linux-musl
# - env: TARGET=x86_64-unknown-linux-gnu # this is the default job
- env: TARGET=x86_64-unknown-linux-musl

# OSX
- env: TARGET=i686-apple-darwin
os: osx
- env: TARGET=x86_64-apple-darwin
os: osx

# *BSD
- env: TARGET=i686-unknown-freebsd DISABLE_TESTS=1
- env: TARGET=x86_64-unknown-freebsd DISABLE_TESTS=1
- env: TARGET=x86_64-unknown-netbsd DISABLE_TESTS=1

# Other architectures
- env: TARGET=aarch64-unknown-linux-gnu
- env: TARGET=armv7-unknown-linux-gnueabihf
- env: TARGET=mips-unknown-linux-gnu
# - env: TARGET=mips64-unknown-linux-gnuabi64
# - env: TARGET=mips64el-unknown-linux-gnuabi64
- env: TARGET=mipsel-unknown-linux-gnu
- env: TARGET=powerpc-unknown-linux-gnu
# - env: TARGET=powerpc64-unknown-linux-gnu
# - env: TARGET=powerpc64le-unknown-linux-gnu
# - env: TARGET=s390x-unknown-linux-gnu
- env: TARGET=arm-unknown-linux-gnueabi
# - env: TARGET=arm-unknown-linux-musleabi

# Testing beta on main targets
- env: TARGET=x86_64-unknown-linux-gnu
rust: beta
- env: TARGET=x86_64-apple-darwin
os: osx
rust: beta

#
# Build/Test/Deploy Steps
#
before_script:
- pip install 'travis-cargo<0.2' --user
# Testing nightly on main targets (allowed to fail)
- env: TARGET=x86_64-unknown-linux-gnu
rust: nightly
- env: TARGET=x86_64-apple-darwin
os: osx
rust: nightly

# Testing nightlies on main targets. These might fail because of issues
# with the compiler, so we allow failures here.
allow_failures:
# Failures for nightlies may be because of compiler bugs, so don't fail the
# build if these fail.
- env: TARGET=x86_64-unknown-linux-gnu
rust: nightly
- env: TARGET=x86_64-apple-darwin
os: osx
rust: nightly
# FIXME: targets that should pass but are currently failing
- env: TARGET=i686-unknown-linux-musl
- env: TARGET=x86_64-unknown-linux-musl
- env: TARGET=mips-unknown-linux-gnu
- env: TARGET=mipsel-unknown-linux-gnu
- env: TARGET=powerpc-unknown-linux-gnu

install:
- sh ci/install.sh
- source ~/.cargo/env || true

script:
- bash ci/run-travis.sh
- |
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
travis-cargo --only stable doc
fi

after_success:
- |
if [ "$TRAVIS_OS_NAME" = "linux" ] && \
[ "$TRAVIS_RUST_VERSION" = "stable" ] && \
[ "$ARCH" = "x86_64" ]; then
# Upload docs for stable (on master) to gh-pages
travis-cargo --only stable doc-upload
# Measure code coverage using kcov and upload to coveralls.io
travis-cargo coveralls --no-sudo --verify
fi
- bash ci/script.sh

before_deploy:
- sh ci/before_deploy.sh

deploy:
# TODO update `api_key.secure`
# - Create a `public_repo` GitHub token. Go to: https://github.com/settings/tokens/new
# - Encrypt it: `travis encrypt GH_TOKEN=0123456789012345678901234567890123456789`
# - Paste the output down here
api_key:
secure: S1ktt0eqmfrEHnYPf4WO7mZtatz/FWfYWBp8nwdc0nd8H6UNZ9Dwy3tJpVe0N9rpB9vAFnkdw6R4jdkIcgxfory2F3F8k/mh8cWn0mkvh2N34YjHMYLnuVzOoFrWai7IcPfROpdlY0tGBlwNj5KMkeBnHUJzd2q4j/4j/tlrfmg=
file_glob: true
file: $CRATE_NAME-$TRAVIS_TAG-$TARGET.*
on:
# Here you can pick which targets will generate binary releases
# In this example, there are some targets that are tested using the stable
# and nightly channels. This condition makes sure there is only one release
# for such targets and that's generated using the stable channel
#
# Here we make it so we never generate binary releases
condition: $DEPLOY = never
tags: true
provider: releases
skip_cleanup: true

cache: cargo
before_cache:
# Travis can't cache files that are not readable by "others"
- chmod -R a+r $HOME/.cargo

branches:
only:
# release tags
- /^v\d+\.\d+\.\d+.*$/
- master

notifications:
email:
on_success: never
24 changes: 15 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,24 @@ This project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]

<!--### Added-->
### Added
- Added `nix::unistd::{openat, fstatat, readlink, readlinkat}`
([#497](https://github.com/nix-rust/nix/pull/551))
([#551](https://github.com/nix-rust/nix/pull/551))

### Changed
- Marked `sys::mman::{ mmap, munmap, madvise, munlock, msync }` as unsafe.
([#559](https://github.com/nix-rust/nix/pull/559))

<!--### Fixed-->
- Minimum supported Rust version is now 1.13
- Removed `revents` argument from `PollFd::new()` as it's an output argument and
will be overwritten regardless of value.
([#542](https://github.com/nix-rust/nix/pull/542)

### Fixed
- Fixed multiple issues compiling under different archetectures and OSes.
Now compiles on Linux/MIPS ([#538](https://github.com/nix-rust/nix/pull/538)),
`Linux/PPC` ([#553](https://github.com/nix-rust/nix/pull/553)),
`MacOS/x86_64,i686` ([#553](https://github.com/nix-rust/nix/pull/553),
and `NetBSD/x64_64` ([#538](https://github.com/nix-rust/nix/pull/538).

## [0.8.0] 2017-03-02

Expand Down Expand Up @@ -60,8 +69,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
([#540](https://github.com/nix-rust/nix/pull/540)

### Changed
- `::nix::sys::termios::{cfgetispeed, cfsetispeed, cfgetospeed, cfsetospeed}`
switched to use `BaudRate` enum from `speed_t`.
- `::nix::sys::termios::{cfgetispeed, cfsetispeed, cfgetospeed, cfsetospeed}`
switched to use `BaudRate` enum from `speed_t`.
([#518](https://github.com/nix-rust/nix/pull/518))
- `epoll_ctl` now could accept None as argument `event`
when op is `EpollOp::EpollCtlDel`.
Expand Down Expand Up @@ -107,9 +116,6 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Exposed all fcntl(2) operations at the module level, so they can be
imported direclty instead of via `FcntlArg` enum.
([#541](https://github.com/nix-rust/nix/pull/541))
- Removed `revents` argument from `PollFd::new()` as it's an output argument and
will be overwritten regardless of value.
([#542](https://github.com/nix-rust/nix/pull/542)

### Fixed
- Fixed multiple issues with Unix domain sockets on non-Linux OSes
Expand Down
33 changes: 31 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,37 @@ pub unsafe extern fn gethostname(name: *mut c_char, len: size_t) -> c_int;
pub fn gethostname(name: &mut [u8]) -> Result<()>;
```

## Requirements
Rust >= 1.9.0
## Supported Platforms

nix target support consists of three tiers:

* Tier 1 - Target is supported and CI both builds and tests
* Tier 2 - Target is supported and CI builds the target
* Tier 3 - Target is supported and CI both builds and tests but test failures
do not block merging code

The following targets are all supported by nix on Rust 1.13.0 or newer:

Tier 1:
* i686-unknown-linux-gnu
* x86_64-unknown-linux-gnu
* i686-apple-darwin
* x86_64-apple-darwin
* aarch64-unknown-linux-gnu
* armv7-unknown-linux-gnueabihf
* arm-unknown-linux-gnueabi

Tier 2:
* i686-unknown-freebsd
* x86_64-unknown-freebsd
* x86_64-unknown-netbsd

Tier 3:
* i686-unknown-linux-musl
* x86_64-unknown-linux-musl
* mips-unknown-linux-gnu
* mipsel-unknown-linux-gnu
* powerpc-unknown-linux-gnu

## Usage

Expand Down
48 changes: 0 additions & 48 deletions ci/README.md

This file was deleted.

23 changes: 23 additions & 0 deletions ci/before_deploy.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# This script takes care of packaging the build artifacts that will go in the
# release zipfile

$SRC_DIR = $PWD.Path
$STAGE = [System.Guid]::NewGuid().ToString()

Set-Location $ENV:Temp
New-Item -Type Directory -Name $STAGE
Set-Location $STAGE

$ZIP = "$SRC_DIR\$($Env:CRATE_NAME)-$($Env:APPVEYOR_REPO_TAG_NAME)-$($Env:TARGET).zip"

# TODO Update this to package the right artifacts
Copy-Item "$SRC_DIR\target\$($Env:TARGET)\release\hello.exe" '.\'

7z a "$ZIP" *

Push-AppveyorArtifact "$ZIP"

Remove-Item *.* -Force
Set-Location ..
Remove-Item $STAGE
Set-Location $SRC_DIR
Loading