Skip to content

Commit

Permalink
Merge pull request #3213 from habitat-sh/fnichol/dockerize-rs
Browse files Browse the repository at this point in the history
Approved by: @nobody from Nowhere
Merged by: The Sentinels
  • Loading branch information
thesentinels committed Sep 21, 2017
2 parents 83c32a6 + 6c5377d commit 56a4cf1
Show file tree
Hide file tree
Showing 21 changed files with 2,080 additions and 10 deletions.
6 changes: 3 additions & 3 deletions .travis.yml
Expand Up @@ -14,7 +14,7 @@ matrix:
language: ruby
rvm: 2.3.1
env:
- AFFECTED_DIRS="components/hab|components/sup"
- AFFECTED_DIRS="components/hab|components/hab-butterfly|components/pkg-export-docker|components/sup"
sudo: required
addons:
apt:
Expand Down Expand Up @@ -191,7 +191,7 @@ matrix:
- os: linux
env:
- COMPONENTS="sup hab-butterfly hab plan-build backline bintray-publish studio pkg-aci pkg-dockerize pkg-mesosize pkg-tarize"
- AFFECTED_DIRS="support/ci/deploy\.sh|Cargo\.toml|Cargo\.lock|components/hab|components/common|components/core|components/builder-depot-client|components/http-client|components/sup|components/hab-butterfly|components/butterfly|components/studio|VERSION"
- AFFECTED_DIRS="support/ci/deploy\.sh|Cargo\.toml|Cargo\.lock|components/hab|components/common|components/core|components/builder-depot-client|components/http-client|components/sup|components/hab-butterfly|components/butterfly|components/studio|components/pkg-dockerize|VERSION"
# HAB_AUTH_TOKEN
- secure: "OCq9oDAEP3Cc0BiGrnZHE0FoNdyqsAy2LPTwEoOKvgiZdrw5o2bvpN1Kl+DKpw2auKtkeAS1aVSE/CMrglxrDs+VolvK9ttW3kj8c7+AeuCYjBsyWqdnZ1/24u6P+20fKanYrsMsnFb2r9OWwxZVlFnfmks81LWToOlGFJpL5KnmSPrB2vlWPbiaH9+yg8aslrmCq0reSoSVSnoZHoTolWtjzx2WdPYqA4gu0HHASVbH5qP+PoQSGIWvwbBaU4xhwkp1K8rWCjI8lre2YpBMOdfZv+9arMjc3Xg/kgD9oGU9DN7Q3UzAWxTSJv/3Cm4LArwiI57rXMLDKf8N1MhvGMHP1xgbuN8JWFKqFuWpqCf6qJkYG8+VZkruKYOo/2tXtBY4hpbR2abcWvYU/S9AQFHKGJQ2vcArnp5SKO+Oq/fNVneeHli4RbGMRQCMVq+X0SSC148F0zEVVwkNM5eq4askfc/2y4asySrH0MT/5T3yBp8fr3zXpnj82h2ytCZOUs0o+La9+wt5gSDUJHdY/BwSSPrgnKSp7ixslM/g7lMy3nAOs6qLql8/vW543CXBurCACWTqwKcy3/wRparTkmZcs1d7vUrbcfYv7XJzh0pw2P1hCjWD9BtkowbuLVo8K9ndPl2rbFY9XljqFXMTcHxp4ETeCc23azHCs+SYFb0="
# HAB_ORIGIN_KEY
Expand Down Expand Up @@ -227,7 +227,7 @@ matrix:
- os: linux
env:
- COMPONENTS="sup hab-butterfly hab plan-build backline bintray-publish studio pkg-aci pkg-dockerize pkg-mesosize pkg-tarize"
- AFFECTED_DIRS="support/ci/deploy\.sh|Cargo\.toml|Cargo\.lock|components/hab|components/common|components/core|components/builder-depot-client|components/http-client|components/sup|components/hab-butterfly|components/butterfly|components/studio|VERSION"
- AFFECTED_DIRS="support/ci/deploy\.sh|Cargo\.toml|Cargo\.lock|components/hab|components/common|components/core|components/builder-depot-client|components/http-client|components/sup|components/hab-butterfly|components/butterfly|components/studio|components/pkg-dockerize|VERSION"
# HAB_ORIGIN_KEY
- secure: "uZ70GE8qK3GBgs7ZIsoy5DhPlHNs2hoLxLBGKq+u+0XrE017pOnW6mNHsn7J7i2r8CPtd4KFsFEN52wZSA+Sf96MFIL2w9E+geykBgbRMZzv4icuCf0xSGwm4iRMgZ9A08TfurMX6y6N+4JNsrCv9syVNuGq09EL2wLHPXOQhesMpodijQLcFikxfEXXbaWla1xHnYxJk+fbvYDoXVCbdqnpdeLTmGuQHFaaNI7jm1B3L/dl+IGZxwFdvqBT3G9mHiXBdyi8bALs7rcZNdV7PqtFFpp98zIeqwNHtHPd5cBRmqDRTRxucRSACS/lurrz9J+001a9RjPvUkYlLrn0hQY9pN6oo+kCpN/1r0bc17i4FbGx7R73FnFgPK/cno0ENBFygNZn7/jg6cENgjkBlHsZhc1+L1xhILo46nQU9XbWJrwelVYUOOGXI76tECOkGhkglx1vYK8fcMVLJMhL7psgPpbGbDJQDuAKhHS+75txNK+356ompNL+YUzeWZc4KSGZCNTQsPK+rsGttmA+JXtAaquFaY5xwSgyKHwETiSVg4dYXb3xh6goNxf2JTOZOosWaypyykHqcqsqCu2fzIDdmkgCx6I5/5q8I/7Z0es0jlUpHamlihZwe4E5YdYFCSouaDoeTnVdJKVI1p9fnAjpFqjivFgqLE/Z504vCNU="
- BINTRAY_USER=chef-releng-ops
Expand Down
19 changes: 19 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 7 additions & 6 deletions Cargo.toml
Expand Up @@ -10,25 +10,26 @@ members = [
"components/builder-graph",
"components/builder-http-gateway",
"components/builder-jobsrv",
"components/builder-scheduler",
"components/builder-originsrv",
"components/builder-protocol",
"components/builder-router",
"components/builder-scheduler",
"components/builder-sessionsrv",
"components/builder-originsrv",
"components/builder-worker",
"components/butterfly",
"components/butterfly-test",
"components/common",
"components/core",
"components/eventsrv",
"components/eventsrv-client",
"components/hab",
"components/hab-butterfly",
"components/http-client",
"components/launcher",
"components/launcher-client",
"components/launcher-protocol",
"components/net",
"components/op",
"components/sup",
"components/butterfly",
"components/butterfly-test",
"components/hab-butterfly"
"components/pkg-export-docker",
"components/sup"
]
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -42,7 +42,7 @@ else
docs_host := 127.0.0.1
endif

