]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/make-tar.sh
ncurses 6.4 - patch 20240420
[ncurses.git] / test / make-tar.sh
index a3d1779039430f4d2b1bc5dddf3bd2bc1e1f58a0..df4b66aadab6ca18e2b931e7e9638574c2773282 100755 (executable)
@@ -1,7 +1,8 @@
 #!/bin/sh
-# $Id: make-tar.sh,v 1.14 2017/08/12 12:22:06 tom Exp $
+# $Id: make-tar.sh,v 1.21 2022/11/05 19:41:33 tom Exp $
 ##############################################################################
-# Copyright (c) 2010-2015,2017 Free Software Foundation, Inc.                #
+# Copyright 2019-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2010-2015,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -36,14 +37,20 @@ export CDPATH
 
 TARGET=`pwd`
 
-: ${PKG_NAME:=ncurses-examples}
-: ${ROOTNAME:=ncurses-test}
-: ${DESTDIR:=$TARGET}
-: ${TMPDIR:=/tmp}
+: "${PKG_NAME:=ncurses-examples}"
+: "${ROOTNAME:=ncurses-test}"
+: "${DESTDIR:=$TARGET}"
+: "${TMPDIR:=/tmp}"
+
+# make timestamps of generated files predictable
+same_timestamp() {
+       [ -f ../NEWS ] || echo "OOPS $1"
+       touch -r ../NEWS "$1"
+}
 
 grep_assign() {
-       grep_assign=`egrep "^$2\>" "$1" | sed -e "s/^$2[        ]*=[    ]*//" -e 's/"//g'`
-       eval $2=\"$grep_assign\"
+       grep_assign=`grep -E "^$2\>" "$1" | sed -e "s/^$2[      ]*=[    ]*//" -e 's/"//g'`
+       eval "$2"=\""$grep_assign"\"
 }
 
 grep_patchdate() {
@@ -58,29 +65,35 @@ edit_specfile() {
        sed \
                -e "s/\\<MAJOR\\>/$NCURSES_MAJOR/g" \
                -e "s/\\<MINOR\\>/$NCURSES_MINOR/g" \
-               -e "s/\\<YYYYMMDD\\>/$NCURSES_PATCH/g" $1 >$1.new
-       chmod u+w $1
-       mv $1.new $1
+               -e "s/\\<YYYYMMDD\\>/$NCURSES_PATCH/g" "$1" >"$1.new"
+       chmod u+w "$1"
+       mv "$1.new" "$1"
+       same_timestamp "$1"
 }
 
 make_changelog() {
-       test -f $1 && chmod u+w $1
-       cat >$1 <<EOF
-`echo $PKG_NAME|tr '[A-Z]' '[a-z]'` ($NCURSES_MAJOR.$NCURSES_MINOR+$NCURSES_PATCH) unstable; urgency=low
+       [ -f "$1" ] && chmod u+w "$1"
+       cat >"$1" <<EOF
+`echo $PKG_NAME|tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` ($NCURSES_MAJOR.$NCURSES_MINOR+$NCURSES_PATCH) unstable; urgency=low
 
   * snapshot of ncurses subpackage for $PKG_NAME.
 
- -- `head -n 1 $HOME/.signature`  `date -R`
+ -- `head -n 1 "$HOME"/.signature`  `date -R`
 EOF
+       same_timestamp "$1"
 }
 
 # This can be run from either the subdirectory, or from the top-level
 # source directory.  We will put the tar file in the original directory.
-test -d ./test && cd ./test
+if [ -d ./test ]
+then
+       cd ./test || exit
+fi
 SOURCE=`cd ..;pwd`
 
 BUILD=$TMPDIR/make-tar$$
-trap "cd /; rm -rf $BUILD; exit 0" 0 1 2 3 15
+trap "cd /; rm -rf $BUILD; exit 1" 1 2 3 15
+trap "cd /; rm -rf $BUILD; exit 0" 0
 
 umask 077
 if ! ( mkdir $BUILD )
@@ -91,36 +104,37 @@ fi
 umask 022
 mkdir $BUILD/$ROOTNAME
 
-cp -p -r * $BUILD/$ROOTNAME/ || exit
+cp -p -r ./* $BUILD/$ROOTNAME/ || exit
 
 # Add the config.* utility scripts from the top-level directory.
 for i in . ..
 do
-       for j in config.guess config.sub install-sh tar-copy.sh
+       for j in COPYING config.guess config.sub install-sh tar-copy.sh
        do
-               test -f $i/$j && cp -p $i/$j $BUILD/$ROOTNAME/
+               [ -f $i/$j ] && cp -p $i/$j $BUILD/$ROOTNAME/
        done
 done
 
 # Make rpm and dpkg scripts for test-builds
 grep_patchdate
-for spec in $BUILD/$ROOTNAME/package/*.spec
+for spec in "$BUILD/$ROOTNAME"/package/*.spec
 do
-       edit_specfile $spec
+       edit_specfile "$spec"
 done
-for spec in $BUILD/$ROOTNAME/package/debian*
+for spec in "$BUILD/$ROOTNAME"/package/debian*
 do
-       make_changelog $spec/changelog
+       make_changelog "$spec"/changelog
 done
 
-cp -p $SOURCE/NEWS $BUILD/$ROOTNAME
+cp -p "$SOURCE/NEWS" "$BUILD/$ROOTNAME"
 
 # cleanup empty directories (an artifact of ncurses source archives)
 
-touch $BUILD/$ROOTNAME/MANIFEST 
-( cd $BUILD/$ROOTNAME && find . -type f -print |$SOURCE/misc/csort >MANIFEST )
+touch $BUILD/$ROOTNAME/MANIFEST
+( cd $BUILD/$ROOTNAME && find . -type f -print | "$SOURCE/misc/csort" >MANIFEST )
+same_timestamp $BUILD/$ROOTNAME/MANIFEST
 
-cd $BUILD || exit 
+cd $BUILD || exit
 
 # Remove build-artifacts.
 find . -name RCS -exec rm -rf {} \;
@@ -137,8 +151,11 @@ find . -name "*.gz" -exec rm -rf {} \;
 # Make the files writable...
 chmod -R u+w .
 
-tar cf - $ROOTNAME | gzip >$DESTDIR/$ROOTNAME.tar.gz
-cd $DESTDIR
+# Cleanup timestamps
+[ -n "$TOUCH_DIRS" ] && "$TOUCH_DIRS" "$ROOTNAME"
+
+tar cf - $TAR_OPTIONS $ROOTNAME | gzip >"$DESTDIR/$ROOTNAME.tar.gz"
+cd "$DESTDIR" || exit
 
 pwd
 ls -l $ROOTNAME.tar.gz