Mercurial > emacs
annotate make-dist @ 1167:a9aeeaa9da8f
(scan_lists): When searching back for comment:
if comment-end is 2 chars, assume it does end a comment.
Otherwise, scan back to previous comment-end to see if there's
a comment starter between. Also record whether the string quotes
between the start and the end are paired and uniform.
If so, skip to comment starter. If not, scan from start of
defun to find comment starter if any.
(find_defun_start): New function.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 19 Sep 1992 17:52:07 +0000 |
parents | 1dba066c1e0a |
children | 313f56268d18 |
rev | line source |
---|---|
616 | 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 progname="$0" | |
10 | |
11 # Exit if a command fails. | |
994
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
12 # set -e |
616 | 13 |
14 # Print out each line we read, for debugging's sake. | |
15 # set -v | |
16 | |
621 | 17 clean_up=yes |
18 make_tar=yes | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
19 newer="" |
616 | 20 |
21 while [ $# -gt 0 ]; do | |
22 case "$1" in | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
23 # This option tells make-dist not to delete the staging directory |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
24 # after it's done making the tar file. |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
25 "--no-clean-up" ) |
621 | 26 clean_up=no |
27 ;; | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
28 # This option tells make-dist not to make a tar file. Since it's |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
29 # rather pointless to build the whole staging directory and then |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
30 # nuke it, using this option also selects '--no-clean-up'. |
621 | 31 "--no-tar" ) |
32 make_tar=no | |
33 clean_up=no | |
616 | 34 ;; |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
35 # This option tells make-dist to make the distribution normally, then |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
36 # remove all files newer than the given timestamp file. This is useful |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
37 # for creating incremental or patch distributions |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
38 "--newer") |
999 | 39 newer="$2" |
40 new_extension=".new" | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
41 shift |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
42 ;; |
616 | 43 * ) |
44 echo "${progname}: Unrecognized argument: $1" >&2 | |
45 exit 1 | |
46 ;; | |
47 esac | |
48 shift | |
49 done | |
50 | |
51 # Make sure we're running in the right place. | |
52 if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/version.el ]; then | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
53 echo "${progname}: Can't find \`src/lisp.h' and \`lisp/version.el'." >&2 |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
54 echo "${progname} must be run in the top directory of the Emacs" >&2 |
616 | 55 echo "distribution tree. Cd to that directory and try again." >&2 |
56 exit 1 | |
57 fi | |
58 | |
59 # Find out which version of Emacs this is. | |
60 version=`grep 'defconst[ ]*emacs-version' lisp/version.el \ | |
1112 | 61 | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\)\..*$/\1/'` |
616 | 62 if [ ! "${version}" ]; then |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
63 echo "${progname}: can't find current emacs version in \`./lisp/version.el'." >&2 |
616 | 64 exit 1 |
65 fi | |
66 | |
67 # Make sure the subdirectory is available. | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
68 tempparent="make-dist.tmp.$$" |
616 | 69 if [ -d ${tempparent} ]; then |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
70 echo "${progname}: staging directory \`${tempparent}' already exists. |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
71 Perhaps a previous invocation of \`${progname}' failed to clean up after |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
72 itself. Check that directories whose names are of the form |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
73 \`make-dist.tmp.NNNNN' don't contain any important information, remove |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
74 them, and try again." >&2 |
616 | 75 exit 1 |
76 fi | |
77 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
78 echo "Creating staging directory: \`${tempparent}'" |
616 | 79 mkdir ${tempparent} |
999 | 80 emacsname="emacs-${version}${new_extension}" |
616 | 81 tempdir="${tempparent}/${emacsname}" |
82 | |
994
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
83 # This trap ensures that the staging directory will be cleaned up even |
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
84 # when the script is interrupted in mid-career. |
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
85 if [ "${clean_up}" = yes ]; then |
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
86 trap "echo 'Interrupted...cleaning up the staging directory.'; rm -rf ${tempparent}; exit 1" 1 2 15 |
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
87 fi |
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
88 |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
89 echo "Creating top directory: \`${tempdir}'" |
616 | 90 mkdir ${tempdir} |
91 | |
92 # We copy in the top-level files before creating the subdirectories in | |
93 # hopes that this will make the top-level files appear first in the | |
621 | 94 # tar file; this means that people can start reading the INSTALL and |
95 # README while the rest of the tar file is still unpacking. Whoopee. | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
96 echo "Making links to top-level files." |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
97 ln GETTING.GNU.SOFTWARE INSTALL PROBLEMS README move-if-change ${tempdir} |
616 | 98 ln ChangeLog Makefile.in build-install.in configure make-dist ${tempdir} |
99 | |
100 echo "Creating subdirectories." | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
101 for subdir in lisp lisp/term local-lisp external-lisp \ |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
102 src src/m src/s lib-src oldXMenu \ |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
103 etc lock arch-lib cpp info man shortnames; do |
616 | 104 mkdir ${tempdir}/${subdir} |
105 done | |
106 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
107 echo "Making links to \`lisp'." |
999 | 108 # Don't distribute =*.el files, site-init.el, site-load.el, or default.el. |
616 | 109 (cd lisp |
110 ln [a-zA-Z]*.el ../${tempdir}/lisp | |
111 ln [a-zA-Z]*.elc ../${tempdir}/lisp | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
112 # simula.el doesn't keep abbreviations in simula.defns any more. |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
113 # ln [a-zA-Z]*.defns ../${tempdir}/lisp |
616 | 114 ln ChangeLog README ../${tempdir}/lisp |
115 cd ../${tempdir}/lisp | |
116 rm -f site-init site-init.el site-init.elc | |
999 | 117 rm -f site-load site-load.el site-load.elc |
118 rm -f default default.el default.elc) | |
616 | 119 |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
120 echo "Making links to \`lisp/term'." |
616 | 121 # Don't distribute =*.el files. |
122 (cd lisp/term | |
123 ln [a-zA-Z]*.el ../../${tempdir}/lisp/term | |
124 ln [a-zA-Z]*.elc ../../${tempdir}/lisp/term | |
125 ln README ../../${tempdir}/lisp/term) | |
126 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
127 echo "Making links to \`external-lisp'." |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
128 # Don't distribute =*.el files. |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
129 (cd external-lisp |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
130 ln [a-zA-Z]*.el ../${tempdir}/external-lisp |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
131 ln [a-zA-Z]*.elc ../${tempdir}/external-lisp |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
132 ln ChangeLog README ../${tempdir}/external-lisp) |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
133 |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
134 echo "Making links to \`src'." |
616 | 135 # Don't distribute =*.[ch] files, or the configured versions of |
136 # config.h.in, paths.h.in, or Makefile.in. | |
137 (cd src | |
138 ln [a-zA-Z]*.c ../${tempdir}/src | |
139 ln [a-zA-Z]*.h ../${tempdir}/src | |
140 ln [a-zA-Z]*.s ../${tempdir}/src | |
141 ln README Makefile.in ymakefile ChangeLog config.h.in paths.h.in \ | |
142 ../${tempdir}/src | |
143 ln .gdbinit .dbxinit ../${tempdir}/src | |
144 ln *.com *.opt vms-pp.trans vmsbuild ../${tempdir}/src | |
145 cd ../${tempdir}/src | |
999 | 146 rm -f config.h paths.h Makefile |
147 if [ -z "${newer}" ]; then | |
148 etags *.h *.c ../lisp/*.el | |
149 fi) | |
616 | 150 |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
151 echo "Making links to \`src/m'." |
616 | 152 (cd src/m |
153 ln README *.h ../../${tempdir}/src/m) | |
154 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
155 echo "Making links to \`src/s'." |
616 | 156 (cd src/s |
157 ln README *.h ../../${tempdir}/src/s) | |
158 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
159 echo "Making links to \`lib-src'." |
616 | 160 (cd lib-src |
161 ln [a-zA-Z]*.c [a-zA-Z]*.h [a-zA-Z]*.y [a-zA-Z]*.lex ../${tempdir}/lib-src | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
162 ln ChangeLog Makefile.in README testfile vcdiff rcs2log ../${tempdir}/lib-src |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
163 cd ../${tempdir}/lib-src |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
164 rm -f getdate.c getdate.tab.c y.tab.c y.tab.h) |
616 | 165 |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
166 echo "Making links to \`oldXMenu'." |
616 | 167 (cd oldXMenu |
168 ln *.c *.h ../${tempdir}/oldXMenu | |
169 ln README Makefile Imakefile ChangeLog ../${tempdir}/oldXMenu) | |
170 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
171 echo "Making links to \`etc'." |
999 | 172 # Don't distribute DOC files, backups, autosaves, or tex litter. |
616 | 173 (cd etc |
174 ln [0-9a-zA-Z]* ../${tempdir}/etc | |
175 cd ../${tempdir}/etc | |
176 # Avoid an error when expanding the wildcards later. | |
177 for dummy in DOC-dummy dummy~ \#dummy\# dummy.dvi dummy.log; do | |
178 ln MACHINES ${dummy} | |
179 done | |
999 | 180 rm -f DOC* *~ \#*\# *.dvi *.log core) |
616 | 181 |
182 # For now, we comment these out, since I'm not changing them any. | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
183 #!! echo "Making links to \`cpp'." |
616 | 184 #!! (cd cpp |
185 #!! ln cccp.c cexp.y Makefile README ../${tempdir}/cpp) | |
186 #!! | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
187 #!! echo "Making links to \`info'." |
616 | 188 #!! # Don't distribute backups or autosaves. |
189 #!! (cd info | |
190 #!! ln [a-zA-Z]* ../${tempdir}/info | |
191 #!! cd ../${tempdir}/info | |
192 #!! # Avoid an error when expanding the wildcards later. | |
193 #!! ln emacs dummy~ ; ln emacs \#dummy\# | |
194 #!! rm -f *~ \#*\# core) | |
195 #!! | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
196 #!! echo "Making links to \`man'." |
616 | 197 #!! (cd man |
198 #!! ln *.tex *.texinfo *.texi *.aux *.cps *.fns *.kys *.vrs ../${tempdir}/man | |
199 #!! ln *.c ../${tempdir}/man | |
200 #!! ln ChangeLog Makefile README split-man ../${tempdir}/man) | |
201 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
202 echo "Making links to \`shortnames'." |
616 | 203 (cd shortnames |
204 ln *.c ../${tempdir}/shortnames | |
205 ln Makefile reserved special ../${tempdir}/shortnames) | |
206 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
207 echo "Making sure copying notices are all symlinks to \`etc/COPYING'." |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
208 rm -f ${tempdir}/etc/COPYING |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
209 cp etc/COPYING ${tempdir}/etc/COPYING |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
210 for subdir in lisp external-lisp src lib-src info shortnames; do |
616 | 211 if [ -f ${tempdir}/${subdir}/COPYING ]; then |
212 rm ${tempdir}/${subdir}/COPYING | |
213 fi | |
214 ln -s ../etc/COPYING ${tempdir}/${subdir} | |
215 done | |
216 | |
992
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
217 if [ "${newer}" ]; then |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
218 echo "Removing files older than $newer." |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
219 # We remove .elc files unconditionally, on the theory that anyone picking |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
220 # up an incremental distribution already has a running Emacs to byte-compile |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
221 # them with. |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
222 find ${tempparent} \( -name '*.elc' -o ! -newer ${newer} \) -exec rm -f {} \; |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
223 fi |
144a9a018e7c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
621
diff
changeset
|
224 |
621 | 225 if [ "${make_tar}" = yes ]; then |
226 echo "Creating tar file." | |
227 (cd ${tempparent}; tar cvf - ${emacsname}) | compress > ${emacsname}.tar.Z | |
228 fi | |
616 | 229 |
621 | 230 if [ "${clean_up}" = yes ]; then |
616 | 231 echo "Cleaning up the staging directory." |
232 rm -rf ${tempparent} | |
233 fi | |
994
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
234 |
5b2a1922c4d5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
992
diff
changeset
|
235 # make-dist ends here |