BIN = hab hab-butterfly sup
BIN = hab hab-butterfly pkg-export-docker sup
LIB = butterfly builder-db builder-core builder-protocol common core builder-depot-client http-client net
SRV = builder-api builder-admin builder-depot builder-router builder-scheduler builder-jobsrv builder-sessionsrv builder-originsrv builder-worker
ALL = $(BIN) $(LIB) $(SRV)
Expand Down
33 changes: 33 additions & 0 deletions components/pkg-export-docker/Cargo.toml
@@ -0,0 +1,33 @@
[package]
name = "habitat_pkg_export_docker"
version = "0.0.0"
authors = ["Fletcher Nichol <fnichol@habitat.sh>"]
build = "../build.rs"
workspace = "../../"

[lib]
name = "habitat_pkg_export_docker"

[[bin]]
name = "hab-pkg-export-docker"
path = "src/main.rs"
doc = false

[dependencies]
clap = { version = "*", features = ["suggestions", "color", "unstable"] }
clippy = { version = "*", optional = true }
env_logger = "*"
hab = { path = "../hab" }
habitat_core = { path = "../core" }
habitat_common = { path = "../common" }
handlebars = { version = "*", features = ["partial4"], default-features = false }
lazy_static = "*"
log = "*"
serde = { version = "*", features = ["rc"] }
serde_json = "*"
tempdir = "*"
url = "*"

[features]
default = []
functional = []
7 changes: 7 additions & 0 deletions components/pkg-export-docker/defaults/Dockerfile.hbs
@@ -0,0 +1,7 @@
FROM scratch
ENV PATH {{path}}
ADD {{rootfs}} /
VOLUME {{volumes}}
EXPOSE 9631 {{exposes}}
ENTRYPOINT ["/init.sh"]
CMD ["start", "{{primary_svc_ident}}"]
23 changes: 23 additions & 0 deletions components/pkg-export-docker/defaults/etc/group
@@ -0,0 +1,23 @@
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
systemd-journal:x:23:
input:x:24:
mail:x:34:
nogroup:x:99:
users:x:999:
9 changes: 9 additions & 0 deletions components/pkg-export-docker/defaults/etc/nsswitch.conf
@@ -0,0 +1,9 @@
passwd: files
group: files
shadow: files

hosts: files dns
networks: files

