Subversion Repositories SvarDOS

Rev

Rev 1671 | Rev 1750 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1671 Rev 1698
1
#!/bin/bash
1
#!/bin/bash
2
#
2
#
3
# SvarDOS build script
3
# SvarDOS build script
4
# http://svardos.org
4
# http://svardos.org
-
 
5
#
5
# Copyright (C) 2016-2024 Mateusz Viste
6
# Copyright (C) 2016-2024 Mateusz Viste
6
#
7
#
7
# This script builds floppy and CD images. It should be executed each time that
8
# This script builds floppy and CD images. It should be executed each time that
8
# a CORE package has been modified or the build script changed. This is usually
9
# a CORE package has been modified or the build script changed. This is usually
9
# done by the cron.sh script, itself called by a cron job.
10
# done by the cron.sh script, itself called by a cron job.
10
#
11
#
11
# usage: ./build.sh outputdir buildver [noclean] > logfile
12
# usage: ./build.sh outputdir buildver [noclean] > logfile
12
#
13
#
13
 
14
 
14
### parameters block starts here ############################################
15
### parameters block starts here ############################################
15
 
16
 
16
REPOROOT=`realpath ./packages`
17
REPOROOT=`realpath ./packages`
17
REPOROOTCORE=`realpath ./packages-core`
18
REPOROOTCORE=`realpath ./packages-core`
18
CUSTFILES=`realpath ./files`
19
CUSTFILES=`realpath ./files`
19
 
20
 
20
GENISOIMAGE=''    # can be mkisofs, genisoimage or empty for autodetection
21
GENISOIMAGE=''    # can be mkisofs, genisoimage or empty for autodetection
21
 
22
 
22
### parameters block ends here ##############################################
23
### parameters block ends here ##############################################
23
 
24
 
24
# look for mandatory output dir and build id
25
# look for mandatory output dir and build id
25
if [ "x$2" == "x" ] ; then
26
if [ "x$2" == "x" ] ; then
26
  echo "usage: build.sh outputdir buildver [noclean]"
27
  echo "usage: build.sh outputdir buildver [noclean]"
27
  exit 1
28
  exit 1
28
fi
29
fi
29
CURDATE="$2"
30
CURDATE="$2"
30
PUBDIR=`realpath "$1"`
31
PUBDIR=`realpath "$1"`
31
 
32
 
32
CDROOT="$PUBDIR/tmp_cdroot.build"
33
CDROOT="$PUBDIR/tmp_cdroot.build"
33
FLOPROOT="$PUBDIR/tmp_floproot.build"
34
FLOPROOT="$PUBDIR/tmp_floproot.build"
34
 
35
 
35
 
36
 
36
# auto-detect whether to use mkisofs or genisoimage
37
# auto-detect whether to use mkisofs or genisoimage
37
 
38
 
38
if [ "x$GENISOIMAGE" == "x" ] ; then
39
if [ "x$GENISOIMAGE" == "x" ] ; then
39
mkisofs --help 2> /dev/null
40
mkisofs --help 2> /dev/null
40
if [ $? -eq 0 ] ; then
41
if [ $? -eq 0 ] ; then
41
  GENISOIMAGE='mkisofs'
42
  GENISOIMAGE='mkisofs'
42
fi
43
fi
43
fi
44
fi
44
 
45
 
45
if [ "x$GENISOIMAGE" == "x" ] ; then
46
if [ "x$GENISOIMAGE" == "x" ] ; then
46
genisoimage --help 2> /dev/null
47
genisoimage --help 2> /dev/null
47
if [ $? -eq 0 ] ; then
48
if [ $? -eq 0 ] ; then
48
  GENISOIMAGE='genisoimage'
49
  GENISOIMAGE='genisoimage'
49
fi
50
fi
50
fi
51
fi
51
 
52
 
52
if [ "x$GENISOIMAGE" == "x" ] ; then
53
if [ "x$GENISOIMAGE" == "x" ] ; then
53
  echo "ERROR: neither genisoimage nor mkisofs was found on this system"
54
  echo "ERROR: neither genisoimage nor mkisofs was found on this system"
54
  exit 1
55
  exit 1
55
fi
56
fi
56
 
57
 
57
 
58
 
58
# abort if anything fails
59
# abort if anything fails
59
set -e
60
set -e
60
 
61
 
61
 
62
 
62
# list of packages to be part of CORE (always installed)
63
# list of packages to be part of CORE (always installed)
63
COREPKGS=`ls -1 'packages-core' | grep -o '^[a-z]*'`
64
COREPKGS=`ls -1 'packages-core' | grep -o '^[a-z]*'`
64
 
65
 
65
# list of packages to be part of EXTRA (only sometimes installed, typically drivers)
66
# list of packages to be part of EXTRA (only sometimes installed, typically drivers)
66
EXTRAPKGS="pcntpk udvd2"
67
EXTRAPKGS="pcntpk udvd2"
67
 
68
 
68
# all packages
69
# all packages
69
ALLPKGS="$COREPKGS $EXTRAPKGS"
70
ALLPKGS="$COREPKGS $EXTRAPKGS"
70
 
