522
|
1 #!/bin/sh -x
|
491
|
2 #
|
|
3 #Shell script for building and installing Emacs.
|
|
4
|
617
|
5 # ==================== Where To Install Things ====================
|
|
6
|
|
7 # The default location for installation. Everything is placed in
|
|
8 # subdirectories of this directory. This directory must exist when
|
|
9 # you start installation. The default values for many of the
|
|
10 # variables below are expressed in terms of this one, so you may not
|
|
11 # need to change them.
|
|
12 prefix=/usr/local
|
|
13
|
|
14 # Where to install Emacs and other binaries that people will want to
|
|
15 # run directly (like etags).
|
|
16 bindir=${prefix}/bin
|
|
17
|
|
18 # A directory under which we will install many of Emacs's files. The
|
|
19 # default values for many of the variables below are expressed in
|
|
20 # terms of this one, so you may not need to change them.
|
621
|
21 emacsdir=${prefix}/emacs-19.0
|
617
|
22
|
|
23 # Where to install and expect the architecture-independent data files
|
621
|
24 # (like the tutorial and the Zippy database).
|
617
|
25 datadir=${emacsdir}/etc
|
|
26
|
621
|
27 # Where to install the elisp files distributed with Emacs. Strictly
|
|
28 # speaking, all the elisp files should go under datadir (above), since
|
|
29 # both elisp source and compiled elisp are completely portable, but
|
|
30 # it's traditional to give the lisp files their own subdirectory.
|
617
|
31 lispdir=${emacsdir}/lisp
|
|
32
|
621
|
33 # Directories Emacs should search for elisp files specific to this
|
|
34 # site (i.e. customizations), before consulting ${lispdir}. This
|
|
35 # should be a colon-separated list of directories.
|
|
36 locallisppath=${emacsdir}/local-lisp
|
|
37
|
|
38 # Where Emacs will search to find its elisp files. Before changing
|
|
39 # this, check to see if your purpose wouldn't better be served by
|
|
40 # changing locallisppath. This should be a colon-separated list of
|
|
41 # directories.
|
|
42 lisppath=${locallisppath}:${lispdir}
|
|
43
|
|
44 # Where Emacs will search for its elisp files before dumping. This is
|
|
45 # only used during the process of compiling Emacs, to help Emacs find
|
|
46 # its lisp files before they've been installed in their final
|
|
47 # location. It's usually identical to lisppath, except that the entry
|
|
48 # for the directory containing the installed lisp files has been
|
|
49 # replaced with ../lisp. This should be a colon-separated list of
|
|
50 # directories.
|
|
51 dumplisppath=../lisp
|
617
|
52
|
|
53 # Where to install and expect the files that Emacs modifies as it
|
|
54 # runs. These files are all architecture-independent. Right now,
|
|
55 # the only such data is the locking directory.
|
|
56 statedir=${emacsdir}
|
|
57
|
|
58 # Where to create and expect the locking directory, where the Emacs
|
|
59 # locking code keeps track of which files are currently being edited.
|
|
60 lockdir=${statedir}/lock
|
|
61
|
|
62 # Where to install and expect executable files to be run by Emacs
|
|
63 # rather than directly by users, and other architecture-dependent
|
|
64 # data.
|
|
65 libdir=${emacsdir}/arch-lib
|
|
66
|
|
67 # Where to install Emacs's man pages.
|
|
68 mandir=/usr/man/man1
|
|
69
|
|
70 # Where to install and expect the info files describing Emacs. In the
|
|
71 # past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but
|
|
72 # since there are now many packages documented with the texinfo
|
|
73 # system, it is inappropriate to imply that it is part of Emacs.
|
|
74 infodir=${prefix}/info
|
|
75
|
621
|
76 removenullpaths="sed -e 's/^://' -e 's/:"'$'"//' -e 's/::/:/'"
|
491
|
77
|
621
|
78 lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
|
|
79 dumplisppath=`echo ${dumplisppath} | ${removenullpaths}` ; \
|
|
80 /bin/sed < src/paths.h.in > src/paths.h \
|
|
81 -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";' \
|
|
82 -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${dumplisppath}'";' \
|
|
83 -e 's;\(#.*PATH_EXEC\).*$$;\1 "${libdir}";' \
|
|
84 -e 's;\(#.*PATH_DATA\).*$$;\1 "${datadir}";' \
|
625
|
85 -e 's;\(#.*PATH_LOCK\).*$$;\1 "${lockdir}/";'
|
491
|
86
|
|
87 (cd lib-src; make) || exit 1
|
|
88 (cd src; make) || exit 1
|
|
89
|
617
|
90 # Subdirectories to install, and where they'll go.
|
|
91 copydir=arch-lib etc info lisp
|
|
92 copydests=${libdir} ${datadir} ${infodir} ${lispdir}
|
|
93
|
|
94 # If any of the directories are below ${emacsdir} or ${statedir}, create them.
|
|
95 for dir in ${copydests}; do
|
|
96 case "${dir}" in
|
|
97 ${emacsdir}/* )
|
|
98 if [ ! -d ${emacsdir} ]; then
|
|
99 -mkdir ${emacsdir}
|
|
100 -chmod 777 ${emacsdir}
|
|
101 fi
|
|
102 ;;
|
|
103 ${statedir}/* )
|
|
104 if [ ! -d ${statedir} ]; then
|
|
105 -mkdir ${statedir}
|
|
106 -chmod 777 ${statedir}
|
|
107 fi
|
|
108 ;;
|
|
109 esac
|
|
110 done
|
|
111
|
|
112 set ${copydests}
|
|
113 for dir in ${copydir} ; do
|
|
114 dest=$1 ; shift
|
|
115 mv ${dir} ${dest}
|
|
116 if [ $? != 0 ]; then
|
|
117 echo mv ${dir} to ${dest} failed -- using tar to copy.
|
|
118 if [ `/bin/pwd`/${dir} != `(cd ${dest}; /bin/pwd)` ] ; then
|
|
119 (cd ${dir}; tar cf - . ) | (cd ${dest}; umask 0; tar xf - )
|
|
120 if [ $? != 0 ]; then
|
|
121 echo "tar-copying ${dir} to ${dest} failed too. I give up."
|
|
122 exit 1
|
|
123 fi
|
|
124 for subdir in `find ${dest} -type d ! -name RCS -print` ; do
|
|
125 rm -rf ${subdir}/RCS
|
|
126 rm -f ${subdir}/\#*
|
|
127 rm -f ${subdir}/*~
|
|
128 done
|
522
|
129 fi
|
|
130 fi
|
617
|
131 done
|
491
|
132
|
617
|
133 cp ${libdir}/[ce]tags ${bindir}
|
|
134 mv src/xemacs ${BINDIR}/emacs
|
|
135 rm src/temacs
|
|
136 chmod 777 ${bindir}/[ce]tags ${bindir}/emacs
|