diff --git a/build b/build index 4aee6d5e8..1dc75e751 100755 --- a/build +++ b/build @@ -108,15 +108,19 @@ make_elixir_rel() { ## extract previous version .tar.gz files to _build/$PROFILE/rel/emqx before making relup make_relup() { local rel_dir="_build/$PROFILE/rel/emqx" - mkdir -p "${rel_dir}/lib" - mkdir -p "${rel_dir}/releases" local name_pattern name_pattern="${PROFILE}-$(./pkg-vsn.sh "$PROFILE" --vsn_matcher --long)" local releases=() while read -r tgzfile ; do local base_vsn base_vsn="$(echo "$tgzfile" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+(-(alpha|beta|rc)\.[0-9])?(-[0-9a-f]{8})?" | head -1)" - tar -C "$rel_dir" -zxf "$tgzfile" --keep-old-files releases lib + ## we have to create tmp dir to untar old tgz, as `tar --skip-old-files` is not supported on all plantforms + local tmp_dir + tmp_dir="$(mktemp -d -t emqx.XXXXXXX)" + tar -C "$tmp_dir" -zxf "$tgzfile" + cp -npr "$tmp_dir/releases"/* "${rel_dir}/releases/" || true + cp -npr "$tmp_dir/lib"/* "${rel_dir}/lib/" || true + rm -rf "$tmp_dir" releases+=( "$base_vsn" ) done < <("$FIND" _upgrade_base -maxdepth 1 -name "${name_pattern}.tar.gz" -type f) if [ ${#releases[@]} -eq 0 ]; then @@ -185,7 +189,7 @@ make_tgz() { ## create tar after change dir (for windows) ## to avoid creating an extra level of 'emqx' dir in the .tar.gz file pushd "${tard}/emqx" >/dev/null - tar -zcf "../${target_name}" * + tar -zcf "../${target_name}" -- * popd >/dev/null mv "${tard}/${target_name}" "${target}" case "$SYSTEM" in