71
 
71
 
72
 
72
# prepares image for floppy sets of:
73
# prepares image for floppy sets of:
73
# $1 cylinders
74
# $1 cylinders
74
# $2 heads (sides)
75
# $2 heads (sides)
75
# $3 sectors per track
76
# $3 sectors per track
76
# $4 size
77
# $4 size
77
# $5 working directory (for temporary files etc)
78
# $5 working directory (for temporary files etc)
78
# $6 name of the set (eg. "1440k" or "1440k-EN")
79
# $6 name of the set (eg. "1440k" or "1440k-EN")
79
# $7 where to put a copy of the image (optional)
80
# $7 where to put a copy of the image (optional)
80
function prep_flop {
81
function prep_flop {
81
  WORKDIR="$5/$6"
82
  WORKDIR="$5/$6"
82
  mkdir "$WORKDIR"
83
  mkdir "$WORKDIR"
83
  mformat -C -t $1 -h $2 -s $3 -v $CURDATE -B "$CUSTFILES/floppy.mbr" -i "$WORKDIR/disk1.img"
84
  mformat -C -t $1 -h $2 -s $3 -v $CURDATE -B "$CUSTFILES/floppy.mbr" -i "$WORKDIR/disk1.img"
84
  mcopy -sQm -i "$WORKDIR/disk1.img" "$FLOPROOT/"* ::/
85
  mcopy -sQm -i "$WORKDIR/disk1.img" "$FLOPROOT/"* ::/
85
 
86
 
86
  # now populate the floppies
87
  # now populate the floppies
87
  curdisk=1
88
  curdisk=1
88
  LIST=$ALLPKGS
89
  LIST=$ALLPKGS
89
 
90
 
90
  while [ ! -z "$LIST" ] ; do
91
  while [ ! -z "$LIST" ] ; do
91
 
92
 
92
    unset PENDING
93
    unset PENDING
93
    for p in $LIST ; do
94
    for p in $LIST ; do
94
      # if copy fails, then probably the floppy is full - try other packages
95
      # if copy fails, then probably the floppy is full - try other packages
95
      # but remember all that fails so they will be retried on a new floppy
96
      # but remember all that fails so they will be retried on a new floppy
96
      if ! mcopy -mi "$WORKDIR/disk$curdisk.img" "$CDROOT/$p.svp" ::/ ; then
97
      if ! mcopy -mi "$WORKDIR/disk$curdisk.img" "$CDROOT/$p.svp" ::/ ; then
97
        PENDING="$PENDING $p"
98
        PENDING="$PENDING $p"
98
      fi
99
      fi
99
    done
100
    done
100
 
101
 
101
    LIST="$PENDING"
102
    LIST="$PENDING"
102
    # if there are any pending items, then create a new floppy and try pushing pending packages to it
103
    # if there are any pending items, then create a new floppy and try pushing pending packages to it
103
    if [ ! -z "$PENDING" ] ; then
104
    if [ ! -z "$PENDING" ] ; then
104
      curdisk=$((curdisk+1))
105
      curdisk=$((curdisk+1))
105
      mformat -C -t $1 -h $2 -s $3 -v SVARDOS -i "$WORKDIR/disk$curdisk.img"
106
      mformat -C -t $1 -h $2 -s $3 -v SVARDOS -i "$WORKDIR/disk$curdisk.img"
106
    fi
107
    fi
107
 
108
 
108
  done
109
  done
109
 
110
 
110
  # add a short readme
111
  # add a short readme
111
  echo "This directory contains a set of $curdisk floppy images of the SvarDOS distribution in the $4 KB floppy format." > "$WORKDIR/readme.txt"
112
  echo "This directory contains a set of $curdisk floppy images of the SvarDOS distribution in the $4 KB floppy format." > "$WORKDIR/readme.txt"
112
  echo "" >> "$WORKDIR/readme.txt"
113
  echo "" >> "$WORKDIR/readme.txt"
113
  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." >> "$WORKDIR/readme.txt"
114
  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." >> "$WORKDIR/readme.txt"
114
  echo "" >> "$WORKDIR/readme.txt"
115
  echo "" >> "$WORKDIR/readme.txt"
115
  echo "Latest SvarDOS version is available on the project's homepage: http://svardos.org" >> "$WORKDIR/readme.txt"
116
  echo "Latest SvarDOS version is available on the project's homepage: http://svardos.org" >> "$WORKDIR/readme.txt"
116
 
117
 
117
  unix2dos "$WORKDIR/readme.txt"
118
  unix2dos "$WORKDIR/readme.txt"
118
 
119
 
119
  # make a copy of the image, if requested
120
  # make a copy of the image, if requested
120
  if [ "x$7" != "x" ] ; then
121
  if [ "x$7" != "x" ] ; then
121
    cp "$WORKDIR/disk1.img" $7
122
    cp "$WORKDIR/disk1.img" $7
122
  fi
123
  fi
123
 
124
 
124
  # zip the images (and remove them at the same time)
125
  # zip the images (and remove them at the same time)
125
  zip -9 -rmj "$PUBDIR/svardos-$CURDATE-floppy-$6.zip" "$WORKDIR"/*
126
  zip -9 -rmj "$PUBDIR/svardos-$CURDATE-floppy-$6.zip" "$WORKDIR"/*
126
 
127
 
127
  # clean up
128
  # clean up
128
  rmdir "$WORKDIR"
129
  rmdir "$WORKDIR"
129
}
130
}
130
 
131
 
131
 
132
 
132
### actual code flow starts here ############################################
133
### actual code flow starts here ############################################
133
 
134
 
134
# remember where I am, so I can get back here once all is done
135
# remember where I am, so I can get back here once all is done
135
origdir=`pwd`
136
origdir=`pwd`
136
 
137
 
137
echo "###############################################################################"
138
echo "###############################################################################"
138
echo " STARTING BUILD $CURDATE"
139
echo " STARTING BUILD $CURDATE"
139
echo "###############################################################################"
140
echo "###############################################################################"
140
echo "dest dir: $PUBDIR"
141
echo "dest dir: $PUBDIR"
141
echo "current time is `date` and it's a beautiful day somewhere in the world"
142
echo "current time is `date` and it's a beautiful day somewhere in the world"
142
echo
143
echo
143
 
144
 
144
mkdir "$CDROOT"
145
mkdir "$CDROOT"
145
mkdir "$FLOPROOT"
146
mkdir "$FLOPROOT"
146
 
147
 
147
# add CORE packages to CDROOT + create the list of packages on floppy
148
# add CORE packages to CDROOT + create the list of packages on floppy
148
for pkg in $COREPKGS ; do
149
for pkg in $COREPKGS ; do
149
  cp "$REPOROOTCORE/$pkg.svp" "$CDROOT/"
150
  cp "$REPOROOTCORE/$pkg.svp" "$CDROOT/"
150
  echo "$pkg" >> "$FLOPROOT/install.lst"
151
  echo "$pkg" >> "$FLOPROOT/install.lst"
151
done
152
done
152
 
153
 
153
# add EXTRA packages to CDROOT (but not in the list of packages to install)
154
# add EXTRA packages to CDROOT (but not in the list of packages to install)
154
for pkg in $EXTRAPKGS ; do
155
for pkg in $EXTRAPKGS ; do
155
  cp "$REPOROOT/$pkg.svp" "$CDROOT/"
156
  cp "$REPOROOT/$pkg.svp" "$CDROOT/"
156
done
157
done
157
 
158
 
158
 
159
 
159
echo
160
echo
160
echo "### Populating the floppy root at $FLOPROOT"
161
echo "### Populating the floppy root at $FLOPROOT"
161
echo
162
echo
162
 
163
 
163
# prepare the content of the boot (install) floppy, unzipping everything
164
# prepare the content of the boot (install) floppy, unzipping everything
164
# in lowercase (-L) to avoid any case mismatching later in the build process
165
# in lowercase (-L) to avoid any case mismatching later in the build process
165
cp -r "$CUSTFILES/floppy/"* "$FLOPROOT/"
166
cp -r "$CUSTFILES/floppy/"* "$FLOPROOT/"
166
unzip -CLj "$REPOROOTCORE/cpidos.svp" 'cpi/ega*.cpx' -d "$FLOPROOT/"
167
unzip -CLj "$REPOROOTCORE/cpidos.svp" 'cpi/ega*.cpx' -d "$FLOPROOT/"
167
unzip -CLj "$REPOROOTCORE/svarcom.svp" command.com -d "$FLOPROOT/"
168
unzip -CLj "$REPOROOTCORE/svarcom.svp" command.com -d "$FLOPROOT/"
168
unzip -CLj "$REPOROOTCORE/display.svp" bin/display.exe -d "$FLOPROOT/"
169
unzip -CLj "$REPOROOTCORE/display.svp" bin/display.exe -d "$FLOPROOT/"
169
unzip -CLj "$REPOROOTCORE/fdapm.svp" bin/fdapm.com -d "$FLOPROOT/"
170
unzip -CLj "$REPOROOTCORE/fdapm.svp" bin/fdapm.com -d "$FLOPROOT/"
170
unzip -CLj "$REPOROOTCORE/fdisk.svp" bin/fdisk.exe -d "$FLOPROOT/"
171
unzip -CLj "$REPOROOTCORE/fdisk.svp" bin/fdisk.exe -d "$FLOPROOT/"
171
unzip -CLj "$REPOROOTCORE/format.svp" bin/format.exe -d "$FLOPROOT/"
172
unzip -CLj "$REPOROOTCORE/format.svp" bin/format.exe -d "$FLOPROOT/"
172
unzip -CLj "$REPOROOTCORE/kernel.svp" bin/kernel.sys bin/sys.com -d "$FLOPROOT/"
173
unzip -CLj "$REPOROOTCORE/kernel.svp" bin/kernel.sys bin/sys.com -d "$FLOPROOT/"
173
unzip -CLj "$REPOROOTCORE/mem.svp" bin/mem.exe -d "$FLOPROOT/"
174
unzip -CLj "$REPOROOTCORE/mem.svp" bin/mem.exe -d "$FLOPROOT/"
174
unzip -CLj "$REPOROOTCORE/mode.svp" bin/mode.com -d "$FLOPROOT/"
175
unzip -CLj "$REPOROOTCORE/mode.svp" bin/mode.com -d "$FLOPROOT/"
175
unzip -CLj "$REPOROOTCORE/more.svp" bin/more.com -d "$FLOPROOT/"
176
unzip -CLj "$REPOROOTCORE/more.svp" bin/more.com -d "$FLOPROOT/"
176
unzip -CLj "$REPOROOTCORE/pkg.svp" bin/pkg.exe -d "$FLOPROOT/"
177
unzip -CLj "$REPOROOTCORE/pkg.svp" bin/pkg.exe -d "$FLOPROOT/"
177
unzip -CLj "$REPOROOTCORE/sved.svp" bin/sved.com -d "$FLOPROOT/"
178
unzip -CLj "$REPOROOTCORE/sved.svp" bin/sved.com -d "$FLOPROOT/"
178
 
179
 
179
# generate a simple autoexec.bat file
180
# generate a simple autoexec.bat file
180
echo '@ECHO OFF' > "$FLOPROOT/autoexec.bat"
181
echo '@ECHO OFF' > "$FLOPROOT/autoexec.bat"
181
echo '' >> "$FLOPROOT/autoexec.bat"
182
echo '' >> "$FLOPROOT/autoexec.bat"
182
echo 'REM Load DISPLAY driver if present' >> "$FLOPROOT/autoexec.bat"
183
echo 'REM Load DISPLAY driver if present' >> "$FLOPROOT/autoexec.bat"
183
echo 'IF EXIST DISPLAY.EXE DISPLAY CON=(EGA,,1)' >> "$FLOPROOT/autoexec.bat"
184
echo 'IF EXIST DISPLAY.EXE DISPLAY CON=(EGA,,1)' >> "$FLOPROOT/autoexec.bat"
184
echo '' >> "$FLOPROOT/autoexec.bat"
185
echo '' >> "$FLOPROOT/autoexec.bat"
185
echo 'FDAPM APMDOS' >> "$FLOPROOT/autoexec.bat"
186
echo 'FDAPM APMDOS' >> "$FLOPROOT/autoexec.bat"
186
echo '' >> "$FLOPROOT/autoexec.bat"
187
echo '' >> "$FLOPROOT/autoexec.bat"
187
echo 'ECHO.' >> "$FLOPROOT/autoexec.bat"
188
echo 'ECHO.' >> "$FLOPROOT/autoexec.bat"
188
echo 'ECHO  ********************' >> "$FLOPROOT/autoexec.bat"
189
echo 'ECHO  ********************' >> "$FLOPROOT/autoexec.bat"
189
echo 'ECHO   WELCOME TO SVARDOS' >> "$FLOPROOT/autoexec.bat"
190
echo 'ECHO   WELCOME TO SVARDOS' >> "$FLOPROOT/autoexec.bat"
190
echo 'ECHO  ********************' >> "$FLOPROOT/autoexec.bat"
191
echo 'ECHO  ********************' >> "$FLOPROOT/autoexec.bat"
191
echo "ECHO  build: $CURDATE" >> "$FLOPROOT/autoexec.bat"
192
echo "ECHO  build: $CURDATE" >> "$FLOPROOT/autoexec.bat"
192
echo 'ECHO.' >> "$FLOPROOT/autoexec.bat"
193
echo 'ECHO.' >> "$FLOPROOT/autoexec.bat"
193
echo '' >> "$FLOPROOT/autoexec.bat"
194
echo '' >> "$FLOPROOT/autoexec.bat"
194
echo "INSTALL" >> "$FLOPROOT/autoexec.bat"
195
echo "INSTALL" >> "$FLOPROOT/autoexec.bat"
195
unix2dos "$FLOPROOT/autoexec.bat"
196
unix2dos "$FLOPROOT/autoexec.bat"
196
 
197
 
197
 
198
 
198
echo
199
echo
199
echo "### Computing the USB image"
200
echo "### Computing the USB image"
200
echo
201
echo
201
 
202
 
202
# prepare the USB bootable image
203
# prepare the USB bootable image
203
USBIMG=$PUBDIR/svardos-usb.img
204
USBIMG=$PUBDIR/svardos-usb.img
204
cp files/boot-svardos.img $USBIMG
205
cp files/boot-svardos.img $USBIMG
205
mcopy -sQm -i "$USBIMG@@32256" "$FLOPROOT/"* ::/
206
mcopy -sQm -i "$USBIMG@@32256" "$FLOPROOT/"* ::/
206
for p in $ALLPKGS ; do
207
for p in $ALLPKGS ; do
207
  mcopy -mi "$USBIMG@@32256" "$CDROOT/$p.svp" ::/
208
  mcopy -mi "$USBIMG@@32256" "$CDROOT/$p.svp" ::/
208
done
209
done
209
 
210
 
210
# compress the USB image
211
# compress the USB image
211
zip -mj9 "$PUBDIR/svardos-$CURDATE-usb.zip" "$USBIMG"
212
zip -mj9 "$PUBDIR/svardos-$CURDATE-usb.zip" "$USBIMG"
212
 
213
 
213
 
214
 
214
echo
215
echo
215
echo "### Creating floppy images"
216
echo "### Creating floppy images"
216
echo
217
echo
217
echo "You might notice a lot of DISK FULL warnings below. Do not worry, these"
218
echo "You might notice a lot of DISK FULL warnings below. Do not worry, these"
218
echo "are expected and are perfectly normal. It is a side effect of trying to"
219
echo "are expected and are perfectly normal. It is a side effect of trying to"
219
echo "fit as many packages as possible on the floppy sets."
220
echo "fit as many packages as possible on the floppy sets."
220
echo
221
echo
221
 
222
 
222
# build the boot (CD) floppy image
223
# build the boot (CD) floppy image
223
export MTOOLS_NO_VFAT=1
224
export MTOOLS_NO_VFAT=1
224
 
225
 
225
# prepare images for floppies in different sizes (args are C H S SIZE)
226
# prepare images for floppies in different sizes (args are C H S SIZE)
226
prep_flop 80 2 36 2880 "$PUBDIR" "2.88M" "$CDROOT/boot.img"
227
prep_flop 80 2 36 2880 "$PUBDIR" "2.88M" "$CDROOT/boot.img"
227
prep_flop 80 2 18 1440 "$PUBDIR" "1.44M"
228
prep_flop 80 2 18 1440 "$PUBDIR" "1.44M"
228
prep_flop 80 2 15 1200 "$PUBDIR" "1.2M"
229
prep_flop 80 2 15 1200 "$PUBDIR" "1.2M"
229
prep_flop 80 2  9  720 "$PUBDIR" "720K"
230
prep_flop 80 2  9  720 "$PUBDIR" "720K"
230
 
231
 
231
 
232
 
232
echo
233
echo
233
echo "### Computing DOSEMU.zip"
234
echo "### Computing DOSEMU.zip"
234
echo
235
echo
235
 
236
 
236
# prepare the DOSEMU boot zip
237
# prepare the DOSEMU boot zip
237
DOSEMUDIR="$PUBDIR/tmp_dosemu-prep-files.build"
238
DOSEMUDIR="$PUBDIR/tmp_dosemu-prep-files.build"
238
mkdir "$DOSEMUDIR"
239
mkdir "$DOSEMUDIR"
239
# INSTALL.BAT
240
# INSTALL.BAT
240
echo 'IF NOT EXIST C:\TEMP\NUL MKDIR C:\TEMP' >> "$DOSEMUDIR/install.bat"
241
echo 'IF NOT EXIST C:\TEMP\NUL MKDIR C:\TEMP' >> "$DOSEMUDIR/install.bat"
241
echo 'mkdir %DOSDIR%' >> "$DOSEMUDIR/install.bat"
242
echo 'mkdir %DOSDIR%' >> "$DOSEMUDIR/install.bat"
242
echo 'mkdir %DOSDIR%\cfg' >> "$DOSEMUDIR/install.bat"
243
echo 'mkdir %DOSDIR%\cfg' >> "$DOSEMUDIR/install.bat"
243
echo 'ECHO # pkg config file - specifies locations where packages should be installed >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
244
echo 'ECHO # pkg config file - specifies locations where packages should be installed >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
244
echo 'ECHO DIR BIN %DOSDIR% >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
245
echo 'ECHO DIR BIN %DOSDIR% >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
245
echo 'ECHO DIR PROGS C:\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
246
echo 'ECHO DIR PROGS C:\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
246
echo 'ECHO DIR GAMES C:\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
247
echo 'ECHO DIR GAMES C:\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
247
echo 'ECHO DIR DRIVERS C:\DRIVERS\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
248
echo 'ECHO DIR DRIVERS C:\DRIVERS\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
248
echo 'ECHO DIR DEVEL C:\DEVEL\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
249
echo 'ECHO DIR DEVEL C:\DEVEL\ >> %DOSDIR%\cfg\pkg.cfg' >> "$DOSEMUDIR/install.bat"
249
for p in $COREPKGS ; do
250
for p in $COREPKGS ; do
250
  cp "$CDROOT/$p.svp" "$DOSEMUDIR/"
251
  cp "$CDROOT/$p.svp" "$DOSEMUDIR/"
251
  echo "pkg install $p.svp" >> "$DOSEMUDIR/install.bat"
252
  echo "pkg install $p.svp" >> "$DOSEMUDIR/install.bat"
252
  echo "del $p.svp" >> "$DOSEMUDIR/install.bat"
253
  echo "del $p.svp" >> "$DOSEMUDIR/install.bat"
253
done
254
done
254
echo 'ECHO my_ip = dhcp >> %DOSDIR%\CFG\WATTCP.CFG' >> "$DOSEMUDIR/install.bat"
255
echo 'ECHO my_ip = dhcp >> %DOSDIR%\CFG\WATTCP.CFG' >> "$DOSEMUDIR/install.bat"
255
echo 'del pkg.exe' >> "$DOSEMUDIR/install.bat"
256
echo 'del pkg.exe' >> "$DOSEMUDIR/install.bat"
256
echo 'DEL C:\CONFIG.SYS' >> "$DOSEMUDIR/install.bat"
257
echo 'DEL C:\CONFIG.SYS' >> "$DOSEMUDIR/install.bat"
257
echo 'COPY C:\CONFIG.NEW C:\CONFIG.SYS' >> "$DOSEMUDIR/install.bat"
258
echo 'COPY C:\CONFIG.NEW C:\CONFIG.SYS' >> "$DOSEMUDIR/install.bat"
258
echo 'DEL C:\CONFIG.NEW' >> "$DOSEMUDIR/install.bat"
259
echo 'DEL C:\CONFIG.NEW' >> "$DOSEMUDIR/install.bat"
259
echo 'SET COMSPEC=C:\COMMAND.COM' >> "$DOSEMUDIR/install.bat"
260
echo 'SET COMSPEC=C:\COMMAND.COM' >> "$DOSEMUDIR/install.bat"
260
echo 'DEL C:\CMD.COM' >> "$DOSEMUDIR/install.bat"
261
echo 'DEL C:\CMD.COM' >> "$DOSEMUDIR/install.bat"
261
echo 'ECHO.' >> "$DOSEMUDIR/install.bat"
262
echo 'ECHO.' >> "$DOSEMUDIR/install.bat"
262
echo 'ECHO -------------------------' >> "$DOSEMUDIR/install.bat"
263
echo 'ECHO -------------------------' >> "$DOSEMUDIR/install.bat"
263
echo 'ECHO  SVARDOS SETUP COMPLETED' >> "$DOSEMUDIR/install.bat"
264
echo 'ECHO  SVARDOS SETUP COMPLETED' >> "$DOSEMUDIR/install.bat"
264
echo 'ECHO   PLEASE RESTART DOSEMU' >> "$DOSEMUDIR/install.bat"
265
echo 'ECHO   PLEASE RESTART DOSEMU' >> "$DOSEMUDIR/install.bat"
265
echo 'ECHO -------------------------' >> "$DOSEMUDIR/install.bat"
266
echo 'ECHO -------------------------' >> "$DOSEMUDIR/install.bat"
266
echo 'ECHO.' >> "$DOSEMUDIR/install.bat"
267
echo 'ECHO.' >> "$DOSEMUDIR/install.bat"
267
unzip -Cj "$REPOROOTCORE/kernel.svp" bin/kernel.sys -d "$DOSEMUDIR/"
268
unzip -Cj "$REPOROOTCORE/kernel.svp" bin/kernel.sys -d "$DOSEMUDIR/"
268
unzip -CLj "$REPOROOTCORE/svarcom.svp" command.com -d "$DOSEMUDIR/"
269
unzip -CLj "$REPOROOTCORE/svarcom.svp" command.com -d "$DOSEMUDIR/"
269
mv "$DOSEMUDIR/command.com" "$DOSEMUDIR/cmd.com"
270
mv "$DOSEMUDIR/command.com" "$DOSEMUDIR/cmd.com"
270
unzip -Cj "$REPOROOTCORE/pkg.svp" bin/pkg.exe -d "$DOSEMUDIR/"
271
unzip -Cj "$REPOROOTCORE/pkg.svp" bin/pkg.exe -d "$DOSEMUDIR/"
271
# CONFIG.SYS
272
# CONFIG.SYS
272
echo 'FILES=25' >> "$DOSEMUDIR/config.sys"
273
echo 'FILES=25' >> "$DOSEMUDIR/config.sys"
273
echo 'DOS=HIGH,UMB' >> "$DOSEMUDIR/config.sys"
274
echo 'DOS=HIGH,UMB' >> "$DOSEMUDIR/config.sys"
274
echo 'DOSDATA=UMB' >> "$DOSEMUDIR/config.sys"
275
echo 'DOSDATA=UMB' >> "$DOSEMUDIR/config.sys"
275
echo 'DEVICE=D:\dosemu\emufs.sys' >> "$DOSEMUDIR/config.sys"
276
echo 'DEVICE=D:\dosemu\emufs.sys' >> "$DOSEMUDIR/config.sys"
276
echo 'DEVICE=D:\dosemu\umb.sys' >> "$DOSEMUDIR/config.sys"
277
echo 'DEVICE=D:\dosemu\umb.sys' >> "$DOSEMUDIR/config.sys"
277
echo 'DEVICEHIGH=D:\dosemu\ems.sys' >> "$DOSEMUDIR/config.sys"
278
echo 'DEVICEHIGH=D:\dosemu\ems.sys' >> "$DOSEMUDIR/config.sys"
278
echo 'INSTALL=D:\dosemu\emufs.com' >> "$DOSEMUDIR/config.sys"
279
echo 'INSTALL=D:\dosemu\emufs.com' >> "$DOSEMUDIR/config.sys"
279
cp "$DOSEMUDIR/config.sys" "$DOSEMUDIR/config.new"
280
cp "$DOSEMUDIR/config.sys" "$DOSEMUDIR/config.new"
280
echo 'SHELL=C:\CMD.COM /P' >> "$DOSEMUDIR/config.sys"
281
echo 'SHELL=C:\CMD.COM /P' >> "$DOSEMUDIR/config.sys"
281
echo 'SHELL=C:\COMMAND.COM /P' >> "$DOSEMUDIR/config.new"
282
echo 'SHELL=C:\COMMAND.COM /P' >> "$DOSEMUDIR/config.new"
282
# AUTOEXEC.BAT
283
# AUTOEXEC.BAT
283
echo "@ECHO OFF" >> "$DOSEMUDIR/autoexec.bat"
284
echo "@ECHO OFF" >> "$DOSEMUDIR/autoexec.bat"
284
echo 'SET DOSDIR=C:\SVARDOS' >> "$DOSEMUDIR/autoexec.bat"
285
echo 'SET DOSDIR=C:\SVARDOS' >> "$DOSEMUDIR/autoexec.bat"
285
echo 'SET WATTCP.CFG=%DOSDIR%\CFG' >> "$DOSEMUDIR/autoexec.bat"
286
echo 'SET WATTCP.CFG=%DOSDIR%\CFG' >> "$DOSEMUDIR/autoexec.bat"
286
echo 'SET DIRCMD=/p/ogne' >> "$DOSEMUDIR/autoexec.bat"
287
echo 'SET DIRCMD=/p/ogne' >> "$DOSEMUDIR/autoexec.bat"
287
echo 'SET TEMP=C:\TEMP' >> "$DOSEMUDIR/autoexec.bat"
288
echo 'SET TEMP=C:\TEMP' >> "$DOSEMUDIR/autoexec.bat"
288
echo 'PATH %DOSDIR%' >> "$DOSEMUDIR/autoexec.bat"
289
echo 'PATH %DOSDIR%' >> "$DOSEMUDIR/autoexec.bat"
289
echo "" >> "$DOSEMUDIR/autoexec.bat"
290
echo "" >> "$DOSEMUDIR/autoexec.bat"
290
echo 'IF NOT EXIST INSTALL.BAT GOTO NORMBOOT' >> "$DOSEMUDIR/autoexec.bat"
291
echo 'IF NOT EXIST INSTALL.BAT GOTO NORMBOOT' >> "$DOSEMUDIR/autoexec.bat"
291
echo "REM *** this is a one-time setup script used only during first initialization ***" >> "$DOSEMUDIR/autoexec.bat"
292
echo "REM *** this is a one-time setup script used only during first initialization ***" >> "$DOSEMUDIR/autoexec.bat"
292
echo 'CALL INSTALL.BAT' >> "$DOSEMUDIR/autoexec.bat"
293
echo 'CALL INSTALL.BAT' >> "$DOSEMUDIR/autoexec.bat"
293
echo 'DEL INSTALL.BAT' >> "$DOSEMUDIR/autoexec.bat"
294
echo 'DEL INSTALL.BAT' >> "$DOSEMUDIR/autoexec.bat"
294
echo 'GOTO ENDOFFILE' >> "$DOSEMUDIR/autoexec.bat"
295
echo 'GOTO ENDOFFILE' >> "$DOSEMUDIR/autoexec.bat"
295
echo "" >> "$DOSEMUDIR/autoexec.bat"
296
echo "" >> "$DOSEMUDIR/autoexec.bat"
296
echo ":NORMBOOT" >> "$DOSEMUDIR/autoexec.bat"
297
echo ":NORMBOOT" >> "$DOSEMUDIR/autoexec.bat"
297
echo "ECHO." >> "$DOSEMUDIR/autoexec.bat"
298
echo "ECHO." >> "$DOSEMUDIR/autoexec.bat"
298
echo "ECHO Welcome to SvarDOS (powered by DOSEMU)! Type HELP if you are lost." >> "$DOSEMUDIR/autoexec.bat"
299
echo "ECHO Welcome to SvarDOS (powered by DOSEMU)! Type HELP if you are lost." >> "$DOSEMUDIR/autoexec.bat"
299
echo "ECHO." >> "$DOSEMUDIR/autoexec.bat"
300
echo "ECHO." >> "$DOSEMUDIR/autoexec.bat"
300
echo ":ENDOFFILE" >> "$DOSEMUDIR/autoexec.bat"
301
echo ":ENDOFFILE" >> "$DOSEMUDIR/autoexec.bat"
301
rm -f "$PUBDIR/svardos-dosemu.zip"
302
rm -f "$PUBDIR/svardos-dosemu.zip"
302
zip -rm9jk "$PUBDIR/svardos-$CURDATE-dosemu.zip" "$DOSEMUDIR"
303
zip -rm9jk "$PUBDIR/svardos-$CURDATE-dosemu.zip" "$DOSEMUDIR"
303
rmdir "$DOSEMUDIR"
304
rmdir "$DOSEMUDIR"
304
 
305
 
305
echo
306
echo
306
echo "### Generating ISO CD image"
307
echo "### Generating ISO CD image"
307
echo
308
echo
308
 
309
 
309
CDISO="$PUBDIR/svardos-$CURDATE-cd.iso"
310
CDISO="$PUBDIR/svardos-$CURDATE-cd.iso"
310
CDZIP="$PUBDIR/svardos-$CURDATE-cd.zip"
311
CDZIP="$PUBDIR/svardos-$CURDATE-cd.zip"
311
 
312
 
312
$GENISOIMAGE -input-charset cp437 -b boot.img -iso-level 1 -f -V SVARDOS -o "$CDISO" "$CDROOT/boot.img"
313
$GENISOIMAGE -input-charset cp437 -b boot.img -iso-level 1 -f -V SVARDOS -o "$CDISO" "$CDROOT/boot.img"
313
 
314
 
314
# compress the ISO
315
# compress the ISO
315
zip -mj9 "$CDZIP" "$CDISO"
316
zip -mj9 "$CDZIP" "$CDISO"
316
 
317
 
317
 
318
 
318
###############################################################################
319
###############################################################################
319
# remove internationalization files for EN-ONLY releases. This is the only    #
320
# remove internationalization files for EN-ONLY releases. This is the only    #
320
# way to build the 360K variant                                               #
321
# way to build the 360K variant                                               #
321
###############################################################################
322
###############################################################################
322
 
323
 
323
rm "$FLOPROOT"/*.cpx
324
rm "$FLOPROOT"/*.cpx
324
rm "$FLOPROOT"/install.lng
325
rm "$FLOPROOT"/install.lng
325
rm "$FLOPROOT"/display.exe
326
rm "$FLOPROOT"/display.exe
326
rm "$FLOPROOT"/mode.com
327
rm "$FLOPROOT"/mode.com
327
 
328
 
328
###############################################################################
329
###############################################################################
329
# remove NLS and LNG files from packages to build EN-ONLY builds              #
330
# remove NLS and LNG files from packages to build EN-ONLY builds              #
330
###############################################################################
331
###############################################################################
331
 
332
 
332
echo "### remove NLS and LNG files from packages to build EN-ONLY builds"
333
echo "### remove NLS and LNG files from packages to build EN-ONLY builds"
333
for p in $COREPKGS ; do
334
for p in $COREPKGS ; do
334
  # the || true bit is because zip returns a non-zero exit code on no file match
335
  # the || true bit is because zip returns a non-zero exit code on no file match
335
  zip -dq "$CDROOT/$p.svp" 'bin/*.lng' 'BIN/*.LNG' 'nls/*' 'NLS/*' || true
336
  zip -dq "$CDROOT/$p.svp" 'bin/*.lng' 'BIN/*.LNG' 'nls/*' 'NLS/*' || true
336
done
337
done
337
 
338
 
338
prep_flop 80 2 18 1440 "$PUBDIR" "1.44M-EN_ONLY"
339
prep_flop 80 2 18 1440 "$PUBDIR" "1.44M-EN_ONLY"
339
#prep_flop 80 2 21 1680 "$PUBDIR" "1.44M-DMF-EN_ONLY"
340
#prep_flop 80 2 21 1680 "$PUBDIR" "1.44M-DMF-EN_ONLY"
340
prep_flop 80 2 15 1200 "$PUBDIR" "1.2M-EN_ONLY"
341
prep_flop 80 2 15 1200 "$PUBDIR" "1.2M-EN_ONLY"
341
prep_flop 80 2  9  720 "$PUBDIR" "720K-EN_ONLY"
342
prep_flop 80 2  9  720 "$PUBDIR" "720K-EN_ONLY"
342
prep_flop 40 2  9  360 "$PUBDIR" "360K-EN_ONLY"
343
prep_flop 40 2  9  360 "$PUBDIR" "360K-EN_ONLY"
343
 
344
 
344
 
345
 
345
###############################################################################
346
###############################################################################
346
# cleanup all temporary things                                                #
347
# cleanup all temporary things                                                #
347
###############################################################################
348
###############################################################################
348
 
349
 
349
if [ "x$2" != "xnoclean" ] ; then
350
if [ "x$2" != "xnoclean" ] ; then
350
  echo
351
  echo
351
  echo "### Cleanup of temporary directories:"
352
  echo "### Cleanup of temporary directories:"
352
  echo "# $CDROOT"
353
  echo "# $CDROOT"
353
  echo "# $FLOPROOT"
354
  echo "# $FLOPROOT"
354
  echo
355
  echo
355
  rm -rf "$CDROOT" "$FLOPROOT"
356
  rm -rf "$CDROOT" "$FLOPROOT"
356
fi
357
fi
357
 
358
 
358
cd "$origdir"
359
cd "$origdir"
359
 
360
 
360
echo
361
echo
361
echo "### ALL DONE! ###"
362
echo "### ALL DONE! ###"
362
 
363
 
363
exit 0
364
exit 0
364
 
365