4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
19 LIBDIR="$(dirname $(readlink -f ${BASH_SOURCE[0]}))"
21 GOLDEN_BASE_IMAGE_FETCH_USER=${GOLDEN_BASE_IMAGE_FETCH_USER:-}
22 GOLDEN_BASE_IMAGE_FETCH_PASSWORD=${GOLDEN_BASE_IMAGE_FETCH_PASSWORD:-}
24 WORK=$(readlink -f ${WORK:-$(dirname $(dirname $LIBDIR))})
26 RPM_BUILDER=$(find $WORK -maxdepth 2 -type d -name rpmbuilder)
29 WORKLOGS=$WORKTMP/logs
30 DURATION_LOG=$WORKLOGS/durations.log
31 MANIFEST_PATH=$(readlink -f ${MANIFEST_PATH:-$WORK/.repo/manifests})
32 BUILD_CONFIG_INI=${BUILD_CONFIG_INI:-$MANIFEST_PATH/build_config.ini}
33 GOLDEN_IMAGE_NAME=guest-image.img
34 TMP_GOLDEN_IMAGE=$WORKTMP/$GOLDEN_IMAGE_NAME
36 WORKRESULTS=$WORK/results
37 REPO_FILES=$WORKRESULTS/repo_files
38 REPO_DIR=$WORKRESULTS/repo
39 SRC_REPO_DIR=$WORKRESULTS/src_repo
40 RPMLISTS=$WORKRESULTS/rpmlists
41 CHECKSUM_DIR=$WORKRESULTS/bin_checksum
42 RESULT_IMAGES_DIR=$WORKRESULTS/images
43 RPM_BUILDER_SETTINGS=$WORKTMP/mocksettings/mock.cfg
45 function _read_build_config()
47 local config_ini=$BUILD_CONFIG_INI
48 if [[ -f "$1" ]] && [[ $1 == *.ini ]]; then
52 PYTHONPATH=$LIBDIR $LIBDIR/tools/script/read_build_config.py $config_ini $@
55 function _read_manifest_vars()
57 PRODUCT_RELEASE_BUILD_ID="${BUILD_NUMBER:-0}"
58 PRODUCT_RELEASE_LABEL="$(_read_build_config DEFAULT product_release_label)"
61 function _initialize_work_dirs()
65 mkdir -p $WORKRESULTS $REPO_FILES $REPO_DIR $SRC_REPO_DIR $RPMLISTS $CHECKSUM_DIR
66 # dont clear tmp, can be used for caching
84 _info "##################################################################"
86 _info "##################################################################"
92 _info "------------------------------------------------------------------"
98 _header "STEP START: $@"
111 _header "STEP OK: $@"
117 _info "[cmd-start]: $@"
118 stamp_start=$(date +%s)
119 time $@ 2>&1 || _abort "Command failed: $@"
120 stamp_end=$(date +%s)
121 echo "$((stamp_end - stamp_start)) $@" >> $DURATION_LOG.unsorted
122 sort -nr $DURATION_LOG.unsorted > $DURATION_LOG
127 function _run_cmd_as_step()
129 if [ $# -eq 1 -a -f $1 ]; then
130 step="$(basename $1)"
139 function _add_rpms_to_localrepo()
143 mkdir -p $SRC_REPO_DIR
145 if grep ".src.rpm" <<< "$rpm"; then
146 cp -f $rpm $SRC_REPO_DIR
154 function _add_rpms_dir_to_repo()
159 cp -f $(repomanage --keep=1 --new $rpm_dir) $repo_dir/
162 function _create_localrepo()
165 _run_cmd createrepo --workers=8 --update .
168 _run_cmd createrepo --workers=8 --update .
172 function _add_rpms_to_repos_from_workdir()
174 _add_rpms_dir_to_repo $REPO_DIR $1/buildrepository/mock/rpm
175 _add_rpms_dir_to_repo $SRC_REPO_DIR $1/buildrepository/mock/srpm
176 #find $1/ -name '*.tar.gz' | xargs rm -f
180 function _publish_results()
184 mkdir -p $(dirname $to)
188 function _publish_image()
190 _publish_results $1 $2
194 function _create_checksum()
196 _create_md5_checksum $1
197 _create_sha256_checksum $1
200 function _create_sha256_checksum()
203 time sha256sum $(basename $1) > $(basename $1).sha256
207 function _create_md5_checksum()
210 time md5sum $(basename $1) > $(basename $1).md5
216 # e.g. for Jenkins boolean parameters
220 function _join_array()
227 function _get_package_list()
229 PYTHONPATH=$LIBDIR $LIBDIR/tools/script/read_package_config.py $@
232 function _load_docker_image()
234 local docker_image=$1
235 local docker_image_url="$(_read_build_config DEFAULT docker_images)/${docker_image}.tar"
236 if docker inspect ${docker_image} &> /dev/null; then
237 echo "Using already built ${docker_image} image"
239 echo "Loading ${docker_image} image"
240 curl -L $docker_image_url | docker load