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