X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/544174d9e7e4b0bf9a05c32ffd7687df6017dc9c..9a5114ac7e384d28a13c99725380b6024abde5cf:/make-dist diff --git a/make-dist b/make-dist index b8099d5ba8..6b924b1f6b 100755 --- a/make-dist +++ b/make-dist @@ -21,8 +21,9 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with GNU Emacs; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# along with GNU Emacs; see the file COPYING. If not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. progname="$0" @@ -32,6 +33,10 @@ progname="$0" ### Print out each line we read, for debugging's sake. ### set -v +## Don't protect any files. +umask 0 + +update=yes clean_up=no make_tar=no newer="" @@ -47,6 +52,10 @@ while [ $# -gt 0 ]; do "--tar" ) make_tar=yes ;; + ## This option tells make-dist not to recompile or do analogous things. + "--no-update" ) + update=no + ;; ## This option tells make-dist to make the distribution normally, then ## remove all files older than the given timestamp file. This is useful ## for creating incremental or patch distributions. @@ -76,6 +85,21 @@ if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/version.el ]; then exit 1 fi +### Find where to run Emacs. +if [ $update = yes ]; +then + if [ -f src/emacs ]; + then + EMACS=`pwd`/src/emacs + else + if [ x$EMACS = x ]; + then + echo You must specify the EMACS environment variable 2>&1 + exit 1 + fi + fi +fi + ### Find out which version of Emacs this is. shortversion=`grep 'defconst[ ]*emacs-version' lisp/version.el \ | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'` @@ -88,11 +112,14 @@ fi echo Version numbers are $version and $shortversion -if grep -s "GNU Emacs version ${shortversion}" ./man/emacs.texi > /dev/null; then - true -else - echo "You must update the version number in \`./man/emacs.texi'" - sleep 5 +if [ $update = yes ]; +then + if grep -s "GNU Emacs version ${shortversion}" ./man/emacs.texi > /dev/null; then + true + else + echo "You must update the version number in \`./man/emacs.texi'" + sleep 5 + fi fi ### Make sure we don't already have a directory emacs-${version}. @@ -140,21 +167,20 @@ if [ "x`ls -t configure configure.in | head -1`" != "xconfigure" ]; then autoconf || { x=$?; echo Autoconf FAILED! >&2; exit $x; } fi -echo "Updating Info files" - -(cd man; make info) - -echo "Updating finder-inf.el" +if [ $update = yes ]; +then + echo "Updating Info files" -(cd lisp; ../src/emacs -batch -l finder -f finder-compile-keywords-make-dist) + (cd man; make info) -echo "Recompiling Lisp files" + echo "Recompiling Lisp files" -src/emacs -batch -f batch-byte-recompile-directory lisp + $EMACS -batch -f batch-byte-recompile-directory lisp -echo "Updating autoloads" + echo "Updating finder, custom and autoload data" -src/emacs -batch -f batch-update-autoloads lisp + (cd lisp; make updates) +fi echo "Making lisp/MANIFEST" @@ -198,14 +224,14 @@ echo "Updating version number in README" echo "Creating subdirectories" -for subdir in lisp lisp/term site-lisp \ +for subdir in lisp site-lisp \ src src/m src/s src/bitmaps lib-src oldXMenu lwlib \ nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet \ etc etc/e lock cpp info man msdos vms; do mkdir ${tempdir}/${subdir} done -echo "Making links to \`lisp'" +echo "Making links to \`lisp' and its subdirectories" ### Don't distribute TAGS, =*.el files, site-init.el, site-load.el, or default.el. (cd lisp ln [a-zA-Z]*.el ../${tempdir}/lisp @@ -214,47 +240,67 @@ echo "Making links to \`lisp'" ## simula.el doesn't keep abbreviations in simula.defns any more. ## ln [a-zA-Z]*.defns ../${tempdir}/lisp ln ChangeLog Makefile makefile.nt ChangeLog.? README ../${tempdir}/lisp - cd ../${tempdir}/lisp - rm -f TAGS =* - rm -f subdirs.el - rm -f site-init site-init.el site-init.elc - rm -f site-load site-load.el site-load.elc - rm -f site-start site-start.el site-start.elc - rm -f default default.el default.elc) - -#echo "Making links to \`lisp/calc-2.02'" -#### Don't distribute =*.el files, TAGS or backups. -#(cd lisp/calc-2.02 -# ln [a-zA-Z]*.el ../../${tempdir}/lisp/calc-2.02 -# ln [a-zA-Z]*.elc ../../${tempdir}/lisp/calc-2.02 -# ln calc.info* calc.texinfo calc-refcard.* ../../${tempdir}/lisp/calc-2.02 -# ln INSTALL Makefile README README.prev ../../${tempdir}/lisp/calc-2.02 -# cd ../../${tempdir}/lisp/calc-2.02 -# rm -f *~ TAGS) - -echo "Making links to \`lisp/term'" -### Don't distribute =*.el files or TAGS. -(cd lisp/term - ln [a-zA-Z]*.el ../../${tempdir}/lisp/term - ln [a-zA-Z]*.elc ../../${tempdir}/lisp/term - ln README ../../${tempdir}/lisp/term - rm -f =* TAGS) + (cd ../${tempdir}/lisp + rm -f TAGS =* + rm -f site-init site-init.el site-init.elc + rm -f site-load site-load.el site-load.elc + rm -f site-start site-start.el site-start.elc + rm -f default default.el default.elc + ) + + ## Find all subdirs of lisp dir + for file in `find . -type d -print`; do + case $file in + . | .. | */Old | */RCS) + ;; + *) + if [ -d $file ]; then + subdirs="$file $subdirs" + fi + ;; + esac + done + + for file in $subdirs; do + echo " lisp/$file" + mkdir ../${tempdir}/lisp/$file + ln $file/[a-zA-Z]*.el ../${tempdir}/lisp/$file + ln $file/[a-zA-Z]*.elc ../${tempdir}/lisp/$file + if [ -f $file/README ]; then + ln $file/README ../${tempdir}/lisp/$file + fi + rm -f $file/=* $file/TAGS + done ) echo "Making links to \`src'" ### Don't distribute =*.[ch] files, or the configured versions of ### config.in, paths.in, or Makefile.in, or TAGS. (cd src - echo " (If we can't link gmalloc.c, that's okay.)" + echo " (It is ok if ln fails in some cases.)" ln [a-zA-Z]*.c ../${tempdir}/src - ## Might be a symlink to a file on another filesystem. - test -f ../${tempdir}/src/gmalloc.c || cp gmalloc.c ../${tempdir}/src ln [a-zA-Z]*.h ../${tempdir}/src ln [a-zA-Z]*.s ../${tempdir}/src - ln README Makefile.in ChangeLog ChangeLog.? config.in paths.in \ - ../${tempdir}/src - ln makefile.nt ../${tempdir}/src + ln [a-zA-Z]*.in ../${tempdir}/src + ln [a-zA-Z]*.opt ../${tempdir}/src + ## If we ended up with a symlink, or if we did not get anything + ## due to a cross-device symlink, copy the file. + for file in [a-zA-Z]*.[hcs] [a-zA-Z]*.in [a-zA-Z]*.opt; do + if test -f ../${tempdir}/src/$file; then + # test -f appears to succeed for a symlink + if test -L ../${tempdir}/src/$file; then + rm ../${tempdir}/src/$file + cp $file ../${tempdir}/src + chmod a-w ../${tempdir}/src/$file + fi + else + rm ../${tempdir}/src/$file + cp $file ../${tempdir}/src + chmod a-w ../${tempdir}/src/$file + fi + done + ln README ChangeLog ChangeLog.*[0-9] ../${tempdir}/src + ln makefile.nt vms-pp.trans ../${tempdir}/src ln .gdbinit .dbxinit ../${tempdir}/src - ln *.opt vms-pp.trans ../${tempdir}/src cd ../${tempdir}/src rm -f config.h paths.h Makefile Makefile.c rm -f =* TAGS) @@ -277,8 +323,24 @@ echo "Making links to \`lib-src'" ln [a-zA-Z]*.[chy] ../${tempdir}/lib-src ln ChangeLog Makefile.in README testfile vcdiff ../${tempdir}/lib-src ln emacs.csh rcs2log rcs-checkin makefile.nt ../${tempdir}/lib-src + ## If we ended up with a symlink, or if we did not get anything + ## due to a cross-device symlink, copy the file. + for file in [a-zA-Z]*.[chy]; do + if test -f ../${tempdir}/lib-src/$file; then + # test -f appears to succeed for a symlink + if test -L ../${tempdir}/lib-src/$file; then + rm ../${tempdir}/lib-src/$file + cp $file ../${tempdir}/lib-src + chmod a-w ../${tempdir}/lib-src/$file + fi + else + rm ../${tempdir}/lib-src/$file + cp $file ../${tempdir}/lib-src + chmod a-w ../${tempdir}/lib-src/$file + fi + done cd ../${tempdir}/lib-src - rm -f getdate.tab.c y.tab.c y.tab.h Makefile.c + rm -f Makefile.c rm -f =* TAGS) echo "Making links to \`nt'" @@ -306,7 +368,7 @@ echo "Making links to \`nt/inc/netinet'" echo "Making links to \`msdos'" (cd msdos ln ChangeLog emacs.ico emacs.pif ../${tempdir}/msdos - ln mainmake mainmake.v2 sed*.inp ../${tempdir}/msdos + ln is_exec.c sigaction.c mainmake mainmake.v2 sed*.inp ../${tempdir}/msdos cd ../${tempdir}/msdos rm -f =*)