X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/1fb87c7784670dafa3dfb6b2326a5cb8b3f94137..87c033db6f7dc9660584b2cef97d540a81e32e00:/make-dist diff --git a/make-dist b/make-dist index ee45409cc1..37e1ac7702 100755 --- a/make-dist +++ b/make-dist @@ -33,6 +33,7 @@ progname="$0" ### Print out each line we read, for debugging's sake. ### set -v +update=yes clean_up=no make_tar=no newer="" @@ -48,6 +49,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. @@ -77,6 +82,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/'` @@ -89,11 +109,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}. @@ -141,21 +164,24 @@ if [ "x`ls -t configure configure.in | head -1`" != "xconfigure" ]; then autoconf || { x=$?; echo Autoconf FAILED! >&2; exit $x; } fi -echo "Updating Info files" +if [ $update = yes ]; +then + echo "Updating Info files" -(cd man; make info) + (cd man; make info) -echo "Updating finder-inf.el" + echo "Updating finder-inf.el" -(cd lisp; ../src/emacs -batch -l finder -f finder-compile-keywords-make-dist) + (cd lisp; $EMACS -batch -l finder -f finder-compile-keywords-make-dist) -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 autoloads" -src/emacs -batch -f batch-update-autoloads lisp + $EMACS -batch -f batch-update-autoloads lisp +fi echo "Making lisp/MANIFEST" @@ -199,7 +225,7 @@ echo "Updating version number in README" echo "Creating subdirectories" -for subdir in lisp lisp/term site-lisp \ +for subdir in lisp lisp/term lisp/language 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 @@ -241,21 +267,42 @@ echo "Making links to \`lisp/term'" ln README ../../${tempdir}/lisp/term rm -f =* TAGS) +echo "Making links to \`lisp/term'" +### Don't distribute =*.el files or TAGS. +(cd lisp/language + ln [a-zA-Z]*.el ../../${tempdir}/lisp/language + ln [a-zA-Z]*.elc ../../${tempdir}/lisp/language + rm -f =* TAGS) + 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) @@ -278,8 +325,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'" @@ -307,7 +370,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 =*)