#!/bin/sh
# Build and install GNU emacs for Slackware.
# Before starting, you might want to reduce dependancies in the
# .tgz packages by doing this (no, you really don't want to do this):
#                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#removepkg xaw3d
#rm /usr/lib/libjpeg.so
#rm /usr/lib/libpng.so
#rm /usr/lib/libtiff.so
#rm /usr/lib/libungif.so
# and then replace these things after the build.
CWD=`pwd`
TMP=/tmp
PKG=$TMP/package-emacs
VERSION=21.3
ARCH=alpha
BUILD=2
TARGET=$ARCH-alphaslack-linux 

cd $TMP
tar xjf $CWD/emacs-$VERSION.tar.bz2
tar xjf $CWD/leim-$VERSION.tar.bz2
( cd emacs-$VERSION
chown -R root.root .
find . -perm 664 -exec chmod 644 {} \;
# Build a version of emacs that is not linked to the X11 libraries:
CFLAGS="-O3" LDFLAGS=-s \
./configure \
    --prefix=/usr \
    --with-x=no \
    --with-pop \
    $TARGET
make
mkdir -p $PKG/usr/bin $PKG/usr/share/emacs/21.3/etc
cat src/emacs-$VERSION.1 > $PKG/usr/bin/emacs-$VERSION ; chmod 1755 $PKG/usr/bin/* ; chown root.bin $PKG/usr/bin/*
cp etc/DOC-21.3.1 $PKG/usr/share/emacs/21.3/etc
( cd $PKG/usr/bin ; mv emacs-$VERSION emacs-$VERSION-no-x11 )
cp lib-src/fns-$VERSION.1.el $TMP
mkdir -p $PKG/install
cat $CWD/slack-desc.emacs-nox > $PKG/install/slack-desc
cd $PKG
makepkg -c n $TMP/emacs-nox-$VERSION-$ARCH-$BUILD.tgz

rm -rf $PKG
cd $TMP/emacs-$VERSION
mkdir -p $PKG/usr/info
cp -a info/* $PKG/usr/info
( cd $PKG/usr/info ; rm -rf COPYING dir ; gzip -9 * )
mkdir -p $PKG/install
cat $CWD/slack-desc.emacs-info > $PKG/install/slack-desc
cd $PKG
makepkg -c n $TMP/emacs-info-$VERSION-noarch-$BUILD.tgz

rm -rf $PKG
cd $TMP/emacs-$VERSION
mkdir -p $PKG/usr/share/emacs/21.3/leim/ja-dic $PKG/usr/share/emacs/21.3/leim/quail
cp -a leim/ja-dic/* $PKG/usr/share/emacs/21.3/leim/ja-dic
cp -a leim/quail/* $PKG/usr/share/emacs/21.3/leim/quail
cp leim/leim-list.el $PKG/usr/share/emacs/21.3/leim
mkdir -p $PKG/install
cat $CWD/slack-desc.emacs-leim > $PKG/install/slack-desc
cd $PKG
makepkg -c n $TMP/emacs-leim-$VERSION-noarch-$BUILD.tgz

rm -rf $PKG
cd $TMP/emacs-$VERSION
mkdir -p $PKG/usr/share/emacs/21.3/lisp $PKG/usr/share/emacs/site-lisp $PKG/usr/share/emacs/21.3/site-lisp
cp -a lisp/* $PKG/usr/share/emacs/21.3/lisp
( cd $PKG
( find usr/share/emacs/21.3/lisp/ -name *.elc | xargs rm -rf )
( find usr/share/emacs/21.3/lisp/ -name Change* | xargs rm -rf )
( find usr/share/emacs/21.3/lisp/ -name READ* | xargs rm -rf )
( find usr/share/emacs/21.3/lisp/ -name *.*m | xargs rm -rf )
( cd usr/share/emacs/21.3/lisp ; rm -rf COPYING Make* )
)
cp nt/subdirs.el $PKG/usr/share/emacs/21.3/site-lisp
cp nt/subdirs.el $PKG/usr/share/emacs/site-lisp
sh $CWD/find-el-orphans.sh
mkdir -p $PKG/install
cat $CWD/slack-desc.emacs-lisp > $PKG/install/slack-desc
cd $PKG
makepkg -c n $TMP/emacs-lisp-$VERSION-noarch-$BUILD.tgz

rm -rf $PKG
cd $TMP/emacs-$VERSION
mkdir -p $PKG/usr/share/emacs/21.3/etc
cp -a etc/* $PKG/usr/share/emacs/21.3/etc
( cd $PKG
( cd usr/share/emacs/21.3/etc ; rm -rf DO* ChangeLog Makefile )
)
mkdir -p $PKG/install
cat $CWD/slack-desc.emacs-misc > $PKG/install/slack-desc
cd $PKG
makepkg -c n $TMP/emacs-misc-$VERSION-noarch-$BUILD.tgz

rm -rf $PKG
cd $TMP/emacs-$VERSION
make distclean
# Save some docs:
mkdir -p $PKG/usr/doc/emacs-$VERSION
cp -a BUGS FTP INSTALL README $PKG/usr/doc/emacs-$VERSION
chmod 644 $PKG/usr/doc/emacs-$VERSION/*
( cd $PKG
( cd usr/doc/emacs-$VERSION ; ln -sf /usr/share/emacs/$VERSION/etc . )
)
# OK, now we start over building the full X11 emacs:
CFLAGS="-O3" LDFLAGS=-s \
./configure \
    --prefix=/usr \
    --with-x11 \
    --with-x-toolkit \
    --with-pop \
    $TARGET
make
mkdir -p $PKG/usr/bin $PKG/usr/libexec/emacs/$VERSION/$TARGET $PKG/usr/man/man1 \
    $PKG/usr/share/emacs/$VERSION/etc $PKG/usr/share/emacs/$VERSION/lisp $PKG/usr/share/emacs/$VERSION/site-lisp $PKG/usr/share/emacs/site-lisp
cat src/emacs-$VERSION.1 > $PKG/usr/bin/emacs-$VERSION-with-x11
cat lib-src/b2m > $PKG/usr/bin/b2m
cat lib-src/ctags > $PKG/usr/bin/ctags
cat lib-src/ebrowse > $PKG/usr/bin/ebrowse
cat lib-src/emacsclient > $PKG/usr/bin/emacsclient
cat lib-src/etags > $PKG/usr/bin/etags
cat lib-src/grep-changelog > $PKG/usr/bin/grep-changelog
cat lib-src/rcs-checkin > $PKG/usr/bin/rcs-checkin
cat lib-src/cvtmail > $PKG/usr/libexec/emacs/$VERSION/$TARGET/cvtmail
cat lib-src/digest-doc > $PKG/usr/libexec/emacs/$VERSION/$TARGET/digest-doc
cat lib-src/emacsserver > $PKG/usr/libexec/emacs/$VERSION/$TARGET/emacsserver
cat lib-src/fakemail > $PKG/usr/libexec/emacs/$VERSION/$TARGET/fakemail
cat lib-src/hexl > $PKG/usr/libexec/emacs/$VERSION/$TARGET/hexl
cat lib-src/movemail > $PKG/usr/libexec/emacs/$VERSION/$TARGET/movemail
cat lib-src/profile > $PKG/usr/libexec/emacs/$VERSION/$TARGET/profile
cat lib-src/rcs2log > $PKG/usr/libexec/emacs/$VERSION/$TARGET/rcs2log
cat lib-src/sorted-doc > $PKG/usr/libexec/emacs/$VERSION/$TARGET/sorted-doc
cat lib-src/vcdiff > $PKG/usr/libexec/emacs/$VERSION/$TARGET/vcdiff
cat lib-src/yow > $PKG/usr/libexec/emacs/$VERSION/$TARGET/yow
( cd $PKG
( cd usr/bin ; ln -sf emacs-$VERSION-with-x11 emacs )
( cd usr/bin ; chmod 755 * ; chown root.bin * )
( cd usr/libexec/emacs/$VERSION/$TARGET ; chmod 755 * ; chown root.root * )
)
mv $TMP/fns-$VERSION.1.el $PKG/usr/libexec/emacs/$VERSION/$TARGET
cat lib-src/fns-$VERSION.1.el > $PKG/usr/libexec/emacs/$VERSION/$TARGET/fns-$VERSION.2.el
cp -a lisp/* $PKG/usr/share/emacs/$VERSION/lisp
cp nt/subdirs.el $PKG/usr/share/emacs/$VERSION/site-lisp
cp nt/subdirs.el $PKG/usr/share/emacs/site-lisp
cat etc/DOC-21.3.1 > $PKG/usr/share/emacs/$VERSION/etc/DOC-21.3.2
( cd $PKG
( find usr/share/emacs/21.3/lisp/ -name *.el | xargs rm -rf )
( find usr/share/emacs/21.3/lisp/ -name Change* | xargs rm -rf )
( find usr/share/emacs/21.3/lisp/ -name Make* | xargs rm -rf )
)
cp -a lisp/abbrevlist.el lisp/bindings.el lisp/cdl.el lisp/cus-load.el lisp/cus-start.el lisp/finder-inf.el \
 lisp/foldout.el lisp/forms-d2.el lisp/forms-pass.el lisp/generic-x.el lisp/loaddefs.el lisp/loadup.el \
 lisp/misc.el lisp/patcomp.el lisp/paths.el lisp/subdirs.el lisp/version.el lisp/vt-control.el \
 $PKG/usr/share/emacs/$VERSION/lisp
cp lisp/emacs-lisp/cl-specs.el $PKG/usr/share/emacs/$VERSION/lisp/emacs-lisp
cp -a lisp/emulation/edt-lk201.el lisp/emulation/edt-vt100.el $PKG/usr/share/emacs/$VERSION/lisp/emulation
cp lisp/gnus/nnlistserv.el $PKG/usr/share/emacs/$VERSION/lisp/gnus
cp lisp/international/iso-transl.el lisp/international/latin*.el lisp/international/mule-conf.el \
 $PKG/usr/share/emacs/$VERSION/lisp/international
cp -a lisp/mail/blessmail.el lisp/mail/rmailmsc.el $PKG/usr/share/emacs/$VERSION/lisp/mail
cp lisp/play/bruce.el $PKG/usr/share/emacs/$VERSION/lisp/play
cp -a lisp/term/*.el $PKG/usr/share/emacs/$VERSION/lisp/term
cp etc/ctags.1 etc/emacs.1 etc/etags.1 etc/gfdl.1 $PKG/usr/man/man1 ; gzip -9 $PKG/usr/man/man1/*
rm -rf $PKG/usr/{doc,info,man}
mkdir -p $PKG/install
cat $CWD/slack-desc.emacs > $PKG/install/slack-desc
cd $PKG
makepkg -l y -c n $TMP/emacs-$VERSION-$ARCH-$BUILD.tgz
) 2>&1 | tee $TMP/emacs.build.log
