summaryrefslogtreecommitdiff
path: root/Mk_dist
blob: be020c6dd91db45a4bcaed25fe3290e1c684e4da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#!/bin/bash -
#
# This script builds _and checks_ all the distribution files from my source
# directory. It's very selective because I've got a lot of historical and
# other 'junk' in the same directory. (120Mb at the last count!)
#

trap "exit 1" 1 2 3 15

DIR="`pwd`"
TMPDIR=/tmp/Linux-86
TMPSRC=linux86
ARCDIR="$DIR"/dev86arc

SRCDIRS='bcc cpp unproto as ar ld copt man elksemu dis88 tests libbsd bin86'
DISTFILES='Makefile README COPYING Changes Contributors MAGIC
           mkcompile GNUmakefile libcompat ifdef.c makefile.in Mk_dist'

VERSION="$1"
TMPDIST=$TMPDIR/$TMPSRC
rm -rf ${TMPDIR}
mkdir -p ${TMPDIST}

[ "$VERSION" = '' ] && {
   echo 'Usage: $0 <version>' 1>&2
   exit 1
}

#-----------------------------------------------------------------------

echo Copying most program files.

make -s -C bin86 ungrab 	|| exit
cp -a $DISTFILES $SRCDIRS ${TMPDIST}

#-----------------------------------------------------------------------

echo Copying libc.

LIBC_FILES='Makefile Make.defs crt0.c
      	    README COPYING KERNEL
      	    New_subdir Pre_main Config_sh Config.dflt'

mkdir ${TMPDIST}/libc

(
  cd libc
  LIBC_DIRS="`for i in */Makefile */Config; do dirname $i; done | sort -u`"
  cp -a $LIBC_FILES include $LIBC_DIRS ${TMPDIST}/libc/.
)

#-----------------------------------------------------------------------

echo Copying bootblocks and doselks.
make -s -C bootblocks distribution
make -s -C doselks distribution

mkdir ${TMPDIST}/bootblocks
( cd ${TMPDIST}/bootblocks ; tar xzf /tmp/bootblocks.tar.gz )

mkdir ${TMPDIST}/doselks
( cd ${TMPDIST}/doselks  ; tar xzf /tmp/doselks.tar.gz )

[ "`id -un`" = "root" ] && {
  chown -R root:0 ${TMPDIST}
  chmod -R og=u-w ${TMPDIST}
}

rm -f /tmp/bootblocks.tar.gz /tmp/doselks.tar.gz /tmp/libc-8086-$VERSION.tar.gz

MINOR=${VERSION##*.}
MAJOR=${VERSION%.*}
MID=${MAJOR##*.}
MAJOR=${MAJOR%.*}
OLDVER=

case "$VERSION" in
0.0.0 )  BASEVER=0.0.0.0 ;;	# Naa.
*.0.0 )  BASEVER=$((MAJOR-1)).$MID.$MINOR ;;
*.*.0 )  BASEVER=$MAJOR.$((MID-1)).$MINOR ;;
* )      BASEVER=$MAJOR.$MID.$((MINOR-1))
         OLDVER=$MAJOR.$MID.0
         ;;
esac
if [ "$MAJOR.$MID.$((MINOR-1))" != "$BASEVER" ]
then PATCHNAME="$VERSION-$BASEVER"
else PATCHNAME="$VERSION"
fi

[ -f $ARCDIR/Dev86src-$BASEVER.tar.gz ] && {
   echo "Extracting previous version ($BASEVER)"

   mkdir ${TMPDIST}.tmp
   ( cd ${TMPDIST}.tmp
     tar xzf $ARCDIR/Dev86src-$BASEVER.tar.gz
     mv * ${TMPDIST}.old
   )
   rmdir ${TMPDIST}.tmp
}

[ "$OLDVER" != "" -a -f $ARCDIR/Dev86src-$OLDVER.tar.gz ] && {
   echo "Extracting previous version ($OLDVER)"

   mkdir ${TMPDIST}.tmp
   ( cd ${TMPDIST}.tmp
     tar xzf $ARCDIR/Dev86src-$OLDVER.tar.gz
     mv * ${TMPDIST}.vold
   )
   rmdir ${TMPDIST}.tmp
}

# ARCDIR=${TMPDIR}/arc ; mkdir -p ${ARCDIR}
cd ${TMPDIST}
echo COPY COMPLETE -- Switched to ${TMPDIST}, ARCDIR now $ARCDIR
echo

#-----------------------------------------------------------------------
# 
#