rpc: files
services: files
4 changes: 4 additions & 0 deletions components/pkg-export-docker/defaults/etc/passwd
@@ -0,0 +1,4 @@
root:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
2 changes: 2 additions & 0 deletions components/pkg-export-docker/defaults/etc/resolv.conf
@@ -0,0 +1,2 @@
nameserver 8.8.8.8
nameserver 8.8.4.4
7 changes: 7 additions & 0 deletions components/pkg-export-docker/defaults/init.sh.hbs
@@ -0,0 +1,7 @@
#!{{busybox_shell}}
export PATH="{{path}}"
case "$1" in
-h|--help|help|-V|--version) exec {{sup_bin}} "$@";;
-*) exec {{sup_bin}} start {{primary_svc_ident}} "$@";;
*) exec {{sup_bin}} "$@";;
esac
@@ -0,0 +1,4 @@
id={{id}}
name={{name}}
tags={{tags}}
name_tags={{name_tags}}
82 changes: 82 additions & 0 deletions components/pkg-export-docker/plan.sh
@@ -0,0 +1,82 @@
pkg_name=hab-pkg-export-docker
_pkg_distname=$pkg_name
pkg_origin=core
pkg_version=$(cat "$PLAN_CONTEXT/../../VERSION")
pkg_maintainer="The Habitat Maintainers <humans@habitat.sh>"
pkg_license=('Apache-2.0')
# The result is a portable, static binary. However, we shell out to the
# Docker command which we need at runtime.
pkg_deps=(core/docker)
pkg_build_deps=(
core/musl core/zlib-musl core/xz-musl core/bzip2-musl core/libarchive-musl
core/openssl-musl core/libsodium-musl
core/coreutils core/rust core/gcc
)
pkg_bin_dirs=(bin)

bin=$_pkg_distname

_common_prepare() {
do_default_prepare

# Can be either `--release` or `--debug` to determine cargo build strategy
build_type="--release"
build_line "Building artifacts with \`${build_type#--}' mode"

# Used by the `build.rs` program to set the version of the binaries
export PLAN_VERSION="${pkg_version}/${pkg_release}"
build_line "Setting PLAN_VERSION=$PLAN_VERSION"

if [ -z "$HAB_CARGO_TARGET_DIR" ]; then
# Used by Cargo to use a pristine, isolated directory for all compilation
export CARGO_TARGET_DIR="$HAB_CACHE_SRC_PATH/$pkg_dirname"
else
export CARGO_TARGET_DIR="$HAB_CARGO_TARGET_DIR"
fi
build_line "Setting CARGO_TARGET_DIR=$CARGO_TARGET_DIR"
}

do_prepare() {
_common_prepare

export rustc_target="x86_64-unknown-linux-musl"
build_line "Setting rustc_target=$rustc_target"

la_ldflags="-L$(pkg_path_for zlib-musl)/lib -lz"
la_ldflags="$la_ldflags -L$(pkg_path_for xz-musl)/lib -llzma"
la_ldflags="$la_ldflags -L$(pkg_path_for bzip2-musl)/lib -lbz2"
la_ldflags="$la_ldflags -L$(pkg_path_for openssl-musl)/lib -lssl -lcrypto"

export LIBARCHIVE_LIB_DIR=$(pkg_path_for libarchive-musl)/lib
export LIBARCHIVE_INCLUDE_DIR=$(pkg_path_for libarchive-musl)/include
export LIBARCHIVE_LDFLAGS="$la_ldflags"
export LIBARCHIVE_STATIC=true
export OPENSSL_LIB_DIR=$(pkg_path_for openssl-musl)/lib
export OPENSSL_INCLUDE_DIR=$(pkg_path_for openssl-musl)/include
export OPENSSL_STATIC=true
export SODIUM_LIB_DIR=$(pkg_path_for libsodium-musl)/lib
export SODIUM_STATIC=true

# Used to find libgcc_s.so.1 when compiling `build.rs` in dependencies. Since
# this used only at build time, we will use the version found in the gcc
# package proper--it won't find its way into the final binaries.
export LD_LIBRARY_PATH=$(pkg_path_for gcc)/lib
build_line "Setting LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
}

do_build() {
pushd $PLAN_CONTEXT > /dev/null
cargo build ${build_type#--debug} --target=$rustc_target --verbose
popd > /dev/null
}

do_install() {
install -v -D $CARGO_TARGET_DIR/$rustc_target/${build_type#--}/$bin \
$pkg_prefix/bin/$bin
}

do_strip() {
if [[ "$build_type" != "--debug" ]]; then
do_default_strip
fi
}

0 comments on commit 56a4cf1

Please sign in to comment.