1#!/bin/bash - 2# 3# This script builds _and checks_ all the distribution files from my source 4# directory. It's very selective because I've got a lot of historical and 5# other 'junk' in the same directory. (120Mb at the last count!) 6# 7 8trap "exit 1" 1 2 3 15 9 10DIR="`pwd`" 11TMPDIR=/tmp/Linux-86 12TMPSRC=linux86 13ARCDIR="$DIR"/dev86arc 14 15SRCDIRS='bcc cpp unproto as ar ld copt man elksemu dis88 tests libbsd bin86' 16DISTFILES='Makefile README COPYING Changes Contributors MAGIC 17 mkcompile GNUmakefile libcompat ifdef.c makefile.in Mk_dist' 18 19VERSION="$1" 20TMPDIST=$TMPDIR/$TMPSRC 21rm -rf ${TMPDIR} 22mkdir -p ${TMPDIST} 23 24[ "$VERSION" = '' ] && { 25 echo 'Usage: $0 <version>' 1>&2 26 exit 1 27} 28 29#----------------------------------------------------------------------- 30 31echo Copying most program files. 32 33make -s -C bin86 ungrab || exit 34cp -a $DISTFILES $SRCDIRS ${TMPDIST} 35 36#----------------------------------------------------------------------- 37 38echo Copying libc. 39 40LIBC_FILES='Makefile Make.defs crt0.c 41 README COPYING KERNEL 42 New_subdir Pre_main Config_sh Config.dflt' 43 44mkdir ${TMPDIST}/libc 45 46( 47 cd libc 48 LIBC_DIRS="`for i in */Makefile */Config; do dirname $i; done | sort -u`" 49 cp -a $LIBC_FILES include $LIBC_DIRS ${TMPDIST}/libc/. 50) 51 52#----------------------------------------------------------------------- 53 54echo Copying bootblocks and doselks. 55make -s -C bootblocks distribution 56make -s -C doselks distribution 57 58mkdir ${TMPDIST}/bootblocks 59( cd ${TMPDIST}/bootblocks ; tar xzf /tmp/bootblocks.tar.gz ) 60 61mkdir ${TMPDIST}/doselks 62( cd ${TMPDIST}/doselks ; tar xzf /tmp/doselks.tar.gz ) 63 64[ "`id -un`" = "root" ] && { 65 chown -R root:0 ${TMPDIST} 66 chmod -R og=u-w ${TMPDIST} 67} 68 69rm -f /tmp/bootblocks.tar.gz /tmp/doselks.tar.gz /tmp/libc-8086-$VERSION.tar.gz 70 71MINOR=${VERSION##*.} 72MAJOR=${VERSION%.*} 73MID=${MAJOR##*.} 74MAJOR=${MAJOR%.*} 75OLDVER= 76 77case "$VERSION" in 780.0.0 ) BASEVER=0.0.0.0 ;; # Naa. 79*.0.0 ) BASEVER=$((MAJOR-1)).$MID.$MINOR ;; 80*.*.0 ) BASEVER=$MAJOR.$((MID-1)).$MINOR ;; 81* ) BASEVER=$MAJOR.$MID.$((MINOR-1)) 82 OLDVER=$MAJOR.$MID.0 83 ;; 84esac 85if [ "$MAJOR.$MID.$((MINOR-1))" != "$BASEVER" ] 86then PATCHNAME="$VERSION-$BASEVER" 87else PATCHNAME="$VERSION" 88fi 89 90[ -f $ARCDIR/Dev86src-$BASEVER.tar.gz ] && { 91 echo "Extracting previous version ($BASEVER)" 92 93 mkdir ${TMPDIST}.tmp 94 ( cd ${TMPDIST}.tmp 95 tar xzf $ARCDIR/Dev86src-$BASEVER.tar.gz 96 mv * ${TMPDIST}.old 97 ) 98 rmdir ${TMPDIST}.tmp 99} 100 101[ "$OLDVER" != "" -a -f $ARCDIR/Dev86src-$OLDVER.tar.gz ] && { 102 echo "Extracting previous version ($OLDVER)" 103 104 mkdir ${TMPDIST}.tmp 105 ( cd ${TMPDIST}.tmp 106 tar xzf $ARCDIR/Dev86src-$OLDVER.tar.gz 107 mv * ${TMPDIST}.vold 108 ) 109 rmdir ${TMPDIST}.tmp 110} 111 112# ARCDIR=${TMPDIR}/arc ; mkdir -p ${ARCDIR} 113cd ${TMPDIST} 114echo COPY COMPLETE -- Switched to ${TMPDIST}, ARCDIR now $ARCDIR 115echo 116 117#----------------------------------------------------------------------- 118# 119# 120 121echo 'Ensuring clean tree' 122 123cd ${TMPDIST} 124 make -s clean realclean 125 mv as/obj1 ${TMPDIST}-obj1 126 EXCL="`find . -name '*.o' -o -name '*.obj' \ 127 -o -name '*.lib' -o -name '*.bak' \ 128 -o -name '*~' -o -name '*.exe' \ 129 -o -name '*.orig' -o -name '*.rej' \ 130 `" 131 mv ${TMPDIST}-obj1 as/obj1 132 rm -f $EXCL 133 rm -f `find . -type l` 134 135cd ${TMPDIR} 136 137[ -d ${TMPSRC}.old ] && { 138echo "Generating patch against version $BASEVER." 139 140mv ${TMPSRC}.old/bootblocks boot.old 141mv ${TMPSRC}/bootblocks boot 142 143diff -Nurd ${TMPSRC}.old ${TMPSRC} > ${ARCDIR}/patch-$PATCHNAME 144 145mv boot.old ${TMPSRC}.old/bootblocks 146mv boot ${TMPSRC}/bootblocks 147 148diff -Nurd ${TMPSRC}.old/bootblocks ${TMPSRC}/bootblocks >> ${ARCDIR}/patch-$PATCHNAME 149 150gzip -f9 ${ARCDIR}/patch-$PATCHNAME 151} 152 153[ -d ${TMPSRC}.vold ] && { 154echo "Generating patch against version $OLDVER." 155 156mv ${TMPSRC}.vold/bootblocks boot.old 157mv ${TMPSRC}/bootblocks boot 158 159diff -Nurd ${TMPSRC}.vold ${TMPSRC} > ${ARCDIR}/patch-$VERSION-$OLDVER 160 161mv boot.old ${TMPSRC}.vold/bootblocks 162mv boot ${TMPSRC}/bootblocks 163 164diff -Nurd ${TMPSRC}.vold/bootblocks ${TMPSRC}/bootblocks >> ${ARCDIR}/patch-$VERSION-$OLDVER 165 166gzip -f9 ${ARCDIR}/patch-$VERSION-$OLDVER 167} 168 169mkdir -p ${ARCDIR} 170 171echo Creating full source archive. 172ln -s ${TMPSRC} dev86-$VERSION 173tar cf ${ARCDIR}/Dev86src-$VERSION.tar dev86-$VERSION/* 174gzip -f9 ${ARCDIR}/Dev86src-$VERSION.tar 175 176echo Creating as86 source archive. 177ln -s ${TMPSRC}/as as86-$VERSION 178cp -p ${TMPSRC}/man/as86.1 as86-$VERSION/as86.1 179cp -p ${TMPSRC}/COPYING as86-$VERSION/COPYING 180echo '#define VERSION "'"$VERSION"'"' > as86-$VERSION/version.h 181tar cf ${ARCDIR}/as86-$VERSION.tar `find as86-$VERSION/* -prune -type f` 182gzip -f9 ${ARCDIR}/as86-*.tar 183 184echo Creating bin86 source archive. 185make -s -C ${TMPSRC}/bin86 VERSION=${VERSION} grab 186ln -s ${TMPSRC}/bin86 bin86-$VERSION 187echo '#define VERSION "'"$VERSION"'"' > bin86-$VERSION/ld/version.h 188tar chf ${ARCDIR}/bin86-$VERSION.tar bin86-$VERSION 189make -s -C ${TMPSRC}/bin86 ungrab 190gzip -f9 ${ARCDIR}/bin86-*.tar 191 192################################################################### 193 194echo Compile up the binaries. 195 196cd ${TMPDIR} || exit 1 197mkdir -p ${TMPDIST}.ins 198make -C ${TMPDIST} install install-other \ 199 ARFLAGS=q ELKSSRC=/dev/null \ 200 DIST=${TMPDIST}.ins 'ASLDDIR=$(BINDIR)' || 201 exit 202make -C ${TMPDIST} other || exit 203tar cf ${ARCDIR}/Dev86bin-$VERSION.tar -C ${TMPDIST}.ins . 204rm -f ${ARCDIR}/Dev86clb-$VERSION.zip Bcc 205ln -s ${TMPDIST} Bcc 206 207zip -9rpk ${ARCDIR}/Dev86clb-$VERSION.zip \ 208 Bcc/lib/crt0.o Bcc/lib/libc.a Bcc/lib/libbsd.a \ 209 Bcc/lib/libdos.a Bcc/lib/libc_f.a Bcc/lib/libc_s.a \ 210 Bcc/lib/i386/crt0.o Bcc/lib/i386/libc.a || exit 211rm Bcc 212 213gzip -9f ${ARCDIR}/Dev86bin-$VERSION.tar || exit 214 215echo Process completed. 216