Subversion Repositories SvarDOS

Rev

Rev 775 | Rev 791 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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