]> code.delx.au - gnu-emacs/blob - mac/make-bin-dist
make-package: Now calls make bootstrap if .elc files are missing
[gnu-emacs] / mac / make-bin-dist
1 #!/bin/sh
2
3 #### make-bin-dist: create a binary Emacs distribution tar file for
4 #### Mac OS X. This basically runs a `configure' and `make install'
5 #### into a temporary directory and archives that directory. It also
6 #### places the Emacs application bundle and a installer script in the
7 #### tar file. The installer script is run to set up the XML file for
8 #### setting the environment variables used by Emacs when it is
9 #### started from the Finder.
10
11 # Copyright (C) 2002 Free Software Foundation, Inc.
12 #
13 # This file is part of GNU Emacs.
14 #
15 # GNU Emacs is free software; you can redistribute it and/or modify
16 # it under the terms of the GNU General Public License as published by
17 # the Free Software Foundation; either version 2, or (at your option)
18 # any later version.
19 #
20 # GNU Emacs is distributed in the hope that it will be useful,
21 # but WITHOUT ANY WARRANTY; without even the implied warranty of
22 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 # GNU General Public License for more details.
24 #
25 # You should have received a copy of the GNU General Public License
26 # along with GNU Emacs; see the file COPYING. If not, write to the
27 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
28 # Boston, MA 02111-1307, USA.
29
30 progname="$0"
31
32 ### Exit if a command fails.
33 #set -e
34
35 ### Print out each line we read, for debugging's sake.
36 set -v
37
38 LANGUAGE=C
39 LC_ALL=C
40 LC_MESSAGES=
41 LANG=
42 export LANGUAGE LC_ALL LC_MESSAGES LANG
43
44 ## Don't restrict access to any files.
45 umask 0
46
47 ### Make sure we're running in the right place.
48 if [ ! -f Emacs.app/Contents/PkgInfo ]; then
49 echo "${progname}: Can't find \`Emacs.app/Contents/PkgInfo'" >&2
50 echo "${progname} must be run in the \`mac' directory of the Emacs" >&2
51 echo "distribution tree. cd to that directory and try again." >&2
52 exit 1
53 fi
54
55 ### Check whether file ../lisp/version.el exists.
56 if [ ! -f ../lisp/version.el ]; then
57 echo "${progname}: Can't find \`../lisp/version.el'" >&2
58 exit 1
59 fi
60
61 ### Find out which version of Emacs this is.
62 shortversion=`grep 'defconst[ ]*emacs-version' ../lisp/version.el \
63 | sed -e 's/^.*"\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`
64 version=`grep 'defconst[ ]*emacs-version' ../lisp/version.el \
65 | sed -e 's/^[^"]*"\([^"]*\)".*$/\1/'`
66 if [ ! "${version}" ]; then
67 echo "${progname}: can't find current Emacs version in \`./lisp/version.el'" >&2
68 exit 1
69 fi
70
71 echo Version numbers are $version and $shortversion
72
73 ### Make sure we don't already have a directory emacs-${version}.
74
75 emacsname="emacs-${version}${new_extension}"
76
77 if [ -d ${emacsname} ]
78 then
79 echo Directory "${emacsname}" already exists >&2
80 exit 1
81 fi
82
83 ### Make sure the subdirectory is available.
84 tempparent="make-bin-dist.tmp.$$"
85 if [ -d ${tempparent} ]; then
86 echo "${progname}: staging directory \`${tempparent}' already exists.
87 Perhaps a previous invocation of \`${progname}' failed to clean up after
88 itself. Check that directories whose names are of the form
89 \`make-dist.tmp.NNNNN' don't contain any important information, remove
90 them, and try again." >&2
91 exit 1
92 fi
93
94 tempparentfull="`pwd`/${tempparent}"
95
96 echo Installing into directory ${tempparentfull} >&2
97
98 (cd ..; ./configure --prefix=${tempparentfull}; make install)
99
100 ### This trap ensures that the staging directory will be cleaned up even
101 ### when the script is interrupted in mid-career.
102 trap "echo 'Interrupted...cleaning up the staging directory'; rm -rf ${tempparent}; exit 1" 1 2 15
103
104 cp -r Emacs.app ${tempparent}
105
106 cp osx-install ${tempparent}
107
108 echo "Creating tar file"
109
110 mv ${tempparent} ${emacsname}
111
112 tar cvf - ${emacsname} | gzip > ${emacsname}-mac-bin.tar.gz
113
114 echo "Cleaning up the staging directory"
115 rm -rf ${emacsname}
116
117 ### make-bin-dist ends here