mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-04 22:33:27 +00:00
140 lines
3.4 KiB
Plaintext
140 lines
3.4 KiB
Plaintext
|
#!/bin/sh
|
||
|
|
||
|
PREFIX=${PREFIX:-/usr/local}
|
||
|
WRKDIR=${WRKDIR:-`pwd`}
|
||
|
|
||
|
tmprfx=`basename $0`
|
||
|
|
||
|
Usage="\
|
||
|
byte_compile [options] emacs_name port_name [files]
|
||
|
-l load_el : load *.el file when byte-compile
|
||
|
-h : show this message
|
||
|
emacs_name : should be one of below
|
||
|
\"emacs\", \"emacs20\", \"mule\", \"xemacs19\", \"xemacs20\",
|
||
|
\"xemacs21\", \"xemacs-mule\"
|
||
|
port_name : port name(replaced port_name.el when files not specified)
|
||
|
files : *.el files should be compiled"
|
||
|
|
||
|
while [ -z "`getopts "l: h" opt > /tmp/${tmprfx}:getopt_err.log`" \
|
||
|
-a X"${opt}" != "X?" ]; do
|
||
|
case ${opt} in
|
||
|
l)
|
||
|
load_el=${OPTARG}
|
||
|
break
|
||
|
;;
|
||
|
h)
|
||
|
echo "${Usage}"
|
||
|
exit 1
|
||
|
;;
|
||
|
*)
|
||
|
;;
|
||
|
esac
|
||
|
# echo "opt=${opt},OPTARG=${OPTARG}"
|
||
|
done
|
||
|
|
||
|
if [ -s /tmp/${tmprfx}:getopt_err.log ]; then
|
||
|
cat /tmp/${tmprfx}:getopt_err.log
|
||
|
rm -f /tmp/${tmprfx}:getopt_err.log
|
||
|
exit 1
|
||
|
fi
|
||
|
rm -f /tmp/${tmprfx}:getopt_err.log
|
||
|
|
||
|
shift `expr ${OPTIND} - 1`
|
||
|
|
||
|
if [ -z "$1" -o -z "$2" ]; then
|
||
|
echo "${Usage}"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
emacs_name=$1
|
||
|
shift
|
||
|
port_name=$1
|
||
|
|
||
|
if [ $# -le 1 ]; then
|
||
|
files=${port_name}.el
|
||
|
else
|
||
|
files=`echo $* | sed -e "s/${port_name} *//"`
|
||
|
fi
|
||
|
|
||
|
#echo "emacs_name=${emacs_name}"
|
||
|
#echo "port_name=${port_name}"
|
||
|
#echo "files=${files}"
|
||
|
#echo "load_el=${load_el}"
|
||
|
#exit 1
|
||
|
|
||
|
case ${emacs_name} in
|
||
|
emacs)
|
||
|
elispdir=${PREFIX}/share/emacs/site-lisp
|
||
|
load_path=${PREFIX}/share/emacs/site-lisp/${load_el}
|
||
|
emacscmd=emacs
|
||
|
;;
|
||
|
emacs20)
|
||
|
elispdir=${PREFIX}/share/emacs/site-lisp
|
||
|
load_path=${PREFIX}/share/emacs/site-lisp/${load_el}
|
||
|
emacscmd=emacs20
|
||
|
;;
|
||
|
mule)
|
||
|
elispdir=${PREFIX}/share/mule/site-lisp
|
||
|
load_path=${PREFIX}/share/mule/site-lisp/${load_el}
|
||
|
emacscmd=mule
|
||
|
;;
|
||
|
xemacs19)
|
||
|
elispdir=${PREFIX}/lib/xemacs/site-lisp
|
||
|
load_path=${PREFIX}/lib/xemacs/site-lisp/${load_el}
|
||
|
emacscmd=xemacs
|
||
|
;;
|
||
|
xemacs20)
|
||
|
elispdir=${PREFIX}/lib/xemacs/site-lisp
|
||
|
load_path=${PREFIX}/lib/xemacs/site-lisp/${load_el}
|
||
|
emacscmd=xemacs
|
||
|
;;
|
||
|
xemacs21)
|
||
|
elispdir=${PREFIX}/lib/xemacs/site-packages/lisp/${port_name}
|
||
|
load_path=${PREFIX}/lib/xemacs/site-packages/lisp/${load_el}
|
||
|
pkg_path=${PREFIX}/lib/xemacs/site-packages
|
||
|
emacscmd=xemacs
|
||
|
package_install=yes
|
||
|
;;
|
||
|
xemacs-mule)
|
||
|
elispdir=${PREFIX}/lib/xemacs/site-packages/lisp/${port_name}
|
||
|
load_path=${PREFIX}/lib/xemacs/site-packages/lisp/${load_el}
|
||
|
pkg_path=${PREFIX}/lib/xemacs/site-packages
|
||
|
emacscmd=xemacs
|
||
|
package_install=yes
|
||
|
;;
|
||
|
*)
|
||
|
echo "${Usage}"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
if [ -n "${load_el}" ]; then
|
||
|
echo "(setq load-path (cons \"${load_path}\" load-path))" > /tmp/${tmprfx}:load.el
|
||
|
fi
|
||
|
for f in ${files}; do
|
||
|
if [ -f ${WRKDIR}/${f} ]; then
|
||
|
f_elc=`basename ${f} .el`.elc
|
||
|
if [ -n "${load_el}" ]; then
|
||
|
${emacscmd} -batch -l /tmp/${tmprfx}:load.el -q -no-site-file \
|
||
|
-f batch-byte-compile ${WRKDIR}/${f}
|
||
|
else
|
||
|
${emacscmd} -batch -q -no-site-file -f batch-byte-compile ${WRKDIR}/${f}
|
||
|
fi
|
||
|
if [ X"${WRKDIR}" != "X${elispdir}" ]; then
|
||
|
rm -f ${elispdir}/${f_elc}
|
||
|
ln -sf ${WRKDIR}/${f} ${elispdir}/${f}
|
||
|
install -c -m 444 -g bin -o bin ${WRKDIR}/${f_elc} ${elispdir}/${f_elc}
|
||
|
rm -f ${WRKDIR}/${f_elc}
|
||
|
fi
|
||
|
if [ $? -eq 0 -a -n "${package_install}" ]; then
|
||
|
cp ${pkg_path}/pkginfo/MANIFEST.${port_name} /tmp/${tmprfx}:tempfile
|
||
|
grep -v "${f_elc}" /tmp/${tmprfx}:tempfile \
|
||
|
> ${pkg_path}/pkginfo/MANIFEST.${port_name}
|
||
|
echo "lisp/${port_name}/${f_elc}" >> ${pkg_path}/pkginfo/MANIFEST.${port_name}
|
||
|
fi
|
||
|
else
|
||
|
echo "\"${WRKDIR}/${f}\": file not found!"
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
rm -f /tmp/${tmprfx}:load.el /tmp/${tmprfx}:tempfile
|