summaryrefslogtreecommitdiff
path: root/debian/emacsen-install.template
blob: dca866921428752ab68655d5e743805e172981d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
UNDERSCORED_FLAVOR=$(echo $FLAVOR | sed 's/-/_/g')
eval included_here=\$$(echo INCLUDED_$UNDERSCORED_FLAVOR)
eval excluded_here=\$$(echo EXCLUDED_$UNDERSCORED_FLAVOR)

included_all=$(for i in ${!INCLUDED_*} ; do
    eval echo \$$i
    done | sort -u)

excluded_all=$(for i in ${!EXCLUDED_*} ; do
    eval echo \$$i
    done | sort -u)

if [ ${FLAVOR} = emacs ]; then exit 0; fi

# Install-info-altdir does not actually exist. 
# Maybe somebody will write it.
if test -x /usr/sbin/install-info-altdir; then
    echo install/${PACKAGE}: install Info links for ${FLAVOR}
    install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz
fi

LOG=`tempfile -pelc_ -s.log -m644`
ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
if test -e "${ELCDIR}/${STAMPFILE}"; then
    echo "${PACKAGE} files already compiled in ${ELCDIR}."
    exit
fi
echo install/${PACKAGE}: Handling ${FLAVOR}, logged in ${LOG}

if [ -z "$FLAGS" ] ; then
    FLAGS="-q -no-site-file --no-site-file -batch -l path.el -f batch-byte-compile"
fi

install -m 755 -d ${ELCDIR}
cd ${ELDIR}

# Now to compute the list of files to install...

FILES=$(ls -1 *.el)
# Here we have all of them

PATTERN=""
for i in $included_all $excluded_all ; do
    [ ! -z "$PATTERN" ] && PATTERN="${PATTERN}\|"
    PATTERN="${PATTERN}^$i\$"
done
FILES2=$FILES
if [ ! -z "$PATTERN" ] ; then
    FILES=$(for i in $FILES2 ; do echo $i | grep -v $PATTERN || true ; done)
fi
# Here we only have those not explicitly included or excluded by any flavour

FILES="$FILES $included_here"
# Here we also have those included for the current flavour

for i in $excluded_all ; do
    include_i="yes"
    for j in $excluded_here ; do
	[ $i = $j ] && include_i="no"
    done
    [ $include_i = "yes" ] && FILES="$FILES $i"
done
# And now we have those excluded by other flavours but not the current one

FILES=$(for i in $FILES ; do echo $i ; done | sort -u)
# And now for my last trick...  The list is now uniquified!

cp ${FILES} ${ELCDIR}
cd ${ELCDIR}

cat << EOF > path.el
(setq load-path (cons "." load-path) byte-compile-warnings nil)
EOF
if test "${APPEND_LOAD_PATH}" != ""
then
	cat << EOF >> path.el
(setq load-path (append ${APPEND_LOAD_PATH} load-path))
EOF
fi

echo ${FLAVOR} ${FLAGS} ${FILES} >> ${LOG}
${FLAVOR} ${FLAGS} ${FILES} >> ${LOG} &> ${LOG}
rm -f *.el path.el

exit 0