134 |
mv_fox |
1 |
#!/bin/bash
|
11 |
mv_fox |
2 |
#
|
180 |
mateuszvis |
3 |
# SvarDOS build script
|
|
|
4 |
# http://svardos.osdn.io
|
557 |
mateuszvis |
5 |
# Copyright (C) 2016-2022 Mateusz Viste
|
148 |
mv_fox |
6 |
#
|
180 |
mateuszvis |
7 |
# This script generates the SvarDOS repository index and builds ISO CD images.
|
|
|
8 |
# It should be executed each time that a package has been modified, added or
|
|
|
9 |
# removed.
|
11 |
mv_fox |
10 |
#
|
194 |
mateuszvis |
11 |
# usage: ./build.sh [noclean]
|
|
|
12 |
#
|
2 |
mv_fox |
13 |
|
11 |
mv_fox |
14 |
### parameters block starts here ############################################
|
|
|
15 |
|
643 |
mateusz.vi |
16 |
CURDATE=`date +%Y%m%d`
|
180 |
mateuszvis |
17 |
PKGDIR=`realpath ./packages`
|
632 |
mateusz.vi |
18 |
REPOROOT=`realpath ./packages`
|
643 |
mateusz.vi |
19 |
PUBDIR=`realpath ./website/download`/$CURDATE
|
148 |
mv_fox |
20 |
CDROOT=`realpath ./cdroot`
|
192 |
mateuszvis |
21 |
FLOPROOT=`realpath ./floproot`
|
148 |
mv_fox |
22 |
CUSTFILES=`realpath ./files`
|
2 |
mv_fox |
23 |
|
171 |
mv_fox |
24 |
GENISOIMAGE='' # can be mkisofs, genisoimage or empty for autodetection
|
|
|
25 |
|
11 |
mv_fox |
26 |
### parameters block ends here ##############################################
|
|
|
27 |
|
171 |
mv_fox |
28 |
# auto-detect whether to use mkisofs or genisoimage
|
|
|
29 |
|
|
|
30 |
if [ "x$GENISOIMAGE" == "x" ] ; then
|
180 |
mateuszvis |
31 |
mkisofs --help 2> /dev/null
|
171 |
mv_fox |
32 |
if [ $? -eq 0 ] ; then
|
|
|
33 |
GENISOIMAGE='mkisofs'
|
|
|
34 |
fi
|
|
|
35 |
fi
|
|
|
36 |
|
|
|
37 |
if [ "x$GENISOIMAGE" == "x" ] ; then
|
180 |
mateuszvis |
38 |
genisoimage --help 2> /dev/null
|
171 |
mv_fox |
39 |
if [ $? -eq 0 ] ; then
|
|
|
40 |
GENISOIMAGE='genisoimage'
|
|
|
41 |
fi
|
|
|
42 |
fi
|
|
|
43 |
|
|
|
44 |
if [ "x$GENISOIMAGE" == "x" ] ; then
|
|
|
45 |
echo "ERROR: neither genisoimage nor mkisofs was found on this system"
|
|
|
46 |
exit 1
|
|
|
47 |
fi
|
|
|
48 |
|
|
|
49 |
|
180 |
mateuszvis |
50 |
# abort if anything fails
|
|
|
51 |
set -e
|
134 |
mv_fox |
52 |
|
|
|
53 |
|
300 |
mateuszvis |
54 |
# list of packages to be part of CORE (always installed)
|
781 |
mateusz.vi |
55 |
COREPKGS="amb attrib chkdsk choice command cpidos debug deltree diskcopy display dosfsck edit fc fdapm fdisk find format help himemx kernel keyb label localcfg mem mode more move pkg pkgnet shsucdx sort tree"
|
192 |
mateuszvis |
56 |
|
300 |
mateuszvis |
57 |
# list of packages to be part of EXTRA (only sometimes installed, typically drivers)
|
|
|
58 |
EXTRAPKGS="pcntpk udvd2"
|
192 |
mateuszvis |
59 |
|
300 |
mateuszvis |
60 |
# all packages
|
|
|
61 |
ALLPKGS="$COREPKGS $EXTRAPKGS"
|
192 |
mateuszvis |
62 |
|
300 |
mateuszvis |
63 |
|
246 |
mateuszvis |
64 |
# prepares image for floppy sets of:
|
|
|
65 |
# $1 cylinders
|
|
|
66 |
# $2 heads (sides)
|
|
|
67 |
# $3 sectors per track
|
|
|
68 |
# $4 size
|
279 |
mateuszvis |
69 |
# $5 where to put a copy of the image (optional)
|
194 |
mateuszvis |
70 |
function prep_flop {
|
246 |
mateuszvis |
71 |
mkdir $4
|
|
|
72 |
mformat -C -t $1 -h $2 -s $3 -v SVARDOS -B "$CUSTFILES/floppy.mbr" -i "$4/disk1.img"
|
|
|
73 |
mcopy -sQm -i "$4/disk1.img" "$FLOPROOT/"* ::/
|
196 |
mateuszvis |
74 |
|
|
|
75 |
# now populate the floppies
|
|
|
76 |
curdisk=1
|
300 |
mateuszvis |
77 |
for p in $ALLPKGS ; do
|
196 |
mateuszvis |
78 |
# if copy fails, then probably the floppy is full - try again after
|
|
|
79 |
# creating an additional floppy image
|
700 |
mateusz.vi |
80 |
if ! mcopy -mi "$4/disk$curdisk.img" "$CDROOT/$p.svp" ::/ ; then
|
196 |
mateuszvis |
81 |
curdisk=$((curdisk+1))
|
246 |
mateuszvis |
82 |
mformat -C -t $1 -h $2 -s $3 -v SVARDOS -i "$4/disk$curdisk.img"
|
700 |
mateusz.vi |
83 |
mcopy -mi "$4/disk$curdisk.img" "$CDROOT/$p.svp" ::/
|
196 |
mateuszvis |
84 |
fi
|
194 |
mateuszvis |
85 |
done
|
196 |
mateuszvis |
86 |
|
205 |
mateuszvis |
87 |
# add a short readme
|
246 |
mateuszvis |
88 |
echo "This directory contains a set of $curdisk floppy images of the SvarDOS distribution in the $4 KB floppy format." > "$4/readme.txt"
|
|
|
89 |
echo "" >> "$4/readme.txt"
|
|
|
90 |
echo "These images are raw floppy disk dumps. To write them on an actual floppy disk, you have to use a low-level sector copying tool, like dd." >> "$4/readme.txt"
|
|
|
91 |
echo "" >> "$4/readme.txt"
|
|
|
92 |
echo "Latest SvarDOS version is available on the project's homepage: http://svardos.osdn.io" >> "$4/readme.txt"
|
205 |
mateuszvis |
93 |
|
246 |
mateuszvis |
94 |
unix2dos "$4/readme.txt"
|
205 |
mateuszvis |
95 |
|
279 |
mateuszvis |
96 |
# make a copy of the image, if requested
|
|
|
97 |
if [ "x$5" != "x" ] ; then
|
|
|
98 |
cp "$4/disk1.img" $5
|
|
|
99 |
fi
|
|
|
100 |
|
196 |
mateuszvis |
101 |
# zip the images (and remove them at the same time)
|
246 |
mateuszvis |
102 |
rm -f "$PUBDIR/svardos-floppy-$4k.zip"
|
643 |
mateusz.vi |
103 |
zip -9 -rmj "$PUBDIR/svardos-$CURDATE-floppy-$4k.zip" $4/*
|
196 |
mateuszvis |
104 |
|
|
|
105 |
# clean up
|
246 |
mateuszvis |
106 |
rmdir $4
|
194 |
mateuszvis |
107 |
}
|
|
|
108 |
|
|
|
109 |
|
134 |
mv_fox |
110 |
### actual code flow starts here ############################################
|
|
|
111 |
|
148 |
mv_fox |
112 |
# remember where I am, so I can get back here once all is done
|
11 |
mv_fox |
113 |
origdir=`pwd`
|
|
|
114 |
|
189 |
mateuszvis |
115 |
mkdir "$CDROOT"
|
192 |
mateuszvis |
116 |
mkdir "$FLOPROOT"
|
643 |
mateusz.vi |
117 |
mkdir "$PUBDIR"
|
189 |
mateuszvis |
118 |
|
192 |
mateuszvis |
119 |
# add CORE packages to CDROOT + create the list of packages on floppy
|
195 |
mateuszvis |
120 |
for pkg in $COREPKGS ; do
|
700 |
mateusz.vi |
121 |
cp "$REPOROOT/$pkg.svp" "$CDROOT/"
|
192 |
mateuszvis |
122 |
echo "$pkg" >> "$FLOPROOT/install.lst"
|
|
|
123 |
done
|
|
|
124 |
|
300 |
mateuszvis |
125 |
# add EXTRA packages to CDROOT (but not in the list of packages so instal won't install them by default)
|
|
|
126 |
for pkg in $EXTRAPKGS ; do
|
700 |
mateusz.vi |
127 |
cp "$REPOROOT/$pkg.svp" "$CDROOT/"
|
300 |
mateuszvis |
128 |
done
|
|
|
129 |
|
|
|
130 |
|
192 |
mateuszvis |
131 |
# prepare the content of the boot (install) floppy
|
|
|
132 |
cp -r "$CUSTFILES/floppy/"* "$FLOPROOT/"
|
700 |
mateusz.vi |
133 |
unzip -Cj packages/cpidos.svp 'cpi/ega*.cpx' -d "$FLOPROOT/"
|
|
|
134 |
unzip -Cj packages/command.svp bin/command.com -d "$FLOPROOT/"
|
|
|
135 |
unzip -Cj packages/display.svp bin/display.exe -d "$FLOPROOT/"
|
|
|
136 |
unzip -Cj packages/edit.svp bin/edit.exe -d "$FLOPROOT/"
|
|
|
137 |
unzip -Cj packages/fdapm.svp bin/fdapm.com -d "$FLOPROOT/"
|
|
|
138 |
unzip -Cj packages/fdisk.svp bin/fdisk.exe bin/fdiskpt.ini -d "$FLOPROOT/"
|
|
|
139 |
unzip -Cj packages/format.svp bin/format.exe -d "$FLOPROOT/"
|
|
|
140 |
unzip -Cj packages/kernel.svp bin/kernel.sys bin/sys.com -d "$FLOPROOT/"
|
|
|
141 |
unzip -Cj packages/mem.svp bin/mem.exe -d "$FLOPROOT/"
|
|
|
142 |
unzip -Cj packages/mode.svp bin/mode.com -d "$FLOPROOT/"
|
|
|
143 |
unzip -Cj packages/more.svp bin/more.exe -d "$FLOPROOT/"
|
|
|
144 |
unzip -Cj packages/pkg.svp bin/pkg.exe -d "$FLOPROOT/"
|
192 |
mateuszvis |
145 |
|
194 |
mateuszvis |
146 |
# build the boot (CD) floppy image
|
192 |
mateuszvis |
147 |
export MTOOLS_NO_VFAT=1
|
279 |
mateuszvis |
148 |
#mformat -C -f 2880 -v SVARDOS -B "$CUSTFILES/floppy.mbr" -i "$CDROOT/boot.img"
|
|
|
149 |
#mcopy -sQm -i "$CDROOT/boot.img" "$FLOPROOT/"* ::/
|
192 |
mateuszvis |
150 |
|
246 |
mateuszvis |
151 |
# prepare images for floppies in different sizes (args are C H S SIZE)
|
279 |
mateuszvis |
152 |
prep_flop 80 2 36 2880 "$CDROOT/boot.img"
|
246 |
mateuszvis |
153 |
prep_flop 80 2 18 1440
|
|
|
154 |
prep_flop 80 2 15 1200
|
|
|
155 |
prep_flop 80 2 9 720
|
316 |
mateuszvis |
156 |
#prep_flop 96 64 32 98304 "$PUBDIR/svardos-zip100.img" # ZIP 100M (for USB boot in "USB-ZIP mode")
|
194 |
mateuszvis |
157 |
|
321 |
mateuszvis |
158 |
# prepare the DOSEMU boot zip
|
|
|
159 |
DOSEMUDIR='dosemu-prep-files'
|
|
|
160 |
mkdir "$DOSEMUDIR"
|
322 |
mateuszvis |
161 |
# INSTALL.BAT
|
624 |
mateuszvis |
162 |
echo 'IF NOT EXIST C:\TEMP\NUL MKDIR C:\TEMP' >> "$DOSEMUDIR/install.bat"
|
322 |
mateuszvis |
163 |
echo 'mkdir %DOSDIR%' >> "$DOSEMUDIR/install.bat"
|
|
|
164 |
echo 'mkdir %DOSDIR%\cfg' >> "$DOSEMUDIR/install.bat"
|
|
|
165 |
echo 'ECHO # pkg config file - specifies locations where packages should be installed >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
|
|
|
166 |
echo 'ECHO DIR PROGS C:\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
|
|
|
167 |
echo 'ECHO DIR GAMES C:\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
|
|
|
168 |
echo 'ECHO DIR DRIVERS C:\DRIVERS\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
|
|
|
169 |
echo 'ECHO DIR DEVEL C:\DEVEL\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
|
321 |
mateuszvis |
170 |
for p in $COREPKGS ; do
|
700 |
mateusz.vi |
171 |
cp "$CDROOT/$p.svp" "$DOSEMUDIR/"
|
|
|
172 |
echo "pkg install $p.svp" >> "$DOSEMUDIR/install.bat"
|
|
|
173 |
echo "del $p.svp" >> "$DOSEMUDIR/install.bat"
|
321 |
mateuszvis |
174 |
done
|
322 |
mateuszvis |
175 |
echo 'ECHO my_ip = dhcp >> %DOSDIR%\CFG\WATTCP.CFG' >> "$DOSEMUDIR/install.bat"
|
|
|
176 |
echo 'del pkg.exe' >> "$DOSEMUDIR/install.bat"
|
326 |
mateuszvis |
177 |
echo 'ECHO SHELLHIGH=C:\SVARDOS\BIN\COMMAND.COM /P >> C:\CONFIG.SYS' >> "$DOSEMUDIR/install.bat"
|
322 |
mateuszvis |
178 |
echo 'ECHO.' >> "$DOSEMUDIR/install.bat"
|
|
|
179 |
echo 'ECHO -------------------------' >> "$DOSEMUDIR/install.bat"
|
|
|
180 |
echo 'ECHO SVARDOS SETUP COMPLETED ' >> "$DOSEMUDIR/install.bat"
|
|
|
181 |
echo 'ECHO -------------------------' >> "$DOSEMUDIR/install.bat"
|
|
|
182 |
echo 'ECHO.' >> "$DOSEMUDIR/install.bat"
|
700 |
mateusz.vi |
183 |
unzip -Cj packages/kernel.svp bin/kernel.sys -d "$DOSEMUDIR/"
|
|
|
184 |
unzip -Cj packages/command.svp bin/command.com -d "$DOSEMUDIR/"
|
|
|
185 |
unzip -Cj packages/pkg.svp bin/pkg.exe -d "$DOSEMUDIR/"
|
322 |
mateuszvis |
186 |
# CONFIG.SYS
|
|
|
187 |
echo 'FILES=50' >> "$DOSEMUDIR/config.sys"
|
|
|
188 |
echo 'DOS=HIGH,UMB' >> "$DOSEMUDIR/config.sys"
|
326 |
mateuszvis |
189 |
echo 'DOSDATA=UMB' >> "$DOSEMUDIR/config.sys"
|
325 |
mateuszvis |
190 |
echo 'DEVICE=D:\dosemu\emufs.sys' >> "$DOSEMUDIR/config.sys"
|
322 |
mateuszvis |
191 |
echo 'DEVICE=D:\dosemu\umb.sys' >> "$DOSEMUDIR/config.sys"
|
325 |
mateuszvis |
192 |
echo 'DEVICEHIGH=D:\dosemu\ems.sys' >> "$DOSEMUDIR/config.sys"
|
322 |
mateuszvis |
193 |
echo 'INSTALL=D:\dosemu\emufs.com' >> "$DOSEMUDIR/config.sys"
|
|
|
194 |
# AUTOEXEC.BAT
|
321 |
mateuszvis |
195 |
echo "@ECHO OFF" >> "$DOSEMUDIR/autoexec.bat"
|
322 |
mateuszvis |
196 |
echo 'SET DOSDIR=C:\SVARDOS' >> "$DOSEMUDIR/autoexec.bat"
|
|
|
197 |
echo 'SET WATTCP.CFG=%DOSDIR%\CFG' >> "$DOSEMUDIR/autoexec.bat"
|
|
|
198 |
echo 'SET DIRCMD=/p/ogne' >> "$DOSEMUDIR/autoexec.bat"
|
624 |
mateuszvis |
199 |
echo 'SET TEMP=C:\TEMP' >> "$DOSEMUDIR/autoexec.bat"
|
322 |
mateuszvis |
200 |
echo 'PATH %DOSDIR%\BIN' >> "$DOSEMUDIR/autoexec.bat"
|
|
|
201 |
echo "" >> "$DOSEMUDIR/autoexec.bat"
|
|
|
202 |
echo "REM *** this is a one-time setup script used only during first initialization ***" >> "$DOSEMUDIR/autoexec.bat"
|
|
|
203 |
echo 'IF EXIST INSTALL.BAT CALL INSTALL.BAT' >> "$DOSEMUDIR/autoexec.bat"
|
|
|
204 |
echo 'IF EXIST INSTALL.BAT DEL INSTALL.BAT' >> "$DOSEMUDIR/autoexec.bat"
|
|
|
205 |
echo "" >> "$DOSEMUDIR/autoexec.bat"
|
321 |
mateuszvis |
206 |
echo "ECHO." >> "$DOSEMUDIR/autoexec.bat"
|
|
|
207 |
echo "ECHO Welcome to SvarDOS (powered by DOSEMU)! Type HELP if you are lost." >> "$DOSEMUDIR/autoexec.bat"
|
|
|
208 |
echo "ECHO." >> "$DOSEMUDIR/autoexec.bat"
|
|
|
209 |
rm -f "$PUBDIR/svardos-dosemu.zip"
|
643 |
mateusz.vi |
210 |
zip -rm9jk "$PUBDIR/svardos-$CURDATE-dosemu.zip" "$DOSEMUDIR"
|
321 |
mateuszvis |
211 |
rmdir "$DOSEMUDIR"
|
|
|
212 |
|
316 |
mateuszvis |
213 |
# prepare the USB bootable image
|
|
|
214 |
USBIMG=$PUBDIR/svardos-usb.img
|
|
|
215 |
cp files/boot-svardos.img $USBIMG
|
|
|
216 |
mcopy -sQm -i "$USBIMG@@32256" "$FLOPROOT/"* ::/
|
|
|
217 |
for p in $ALLPKGS ; do
|
700 |
mateusz.vi |
218 |
mcopy -mi "$USBIMG@@32256" "$CDROOT/$p.svp" ::/
|
316 |
mateuszvis |
219 |
done
|
|
|
220 |
|
|
|
221 |
# compress the USB image
|
321 |
mateuszvis |
222 |
rm -f "$PUBDIR/svardos-usb.zip"
|
643 |
mateusz.vi |
223 |
zip -mj9 "$PUBDIR/svardos-$CURDATE-usb.zip" "$USBIMG"
|
316 |
mateuszvis |
224 |
|
|
|
225 |
# prepare the USB-ZIP bootable image
|
|
|
226 |
#USBZIPIMG=$PUBDIR/svardos-usbzip.img
|
|
|
227 |
#cat files/usb-zip.mbr "$PUBDIR/svardos-zip100.img" > $USBZIPIMG
|
|
|
228 |
|
643 |
mateusz.vi |
229 |
CDISO="$PUBDIR/svardos-$CURDATE-cd.iso"
|
|
|
230 |
CDZIP="$PUBDIR/svardos-$CURDATE-cd.zip"
|
194 |
mateuszvis |
231 |
|
204 |
mateuszvis |
232 |
# delete previous (if any) iso
|
148 |
mv_fox |
233 |
echo "cleaning up old versions..."
|
204 |
mateuszvis |
234 |
rm -f "$CDISO" "$CDZIP"
|
25 |
mv_fox |
235 |
|
279 |
mateuszvis |
236 |
$GENISOIMAGE -input-charset cp437 -b boot.img -iso-level 1 -f -V SVARDOS -o "$CDISO" "$CDROOT/boot.img"
|
2 |
mv_fox |
237 |
|
204 |
mateuszvis |
238 |
# compress the ISO
|
|
|
239 |
zip -mj9 "$CDZIP" "$CDISO"
|
|
|
240 |
|
192 |
mateuszvis |
241 |
# cleanup temporary things
|
194 |
mateuszvis |
242 |
if [ "x$1" != "xnoclean" ] ; then
|
|
|
243 |
rm -rf "$CDROOT" "$FLOPROOT"
|
|
|
244 |
fi
|
189 |
mateuszvis |
245 |
|
11 |
mv_fox |
246 |
cd "$origdir"
|
|
|
247 |
|
180 |
mateuszvis |
248 |
#cd svnlschk
|
|
|
249 |
#./webgen.sh
|
|
|
250 |
#cd ..
|
165 |
mv_fox |
251 |
|
180 |
mateuszvis |
252 |
echo "ALL DONE!"
|
16 |
mv_fox |
253 |
|
2 |
mv_fox |
254 |
exit 0
|