blob: 146f162718d75d2e62c45cbaefffcf780b51f648 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
pkg_name=chef-infra-client
pkg_origin=chef
pkg_maintainer="The Chef Maintainers <humans@chef.io>"
pkg_description="The Chef Infra Client"
pkg_license=('Apache-2.0')
pkg_filename="${pkg_name}-${pkg_version}.tar.gz"
pkg_bin_dirs=(bin)
pkg_build_deps=(
core/make
core/gcc
core/git
)
pkg_deps=(
core/glibc
core/ruby26
core/libxml2
core/libxslt
core/libiconv
core/xz
core/zlib
core/bundler
core/openssl
core/cacerts
core/libffi
core/coreutils
core/libarchive
)
pkg_svc_user=root
pkg_version() {
cat "${SRC_PATH}/../../VERSION"
}
do_before() {
do_default_before
update_pkg_version
}
do_download() {
build_line "Locally creating archive of latest repository commit."
# source is in this repo, so we're going to create an archive from the
# appropriate path within the repo and place the generated tarball in the
# location expected by do_unpack
cd ${PLAN_CONTEXT}/../../
git archive --prefix=${pkg_name}-${pkg_version}/ --output=${HAB_CACHE_SRC_PATH}/${pkg_filename} HEAD
}
do_verify() {
build_line "Skipping checksum verification on the archive we just created."
return 0
}
do_prepare() {
export OPENSSL_LIB_DIR=$(pkg_path_for openssl)/lib
export OPENSSL_INCLUDE_DIR=$(pkg_path_for openssl)/include
export SSL_CERT_FILE=$(pkg_path_for cacerts)/ssl/cert.pem
build_line "Setting link for /usr/bin/env to 'coreutils'"
[[ ! -f /usr/bin/env ]] && ln -s $(pkg_path_for coreutils)/bin/env /usr/bin/env
return 0
}
do_build() {
export CPPFLAGS="${CPPFLAGS} ${CFLAGS}"
local _bundler_dir=$(pkg_path_for bundler)
local _libxml2_dir=$(pkg_path_for libxml2)
local _libxslt_dir=$(pkg_path_for libxslt)
local _zlib_dir=$(pkg_path_for zlib)
export GEM_HOME=${pkg_prefix}/bundle
export GEM_PATH=${_bundler_dir}:${GEM_HOME}
export NOKOGIRI_CONFIG="--use-system-libraries --with-zlib-dir=${_zlib_dir} --with-xslt-dir=${_libxslt_dir} --with-xml2-include=${_libxml2_dir}/include/libxml2 --with-xml2-lib=${_libxml2_dir}/lib"
bundle config --local build.nokogiri '${NOKOGIRI_CONFIG}'
bundle config --local silence_root_warning 1
pushd ${HAB_CACHE_SRC_PATH}/${pkg_name}-${pkg_version}/chef-config > /dev/null
_bundle_install "${pkg_prefix}/bundle"
popd > /dev/null
_bundle_install "${pkg_prefix}/bundle"
}
do_install() {
mkdir -p "${pkg_prefix}/chef"
for dir in bin chef-bin chef-config lib chef.gemspec Gemfile Gemfile.lock; do
cp -rv "${PLAN_CONTEXT}/../../${dir}" "${pkg_prefix}/chef/"
done
# This is just generating binstubs with the correct path.
# If we generated them on install, bundler thinks our source is in $HAB_CACHE_SOURCE_PATH
pushd "$pkg_prefix/chef" > /dev/null
_bundle_install \
"${pkg_prefix}/bundle" \
--local \
--quiet \
--binstubs "${pkg_prefix}/bin"
popd > /dev/null
fix_interpreter "${pkg_prefix}/bin/*" core/coreutils bin/env
fix_interpreter "${pkg_prefix}/bin/*" core/ruby26 bin/ruby
}
do_end() {
if [[ `readlink /usr/bin/env` = "$(pkg_path_for coreutils)/bin/env" ]]; then
build_line "Removing the symlink we created for '/usr/bin/env'"
rm /usr/bin/env
fi
}
do_strip() {
return 0
}
# Helper function to wrap up some repetitive bundle install flags
_bundle_install() {
local path
path="$1"
shift
bundle install ${*:-} \
--jobs "$(nproc)" \
--without development:test \
--path "$path" \
--shebang="$(pkg_path_for "core/ruby26")/bin/ruby" \
--no-clean \
--retry 5 \
--standalone
}
|