echo 'Ensuring clean tree'

cd ${TMPDIST}
  make -s clean realclean
  mv as/obj1 ${TMPDIST}-obj1
  EXCL="`find .         -name '*.o'    -o -name '*.obj'	\
                     -o -name '*.lib'  -o -name '*.bak'	\
		     -o -name '*~'     -o -name '*.exe'	\
		     -o -name '*.orig' -o -name '*.rej'	\
		     `"
  mv ${TMPDIST}-obj1 as/obj1
  rm -f $EXCL
  rm -f `find . -type l`

cd ${TMPDIR}

[ -d ${TMPSRC}.old ] && {
echo "Generating patch against version $BASEVER."

mv ${TMPSRC}.old/bootblocks boot.old
mv ${TMPSRC}/bootblocks boot

diff -Nurd ${TMPSRC}.old ${TMPSRC} > ${ARCDIR}/patch-$PATCHNAME

mv boot.old ${TMPSRC}.old/bootblocks
mv boot ${TMPSRC}/bootblocks

diff -Nurd ${TMPSRC}.old/bootblocks ${TMPSRC}/bootblocks >> ${ARCDIR}/patch-$PATCHNAME

gzip -f9 ${ARCDIR}/patch-$PATCHNAME
}

[ -d ${TMPSRC}.vold ] && {
echo "Generating patch against version $OLDVER."

mv ${TMPSRC}.vold/bootblocks boot.old
mv ${TMPSRC}/bootblocks boot

diff -Nurd ${TMPSRC}.vold ${TMPSRC} > ${ARCDIR}/patch-$VERSION-$OLDVER

mv boot.old ${TMPSRC}.vold/bootblocks
mv boot ${TMPSRC}/bootblocks

diff -Nurd ${TMPSRC}.vold/bootblocks ${TMPSRC}/bootblocks >> ${ARCDIR}/patch-$VERSION-$OLDVER

gzip -f9 ${ARCDIR}/patch-$VERSION-$OLDVER
}

mkdir -p ${ARCDIR}

echo Creating full source archive.
ln -s ${TMPSRC} dev86-$VERSION
tar cf ${ARCDIR}/Dev86src-$VERSION.tar dev86-$VERSION/*
gzip -f9 ${ARCDIR}/Dev86src-$VERSION.tar

echo Creating as86 source archive.
ln -s ${TMPSRC}/as as86-$VERSION
cp -p ${TMPSRC}/man/as86.1 as86-$VERSION/as86.1
cp -p ${TMPSRC}/COPYING as86-$VERSION/COPYING
echo '#define VERSION "'"$VERSION"'"' > as86-$VERSION/version.h
tar cf ${ARCDIR}/as86-$VERSION.tar `find as86-$VERSION/* -prune -type f`
gzip -f9 ${ARCDIR}/as86-*.tar

echo Creating bin86 source archive.
make -s -C ${TMPSRC}/bin86 VERSION=${VERSION} grab 
ln -s ${TMPSRC}/bin86 bin86-$VERSION
echo '#define VERSION "'"$VERSION"'"' > bin86-$VERSION/ld/version.h
tar chf ${ARCDIR}/bin86-$VERSION.tar bin86-$VERSION
make -s -C ${TMPSRC}/bin86 ungrab
gzip -f9 ${ARCDIR}/bin86-*.tar

###################################################################

echo Compile up the binaries.

cd ${TMPDIR} || exit 1
mkdir -p ${TMPDIST}.ins
make -C ${TMPDIST} install install-other \
        ARFLAGS=q ELKSSRC=/dev/null \
        DIST=${TMPDIST}.ins 'ASLDDIR=$(BINDIR)' || 
    exit
make -C ${TMPDIST} other || exit
tar cf ${ARCDIR}/Dev86bin-$VERSION.tar -C ${TMPDIST}.ins .
rm -f ${ARCDIR}/Dev86clb-$VERSION.zip Bcc
ln -s ${TMPDIST} Bcc

zip -9rpk ${ARCDIR}/Dev86clb-$VERSION.zip \
 Bcc/lib/crt0.o Bcc/lib/libc.a Bcc/lib/libbsd.a \
 Bcc/lib/libdos.a Bcc/lib/libc_f.a Bcc/lib/libc_s.a \
 Bcc/lib/i386/crt0.o Bcc/lib/i386/libc.a  || exit
rm Bcc

gzip -9f ${ARCDIR}/Dev86bin-$VERSION.tar || exit

echo Process completed.