#!/bin/sh
### make-dist: create an Emacs distribution tar file from current srcdir
-## Copyright (C) 1995, 1997-1998, 2000-2012 Free Software Foundation, Inc.
+## Copyright (C) 1995, 1997-1998, 2000-2013 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
LANG=
export LANGUAGE LC_ALL LC_MESSAGES LANG
-## Don't restrict access to any files.
-umask 0
+## Remove unnecessary restrictions on file access.
+umask 022
update=yes
check=yes
make_tar=no
default_gzip=gzip
newer=""
+with_tests=no
while [ $# -gt 0 ]; do
case "$1" in
"--bzip2")
default_gzip="bzip2"
;;
- ## Same with lzma.
- "--lzma")
- default_gzip="lzma"
+ ## Same with xz.
+ "--xz")
+ default_gzip="xz"
+ ;;
+ "--no-compress")
+ default_gzip="cat"
;;
"--snapshot")
check=no
;;
+ ## Include the test/ directory.
+ ## This option is mainly for the hydra build server.
+ "--tests")
+ with_tests=yes
+ ;;
+
"--help")
echo "Usage: ${progname} [options]"
echo ""
echo " --bzip2 use bzip2 instead of gzip"
echo " --clean-up delete staging directories when done"
- echo " --lzma use lzma instead of gzip"
+ echo " --xz use xz instead of gzip"
+ echo " --no-compress don't compress"
echo " --newer=TIME don't include files older than TIME"
echo " --no-check don't check for bad file names etc."
echo " --no-update don't recompile or do analogous things"
echo " --snapshot same as --clean-up --no-update --tar --no-check"
echo " --tar make a tar file"
+ echo " --tests include the test/ directory"
echo ""
exit 0
;;
### Find out which version of Emacs this is.
version=`
- sed -n 's/^AC_INIT(emacs,[ ]*\([^ )]*\).*/\1/p' <configure.in
+ sed -n 's/^AC_INIT(emacs,[ ]*\([^ )]*\).*/\1/p' <configure.ac
` || version=
if [ ! "${version}" ]; then
echo "${progname}: can't find current Emacs version in \`./src/emacs.c'" >&2
if [ $update = yes ]; then
- ## Make sure configure is newer than configure.in.
- if [ "x`ls -t configure configure.in | sed q`" != "xconfigure" ]; then
- echo "\`./configure.in' is newer than \`./configure'" >&2
- echo "Running autoconf" >&2
- autoconf || { x=$?; echo Autoconf FAILED! >&2; exit $x; }
- fi
+ ## Make sure configure is newer than configure.ac, etc.
+ ## It is better to let autoreconf do what is needed than
+ ## for us to try and duplicate all its checks.
+ echo "Running autoreconf"
+ autoreconf -i -I m4 || { x=$?; echo Autoreconf FAILED! >&2; exit $x; }
- ## Make sure src/stamp-h.in is newer than configure.in.
- if [ "x`ls -t src/stamp-h.in configure.in | sed q`" != "xsrc/stamp-h.in" ]; then
- echo "\`./configure.in' is newer than \`./src/stamp-h.in'" >&2
- echo "Running autoheader" >&2
- autoheader || { x=$?; echo Autoheader FAILED! >&2; exit $x; }
- rm -f src/stamp-h.in
- echo timestamp > src/stamp-h.in
- fi
+ ## Make sure src/stamp-h.in is newer than configure.ac.
+ rm -f src/stamp-h.in
+ echo timestamp > src/stamp-h.in
echo "Updating Info files"
- (cd doc/emacs; make info)
- (cd doc/misc; make info)
- (cd doc/lispref; make info)
- (cd doc/lispintro; make info)
+ make info-real
echo "Updating finder, custom and autoload data"
- (cd lisp; make updates EMACS="$EMACS")
+ (cd lisp && make updates EMACS="$EMACS")
- if test -f leim/leim-list.el; then
- echo "Updating leim-list.el"
- (cd leim; make leim-list.el EMACS="$EMACS")
- fi
+ echo "Updating leim-list.el"
+ (cd leim && make leim-list.el EMACS="$EMACS")
echo "Recompiling Lisp files"
$EMACS -batch -f batch-byte-recompile-directory lisp leim
### README while the rest of the tar file is still unpacking. Whoopee.
echo "Making links to top-level files"
ln INSTALL README BUGS ${tempdir}
-ln ChangeLog Makefile.in configure configure.in ${tempdir}
+ln ChangeLog Makefile.in autogen.sh configure configure.ac ${tempdir}
ln config.bat make-dist .dir-locals.el ${tempdir}
ln aclocal.m4 ${tempdir}
leim leim/CXTERM-DIC leim/MISC-DIC \
leim/SKK-DIC leim/ja-dic leim/quail \
build-aux build-aux/snippet \
- src src/s src/bitmaps lib lib-src oldXMenu lwlib \
+ src src/bitmaps lib lib-src oldXMenu lwlib \
nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \
- `find etc lisp admin -type d` \
+ `find etc lisp admin test -type d` \
doc doc/emacs doc/misc doc/man doc/lispref doc/lispintro \
info m4 msdos \
- nextstep nextstep/Cocoa nextstep/Cocoa/Emacs.base \
+ nextstep nextstep/templates \
+ nextstep/Cocoa nextstep/Cocoa/Emacs.base \
nextstep/Cocoa/Emacs.base/Contents \
nextstep/Cocoa/Emacs.base/Contents/Resources \
- nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj \
nextstep/GNUstep \
nextstep/GNUstep/Emacs.base \
nextstep/GNUstep/Emacs.base/Resources
do
+
+ if [ "$with_tests" != "yes" ]; then
+ case $subdir in
+ test*) continue ;;
+ esac
+ fi
+
## site-lisp for in-place installs (?).
[ "$subdir" = "site-lisp" ] || [ -d "$subdir" ] || \
echo "WARNING: $subdir not found, making anyway"
echo "Making links to \`lisp' and its subdirectories"
files=`find lisp \( -name '*.el' -o -name '*.elc' -o -name 'ChangeLog*' \
- -o -name 'README*' \)`
+ -o -name 'README' \)`
### Don't distribute site-init.el, site-load.el, or default.el.
for file in lisp/Makefile.in lisp/makefile.w32-in $files; do
(cd src/bitmaps
ln README *.xbm ../../${tempdir}/src/bitmaps)
-echo "Making links to \`src/s'"
-(cd src/s
- ln README [a-zA-Z0-9]*.h ../../${tempdir}/src/s)
-
echo "Making links to \`lib'"
(snippet_h=`(cd build-aux/snippet && ls *.h)`
cd lib
echo "Making links to \`lib-src'"
(cd lib-src
ln [a-zA-Z]*.[ch] ../${tempdir}/lib-src
- ln ChangeLog Makefile.in README testfile vcdiff ../${tempdir}/lib-src
- ln grep-changelog rcs2log rcs-checkin ../${tempdir}/lib-src
+ ln ChangeLog Makefile.in README testfile ../${tempdir}/lib-src
+ ln grep-changelog rcs2log ../${tempdir}/lib-src
ln makefile.w32-in ../${tempdir}/lib-src)
echo "Making links to \`m4'"
echo "Making links to \`nt'"
(cd nt
- ln emacs.manifest emacs.rc emacsclient.rc config.nt ../${tempdir}/nt
- ln emacs-src.tags nmake.defs gmake.defs subdirs.el ../${tempdir}/nt
- ln [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
+ ln emacs-x86.manifest emacs-x64.manifest emacs.rc ../${tempdir}/nt
+ ln config.nt emacsclient.rc emacs-src.tags ../${tempdir}/nt
+ ln nmake.defs gmake.defs subdirs.el [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
+ ln Makefile.in gnulib.mk ../${tempdir}/nt
+ ln msysconfig.sh mingw-cfg.site epaths.nt INSTALL.OLD ../${tempdir}/nt
ln ChangeLog INSTALL README README.W32 makefile.w32-in ../${tempdir}/nt)
echo "Making links to \`nt/inc' and its subdirectories"
echo "Making links to \`nextstep'"
(cd nextstep
- ln ChangeLog README INSTALL ../${tempdir}/nextstep)
+ ln ChangeLog README INSTALL Makefile.in ../${tempdir}/nextstep)
+
+echo "Making links to \`nextstep/templates'"
+(cd nextstep/templates
+ ln Emacs.desktop.in Info-gnustep.plist.in Info.plist.in InfoPlist.strings.in ../../${tempdir}/nextstep/templates)
echo "Making links to \`nextstep/Cocoa/Emacs.base/Contents'"
(cd nextstep/Cocoa/Emacs.base/Contents
- ln Info.plist PkgInfo ../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents)
+ ln PkgInfo ../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents)
echo "Making links to \`nextstep/Cocoa/Emacs.base/Contents/Resources'"
(cd nextstep/Cocoa/Emacs.base/Contents/Resources
ln Credits.html *.icns ../../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents/Resources)
-echo "Making links to \`nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj'"
-(cd nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj
- ln InfoPlist.strings ../../../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj)
-
echo "Making links to \`nextstep/GNUstep/Emacs.base/Resources'"
(cd nextstep/GNUstep/Emacs.base/Resources
- ln Emacs.desktop Info-gnustep.plist README emacs.tiff ../../../../${tempdir}/nextstep/GNUstep/Emacs.base/Resources )
+ ln README emacs.tiff ../../../../${tempdir}/nextstep/GNUstep/Emacs.base/Resources )
echo "Making links to \`oldXMenu'"
(cd oldXMenu
echo "Making links to \`admin' and its subdirectories"
for f in `find admin -type f`; do
+ case $f in
+ admin/unidata/Makefile) continue ;;
+ esac
ln $f $tempdir/$f
done
+if [ "$with_tests" = "yes" ]; then
+ echo "Making links to \`test' and its subdirectories"
+ for f in `find test -type f`; do
+ case $f in
+ test/automated/flymake/warnpred/a.out) continue ;;
+ test/automated/Makefile) continue ;;
+ esac
+ ln $f $tempdir/$f
+ done
+fi
+
echo "Making links to \`etc' and its subdirectories"
for f in `find etc -type f`; do
case $f in
etc/DOC*|etc/*.pyc) continue ;;
+ ## Arguably we should not exclude *.ps.
+ etc/refcards/*.aux|etc/refcards/*.dvi|etc/refcards/*.log|etc/refcards/*.ps)
+ continue ;;
esac
ln $f $tempdir/$f
done
fi
case "${default_gzip}" in
bzip2) gzip_extension=.bz2 ;;
- lzma) gzip_extension=.lzma ;;
+ xz) gzip_extension=.xz ;;
gzip) gzip_extension=.gz ; default_gzip="gzip --best";;
*) gzip_extension= ;;
esac