1#!/bin/sh 2 3#### make-dist: create an Emacs distribution tar file from the current 4#### source tree. This basically creates a duplicate directory 5#### structure, and then hard links into it only those files that should 6#### be distributed. This means that if you add a file with an odd name, 7#### you should make sure that this script will include it. 8 9# Copyright (C) 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 10# 2006, 2007 Free Software Foundation, Inc. 11# 12# This file is part of GNU Emacs. 13# 14# GNU Emacs is free software; you can redistribute it and/or modify 15# it under the terms of the GNU General Public License as published by 16# the Free Software Foundation; either version 2, or (at your option) 17# any later version. 18# 19# GNU Emacs is distributed in the hope that it will be useful, 20# but WITHOUT ANY WARRANTY; without even the implied warranty of 21# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22# GNU General Public License for more details. 23# 24# You should have received a copy of the GNU General Public License 25# along with GNU Emacs; see the file COPYING. If not, write to the 26# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 27# Boston, MA 02110-1301, USA. 28 29progname="$0" 30 31### Exit if a command fails. 32#set -e 33 34### Print out each line we read, for debugging's sake. 35#set -v 36 37LANGUAGE=C 38LC_ALL=C 39LC_MESSAGES= 40LANG= 41export LANGUAGE LC_ALL LC_MESSAGES LANG 42 43## Don't restrict access to any files. 44umask 0 45 46update=yes 47check=yes 48clean_up=no 49make_tar=no 50newer="" 51 52while [ $# -gt 0 ]; do 53 case "$1" in 54 ## This option tells make-dist to delete the staging directory 55 ## when done. It is useless to use this unless you make a tar file. 56 "--clean-up" ) 57 clean_up=yes 58 ;; 59 ## This option tells make-dist to make a tar file. 60 "--tar" ) 61 make_tar=yes 62 ;; 63 ## This option tells make-dist not to recompile or do analogous things. 64 "--no-update" ) 65 update=no 66 ;; 67 ## This option says don't check for bad file names, etc. 68 "--no-check" ) 69 check=no 70 ;; 71 ## This option tells make-dist to make the distribution normally, then 72 ## remove all files older than the given timestamp file. This is useful 73 ## for creating incremental or patch distributions. 74 "--newer") 75 newer="$2" 76 new_extension=".new" 77 shift 78 ;; 79 ## This option tells make-dist to use `compress' instead of gzip. 80 ## Normally, make-dist uses gzip whenever it is present. 81 "--compress") 82 default_gzip="compress" 83 ;; 84 85 "--snapshot") 86 clean_up=yes 87 make_tar=yes 88 update=no 89 check=no 90 ;; 91 92 "--help") 93 echo "Usage: ${progname} [options]" 94 echo "" 95 echo " --clean-up delete staging directories when done" 96 echo " --compress use compress instead of gzip" 97 echo " --newer=TIME don't include files older than TIME" 98 echo " --no-check don't check for bad file names etc." 99 echo " --no-update don't recompile or do analogous things" 100 echo " --snapshot same as --clean-up --no-update --tar --no-check" 101 echo " --tar make a tar file" 102 echo "" 103 exit 0 104 ;; 105 106 * ) 107 echo "${progname}: Unrecognized argument: $1" >&2 108 exit 1 109 ;; 110 esac 111 shift 112done 113 114### Make sure we're running in the right place. 115if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/version.el ]; then 116 echo "${progname}: Can't find \`src/lisp.h' and \`lisp/version.el'." >&2 117 echo "${progname} must be run in the top directory of the Emacs" >&2 118 echo "distribution tree. cd to that directory and try again." >&2 119 exit 1 120fi 121 122### Find where to run Emacs. 123### (Accept only absolute file names.) 124if [ $update = yes ]; 125then 126 unset EMACS_UNIBYTE 127 if [ -f src/emacs ]; 128 then 129 EMACS=`pwd`/src/emacs 130 else 131 case $EMACS in 132 /*) ;; 133 *) 134 if [ ! -f "$EMACS" ]; then 135 echo "$0: You must specify the EMACS environment variable " \ 136 "to an absolute file name." 2>&1 137 exit 1 138 fi;; 139 esac 140 fi 141fi 142 143### Find out which version of Emacs this is. 144shortversion=`grep 'defconst[ ]*emacs-version' lisp/version.el \ 145 | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'` 146version=`grep 'defconst[ ]*emacs-version' lisp/version.el \ 147 | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'` 148if [ ! "${version}" ]; then 149 echo "${progname}: can't find current Emacs version in \`./lisp/version.el'" >&2 150 exit 1 151fi 152 153echo Version numbers are $version and $shortversion 154 155if [ $update = yes ]; 156then 157 if grep -s "@set EMACSVER *${shortversion}" ./man/emacs.texi > /dev/null; then 158 true 159 else 160 echo "You must update the version number in \`./man/emacs.texi'" 161 sleep 5 162 fi 163fi 164 165### Make sure we don't already have a directory emacs-${version}. 166 167emacsname="emacs-${version}${new_extension}" 168 169if [ -d ${emacsname} ] 170then 171 echo Directory "${emacsname}" already exists >&2 172 exit 1 173fi 174 175### Make sure the subdirectory is available. 176tempparent="make-dist.tmp.$$" 177if [ -d ${tempparent} ]; then 178 echo "${progname}: staging directory \`${tempparent}' already exists. 179Perhaps a previous invocation of \`${progname}' failed to clean up after 180itself. Check that directories whose names are of the form 181\`make-dist.tmp.NNNNN' don't contain any important information, remove 182them, and try again." >&2 183 exit 1 184fi 185 186### Find where to run Emacs. 187if [ $check = yes ]; 188then 189 ### Check for .elc files with no corresponding .el file. 190 ls -1 lisp/[a-zA-Z]*.el lisp/[a-z]*/[a-zA-Z0-9]*.el \ 191 leim/[a-z]*/[a-z]*.el | sed 's/\.el$/.elc/' > /tmp/el 192 ls -1 lisp/[a-zA-Z]*.elc lisp/[a-z]*/[a-zA-Z0-9]*.elc \ 193 leim/[a-z]*/[a-z]*.elc > /tmp/elc 194 bogosities="`comm -13 /tmp/el /tmp/elc`" 195 if [ "${bogosities}" != "" ]; then 196 echo "The following .elc files have no corresponding .el files:" 197 echo "${bogosities}" 198 fi 199 rm -f /tmp/el /tmp/elc 200 201 ### Check for .el files with no corresponding .elc file. 202 ls -1 lisp/[a-zA-Z]*.el lisp/[a-z]*/[a-zA-Z0-9]*.el \ 203 leim/[a-z]*/[a-z]*.el > /tmp/el 204 ls -1 lisp/[a-zA-Z]*.elc lisp/[a-z]*/[a-zA-Z0-9]*.elc \ 205 leim/[a-z]*/[a-z]*.elc | sed 's/\.elc$/.el/' > /tmp/elc 206 losers="`comm -23 /tmp/el /tmp/elc`" 207 bogosities= 208 for file in $losers; do 209 if ! grep -q "no-byte-compile: t" $file; then 210 case $file in 211 site-init.el | site-load.el | site-start.el | default.el) 212 ;; 213 *) 214 bogosities="$file $bogosities" 215 ;; 216 esac 217 fi 218 done 219 if [ x"${bogosities}" != x"" ]; then 220 echo "The following .el files have no corresponding .elc files:" 221 echo "${bogosities}" 222 fi 223 rm -f /tmp/el /tmp/elc 224fi 225 226### Make sure configure is newer than configure.in. 227if [ "x`ls -t configure configure.in | sed q`" != "xconfigure" ]; then 228 echo "\`./configure.in' is newer than \`./configure'" >&2 229 echo "Running autoconf" >&2 230 autoconf || { x=$?; echo Autoconf FAILED! >&2; exit $x; } 231fi 232 233### Make sure src/config-in.stamp is newer than configure.in. 234if [ "x`ls -t src/stamp-h.in configure.in | sed q`" != "xsrc/stamp-h.in" ]; then 235 echo "\`./configure.in' is newer than \`./src/stamp-h.in'" >&2 236 echo "Running autoheader" >&2 237 autoheader || { x=$?; echo Autoheader FAILED! >&2; exit $x; } 238 rm -f src/stamp-h.in 239 echo timestamp > src/stamp-h.in 240fi 241 242if [ $update = yes ]; 243then 244 echo "Updating Info files" 245 (cd man; make -f Makefile.in srcdir=. info) 246 (cd lispref; make -f Makefile.in srcdir=. info) 247 (cd lispintro; make -f Makefile.in SHELL=/bin/sh srcdir=. info VPATH=.) 248 249 echo "Updating finder, custom and autoload data" 250 (cd lisp; make updates EMACS="$EMACS") 251 252 if test -f leim/leim-list.el; then 253 echo "Updating leim-list.el" 254 (cd leim; make leim-list.el EMACS="$EMACS") 255 fi 256 257 echo "Recompiling Lisp files" 258 $EMACS -batch -f batch-byte-recompile-directory lisp leim 259fi 260 261echo "Making lisp/MANIFEST" 262 263(cd lisp; 264 files=`echo [!=]*.el | sed -e 's/ subdirs.el / /' -e 's/ default.el / /'` 265 for dir in [!=]*; do 266 if [ -d $dir ] && [ $dir != term ] && [ $dir != CVS ] && [ $dir != RCS ] 267 then 268 echo $dir 269 thisdir=`echo $dir/[!=]*.el | sed -e 's/ subdirs.el / /'` 270 files="$files $thisdir" 271 fi 272 done 273 for file in $files 274 do sed -n 's/^;;; //p; q' $file 275 done | sort > MANIFEST) 276 277echo "Creating staging directory: \`${tempparent}'" 278 279mkdir ${tempparent} 280tempdir="${tempparent}/${emacsname}" 281 282### This trap ensures that the staging directory will be cleaned up even 283### when the script is interrupted in mid-career. 284if [ "${clean_up}" = yes ]; then 285 trap "echo 'Interrupted...cleaning up the staging directory'; rm -rf ${tempparent}; exit 1" 1 2 15 286fi 287 288echo "Creating top directory: \`${tempdir}'" 289mkdir ${tempdir} 290 291### We copy in the top-level files before creating the subdirectories in 292### hopes that this will make the top-level files appear first in the 293### tar file; this means that people can start reading the INSTALL and 294### README while the rest of the tar file is still unpacking. Whoopee. 295echo "Making links to top-level files" 296ln AUTHORS FTP INSTALL README BUGS CONTRIBUTE move-if-change ${tempdir} 297ln ChangeLog Makefile.in configure configure.in ${tempdir} 298ln config.bat make-dist update-subdirs vpath.sed ${tempdir} 299### Copy these files; they're cross-filesystem symlinks. 300cp mkinstalldirs ${tempdir} 301cp config.sub ${tempdir} 302cp config.guess ${tempdir} 303cp install-sh ${tempdir} 304 305echo "Updating version number in README" 306(cd ${tempdir} 307 awk \ 308 '$1 " " $2 " " $3 " " $4 " " $5 == "This directory tree holds version" { $6 = version; print $0 } 309 $1 " " $2 " " $3 " " $4 " " $5 != "This directory tree holds version"' \ 310 version=${version} README > tmp.README 311 mv -f tmp.README README) 312 313 314echo "Creating subdirectories" 315for subdir in lisp site-lisp lispref lispintro \ 316 leim leim/CXTERM-DIC leim/MISC-DIC \ 317 leim/SKK-DIC leim/ja-dic leim/quail \ 318 src src/m src/s src/bitmaps lib-src oldXMenu lwlib \ 319 nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \ 320 etc etc/e \ 321 etc/images etc/images/ezimage etc/images/gnus etc/images/gud \ 322 etc/images/icons etc/images/low-color etc/images/mail \ 323 etc/images/smilies etc/tree-widget etc/tree-widget/default \ 324 etc/tree-widget/folder info man m4 msdos vms mac mac/inc \ 325 mac/inc/sys mac/src mac/Emacs.app mac/Emacs.app/Contents \ 326 mac/Emacs.app/Contents/MacOS mac/Emacs.app/Contents/Resources \ 327 mac/Emacs.app/Contents/Resources/English.lproj 328do 329 echo " ${tempdir}/${subdir}" 330 mkdir ${tempdir}/${subdir} 331done 332 333echo "Making links to \`lisp' and its subdirectories" 334### Don't distribute TAGS, =*.el files, site-init.el, site-load.el, or default.el. 335(cd lisp 336 ln [a-zA-Z]*.el ../${tempdir}/lisp 337 ln [a-zA-Z]*.elc ../${tempdir}/lisp 338 ln [a-zA-Z]*.dat ../${tempdir}/lisp 339 for img in [a-zA-Z]*.xpm [a-zA-Z]*.xbm [a-zA-Z]*.pbm; do 340 # If there are no images, the shell won't expand the pattern. 341 if [ -f $img ]; then 342 ln $img ../${tempdir}/lisp 343 fi 344 done 345 ## simula.el doesn't keep abbreviations in simula.defns any more. 346 ## ln [a-zA-Z]*.defns ../${tempdir}/lisp 347 ln ChangeLog ChangeLog.*[0-9] ../${tempdir}/lisp 348 ln Makefile.in makefile.w32-in ../${tempdir}/lisp 349 test -f README && ln README ../${tempdir}/lisp 350 (cd ../${tempdir}/lisp 351 rm -f TAGS =* 352 rm -f site-init site-init.el site-init.elc 353 rm -f site-load site-load.el site-load.elc 354 rm -f site-start site-start.el site-start.elc 355 rm -f default default.el default.elc 356 ) 357 358 ## Find all subdirs of lisp dir 359 for file in `find . -type d -print`; do 360 case $file in 361 . | .. | */Old | */CVS | */RCS | */=*) 362 ;; 363 *) 364 if [ -d $file ]; then 365 subdirs="$file $subdirs" 366 fi 367 ;; 368 esac 369 done 370 371 for file in $subdirs; do 372 echo " lisp/$file" 373 mkdir ../${tempdir}/lisp/$file 374 ln $file/[a-zA-Z0-9]*.el ../${tempdir}/lisp/$file 375 ln $file/[a-zA-Z0-9]*.elc ../${tempdir}/lisp/$file 376 for img in $file/[a-zA-Z]*.xpm $file/[a-zA-Z]*.xbm $file/[a-zA-Z]*.pbm; do 377 if [ -f $img ]; then 378 ln $img ../${tempdir}/lisp/$file 379 fi 380 done 381 if [ -f $file/README ]; then 382 ln $file/README ../${tempdir}/lisp/$file 383 fi 384 385 if [ -f $file/ChangeLog ]; then 386 ln $file/ChangeLog ../${tempdir}/lisp/$file 387 for f in $file/ChangeLog.*[0-9]; do 388 if [ -f $f ]; then 389 ln $f ../${tempdir}/lisp/$file 390 fi 391 done 392 fi 393 done ) 394 395echo "Making links to \`leim' and its subdirectories" 396### Don't distribute TAGS, or =*.el files. 397(cd leim 398 ln makefile.w32-in ../${tempdir}/leim 399 ln ChangeLog README ../${tempdir}/leim 400 401 ln CXTERM-DIC/*.tit ../${tempdir}/leim/CXTERM-DIC 402 ln SKK-DIC/README SKK-DIC/SKK-JISYO.L ../${tempdir}/leim/SKK-DIC 403 ln MISC-DIC/*.* ../${tempdir}/leim/MISC-DIC 404 ln ja-dic/*.el ja-dic/*.elc ../${tempdir}/leim/ja-dic 405 ln Makefile.in ../${tempdir}/leim/Makefile.in 406 ln leim-ext.el ../${tempdir}/leim/leim-ext.el 407 ## Lisp files that start with a capital are generated from TIT 408 ## dictionaries so we don't distribute them. 409 ln quail/[a-z]*.el quail/[a-z]*.elc ../${tempdir}/leim/quail 410 rm -f ../${tempdir}/leim/quail/quick-b5.* 411 rm -f ../${tempdir}/leim/quail/quick-cns.* 412 rm -f ../${tempdir}/leim/quail/tsang-b5.* 413 rm -f ../${tempdir}/leim/quail/tsang-cns.* 414 415 cd ../${tempdir}/leim 416 rm -f TAGS =* */=*) 417 418echo "Making links to \`src'" 419### Don't distribute =*.[ch] files, or the configured versions of 420### config.in, paths.in, or Makefile.in, or TAGS. 421(cd src 422 echo " (It is ok if ln fails in some cases.)" 423 ln [a-zA-Z]*.c ../${tempdir}/src 424 ln [a-zA-Z]*.h ../${tempdir}/src 425 ln [a-zA-Z]*.s ../${tempdir}/src 426 ln [a-zA-Z]*.in ../${tempdir}/src 427 ln [a-zA-Z]*.opt ../${tempdir}/src 428 ## If we ended up with a symlink, or if we did not get anything 429 ## due to a cross-device symlink, copy the file. 430 for file in [a-zA-Z]*.[hcs] [a-zA-Z]*.in [a-zA-Z]*.opt; do 431 if test -f ../${tempdir}/src/$file; then 432 # test -f appears to succeed for a symlink 433 if test -L ../${tempdir}/src/$file; then 434 rm ../${tempdir}/src/$file 435 cp -p $file ../${tempdir}/src 436 chmod a-w ../${tempdir}/src/$file 437 fi 438 else 439 rm ../${tempdir}/src/$file 440 cp -p $file ../${tempdir}/src 441 chmod a-w ../${tempdir}/src/$file 442 fi 443 done 444 ln README ChangeLog ChangeLog.*[0-9] ../${tempdir}/src 445 ln makefile.w32-in ../${tempdir}/src 446 ln .gdbinit .dbxinit ../${tempdir}/src 447 cd ../${tempdir}/src 448 rm -f config.h epaths.h Makefile Makefile.c 449 rm -f =* TAGS) 450 451echo "Making links to \`src/bitmaps'" 452(cd src/bitmaps 453 ln README *.xbm ../../${tempdir}/src/bitmaps) 454 455echo "Making links to \`src/m'" 456(cd src/m 457 # We call files for miscellaneous input (to linker etc) .inp. 458 ln README [a-zA-Z0-9]*.h *.inp ../../${tempdir}/src/m) 459 460echo "Making links to \`src/s'" 461(cd src/s 462 ln README [a-zA-Z0-9]*.h ../../${tempdir}/src/s) 463 464echo "Making links to \`lib-src'" 465(cd lib-src 466 ln [a-zA-Z]*.[chy] ../${tempdir}/lib-src 467 ln ChangeLog Makefile.in README testfile vcdiff ../${tempdir}/lib-src 468 ln grep-changelog rcs2log rcs-checkin ../${tempdir}/lib-src 469 ln makefile.w32-in ../${tempdir}/lib-src 470 ## If we ended up with a symlink, or if we did not get anything 471 ## due to a cross-device symlink, copy the file. 472 for file in [a-zA-Z]*.[chy]; do 473 if test -f ../${tempdir}/lib-src/$file; then 474 # test -f appears to succeed for a symlink 475 if test -L ../${tempdir}/lib-src/$file; then 476 rm ../${tempdir}/lib-src/$file 477 cp $file ../${tempdir}/lib-src 478 chmod a-w ../${tempdir}/lib-src/$file 479 fi 480 else 481 rm ../${tempdir}/lib-src/$file 482 cp $file ../${tempdir}/lib-src 483 chmod a-w ../${tempdir}/lib-src/$file 484 fi 485 done 486 cd ../${tempdir}/lib-src 487 rm -f Makefile.c 488 rm -f getopt.h 489 rm -f =* TAGS) 490 491echo "Making links to \`m4'" 492(cd m4 493 ln *.m4 ../${tempdir}/m4) 494 495echo "Making links to \`nt'" 496(cd nt 497 ln emacs.rc config.nt [a-z]*.c ../${tempdir}/nt 498 ln nmake.defs gmake.defs subdirs.el ../${tempdir}/nt 499 ln [a-z]*.bat [a-z]*.h ../${tempdir}/nt 500 ln ChangeLog INSTALL README makefile.w32-in ../${tempdir}/nt) 501 502echo "Making links to \`nt/inc'" 503(cd nt/inc 504 ln [a-z]*.h ../../${tempdir}/nt/inc) 505 506echo "Making links to \`nt/inc/sys'" 507(cd nt/inc/sys 508 ln [a-z]*.h ../../../${tempdir}/nt/inc/sys) 509 510echo "Making links to \`nt/inc/arpa'" 511(cd nt/inc/arpa 512 ln [a-z]*.h ../../../${tempdir}/nt/inc/arpa) 513 514echo "Making links to \`nt/inc/netinet'" 515(cd nt/inc/netinet 516 ln [a-z]*.h ../../../${tempdir}/nt/inc/netinet) 517 518echo "Making links to \`nt/icons'" 519(cd nt/icons 520 ln [a-z]*.ico ../../${tempdir}/nt/icons 521 ln [a-z]*.cur ../../${tempdir}/nt/icons) 522 523echo "Making links to \`mac'" 524(cd mac 525 ln ChangeLog INSTALL README make-package *.xml *.MPW ../${tempdir}/mac) 526 527echo "Making links to \`mac/inc'" 528(cd mac/inc 529 ln [a-z]*.h ../../${tempdir}/mac/inc) 530 531echo "Making links to \`mac/inc/sys'" 532(cd mac/inc/sys 533 ln [a-z]*.h ../../../${tempdir}/mac/inc/sys) 534 535echo "Making links to \`mac/src'" 536(cd mac/src 537 ln [a-z]*.c *.r ../../${tempdir}/mac/src) 538 539echo "Making links to \`mac/Emacs.app/Contents'" 540(cd mac/Emacs.app/Contents 541 ln Info.plist PkgInfo ../../../${tempdir}/mac/Emacs.app/Contents) 542 543echo "Making links to \`mac/Emacs.app/Contents/Resources'" 544(cd mac/Emacs.app/Contents/Resources 545 ln Emacs.icns ../../../../${tempdir}/mac/Emacs.app/Contents/Resources) 546 547echo "Making links to \`mac/Emacs.app/Contents/Resources/English.lproj'" 548(cd mac/Emacs.app/Contents/Resources/English.lproj 549 ln InfoPlist.strings ../../../../../${tempdir}/mac/Emacs.app/Contents/Resources/English.lproj) 550 551echo "Making links to \`msdos'" 552(cd msdos 553 ln ChangeLog emacs.ico emacs.pif ../${tempdir}/msdos 554 ln is_exec.c sigaction.c mainmake mainmake.v2 sed*.inp ../${tempdir}/msdos 555 cd ../${tempdir}/msdos 556 rm -f =*) 557 558echo "Making links to \`oldXMenu'" 559(cd oldXMenu 560 ln *.c *.h *.in ../${tempdir}/oldXMenu 561 ln README ChangeLog ../${tempdir}/oldXMenu 562 ln compile.com descrip.mms ../${tempdir}/oldXMenu) 563 564echo "Making links to \`lwlib'" 565(cd lwlib 566 ln *.c *.h *.in ../${tempdir}/lwlib 567 ln README ChangeLog ../${tempdir}/lwlib) 568 569echo "Making links to \`etc'" 570### Don't distribute = files, TAGS, DOC files, backups, autosaves, or 571### tex litter. 572### Don't distribute gfdl.1, since no man page references it. 573(cd etc 574 files=`ls -d * | grep -v CVS | grep -v RCS | grep -v 'Old' | grep -v '^e$' \ 575 | grep -v '^images$' | grep -v '^tree-widget$'` 576 ln $files ../${tempdir}/etc 577 ## If we ended up with a symlink, or if we did not get anything 578 ## due to a cross-device symlink, copy the file. 579 for file in $files; do 580 if test -f ../${tempdir}/etc/$file; then 581 # test -f appears to succeed for a symlink 582 if test -L ../${tempdir}/etc/$file; then 583 rm ../${tempdir}/etc/$file 584 cp $file ../${tempdir}/etc 585 chmod a-w ../${tempdir}/etc/$file 586 fi 587 else 588 rm ../${tempdir}/etc/$file 589 cp $file ../${tempdir}/etc 590 chmod a-w ../${tempdir}/etc/$file 591 fi 592 done 593 cd ../${tempdir}/etc 594 rm -f fns*.el gfdl.1 595 rm -f DOC* *~ \#*\# *.dvi *.log *.orig *.rej *,v =* core 596 rm -f TAGS) 597 598echo "Making links to \`etc/e'" 599(cd etc/e 600 ln `ls -d * | grep -v CVS | grep -v RCS` ../../${tempdir}/etc/e 601 cd ../../${tempdir}/etc/e 602 rm -f *~ \#*\# *,v =* core) 603 604echo "Making links to \`etc/images'" 605(cd etc/images 606 for img in README [a-zA-Z]*.xpm [a-zA-Z]*.xbm [a-zA-Z]*.pbm; do 607 if [ -f $img ]; then 608 ln $img ../../${tempdir}/etc/images 609 fi 610 done) 611 612for dir in etc/images/ezimage etc/images/gnus etc/images/gud etc/images/icons \ 613 etc/images/low-color etc/images/mail etc/images/smilies \ 614 etc/tree-widget/default etc/tree-widget/folder ; do 615 echo "Making links to \`${dir}'" 616 (cd ${dir} 617 ln `ls -d * | grep -v CVS | grep -v RCS` ../../../${tempdir}/${dir} 618 cd ../../../${tempdir}/${dir} 619 rm -f *~ \#*\# *,v =* core) 620done 621 622echo "Making links to \`info'" 623# Don't distribute backups or autosaves. 624(cd info 625 ln `find . -type f -print | grep -v CVS | grep -v RCS | grep -v cvsignore` ../${tempdir}/info 626 #ln [a-zA-Z]* ../${tempdir}/info 627 cd ../${tempdir}/info 628 # Avoid an error when expanding the wildcards later. 629 ln emacs dummy~ ; ln emacs \#dummy\# 630 rm -f *~ \#*\# core) 631 632echo "Making links to \`man'" 633(cd man 634 ln *.texi *.aux *.cps *.fns *.kys *.vrs ../${tempdir}/man 635 ln makefile.w32-in ../${tempdir}/man 636 test -f README && ln README ../${tempdir}/man 637 test -f Makefile.in && ln Makefile.in ../${tempdir}/man 638 ln ChangeLog ../${tempdir}/man 639 test -f split-man && ln split-man ../${tempdir}/man 640 cp texinfo.tex ../${tempdir}/man 641 cd ../${tempdir}/man 642 rm -f \#*\# =* *~ core emacs-index* *.Z *.z xmail 643 rm -f emacs.?? termcap.?? gdb.?? *.log *.toc *.dvi *.oaux) 644 645echo "Making links to \`lispref'" 646(cd lispref 647 ln `ls -1 *.texi` ../${tempdir}/lispref 648 ln *.aux *.cps *.fns *.kys *.vrs ../${tempdir}/lispref 649 ln *.txt *.el spellfile tindex.pl ../${tempdir}/lispref 650 ln makefile.w32-in ../${tempdir}/lispref 651 test -f README && ln README ../${tempdir}/lispref 652 test -f Makefile.in && ln Makefile.in ../${tempdir}/lispref 653 ln ChangeLog ../${tempdir}/lispref 654 cd ../${tempdir}/lispref 655 rm -f \#*\# =* *~ core elisp-index* *.Z *.z xmail 656 rm -f elisp.?? *.log *.toc *.dvi *.oaux) 657 658echo "Making links to \`lispintro'" 659(cd lispintro 660 ln *.texi *.aux *.cps *.fns *.kys *.vrs *.eps ../${tempdir}/lispintro 661 ln makefile.w32-in ../${tempdir}/lispintro 662 test -f texinfo.tex && ln texinfo.tex ../${tempdir}/lispintro 663 test -f README && ln README ../${tempdir}/lispintro 664 test -f Makefile.in && ln Makefile.in ../${tempdir}/lispintro 665 ln ChangeLog ../${tempdir}/lispintro 666 cd ../${tempdir}/lispintro 667 rm -f \#*\# =* *~ core *.Z *.z xmail 668 rm -f emacs-lisp-intro.?? *.log *.toc *.dvi *.oaux) 669 670echo "Making links to \`vms'" 671(cd vms 672 test -f README && ln README ../${tempdir}/vms 673 cd ../${tempdir}/vms 674 rm -f *~) 675 676### It would be nice if they could all be symlinks to top-level copy, but 677### you're not supposed to have any symlinks in distribution tar files. 678echo "Making sure copying notices are all copies of \`COPYING'" 679for subdir in . etc info leim lib-src lisp lwlib mac msdos nt src; do 680 rm -f ${tempdir}/${subdir}/COPYING 681 cp COPYING ${tempdir}/${subdir} 682done 683 684#### Make sure that there aren't any hard links between files in the 685#### distribution; people with afs can't deal with that. Okay, 686#### actually we just re-copy anything with a link count greater 687#### than two. (Yes, strictly greater than 2 is correct; since we 688#### created these files by linking them in from the original tree, 689#### they'll have exactly two links normally.) 690#### 691#### Commented out since it's not strictly necessary; it should suffice 692#### to just break the link on alloca.c. 693#echo "Breaking intra-tree links." 694#find ${tempdir} ! -type d -links +2 \ 695# -exec cp -p {} $$ \; -exec rm -f {} \; -exec mv $$ {} \; 696rm -f $tempdir/lib-src/alloca.c 697cp $tempdir/src/alloca.c $tempdir/lib-src/alloca.c 698 699if [ "${newer}" ]; then 700 echo "Removing files older than $newer" 701 ## We remove .elc files unconditionally, on the theory that anyone picking 702 ## up an incremental distribution already has a running Emacs to byte-compile 703 ## them with. 704 find ${tempparent} \( -name '*.elc' -o ! -newer ${newer} \) -exec rm -f {} \; 705fi 706 707if [ "${make_tar}" = yes ]; then 708 if [ "${default_gzip}" = "" ]; then 709 echo "Looking for gzip" 710 temppath=`echo $PATH | sed 's/^:/.:/ 711 s/::/:.:/g 712 s/:$/:./ 713 s/:/ /g'` 714 default_gzip=`( 715 for dir in ${temppath}; do 716 if [ -f ${dir}/gzip ]; then echo 'gzip --best'; exit 0; fi 717 done 718 echo compress 719 )` 720 fi 721 case "${default_gzip}" in 722 compress* ) gzip_extension=.Z ;; 723 * ) gzip_extension=.gz ;; 724 esac 725 echo "Creating tar file" 726 (cd ${tempparent} ; tar cvf - ${emacsname} ) \ 727 | ${default_gzip} \ 728 > ${emacsname}.tar${gzip_extension} 729fi 730 731if [ "${clean_up}" = yes ]; then 732 echo "Cleaning up the staging directory" 733 rm -rf ${tempparent} 734else 735 (cd ${tempparent}; mv ${emacsname} ..) 736 rm -rf ${tempparent} 737fi 738 739# arch-tag: 26e3eb50-a394-4ab2-82b2-d8e5af500de7 740### make-dist ends here 741