#!/bin/sh ###################################################################### url="http://mtools.linux.lu/mtools-3.9.10.tar.bz2 http://mtools.linux.lu/mtools-3.9.10-20060626.diff.gz" pkgbase=mtools vers=3.9.10 arch=i386 build=P1 src="$pkgbase-$vers" OPT_CONFIG="" DOCS="todo README README.BEBOX INSTALL Changelog COPYING Release.notes" pkgs="$pkgbase-$vers" pkgl="$pkgbase-$vers-$arch-$build" ###################################################################### fscheck() { PANGRAM="The quick brown fox jumps over the lazy dog." echo -n "Checking for the filesystem ... " mkdir pangram ; ( cd pangram ; touch $PANGRAM ) mv pangram pangram~ ; mkdir pangram ; touch -r pangram~ pangram tar cpf pangram.tar pangram ; rmdir pangram ; mv pangram~ pangram for i in $PANGRAM ; do tar rpf pangram.tar pangram/$i ; done touch -t `date '+%m%d0900'` pangram.tar ; gzip pangram.tar touch pangram.tar.gz ; mv pangram.tar.gz pangram1.tgz tar cpf pangram.tar pangram touch -t `date '+%m%d0900'` pangram.tar ; gzip pangram.tar touch pangram.tar.gz ; mv pangram.tar.gz pangram2.tgz if cmp -s pangram1.tgz pangram2.tgz ; then echo "OK" rm -rf pangram pangram1.tgz pangram2.tgz else echo "NG" cat <<- "EOF" Hmm, packaging may not be done properly on this filesystem. Would you please try again on a default filesystem, thanks! Happy packaging!! Quitting... EOF exit fi } install2() { install -d ${2%/*} ; install -m 644 $1 $2 } strip_bindir() { echo "compressing in $1" if [ -d $1 ] ; then ( shopt -s nullglob cd $1 for i in * ; do echo "$i" if [ -h $i ] ; then continue ; fi chk=`file $i | grep "not stripped"` if [ "x$chk" != "x" ] ; then echo "stripping -p $i" strip -p $i fi done ) fi } strip_libdir() { echo "compressing in $1" if [ -d $1 ] ; then ( shopt -s nullglob cd $1 for i in *.so *.so.* *.a ; do echo "$i" if [ -h $i ] ; then continue ; fi chk=`nm -a $i | grep " a "` if [ "x$chk" != "x" ] ; then if [ "x$i" != "x${i%.a}" ] ; then echo -n "ranlib and " touch -r $i $i.mt ; ranlib $i ; touch -r $i.mt $i ; rm $i.mt fi echo "stripping -gp $i" strip -gp $i fi done ) fi } gzip_dir() { echo "compressing in $1" if [ -d $1 ] ; then ( cd $1 files=`ls -f --indicator-style=none | tail +3` for i in $files ; do echo "$i" if [ ! -f $i -a ! -h $i -o "x$i" != "x${i%.gz}" ] ; then continue ; fi lnks=`ls -l $i | awk '{print $2}'` if [ $lnks -gt 1 ] ; then inum=`ls -i $i | awk '{print $1}'` for j in `find . -maxdepth 1 -inum $inum` ; do if [ ${j#./} == $i ] ; then gzip -f $i else rm ${j#./} ; ln $i.gz ${j#./}.gz fi done elif [ -h $i ] ; then ln_target=`ls -l $i | awk '{print $11}'` rm $i ; ln -s $ln_target.gz $i.gz else gzip $i fi done for i in $files ; do mv ${i%.gz}.gz $C ; done for i in $files ; do mv $C/${i%.gz}.gz . ; done ) fi } gzip_one() { gzip $1 ; mv $1.gz $C ; mv $C/${1##*/}.gz ${1%/*} } compress() { for i in {$P/usr,$P}/{bin,sbin} ; do strip_bindir $i ; done for i in {$P/usr,$P}/lib ; do strip_libdir $i ; done if [ -f $infodir/dir ] ; then rm -f $infodir/dir ; fi gzip_dir $infodir for i in `seq 8` ; do gzip_dir $mandir/man$i ; done } fscheck W=`pwd` for i in `seq 0 $((${#src[@]} - 1))` ; do S[$i]=$W/${src[$i]} ; B[$i]=$W/build`test ${#src[@]} -eq 1 || echo $i` done P=$W/work ; C=$W/pivot infodir=$P/usr/share/info mandir=$P/usr/share/man docdir=$P/usr/share/doc if [ $# -eq 0 ] ; then opt_download=1 opt_config=1 opt_build=1 opt_package=1 else for i in "$@" ; do case $i in download) opt_download=1 ;; config) opt_config=1 ;; build) opt_build=1 ;; package) opt_package=1 ;; esac done fi if [ "$opt_download" == "1" ] ; then for i in $url ; do if [ ! -f ${i##*/} ] ; then wget $i ; fi done for i in $url ; do case ${i##*/} in mtools-3.9.10.tar.bz2) tar xvpjf ${i##*/} ;; esac done fi if [ "$opt_config" == "1" ] ; then for i in `seq 0 $((${#B[@]} - 1))` ; do if [ -d ${B[$i]} ] ; then rm -rf ${B[$i]} ; fi ; cp -a ${S[$i]} ${B[$i]} done cd $B gunzip -c $W/mtools-3.9.10-20060626.diff.gz | patch -Np1 -i - for i in `seq 0 $((${#B[@]} - 1))` ; do cd ${B[$i]} if [ -f Makefile ] ; then make clean fi if [ -f config.log ] ; then rm -rf config.cache config.log fi if [ -x configure ] ; then ./configure --prefix=/usr --infodir='${prefix}'/share/info \ --mandir='${prefix}'/share/man ${OPT_CONFIG[$i]} fi done fi if [ "$opt_build" == "1" ] ; then for i in `seq 0 $((${#B[@]} - 1))` ; do cd ${B[$i]} if [ -f Makefile ] ; then make fi done fi if [ "$opt_package" == "1" ] ; then if [ `id -u` -ne 0 ] ; then read -p "Do you want to package as root? [y/N] " ans if [ "x$ans" == "xY" -o "x$ans" == "xy" ] ; then cd $W ; /bin/su -c "$0 package" ; exit fi fi if [ -d $P ] ; then rm -rf $P ; fi ; mkdir -p $P if [ -d $C ] ; then rm -rf $C ; fi ; mkdir -p $C touch $W/i.st ; sleep 1 for i in `seq 0 $((${#B[@]} - 1))` ; do cd ${B[$i]} if [ -f Makefile ] ; then make install DESTDIR=$P fi done touch $W/i.et cd $W find $P -newer i.st ! -newer i.et -exec touch -t `date '+%m%d0900'` {} \; compress for i in `seq 0 $((${#DOCS[@]} - 1))` ; do for j in ${DOCS[$i]} ; do for k in ${S[$i]}/$j ; do install2 $k $docdir/${src[$i]}/${k#${S[$i]}/} touch -r $k $docdir/${src[$i]}/${k#${S[$i]}/} gzip_one $docdir/${src[$i]}/${k#${S[$i]}/} done done if [ $i -eq 0 ] ; then install PlamoBuild.$pkgs $docdir/$src touch -t `date '+%m%d0900'` $docdir/$src/PlamoBuild.$pkgs gzip_one $docdir/$src/PlamoBuild.$pkgs else ln $docdir/$src/PlamoBuild.$pkgs.gz $docdir/${src[$i]} fi ( cd $docdir ; find ${src[$i]} -type d -exec touch -r $W/{} {} \; ) done install2 {$B,$docdir/$src}/Changelog touch -t 200606262010.13 $docdir/$src/Changelog rm $docdir/$src/Changelog.gz ; gzip_one $docdir/$src/Changelog touch -r $S $docdir/$src install -d $P/install cat <<- "EOF" > $P/install/doinst.sh ( cd usr/bin ; rm -rf mattrib ) ( cd usr/bin ; ln -sf mtools mattrib ) ( cd usr/bin ; rm -rf mcat ) ( cd usr/bin ; ln -sf mtools mcat ) ( cd usr/bin ; rm -rf mcd ) ( cd usr/bin ; ln -sf mtools mcd ) ( cd usr/bin ; rm -rf mclasserase ) ( cd usr/bin ; ln -sf mtools mclasserase ) ( cd usr/bin ; rm -rf mcopy ) ( cd usr/bin ; ln -sf mtools mcopy ) ( cd usr/bin ; rm -rf mdel ) ( cd usr/bin ; ln -sf mtools mdel ) ( cd usr/bin ; rm -rf mdeltree ) ( cd usr/bin ; ln -sf mtools mdeltree ) ( cd usr/bin ; rm -rf mdir ) ( cd usr/bin ; ln -sf mtools mdir ) ( cd usr/bin ; rm -rf mdu ) ( cd usr/bin ; ln -sf mtools mdu ) ( cd usr/bin ; rm -rf mformat ) ( cd usr/bin ; ln -sf mtools mformat ) ( cd usr/bin ; rm -rf minfo ) ( cd usr/bin ; ln -sf mtools minfo ) ( cd usr/bin ; rm -rf mlabel ) ( cd usr/bin ; ln -sf mtools mlabel ) ( cd usr/bin ; rm -rf mmd ) ( cd usr/bin ; ln -sf mtools mmd ) ( cd usr/bin ; rm -rf mmount ) ( cd usr/bin ; ln -sf mtools mmount ) ( cd usr/bin ; rm -rf mmove ) ( cd usr/bin ; ln -sf mtools mmove ) ( cd usr/bin ; rm -rf mpartition ) ( cd usr/bin ; ln -sf mtools mpartition ) ( cd usr/bin ; rm -rf mrd ) ( cd usr/bin ; ln -sf mtools mrd ) ( cd usr/bin ; rm -rf mren ) ( cd usr/bin ; ln -sf mtools mren ) ( cd usr/bin ; rm -rf mtype ) ( cd usr/bin ; ln -sf mtools mtype ) ( cd usr/bin ; rm -rf mtoolstest ) ( cd usr/bin ; ln -sf mtools mtoolstest ) ( cd usr/bin ; rm -rf mshowfat ) ( cd usr/bin ; ln -sf mtools mshowfat ) ( cd usr/bin ; rm -rf mbadblocks ) ( cd usr/bin ; ln -sf mtools mbadblocks ) ( cd usr/bin ; rm -rf mzip ) ( cd usr/bin ; ln -sf mtools mzip ) ( cd usr/bin ; rm -rf lz ) ( cd usr/bin ; ln -sf uz lz ) EOF touch -t `date '+%m%d0900'` $P/install/doinst.sh for i in mattrib mcat mcd mclasserase mcopy mdel mdeltree mdir mdu mformat \ minfo mlabel mmd mmount mmove mpartition mrd mren mtype mtoolstest \ mshowfat mbadblocks mzip lz ; do rm $P/usr/bin/$i touch -t `date '+%m%d0900'` $P/usr/bin/$i done tar cvpf $pkgl.tar -C $P usr/bin/mtools tar rvpf $pkgl.tar -C $P usr/bin/floppyd tar rvpf $pkgl.tar -C $P usr/bin/floppyd_installtest tar rvpf $pkgl.tar -C $P usr/bin/mattrib tar rvpf $pkgl.tar -C $P usr/bin/mcat tar rvpf $pkgl.tar -C $P usr/bin/mcd tar rvpf $pkgl.tar -C $P usr/bin/mclasserase tar rvpf $pkgl.tar -C $P usr/bin/mcopy tar rvpf $pkgl.tar -C $P usr/bin/mdel tar rvpf $pkgl.tar -C $P usr/bin/mdeltree tar rvpf $pkgl.tar -C $P usr/bin/mdir tar rvpf $pkgl.tar -C $P usr/bin/mdu tar rvpf $pkgl.tar -C $P usr/bin/mformat tar rvpf $pkgl.tar -C $P usr/bin/minfo tar rvpf $pkgl.tar -C $P usr/bin/mlabel tar rvpf $pkgl.tar -C $P usr/bin/mmd tar rvpf $pkgl.tar -C $P usr/bin/mmount tar rvpf $pkgl.tar -C $P usr/bin/mmove tar rvpf $pkgl.tar -C $P usr/bin/mpartition tar rvpf $pkgl.tar -C $P usr/bin/mrd tar rvpf $pkgl.tar -C $P usr/bin/mren tar rvpf $pkgl.tar -C $P usr/bin/mtype tar rvpf $pkgl.tar -C $P usr/bin/mtoolstest tar rvpf $pkgl.tar -C $P usr/bin/mshowfat tar rvpf $pkgl.tar -C $P usr/bin/mbadblocks tar rvpf $pkgl.tar -C $P usr/bin/mzip tar rvpf $pkgl.tar -C $P usr/bin/mkmanifest tar rvpf $pkgl.tar -C $P usr/bin/mcheck tar rvpf $pkgl.tar -C $P usr/bin/mxtar tar rvpf $pkgl.tar -C $P usr/bin/uz tar rvpf $pkgl.tar -C $P usr/bin/tgz tar rvpf $pkgl.tar -C $P usr/bin/mcomp tar rvpf $pkgl.tar -C $P usr/bin/amuFormat.sh tar rvpf $pkgl.tar -C $P usr/bin/lz tar rvpf $pkgl.tar -C $P usr/share/info/mtools.info.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/floppyd.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/floppyd_installtest.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mattrib.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mbadblocks.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mcat.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mcd.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mclasserase.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mcopy.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mdel.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mdeltree.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mdir.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mdu.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mformat.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/minfo.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mkmanifest.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mlabel.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mmd.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mmount.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mmove.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mpartition.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mrd.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mren.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mshowfat.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mtoolstest.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mtools.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mtype.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man1/mzip.1.gz tar rvpf $pkgl.tar -C $P usr/share/man/man5/mtools.5.gz tar rvpf $pkgl.tar -C $P usr/share/doc/$src tar rvpf $pkgl.tar -C $P install/doinst.sh touch -t `date '+%m%d0900'` $pkgl.tar ; gzip $pkgl.tar ; touch $pkgl.tar.gz mv $pkgl.tar.gz $pkgl.tgz fi