fix(relup): create tmp dir to preserve current files

This commit is contained in:
Shawn 2022-05-25 10:24:02 +08:00
parent b9a9da3208
commit 40ad23ee74
1 changed files with 8 additions and 4 deletions

12
build
View File

@ -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