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