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