Subversion Repositories SvarDOS

Rev

Rev 1772 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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