-
Notifications
You must be signed in to change notification settings - Fork 5
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
Adding lib
support to crossgen
#12
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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. | ||
|
||
$PKG_NAME = "{{PKG_NAME}}" | ||
$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" | ||
|
||
Copy-Item "$SRC_DIR\target\$($Env:TARGET)\release\$PKG_NAME.exe" '.\' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On windows we might want to have this as |
||
|
||
7z a "$ZIP" * | ||
|
||
Push-AppveyorArtifact "$ZIP" | ||
|
||
Remove-Item *.* -Force | ||
Set-Location .. | ||
Remove-Item $STAGE | ||
Set-Location $SRC_DIR |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# This script takes care of building the crate and packaging it for release. | ||
|
||
PKG_NAME="{{PKG_NAME}}" | ||
|
||
set -ex | ||
|
||
main() { | ||
local src=$(pwd) \ | ||
stage= | ||
|
||
case $TRAVIS_OS_NAME in | ||
linux) | ||
stage=$(mktemp -d) | ||
;; | ||
osx) | ||
stage=$(mktemp -d -t tmp) | ||
;; | ||
esac | ||
|
||
test -f Cargo.lock || cargo generate-lockfile | ||
|
||
cross rustc --bin $PKG_NAME --target $TARGET --release -- -C lto | ||
cp target/$TARGET/release/$PKG_NAME $stage/ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think cargo generates libs in the form of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I thought it was There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh, you are right! |
||
|
||
cd $stage | ||
tar czf $src/$CRATE_NAME-$TRAVIS_TAG-$TARGET.tar.gz * | ||
cd $src | ||
|
||
rm -rf $stage | ||
} | ||
|
||
main |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
set -ex | ||
|
||
main() { | ||
local target= | ||
if [ $TRAVIS_OS_NAME = linux ]; then | ||
target=x86_64-unknown-linux-musl | ||
sort=sort | ||
else | ||
target=x86_64-apple-darwin | ||
sort=gsort # for `sort --sort-version`, from brew's coreutils. | ||
fi | ||
|
||
# Builds for iOS are done on OSX, but require the specific target to be | ||
# installed. | ||
case $TARGET in | ||
aarch64-apple-ios) | ||
rustup target install aarch64-apple-ios | ||
;; | ||
armv7-apple-ios) | ||
rustup target install armv7-apple-ios | ||
;; | ||
armv7s-apple-ios) | ||
rustup target install armv7s-apple-ios | ||
;; | ||
i386-apple-ios) | ||
rustup target install i386-apple-ios | ||
;; | ||
x86_64-apple-ios) | ||
rustup target install x86_64-apple-ios | ||
;; | ||
esac | ||
|
||
# This fetches latest stable release | ||
local tag=$(git ls-remote --tags --refs --exit-code https://github.com/japaric/cross \ | ||
| cut -d/ -f3 \ | ||
| grep -E '^v[0.1.0-9.]+$' \ | ||
| $sort --version-sort \ | ||
| tail -n1) | ||
curl -LSfs https://japaric.github.io/trust/install.sh | \ | ||
sh -s -- \ | ||
--force \ | ||
--git japaric/cross \ | ||
--tag $tag \ | ||
--target $target | ||
|
||
# Install test dependencies | ||
rustup component add rustfmt-preview | ||
rustup component add clippy-preview | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What if we also install There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A few quick notes here:
|
||
} | ||
|
||
main |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# This script takes care of testing the crate. | ||
|
||
set -ex | ||
|
||
main() { | ||
cross build --target $TARGET | ||
cross build --target $TARGET --release | ||
|
||
if [ ! -z $DISABLE_TESTS ]; then | ||
return | ||
fi | ||
|
||
cargo fmt -- --check | ||
cargo +nightly clippy | ||
|
||
cross test --target $TARGET | ||
cross test --target $TARGET --release | ||
} | ||
|
||
# we don't run the "test phase" when doing deploys | ||
if [ -z $TRAVIS_TAG ]; then | ||
main | ||
fi |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
dist: trusty | ||
language: rust | ||
services: docker | ||
sudo: required | ||
|
||
env: | ||
global: | ||
- CRATE_NAME={{PKG_NAME}} | ||
- RUST_BACKTRACE=1 | ||
|
||
matrix: | ||
include: | ||
- env: TARGET=armv7-unknown-linux-gnueabihf | ||
rust: nightly | ||
- env: TARGET=x86_64-unknown-linux-musl | ||
rust: nightly | ||
- env: TARGET=x86_64-apple-darwin | ||
rust: nightly | ||
os: osx | ||
- env: TARGET=x86_64-unknown-freebsd DISABLE_TESTS=1 | ||
rust: nightly | ||
|
||
before_install: | ||
- set -e | ||
|
||
install: | ||
- sh scripts/install.sh | ||
- source ~/.cargo/env || true | ||
|
||
script: | ||
- bash scripts/script.sh | ||
|
||
after_script: set +e | ||
|
||
before_deploy: | ||
- sh scripts/before_deploy.sh | ||
|
||
deploy: | ||
provider: releases | ||
skip_cleanup: true | ||
file_glob: true | ||
file: $CRATE_NAME-$TRAVIS_TAG-$TARGET.* | ||
api_key: | ||
secure: "{{TOKEN}}" | ||
on: | ||
tags: true | ||
|
||
cache: cargo | ||
before_cache: | ||
- chmod -R a+r $HOME/.cargo | ||
|
||
notifications: | ||
email: | ||
on_success: never | ||
on_failure: never |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When thinking of the distribution aspect of the lib on github, I think it would be more helpful to have the bare-ddl not zipped.
In my mind, when building a library on another language, it could be possible to instrument the build system to download all the
.so
and.dll
into a folder to distribute the package with it, and having it not-zipped would make the build system much simpler.What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess the zip archive really only makes a big difference if you have a library that produces more than one artefact (which can easily be the case). Maybe it should be something that is configurable somehow?