fix(relup): create tmp dir to preserve current files
This commit is contained in:
parent
b9a9da3208
commit
40ad23ee74
12
build
12
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
|
||||
|
|
Loading…
Reference in New Issue