Merge from emacs-24; up to 2013-01-03T02:37:57Z!rgm@gnu.org
[bpt/emacs.git] / make-dist
index 7a17fa0..707b6e2 100755 (executable)
--- a/make-dist
+++ b/make-dist
@@ -1,7 +1,7 @@
 #!/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.
 
@@ -41,8 +41,8 @@ LC_MESSAGES=
 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
@@ -50,6 +50,7 @@ clean_up=no
 make_tar=no
 default_gzip=gzip
 newer=""
+with_tests=no
 
 while [ $# -gt 0 ]; do
   case "$1" in
@@ -82,9 +83,12 @@ while [ $# -gt 0 ]; do
     "--bzip2")
       default_gzip="bzip2"
     ;;
-    ## Same with lzma.
-    "--lzma")
-      default_gzip="lzma"
+    ## Same with xz.
+    "--xz")
+      default_gzip="xz"
+    ;;
+    "--no-compress")
+      default_gzip="cat"
     ;;
 
     "--snapshot")
@@ -94,17 +98,25 @@ while [ $# -gt 0 ]; do
       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
     ;;
@@ -284,7 +296,7 @@ for subdir in site-lisp \
              build-aux build-aux/snippet \
              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/templates \
@@ -295,6 +307,13 @@ for subdir in site-lisp \
              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"
@@ -304,7 +323,7 @@ done
 
 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
@@ -334,7 +353,7 @@ echo "Making links to \`leim' and its subdirectories"
 
 echo "Making links to \`build-aux'"
 (cd build-aux
- ln compile config.guess config.sub depcomp ../${tempdir}/build-aux
+ ln compile config.guess config.sub depcomp msys-to-w32 ../${tempdir}/build-aux
  ln install-sh missing move-if-change update-subdirs ../${tempdir}/build-aux)
 
 echo "Making links to \`build-aux/snippet'"
@@ -381,9 +400,11 @@ 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 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"
@@ -432,15 +453,34 @@ echo "Making links to \`lwlib'"
  ln *.[ch] *.in ../${tempdir}/lwlib
  ln README ChangeLog ../${tempdir}/lwlib)
 
+## It is important to distribute admin/ because it contains sources
+## for generated lisp/international/uni-*.el files.
 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
@@ -508,7 +548,7 @@ if [ "${make_tar}" = yes ]; then
   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