Mercurial > emacs
diff make-dist @ 616:3c1ffcac443f
Initial revision
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Sun, 19 Apr 1992 08:53:10 +0000 |
parents | |
children | eca8812e61cd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make-dist Sun Apr 19 08:53:10 1992 +0000 @@ -0,0 +1,183 @@ +#!/bin/sh +# +# make-dist: create an Emacs distribution tar file from the current +# source tree. This basically creates a duplicate directory +# structure, and then hard links into it only those files that should +# be distributed. This means that if you add a file with an odd name, +# you should make sure that this script will include it. + +progname="$0" + +# Exit if a command fails. +set -e + +# Print out each line we read, for debugging's sake. +# set -v + +cleanup=yes + +while [ $# -gt 0 ]; do + case "$1" in + "--no-cleanup" ) + cleanup=no + ;; + * ) + echo "${progname}: Unrecognized argument: $1" >&2 + exit 1 + ;; + esac + shift +done + +# Make sure we're running in the right place. +if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/version.el ]; then + echo "${progname}: must run in the top directory of the Emacs" >&2 + echo "distribution tree. Cd to that directory and try again." >&2 + exit 1 +fi + +# Find out which version of Emacs this is. +version=`grep 'defconst[ ]*emacs-version' lisp/version.el \ + | sed -e 's/^.*"\([0-9]+\.[0-9]+\)\..*$/\1/'` +if [ ! "${version}" ]; then + echo "${progname}: can't find current emacs version in ./lisp/version.el." >&2 + exit 1 +fi + +# Make sure the subdirectory is available. +tempparent="make-dist.$$" +if [ -d ${tempparent} ]; then + echo "${progname}: staging directory ${tempparent} already exists. +Perhaps a previous invocation of ${progname} failed to clean up +after itself. Check that directories whose names are of the form +make-dist.NNNNN don't contain any important information, remove them, +and try again." >&2 + exit 1 +fi + +echo "Creating staging directory: ${tempparent}" +mkdir ${tempparent} +emacsname="emacs-${version}" +tempdir="${tempparent}/${emacsname}" + +echo "Creating top directory: ${tempdir}" +mkdir ${tempdir} + +# We copy in the top-level files before creating the subdirectories in +# hopes that this will make the top-level files appear first in the +# tar file. +echo "Copying top-level files." +ln INSTALL PROBLEMS README ${tempdir} +ln ChangeLog Makefile.in build-install.in configure make-dist ${tempdir} + +echo "Creating subdirectories." +for subdir in lisp lisp/term src src/m src/s lib-src oldXMenu \ + etc lock local-lisp arch-lib cpp info man shortnames; do + mkdir ${tempdir}/${subdir} +done + +echo "Copying lisp." +# Don't distribute =*.el files, site-init.el, or site-load.el. +(cd lisp + ln [a-zA-Z]*.el ../${tempdir}/lisp + ln [a-zA-Z]*.elc ../${tempdir}/lisp + ln [a-zA-Z]*.defns ../${tempdir}/lisp + ln ChangeLog README ../${tempdir}/lisp + cd ../${tempdir}/lisp + rm -f site-init site-init.el site-init.elc + rm -f site-load site-load.el site-load.elc) + +echo "Copying lisp/term." +# Don't distribute =*.el files. +(cd lisp/term + ln [a-zA-Z]*.el ../../${tempdir}/lisp/term + ln [a-zA-Z]*.elc ../../${tempdir}/lisp/term + ln README ../../${tempdir}/lisp/term) + +echo "Copying src." +# Don't distribute =*.[ch] files, or the configured versions of +# config.h.in, paths.h.in, or Makefile.in. +(cd src + ln [a-zA-Z]*.c ../${tempdir}/src + ln [a-zA-Z]*.h ../${tempdir}/src + ln [a-zA-Z]*.s ../${tempdir}/src + ln README Makefile.in ymakefile ChangeLog config.h.in paths.h.in \ + ../${tempdir}/src + ln .gdbinit .dbxinit ../${tempdir}/src + ln *.com *.opt vms-pp.trans vmsbuild ../${tempdir}/src + cd ../${tempdir}/src + etags *.h *.c ../lisp/*.el) + +echo "Copying src/m." +(cd src/m + ln README *.h ../../${tempdir}/src/m) + +echo "Copying src/s." +(cd src/s + ln README *.h ../../${tempdir}/src/s) + +echo "Copying lib-src." +(cd lib-src + ln [a-zA-Z]*.c [a-zA-Z]*.h [a-zA-Z]*.y [a-zA-Z]*.lex ../${tempdir}/lib-src + ln ChangeLog Makefile.in README testfile ../${tempdir}/lib-src) + +echo "Copying oldXMenu." +(cd oldXMenu + ln *.c *.h ../${tempdir}/oldXMenu + ln README Makefile Imakefile ChangeLog ../${tempdir}/oldXMenu) + +echo "Copying etc." +# Don't distribute DOC files, backups, autosaves, or tex litter. +(cd etc + ln [0-9a-zA-Z]* ../${tempdir}/etc + cd ../${tempdir}/etc + # Avoid an error when expanding the wildcards later. + for dummy in DOC-dummy dummy~ \#dummy\# dummy.dvi dummy.log; do + ln MACHINES ${dummy} + done + rm -f DOC* *~ \#*\# *.dvi *.log core) + +# For now, we comment these out, since I'm not changing them any. +#!! echo "Copying cpp." +#!! (cd cpp +#!! ln cccp.c cexp.y Makefile README ../${tempdir}/cpp) +#!! +#!! echo "Copying info." +#!! # Don't distribute backups or autosaves. +#!! (cd info +#!! ln [a-zA-Z]* ../${tempdir}/info +#!! cd ../${tempdir}/info +#!! # Avoid an error when expanding the wildcards later. +#!! ln emacs dummy~ ; ln emacs \#dummy\# +#!! rm -f *~ \#*\# core) +#!! +#!! echo "Copying man." +#!! (cd man +#!! ln *.tex *.texinfo *.texi *.aux *.cps *.fns *.kys *.vrs ../${tempdir}/man +#!! ln *.c ../${tempdir}/man +#!! ln ChangeLog Makefile README split-man ../${tempdir}/man) + +echo "Copying shortnames." +(cd shortnames + ln *.c ../${tempdir}/shortnames + ln Makefile reserved special ../${tempdir}/shortnames) + +echo "Making sure copying notices are symlinks." +if [ -f ${tempdir}/etc/COPYING ]; then + rm ${tempdir}/etc/COPYING + ln etc/COPYING ${tempdir}/etc/COPYING +fi +for subdir in lisp src lib-src info shortnames; do + if [ -f ${tempdir}/${subdir}/COPYING ]; then + rm ${tempdir}/${subdir}/COPYING + fi + ln -s ../etc/COPYING ${tempdir}/${subdir} +done + +echo "Creating tar file." +(cd ${tempparent}; tar cvf - ${emacsname}) | compress > ${emacsname}.tar.Z + +if [ "${cleanup}" = yes ]; then + echo "Cleaning up the staging directory." + rm -rf ${tempparent} +fi