diff options
author | Glenn Morris <rgm@gnu.org> | 2019-02-04 19:50:44 -0800 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2019-02-04 19:50:44 -0800 |
commit | 369d20559d6118d6b6cee2adc265114ad30fa3b3 (patch) | |
tree | 9e1840473aebd96187b6deaece9679a1876feb3b | |
parent | ef17247fe9cab2d59e470daad24314c868248b0a (diff) | |
download | emacs-369d20559d6118d6b6cee2adc265114ad30fa3b3.tar.gz |
* make-dist: Prefer a temporary manifest file.
This prevents the manifest cluttering up the build tree,
and possibly getting stale if --no-update is used.
-rwxr-xr-x | make-dist | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/make-dist b/make-dist index ef35c87c355..4e18d77a87b 100755 --- a/make-dist +++ b/make-dist @@ -381,27 +381,33 @@ else info_files= fi +echo "Creating staging directory: '${tempparent}'" + +mkdir ${tempparent} || exit +tempdir="${tempparent}/${emacsname}" + +manifest=MANIFEST + +[ -f $manifest ] || manifest=${tempparent}/MANIFEST + # If Git is in use update the file MANIFEST, which can substitute for # 'git ls-files' later (e.g., after extraction from a tarball). # Otherwise, rely on the existing MANIFEST, which should be maintained some # other way when adding or deleting a distributed file while not using Git. -if ( [ $update = yes ] || [ ! -f MANIFEST ] ) && [ -r .git ]; then - echo "Updating MANIFEST" +# TODO: maybe this should ignore $update, and always update MANIFEST +# if .git is present. +if ( [ $update = yes ] || [ ! -f $manifest ] ) && [ -r .git ]; then + echo "Updating $manifest" if [ $with_tests = yes ]; then - git ls-files >MANIFEST + git ls-files > $manifest else - git ls-files | grep -v '^test' >MANIFEST + git ls-files | grep -v '^test' >$manifest fi || exit - printf '%s\n' $possibly_non_vc_files $info_files >>MANIFEST || exit - sort -u -o MANIFEST MANIFEST || exit + printf '%s\n' $possibly_non_vc_files $info_files >>$manifest || exit + sort -u -o $manifest $manifest || exit fi -<MANIFEST || exit - -echo "Creating staging directory: '${tempparent}'" - -mkdir ${tempparent} || exit -tempdir="${tempparent}/${emacsname}" +<$manifest || exit ### This trap ensures that the staging directory will be cleaned up even ### when the script is interrupted in mid-career. @@ -449,13 +455,17 @@ MANIFEST_subdir_sed=' /^$/d s,^,'$tempdir'/, ' -tempsubdirs=$(sed "$MANIFEST_subdir_sed" MANIFEST | sort -u) +tempsubdirs=$(sed "$MANIFEST_subdir_sed" $manifest | sort -u) $mkdir_verbose -p $tempsubdirs || exit echo "Making links to files" while read file; do - [ $file = "$file_to_skip" ] || ln $file $tempdir/$file || exit -done <MANIFEST + case $file in + MANIFEST) ln $manifest $tempdir/MANIFEST || exit ;; + $file_to_skip) continue ;; + *) ln $file $tempdir/$file || exit ;; + esac +done <$manifest if [ "${newer}" ]; then printf '%s\n' "Removing files older than $newer" |