#!/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.4 PKGVER=21.4a ARCH=alpha BUILD=1 TARGET=$ARCH-alphaslack-linux cd $TMP tar xjf $CWD/emacs-$PKGVER.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/$VERSION/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.4.1 $PKG/usr/share/emacs/$VERSION/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-$PKGVER-$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-$PKGVER-noarch-$BUILD.tgz rm -rf $PKG cd $TMP/emacs-$VERSION mkdir -p $PKG/usr/share/emacs/$VERSION/leim/ja-dic $PKG/usr/share/emacs/$VERSION/leim/quail cp -a leim/ja-dic/* $PKG/usr/share/emacs/$VERSION/leim/ja-dic cp -a leim/quail/* $PKG/usr/share/emacs/$VERSION/leim/quail cp leim/leim-list.el $PKG/usr/share/emacs/$VERSION/leim mkdir -p $PKG/install cat $CWD/slack-desc.emacs-leim > $PKG/install/slack-desc cd $PKG makepkg -c n $TMP/emacs-leim-$PKGVER-noarch-$BUILD.tgz rm -rf $PKG cd $TMP/emacs-$VERSION mkdir -p $PKG/usr/share/emacs/$VERSION/lisp $PKG/usr/share/emacs/site-lisp $PKG/usr/share/emacs/$VERSION/site-lisp cp -a lisp/* $PKG/usr/share/emacs/$VERSION/lisp ( cd $PKG ( find usr/share/emacs/$VERSION/lisp/ -name *.elc | xargs rm -rf ) ( find usr/share/emacs/$VERSION/lisp/ -name Change* | xargs rm -rf ) ( find usr/share/emacs/$VERSION/lisp/ -name READ* | xargs rm -rf ) ( find usr/share/emacs/$VERSION/lisp/ -name *.*m | xargs rm -rf ) ( cd usr/share/emacs/$VERSION/lisp ; rm -rf COPYING Make* ) ) cp nt/subdirs.el $PKG/usr/share/emacs/$VERSION/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-$PKGVER-noarch-$BUILD.tgz rm -rf $PKG cd $TMP/emacs-$VERSION mkdir -p $PKG/usr/share/emacs/$VERSION/etc cp -a etc/* $PKG/usr/share/emacs/$VERSION/etc ( cd $PKG ( cd usr/share/emacs/$VERSION/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-$PKGVER-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.4.1 > $PKG/usr/share/emacs/$VERSION/etc/DOC-21.4.2 ( cd $PKG ( find usr/share/emacs/$VERSION/lisp/ -name *.el | xargs rm -rf ) ( find usr/share/emacs/$VERSION/lisp/ -name Change* | xargs rm -rf ) ( find usr/share/emacs/$VERSION/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-$PKGVER-$ARCH-$BUILD.tgz ) 2>&1 | tee $TMP/emacs.build.log