Merge pull request #2 from catseye/rewrite-in-bourne-shell
Rewrite in bourne shell
Chris Pressey authored 8 years ago
GitHub committed 8 years ago
0 | 0 | Funicular |
1 | 1 | ========= |
2 | ||
3 | *Version 0.4-PRE* | |
2 | 4 | |
3 | 5 | **Funicular** is a system that semi-automates the creation of development |
4 | 6 | environments on eclectic architectures. |
25 | 27 | |
26 | 28 | * i386 running NetBSD under QEMU |
27 | 29 | * i386 running FreeDOS under QEMU |
28 | * Amiga 500 (etc) running AmigaDOS under E-UAE | |
29 | 30 | * Commodore 64 with a 1541 floppy drive under VICE |
30 | 31 | * VIC-20 with a 1541 floppy drive under VICE |
31 | 32 | |
143 | 144 | Notes |
144 | 145 | ----- |
145 | 146 | |
146 | The reference implementation of the `funicular` tool is written in Lua 5.1. | |
147 | A `Funicularfile` is written in the configuration subset of Lua. | |
148 | ||
149 | `funicular` will use `toolshelf` if it is available on the host system, | |
150 | i.e. if the `TOOLSHELF` env var is set, but does not strictly require it. | |
147 | The reference implementation of the `funicular` tool is written in Bourne | |
148 | shell. A `Funicularfile` is also written in Bourne shell, but it mostly | |
149 | contains configuration, not functionality. | |
151 | 150 | |
152 | 151 | The contents of this repository are in the public domain. This, of course, |
153 | 152 | applies only to the contents of this repository, and not to the contents of |
0 | return { | |
1 | platform = AmigaDOS_1_3, | |
2 | install_image = 'Workbench_1.3.adf', | |
3 | setup_image = 'Workbench_1.3.adf', | |
4 | system_image = 'dh0', | |
5 | dist_image = 'df0.adf', | |
6 | distfiles = [[ | |
7 | http://aminet.net/dev/asm/A68kGibbs.lha | |
8 | http://aminet.net/dev/asm/FixFd.lha | |
9 | http://aminet.net/dev/c/dice-3.15.lha | |
10 | http://aminet.net/dev/c/vbcc_target_m68k-amiga.lha | |
11 | http://aminet.net/dev/lang/Draco.lha | |
12 | http://aminet.net/dev/lang/pcq12b.lzh | |
13 | http://aminet.net/dev/misc/blink67.lzh | |
14 | http://aminet.net/dev/src/ArpRequest.lha | |
15 | http://aminet.net/text/font/FastFonts.lha | |
16 | http://aminet.net/util/batch/Xicon.lha | |
17 | http://aminet.net/util/boot/CLImax.lha | |
18 | http://aminet.net/util/shell/Conman.lha | |
19 | http://www.nic.funet.fi/pub/amiga/fish/001-100/ff048/du.lha | |
20 | http://www.nic.funet.fi/pub/amiga/fish/001-100/ff069/IconType.lha | |
21 | http://www.nic.funet.fi/pub/amiga/fish/001-100/ff092/SmallLib.lha | |
22 | http://www.nic.funet.fi/pub/amiga/fish/101-200/ff113/NoIconPos.lha | |
23 | http://www.nic.funet.fi/pub/amiga/fish/201-300/ff224/Who.lha | |
24 | http://www.nic.funet.fi/pub/amiga/fish/901-1000/ff935/MuchMore.lha | |
25 | ]], | |
26 | ||
27 | distrepos_specs = [[ | |
28 | gh:catseye/Befunge-93 | |
29 | gh:catseye/Maentwrog | |
30 | gh:catseye/RUBE | |
31 | gh:catseye/minischeme | |
32 | ]], | |
33 | ||
34 | setup_script = [[ | |
35 | if [ ! -e kick.rom ]; then | |
36 | echo "Need kick.rom" | |
37 | exit 1 | |
38 | fi | |
39 | ||
40 | if [ ! -e Workbench_1.3.adf ]; then | |
41 | echo "Need Workbench_1.3.adf" | |
42 | exit 1 | |
43 | fi | |
44 | ||
45 | cp -Rp skel/* dh0/ | |
46 | ||
47 | ### extract the simple and cromulent archives ### | |
48 | ARCHIVES=" | |
49 | FastFonts | |
50 | Conman CLImax | |
51 | MuchMore Who du | |
52 | Xicon NoIconPos IconType | |
53 | SmallLib FixFd | |
54 | ArpRequest | |
55 | " | |
56 | for ARCHIVE in $ARCHIVES; do | |
57 | lha xfw=dh0/Distributions distfiles/${ARCHIVE}.lha | |
58 | done | |
59 | ||
60 | ### Now the stronger stuff ### | |
61 | ||
62 | ### DICE 3.15 ### | |
63 | lha xfw=dh0/Distributions distfiles/dice-3.15.lha | |
64 | chmod 755 dh0/Distributions/dice-rel-3.15/abin/* | |
65 | # for lack of a better place to put this | |
66 | cp dh0/Distributions/SmallLib/small.lib dh0/Distributions/dice-rel-3.15/dlib/ | |
67 | ||
68 | ### vbcc_target_m68k-amiga.lha (...just for amigas.lib...) ### | |
69 | lha xfw=dh0/Distributions distfiles/vbcc_target_m68k-amiga.lha | |
70 | cp dh0/Distributions/vbcc_target_m68k-amigaos/targets/m68k-amigaos/lib/amigas.lib dh0/Distributions/dice-rel-3.15/dlib/ | |
71 | # can't stand the ugly... | |
72 | rm dh0/Distributions/vbcc_target_m68k-amigaos.info | |
73 | rm -rf dh0/Distributions/m68k-amigaos/vbcc_target_m68k-amigaos | |
74 | mv dh0/Distributions/vbcc_target_m68k-amigaos dh0/Distributions/m68k-amigaos | |
75 | ||
76 | ### A68k ### | |
77 | lha xfw=dh0/Distributions/A68k distfiles/A68kGibbs.lha | |
78 | ||
79 | ### Blink ### | |
80 | lha xfw=dh0/Distributions/Blink distfiles/blink67.lzh | |
81 | ||
82 | ### PCQ 1.2b ### | |
83 | lha xfw=dh0/Distributions/PCQ-1.2b distfiles/pcq12b.lzh | |
84 | ||
85 | ### Draco ### | |
86 | lha xfw=dh0/Distributions distfiles/Draco.lha | |
87 | chmod 755 dh0/Distributions/Draco/c/* | |
88 | ||
89 | ### Drawer icons in Distributions ### | |
90 | for DIR in dh0/Distributions/*; do | |
91 | if [ -d $DIR ]; then | |
92 | cp -p skel/icons/Drawer.info ${DIR}.info | |
93 | fi | |
94 | done | |
95 | ||
96 | ### C: ### | |
97 | ||
98 | cp dh0/Distributions/Xicon/Xicon dh0/c/ | |
99 | cp dh0/Distributions/MuchMore/MuchMore dh0/c/ # version 3.6 | |
100 | cp dh0/Distributions/MuchMore/MuchMore dh0/c/Less | |
101 | cp dh0/Distributions/MuchMore/MuchMore dh0/c/More # TODO: use Replex? | |
102 | cp dh0/Distributions/NoIconPos/noIconPos dh0/c/ | |
103 | cp dh0/Distributions/A68k/A68k dh0/c/ | |
104 | cp dh0/Distributions/Blink/Blink dh0/c/ | |
105 | cp dh0/Distributions/PCQ-1.2b/Pascal dh0/c/ | |
106 | cp dh0/Distributions/PCQ-1.2b/Peep dh0/c/ | |
107 | cp dh0/Distributions/Conman/ConMan dh0/c/ | |
108 | cp dh0/Distributions/Conman/SetCMan dh0/c/ | |
109 | cp dh0/Distributions/Conman/History dh0/c/ | |
110 | cp dh0/Distributions/CLImax/CLImax dh0/c/ | |
111 | cp dh0/Distributions/FixFd/FixFD dh0/c/ | |
112 | cp dh0/Distributions/FastFonts/FastFonts dh0/c/ | |
113 | cp dh0/Distributions/Who/Who dh0/c/ | |
114 | cp dh0/Distributions/Du/du dh0/c/ | |
115 | ||
116 | chmod 755 dh0/c/* | |
117 | ||
118 | ### L: ### | |
119 | cp dh0/Distributions/Conman/ConHandler dh0/l/ | |
120 | ||
121 | ### S: ### | |
122 | # just some tweaks to PCQ-1.2b's Make scripts | |
123 | cat >dh0/s/PCQMake <<EOF | |
124 | .key source | |
125 | pascal <source>.p t:<source>.asm | |
126 | a68k t:<source>.asm t:<source>.o | |
127 | delete t:<source>.asm | |
128 | blink t:<source>.o to <source> library PCQ:PCQ.lib | |
129 | delete t:<source>.o | |
130 | EOF | |
131 | ||
132 | cat >dh0/s/PCQOMake <<EOF | |
133 | .key source | |
134 | Pascal <source>.p t:<source>.asm | |
135 | Peep t:<source>.asm t:<source>.s | |
136 | delete t:<source>.asm | |
137 | a68k t:<source>.s t:<source>.o | |
138 | delete t:<source>.s | |
139 | blink t:<source>.o to <source> library PCQ:PCQ.lib | |
140 | delete t:<source>.o | |
141 | EOF | |
142 | ||
143 | ### LIBS: ### | |
144 | cp dh0/Distributions/Conman/conhandler.library dh0/libs/ | |
145 | cp dh0/Distributions/ArpRequest/arp.library dh0/libs/ # ver 39.1 | |
146 | ]], | |
147 | ||
148 | setup_instructions = [[ | |
149 | * Wait for the Workbench to appear. | |
150 | * Double-click the "Funicular" disk icon. | |
151 | * Double-click the "Workbenchize" icon that appears. | |
152 | ]], | |
153 | ||
154 | dist_instructions = [[ | |
155 | * Format DF0: by typing: | |
156 | format drive df0 name Burgundy | |
157 | (or pick whatever name you want instead of Burgundy.) | |
158 | * Copy whatever you like onto DF0: | |
159 | * If you want to make the disk bootable, type: | |
160 | install df0: | |
161 | ]], | |
162 | } |
0 | .k "" | |
1 | echo "** Workbenchizing your Funicular virtual disk!" | |
2 | ||
3 | echo "(1/12) Copying C:..." | |
4 | copy C: to Funicular:c all quiet | |
5 | ||
6 | echo "(2/12) Copying S:..." | |
7 | copy S: to Funicular:s all quiet | |
8 | ||
9 | echo "(3/12) Copying L:..." | |
10 | copy L: to Funicular:l all quiet | |
11 | ||
12 | echo "(4/12) Copying DEVS:..." | |
13 | copy DEVS: to Funicular:devs all quiet | |
14 | ||
15 | echo "(5/12) Copying LIBS:..." | |
16 | copy LIBS: to Funicular:libs all quiet | |
17 | ||
18 | echo "(6/12) Copying FONTS:..." | |
19 | copy FONTS: to Funicular:fonts all quiet | |
20 | ||
21 | echo "(7/12) Copying Utilities..." | |
22 | copy SYS:Utilities to Funicular:Utilities all quiet | |
23 | copy SYS:Utilities.info to Funicular:Utilities.info quiet | |
24 | ||
25 | echo "(8/12) Copying System..." | |
26 | copy SYS:System to Funicular:System all quiet | |
27 | copy SYS:System.info to Funicular:System.info quiet | |
28 | ||
29 | echo "(9/12) Copying Expansion..." | |
30 | copy SYS:Expansion to Funicular:Expansion all quiet | |
31 | copy SYS:Expansion.info to Funicular:Expansion.info quiet | |
32 | ||
33 | echo "(10/12) Copying Trashcan..." | |
34 | copy SYS:Trashcan to Funicular:Trashcan all quiet | |
35 | copy SYS:Trashcan.info to Funicular:Trashcan.info quiet | |
36 | ||
37 | echo "(11/12) Copying Shell..." | |
38 | copy SYS:Shell to Funicular:Shell all quiet | |
39 | copy SYS:Shell.info to Funicular:Shell.info quiet | |
40 | ||
41 | echo "(12/12) Copying Prefs..." | |
42 | copy SYS:Prefs to Funicular:Prefs all quiet | |
43 | copy SYS:Prefs.info to Funicular:Prefs.info quiet | |
44 | ||
45 | echo "Replacing startup-sequence..." | |
46 | copy Funicular:s/Startup-Sequence Funicular:s/Startup-Sequence.backup | |
47 | copy Funicular:s/Startup-Sequence.Funicular Funicular:s/Startup-Sequence | |
48 | ||
49 | ;echo "Making your icons float..." | |
50 | ;protect Funicular:c/NoIconPos rwed | |
51 | ;Funicular:c/NoIconPos Funicular:AmigaBasic | |
52 | ;Funicular:c/NoIconPos Funicular:Trashcan | |
53 | ;Funicular:c/NoIconPos Funicular:Extras/BasicDemos | |
54 | ;Funicular:c/NoIconPos Funicular:Extras/Tools | |
55 | ;Funicular:c/NoIconPos Funicular:Extras/FD1.3 | |
56 | ||
57 | echo "Done. You should now:" | |
58 | echo "** EJECT the Workbench and Extras disks, and" | |
59 | echo "** REBOOT your Amiga and see that it boots from Funicular" |
0 | Funicular:c/SetPatch >NIL: | |
1 | ||
2 | assign SYS: Funicular: | |
3 | assign C: SYS:c | |
4 | assign S: SYS:s | |
5 | assign L: SYS:l | |
6 | assign FONTS: SYS:fonts | |
7 | assign DEVS: SYS:devs | |
8 | assign LIBS: SYS:libs | |
9 | ||
10 | assign Extras: Funicular: ; to let (some) AmigaBasic sources' icons work | |
11 | ||
12 | Addbuffers df0: 10 | |
13 | cd c: | |
14 | echo "A500/A2000 Workbench disk -- now booting Funicular..." | |
15 | ; | |
16 | Sys:System/FastMemFirst | |
17 | BindDrivers | |
18 | SetClock load | |
19 | ; | |
20 | resident CLI L:Shell-Seg SYSTEM pure add | |
21 | resident c:Execute pure | |
22 | mount newcon: | |
23 | ; | |
24 | failat 11 | |
25 | run execute s:StartupII | |
26 | wait >NIL: 5 mins | |
27 | ; | |
28 | path ram: c: sys:utilities sys:system s: sys:prefs add | |
29 | ; | |
30 | ; == DICE == ; | |
31 | ; | |
32 | assign DCC: Funicular:Distributions/dice-rel-3.15 | |
33 | assign DLIB: DCC:dlib | |
34 | assign DINCLUDE: DCC:include | |
35 | path DCC:abin/ add | |
36 | ;assign LIBS: DCC:libs add | |
37 | ; | |
38 | ; == PCQ == ; | |
39 | ; | |
40 | assign PCQ: Funicular:Distributions/PCQ-1.2b | |
41 | assign INCLUDE: PCQ:Include | |
42 | ; | |
43 | ; == Draco == ; | |
44 | ; | |
45 | assign DRACO: Funicular:Distributions/Draco | |
46 | assign DRLIB: DRACO:drlib | |
47 | assign DRINC: DRACO:drinc | |
48 | path DRACO:c/ add | |
49 | path DRACO:s/ add | |
50 | ; | |
51 | run execute s:StartupII.Funicular | |
52 | wait >NIL: 5 mins | |
53 | ; | |
54 | fastfonts topaz.8 | |
55 | cd Funicular: | |
56 | conman -c | |
57 | climax | |
58 | ; | |
59 | LoadWB delay | |
60 | endcli >NIL: |
0 | echo "Ensuring your scripts are scripts..." | |
1 | protect S:SPAT srwd | |
2 | spat protect s:#? srwd | |
3 | spat protect DRACO:s/#? srwd | |
4 | ||
5 | echo "Removing Workbenchize icon..." | |
6 | delete Funicular:Workbenchize.info quiet | |
7 | echo "Done." | |
8 | ||
9 | break 1 C |
0 | -- NOTE: this requires toolshelf and assumes gh:catseye/a2tools has been docked | |
0 | # NOTE: this requires toolshelf and assumes gh:catseye/a2tools has been docked | |
1 | 1 | |
2 | return { | |
3 | platform = Apple_II_Platform, | |
4 | install_image = 'blank.dsk', | |
5 | setup_image = 'setup.dsk', | |
6 | system_image = 'system.dsk', | |
7 | dist_image = 'dist.dsk', | |
8 | distrepos_specs = [[ | |
9 | bb:catseye/apple-befunge | |
10 | ]], | |
11 | setup_script = [[ | |
12 | export CWD=`pwd` | |
2 | PLATFORM=apple2plus-linapple | |
3 | INSTALL_IMAGE='blank.dsk' | |
4 | SETUP_IMAGE='setup.dsk' | |
5 | SYSTEM_IMAGE='system.dsk' | |
6 | DIST_IMAGE='dist.dsk' | |
7 | ||
8 | if [ "x$DISTREPO_ROOT" = "x" ]; then | |
9 | DISTREPO_ROOT="https://github.com/" | |
10 | fi | |
11 | DISTREPOS=" | |
12 | catseye/apple-befunge | |
13 | " | |
14 | ||
15 | setup_script() { | |
16 | export CWD=`pwd` | |
17 | ||
13 | 18 | cat >linapple.conf <<EOF |
14 | 19 | Computer Emulation = 1 |
15 | 20 | Slot 6 Directory = $CWD |
17 | 22 | Slot 6 Autoload = 1 |
18 | 23 | EOF |
19 | 24 | |
20 | # this is less than fantastic, but not sure how else to make sure this works | |
21 | LINAPPLE_DIR=`toolshelf.py pwd linapple` | |
22 | cp $LINAPPLE_DIR/splash.bmp . | |
23 | cp $LINAPPLE_DIR/charset40.bmp . | |
24 | # this is even less fantastic because no just no | |
25 | # instead, we should be using a2tools to put our things on a bootable disk image | |
26 | cp $LINAPPLE_DIR/Master.dsk system.dsk | |
27 | ]], | |
25 | # this is less than fantastic, but not sure how else to make sure this works | |
26 | LINAPPLE_DIR=`toolshelf.py pwd linapple` | |
27 | cp $LINAPPLE_DIR/splash.bmp . | |
28 | cp $LINAPPLE_DIR/charset40.bmp . | |
29 | # this is even less fantastic because no just no | |
30 | # instead, we should be using a2tools to put our things on a bootable disk image | |
31 | cp $LINAPPLE_DIR/Master.dsk system.dsk | |
28 | 32 | } |
0 | return { | |
1 | platform = Commodore_64_Platform, | |
2 | install_image = 'blank.d64', | |
3 | setup_image = 'setup.d64', | |
4 | system_image = 'device8', | |
5 | dist_image = 'dist.d64', | |
6 | distrepos_catalogue = 'C64.catalogue', | |
7 | setup_script = [[ | |
8 | cat >vicerc <<EOF | |
0 | PLATFORM=c64-vice | |
1 | INSTALL_IMAGE='blank.d64' | |
2 | SETUP_IMAGE='setup.d64' | |
3 | SYSTEM_IMAGE='device8' | |
4 | DIST_IMAGE='dist.d64' | |
5 | ||
6 | if [ "x$DISTREPO_ROOT" = "x" ]; then | |
7 | DISTREPO_ROOT="https://github.com/" | |
8 | fi | |
9 | DISTREPOS=" | |
10 | catseye/Bubble-Escape | |
11 | catseye/C64-Demo-Depot | |
12 | catseye/Disksumo | |
13 | catseye/SITU-SOL | |
14 | " | |
15 | ||
16 | setup_script() { | |
17 | cat >vicerc <<EOF | |
9 | 18 | [C64] |
10 | 19 | VICIIDoubleScan=1 |
11 | 20 | VICIIDoubleSize=1 |
14 | 23 | JoyDevice3=0 |
15 | 24 | JoyDevice4=0 |
16 | 25 | EOF |
17 | cp distrepos/Bubble-Escape/bin/* device8/ | |
18 | cp distrepos/C64-Demo-Depot/petulant/petulant.prg device8/petulant | |
19 | cp distrepos/C64-Demo-Depot/ribos/ribos.prg device8/ribos | |
20 | cp distrepos/Disksumo/bin/disksumo.prg device8/disksumo | |
21 | cp distrepos/SITU-SOL/bin/* device8/ | |
22 | ]], | |
23 | dist_script = [[ | |
24 | cd device8 | |
25 | petcat -w2 -o menu -- ../menu.bas | |
26 | c1541 -attach ../dist.d64 -write menu | |
27 | rm -f menu | |
28 | for FILENAME in *; do | |
29 | c1541 -attach ../dist.d64 -write "$FILENAME" | |
30 | done | |
31 | cd .. | |
32 | c1541 -attach dist.d64 -dir | |
33 | ]], | |
26 | cp distrepos/Bubble-Escape/bin/* device8/ | |
27 | cp distrepos/C64-Demo-Depot/petulant/petulant.prg device8/petulant | |
28 | cp distrepos/C64-Demo-Depot/ribos/ribos.prg device8/ribos | |
29 | cp distrepos/Disksumo/bin/disksumo.prg device8/disksumo | |
30 | cp distrepos/SITU-SOL/bin/* device8/ | |
31 | ls -la device8/ | |
34 | 32 | } |
33 | ||
34 | dist_script() { | |
35 | cd device8 | |
36 | petcat -w2 -o menu -- ../menu.bas | |
37 | c1541 -attach ../dist.d64 -write menu | |
38 | rm -f menu | |
39 | for FILENAME in *; do | |
40 | c1541 -attach ../dist.d64 -write "$FILENAME" | |
41 | done | |
42 | cd .. | |
43 | c1541 -attach dist.d64 -dir | |
44 | } |
0 | return { | |
1 | platform = FreeDOS_1_1, | |
2 | system_image = 'hda.img', | |
3 | work_image = 'fda.img', | |
4 | setup_image = 'freedos-init-cd.iso', | |
5 | dist_image = 'a.img', | |
6 | distfiles = [[ | |
7 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/copying.dj | |
8 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/djdev205.zip | |
9 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/faq230b.zip | |
10 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/readme.1st | |
11 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/bnu226br3.zip | |
12 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gcc610b.zip | |
13 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/mak421b.zip | |
14 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2misc/csdpmi7b.zip | |
15 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/perl588b.zip | |
16 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/tar112ab.zip | |
17 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gzip18b.zip | |
18 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/fil41br2.zip | |
19 | http://ftp.mpoli.fi/software/DOS/EDITORS/TED3.ZIP | |
0 | PLATFORM="i386-qemu" | |
1 | INSTALL_IMAGE='fd11src.iso' | |
2 | INSTALL_IMAGE_URL='http://www.freedos.org/download/download/fd11src.iso' | |
3 | SETUP_IMAGE='freedos-init-cd.iso' | |
4 | SYSTEM_IMAGE='hda.img' | |
5 | DIST_IMAGE='a.img' | |
20 | 6 | |
21 | http://www.tortall.net/projects/yasm/releases/yasm-1.2.0-dos.exe | |
22 | https://raw.githubusercontent.com/yasm/yasm/v1.2.0/BSD.txt | |
7 | DISTFILES=" | |
8 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/copying.dj | |
9 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/djdev205.zip | |
10 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/faq230b.zip | |
11 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2/readme.1st | |
12 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/bnu226br3.zip | |
13 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gcc610b.zip | |
14 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/mak421b.zip | |
15 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2misc/csdpmi7b.zip | |
16 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/perl588b.zip | |
17 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/tar112ab.zip | |
18 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/gzip18b.zip | |
19 | http://www.mirrorservice.org/sites/ftp.delorie.com/pub/djgpp/current/v2gnu/fil41br2.zip | |
20 | http://ftp.mpoli.fi/software/DOS/EDITORS/TED3.ZIP | |
23 | 21 | |
24 | http://www.lua.org/ftp/lua-5.2.2.tar.gz | |
25 | http://waterlan.home.xs4all.nl/dos2unix/d2u71b.zip | |
22 | http://www.tortall.net/projects/yasm/releases/yasm-1.2.0-dos.exe | |
23 | https://raw.githubusercontent.com/yasm/yasm/v1.2.0/BSD.txt | |
26 | 24 | |
27 | http://catseye.tc/distfiles/shelta-1.2-2014.0422.zip | |
28 | https://github.com/catseye/Illgol-Grand-Mal/archive/rel_16_tons_and_what_do_you_get.zip | |
25 | http://www.lua.org/ftp/lua-5.2.2.tar.gz | |
26 | http://waterlan.home.xs4all.nl/dos2unix/d2u71b.zip | |
29 | 27 | |
30 | http://www.gnu.org/licenses/gpl-2.0.txt | |
31 | ]], | |
28 | http://catseye.tc/distfiles/shelta-1.2-2014.0422.zip | |
29 | https://github.com/catseye/Illgol-Grand-Mal/archive/rel_16_tons_and_what_do_you_get.zip | |
32 | 30 | |
33 | name_map = { | |
34 | ["yasm-1.2.0-dos.exe"] = 'yasm120.exe', | |
35 | ["BSD.txt"] = 'yasmlcns.txt', | |
36 | ["lua-5.2.2.tar.gz"] = 'lua522.tgz', | |
37 | ["shelta-1.2-2014.0422.zip"] = 'shelta12.zip', | |
38 | ["rel_16_tons_and_what_do_you_get.zip"] = 'illgolgm.zip', | |
39 | ["gpl-2.0.txt"] = 'gpl20.txt', | |
40 | ["befunge-93"] = 'befung93', | |
41 | ["maentwrog"] = 'maentwrg', | |
42 | }, | |
31 | http://www.gnu.org/licenses/gpl-2.0.txt | |
32 | " | |
43 | 33 | |
44 | distrepos_specs = [[ | |
45 | gh:catseye/Befunge-93 | |
46 | gh:catseye/Maentwrog | |
47 | gh:catseye/RUBE | |
48 | ]], | |
49 | zip_unversioned = true, | |
34 | if [ "x$DISTREPO_ROOT" = "x" ]; then | |
35 | DISTREPO_ROOT="https://github.com/" | |
36 | fi | |
37 | DISTREPOS=" | |
38 | catseye/Befunge-93 | |
39 | catseye/Maentwrog | |
40 | catseye/RUBE | |
41 | " | |
42 | ZIP_UNVERSIONED=True | |
50 | 43 | |
51 | install_instructions = [[ | |
44 | ||
45 | #name_map = { | |
46 | # ["yasm-1.2.0-dos.exe"] = 'yasm120.exe', | |
47 | # ["BSD.txt"] = 'yasmlcns.txt', | |
48 | # ["lua-5.2.2.tar.gz"] = 'lua522.tgz', | |
49 | # ["shelta-1.2-2014.0422.zip"] = 'shelta12.zip', | |
50 | # ["rel_16_tons_and_what_do_you_get.zip"] = 'illgolgm.zip', | |
51 | # ["gpl-2.0.txt"] = 'gpl20.txt', | |
52 | # ["befunge-93"] = 'befung93', | |
53 | # ["maentwrog"] = 'maentwrg', | |
54 | #}, | |
55 | ||
56 | ||
57 | install_instructions() { | |
58 | cat <<EOF | |
52 | 59 | * select "Install to Hard Disk" |
53 | 60 | * select "f" to start FDISK |
54 | 61 | * FAT32 -- no |
77 | 84 | * select "Boot from system harddisk" |
78 | 85 | * Hit Enter for the JEMMEX option, should be fine |
79 | 86 | * viola, `C:\>`. You can now just stop the emulator. |
80 | ]], | |
87 | EOF | |
88 | } | |
81 | 89 | |
82 | setup_instructions = [[ | |
90 | setup_instructions() { | |
91 | cat <<EOF | |
83 | 92 | * Hit Enter for the JEMMEX option, should be fine |
84 | 93 | * When booted, run `D:\INSTDJGP` |
85 | 94 | * When it asks `replace lib/Perl5/Pod/perlmaco.pod?`, type `A`, Enter. |
87 | 96 | * When finished, you may want to exit the emulator, run |
88 | 97 | `funicular backup hda-djgpp`, and start it again. |
89 | 98 | * run `D:\INSTPLAT`. This will install some tools into `C:\TOOLS`. |
90 | ]], | |
99 | EOF | |
100 | } | |
91 | 101 | |
92 | dist_instructions = [[ | |
102 | dist_instructions() { | |
103 | cat <<EOF | |
93 | 104 | * To initialize the distribution floppy, run `INITFLOP`. |
94 | 105 | * Enter `360`, `720`, or `1440` as appropriate. |
95 | 106 | * As explained in the script, it may take more than one attempt to format |
103 | 114 | * To populate the floppy with a project distribution, run the `MAKEDIST.BAT` |
104 | 115 | batchfile in the appropriate `SKEL` subdirectory. For example, to make a |
105 | 116 | Shelta distribution, run `SKEL\SHELTA\MAKEDIST`. |
106 | ]] | |
117 | EOF | |
107 | 118 | } |
108 | ||
109 | --[[ | |
110 | # to build lua: set LFN=n, cd src, make generic | |
111 | # but I'm sure there are just binaries somewhere we could download? | |
112 | ||
113 | # D:\INSTPLAT -- is not idempotent w.r.t. autoexec.bat and fdconfig.sys. | |
114 | # it writes DEVICEHIGH=NANSI multiple times (which can actually kill the boot.) | |
115 | # also, DJGPP.ENV contains CRs, not CRLFs. We should convert it, | |
116 | # somehow, probably while it's in the staging area? (like name_map, have | |
117 | # and entry that does eol mapping of some files) | |
118 | ||
119 | # https://raw.githubusercontent.com/kikito/ansicolors.lua/master/ansicolors.lua | |
120 | ||
121 | # http://www.nasm.us/pub/nasm/releasebuilds/2.11.04/dos/nasm-2.11.04-dos-upx.zip | |
122 | ||
123 | # http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img | |
124 | #FREEDOS_BOOT_FLOPPY=$IMGDIR/fdboot.img | |
125 | ||
126 | Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88. | |
127 | ||
128 | 160 * 1024 | |
129 | 180 | |
130 | 320 | |
131 | 360 | |
132 | 720 | |
133 | 1200 | |
134 | 1440 | |
135 | 1680 | |
136 | 1720 | |
137 | 2880 | |
138 | ||
139 | KERNEL SYS 45341 2006-09-03 0:10 kernel.sys | |
140 | COMMAND COM 66945 2006-09-03 0:11 command.com | |
141 | DRIVER <DIR> 2006-09-03 0:11 driver | |
142 | FDCONFIG SYS 1768 2006-09-03 0:11 fdconfig.sys | |
143 | FREEDOS <DIR> 2006-09-03 0:11 freedos | |
144 | ||
145 | ### Shelta ### | |
146 | ||
147 | * Create a 720K floppy, as described above. Elect to install `yasm` on it. | |
148 | ||
149 | * Back on the host, run `toolshelf dock bb:catseye/shelta` if you haven't | |
150 | got it. | |
151 | ||
152 | * Run `./outfit-floppy-shelta.sh` | |
153 | ||
154 | * Run `./start-freedos.sh floppy` to confirm that the floppy image boots. | |
155 | And test `shelta` on it. Then just quit QEMU. | |
156 | ||
157 | TODO | |
158 | ---- | |
159 | ||
160 | * LF2CRLF.COM ? | |
161 | * BIN\SHELTAS.COM ... | |
162 | * BIN\SHELTAS2.COM ... | |
163 | * BIN\SHELTA86.COM ... | |
164 | * SHELTA86.ASM ... | |
165 | * ANSI colours in welcome.txt? | |
166 | * welcome.txt in shelta repo? | |
167 | * make ted3, debug, and more, optional, like yasm and perl are optional | |
168 | ||
169 | ]]-- |
0 | # to build lua: set LFN=n, cd src, make generic | |
1 | # but I'm sure there are just binaries somewhere we could download? | |
2 | ||
3 | # D:\INSTPLAT -- is not idempotent w.r.t. autoexec.bat and fdconfig.sys. | |
4 | # it writes DEVICEHIGH=NANSI multiple times (which can actually kill the boot.) | |
5 | # also, DJGPP.ENV contains CRs, not CRLFs. We should convert it, | |
6 | # somehow, probably while it's in the staging area? (like name_map, have | |
7 | # and entry that does eol mapping of some files) | |
8 | ||
9 | # https://raw.githubusercontent.com/kikito/ansicolors.lua/master/ansicolors.lua | |
10 | ||
11 | # http://www.nasm.us/pub/nasm/releasebuilds/2.11.04/dos/nasm-2.11.04-dos-upx.zip | |
12 | ||
13 | # http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdboot.img | |
14 | #FREEDOS_BOOT_FLOPPY=$IMGDIR/fdboot.img | |
15 | ||
16 | Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88. | |
17 | ||
18 | 160 * 1024 | |
19 | 180 | |
20 | 320 | |
21 | 360 | |
22 | 720 | |
23 | 1200 | |
24 | 1440 | |
25 | 1680 | |
26 | 1720 | |
27 | 2880 | |
28 | ||
29 | KERNEL SYS 45341 2006-09-03 0:10 kernel.sys | |
30 | COMMAND COM 66945 2006-09-03 0:11 command.com | |
31 | DRIVER <DIR> 2006-09-03 0:11 driver | |
32 | FDCONFIG SYS 1768 2006-09-03 0:11 fdconfig.sys | |
33 | FREEDOS <DIR> 2006-09-03 0:11 freedos | |
34 | ||
35 | ### Shelta ### | |
36 | ||
37 | * Create a 720K floppy, as described above. Elect to install `yasm` on it. | |
38 | ||
39 | * Back on the host, run `toolshelf dock bb:catseye/shelta` if you haven't | |
40 | got it. | |
41 | ||
42 | * Run `./outfit-floppy-shelta.sh` | |
43 | ||
44 | * Run `./start-freedos.sh floppy` to confirm that the floppy image boots. | |
45 | And test `shelta` on it. Then just quit QEMU. | |
46 | ||
47 | TODO | |
48 | ---- | |
49 | ||
50 | * LF2CRLF.COM ? | |
51 | * BIN\SHELTAS.COM ... | |
52 | * BIN\SHELTAS2.COM ... | |
53 | * BIN\SHELTA86.COM ... | |
54 | * SHELTA86.ASM ... | |
55 | * ANSI colours in welcome.txt? | |
56 | * welcome.txt in shelta repo? | |
57 | * make ted3, debug, and more, optional, like yasm and perl are optional |
0 | return { | |
1 | platform = NetBSD_6, | |
2 | system_image = 'wd0.img', | |
3 | setup_image = 'setup-netbsd.iso', | |
0 | PLATFORM="i386-qemu" | |
1 | INSTALL_IMAGE='NetBSD-6.1.5-i386.iso' | |
2 | INSTALL_IMAGE_URL='ftp://iso.fr.netbsd.org/pub/NetBSD/NetBSD-6.1.5/iso/NetBSD-6.1.5-i386.iso' | |
3 | SETUP_IMAGE='setup-netbsd.iso' | |
4 | SYSTEM_IMAGE='wd0.img' | |
5 | DIST_IMAGE='floppy.img' | |
4 | 6 | |
5 | distfiles = [[ | |
6 | http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz | |
7 | https://github.com/catseye/toolshelf/archive/0.1-2014.0818.zip | |
8 | http://ftp.gnu.org/gnu/make/make-3.81.tar.gz | |
9 | http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz | |
10 | http://mercurial.selenic.com/release/mercurial-1.9.3.tar.gz | |
11 | http://www.cpan.org/src/5.0/perl-5.18.2.tar.gz | |
12 | http://cvs.haskell.org/Hugs/downloads/2006-09/hugs98-plus-Sep2006.tar.gz | |
13 | http://www.erlang.org/download/otp_src_R16B03-1.tar.gz | |
14 | http://code.call-cc.org/releases/4.8.0/chicken-4.8.0.5.tar.gz | |
15 | http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz | |
16 | ]], | |
7 | DISTFILES=" | |
8 | http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz | |
9 | https://github.com/catseye/toolshelf/archive/0.1-2014.0818.zip | |
10 | http://ftp.gnu.org/gnu/make/make-3.81.tar.gz | |
11 | http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz | |
12 | http://mercurial.selenic.com/release/mercurial-1.9.3.tar.gz | |
13 | http://www.cpan.org/src/5.0/perl-5.18.2.tar.gz | |
14 | http://cvs.haskell.org/Hugs/downloads/2006-09/hugs98-plus-Sep2006.tar.gz | |
15 | http://www.erlang.org/download/otp_src_R16B03-1.tar.gz | |
16 | http://code.call-cc.org/releases/4.8.0/chicken-4.8.0.5.tar.gz | |
17 | http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz | |
18 | " | |
17 | 19 | |
18 | -- https://github.com/git/git/archive/v1.9.4.zip | |
19 | -- make NO_CURL=1 | |
20 | -- temporarily link /usr/bin/perl to `which perl` (sighhhh) | |
21 | -- no porcelain, but e.g. git-log is available | |
22 | -- github.com/git/git | |
23 | -- build_command NO_PERL=1 LIBRARY_PATH=$TOOLSHELF/.lib CPATH=`toolshelf pwd curl-7.35.0`/install/include make | |
24 | -- | |
25 | -- */*/qemu-1.* | |
26 | -- build_command PKG_CONFIG_PATH=`toolshelf pwd glib-2.39.4`/install/lib/pkgconfig ./configure --with-system-pixman --disable-sdl --prefix=`pwd`/install && make && make install | |
27 | -- | |
28 | -- */*/glib-2.* | |
29 | -- build_command LIBFFI_CFLAGS=-I`toolshelf pwd libffi-3.0.13`/install/lib/libffi-3.0.13/include LIBFFI_LIBS="-L/home/user/toolshelf/.lib -lffi" ./configure --prefix=`pwd`/install && make && make install | |
20 | if [ "x$DISTREPO_ROOT" = "x" ]; then | |
21 | DISTREPO_ROOT="https://github.com/" | |
22 | fi | |
23 | DISTREPOS=" | |
24 | catseye/alpaca | |
25 | catseye/animals | |
26 | catseye/apple-befunge | |
27 | catseye/arboretuum | |
28 | catseye/befos | |
29 | catseye/befunge-93 | |
30 | catseye/beta-juliet | |
31 | catseye/beturing | |
32 | catseye/bhuna | |
33 | catseye/braktif | |
34 | catseye/bubble-escape | |
35 | catseye/burro | |
36 | catseye/c64-demo-depot | |
37 | catseye/cabra | |
38 | catseye/castile | |
39 | catseye/cfluviurrh | |
40 | catseye/chrysoberyl | |
41 | catseye/circute | |
42 | catseye/console-virtual | |
43 | catseye/corona-realm-of-magic | |
44 | catseye/crone | |
45 | catseye/deturgenchry | |
46 | catseye/dieter | |
47 | catseye/dipple | |
48 | catseye/disksumo | |
49 | catseye/dungeons-of-ekileugor | |
50 | catseye/eightebed | |
51 | catseye/electronics-projects | |
52 | catseye/emmental | |
53 | catseye/etcha | |
54 | catseye/exanoke | |
55 | catseye/falderal | |
56 | catseye/fbbi | |
57 | catseye/flip | |
58 | catseye/flobnar | |
59 | catseye/funge-98 | |
60 | catseye/funicular | |
61 | catseye/gemooy | |
62 | catseye/granola-m | |
63 | catseye/hev | |
64 | catseye/html5-gewgaws | |
65 | catseye/hunter | |
66 | catseye/illgol-grand-mal | |
67 | catseye/iphigeneia | |
68 | catseye/jaccia | |
69 | catseye/jolverine | |
70 | catseye/kangaroo-iceberg | |
71 | catseye/kelxquoia | |
72 | catseye/kosheri | |
73 | catseye/larabee | |
74 | catseye/maentwrog | |
75 | catseye/mascarpone | |
76 | catseye/muriel | |
77 | catseye/mzstorkipiwanbotbotbot | |
78 | catseye/n-dcnc | |
79 | catseye/netusb | |
80 | catseye/nhohnhehr | |
81 | catseye/noit-o-mnain-worb | |
82 | catseye/pail | |
83 | catseye/pibfi | |
84 | catseye/pixley | |
85 | catseye/pl-goto.net | |
86 | catseye/pophery | |
87 | catseye/quylthulg | |
88 | catseye/redgreen | |
89 | catseye/realpath | |
90 | catseye/robin | |
91 | catseye/rube | |
92 | catseye/rube-ii | |
93 | catseye/sally | |
94 | catseye/sbeezg | |
95 | catseye/shelta | |
96 | catseye/sickbay | |
97 | catseye/sixtypical | |
98 | catseye/smetana | |
99 | catseye/smith | |
100 | catseye/specs-on-spec | |
101 | catseye/squishy2k | |
102 | catseye/strelnokoff | |
103 | catseye/super-wumpus-land | |
104 | catseye/tamsin | |
105 | catseye/the-swallows | |
106 | catseye/thue | |
107 | catseye/toolshelf | |
108 | catseye/tpis | |
109 | catseye/treacle | |
110 | catseye/troupe | |
111 | catseye/unlikely | |
112 | catseye/velo | |
113 | catseye/version | |
114 | catseye/whothm | |
115 | catseye/wierd | |
116 | catseye/wunnel | |
117 | catseye/xigxag | |
118 | catseye/xoomonk | |
119 | catseye/yolk | |
120 | catseye/yoob | |
121 | catseye/yoob.js | |
122 | catseye/ypsilax | |
123 | catseye/yucca | |
124 | catseye/zowie | |
125 | catseye/zzrk | |
126 | catseye/ophis | |
127 | catseye/openzz | |
128 | catseye/minischeme | |
129 | " | |
30 | 130 | |
31 | toolshelf_inside = true, | |
32 | distrepos_specs = [[ | |
33 | bb:catseye/alpaca | |
34 | bb:catseye/animals | |
35 | bb:catseye/apple-befunge | |
36 | bb:catseye/arboretuum | |
37 | bb:catseye/befos | |
38 | bb:catseye/befunge-93 | |
39 | bb:catseye/beta-juliet | |
40 | bb:catseye/beturing | |
41 | bb:catseye/bhuna | |
42 | bb:catseye/braktif | |
43 | bb:catseye/bubble-escape | |
44 | bb:catseye/burro | |
45 | bb:catseye/c64-demo-depot | |
46 | bb:catseye/cabra | |
47 | bb:catseye/castile | |
48 | bb:catseye/cfluviurrh | |
49 | bb:catseye/chrysoberyl | |
50 | bb:catseye/circute | |
51 | bb:catseye/console-virtual | |
52 | bb:catseye/corona-realm-of-magic | |
53 | bb:catseye/crone | |
54 | bb:catseye/deturgenchry | |
55 | bb:catseye/dieter | |
56 | bb:catseye/dipple | |
57 | bb:catseye/disksumo | |
58 | bb:catseye/dungeons-of-ekileugor | |
59 | bb:catseye/eightebed | |
60 | bb:catseye/electronics-projects | |
61 | bb:catseye/emmental | |
62 | bb:catseye/etcha | |
63 | bb:catseye/exanoke | |
64 | bb:catseye/falderal | |
65 | bb:catseye/fbbi | |
66 | bb:catseye/flip | |
67 | bb:catseye/flobnar | |
68 | bb:catseye/funge-98 | |
69 | bb:catseye/funicular | |
70 | bb:catseye/gemooy | |
71 | bb:catseye/granola-m | |
72 | bb:catseye/hev | |
73 | bb:catseye/html5-gewgaws | |
74 | bb:catseye/hunter | |
75 | bb:catseye/illgol-grand-mal | |
76 | bb:catseye/iphigeneia | |
77 | bb:catseye/jaccia | |
78 | bb:catseye/jolverine | |
79 | bb:catseye/kangaroo-iceberg | |
80 | bb:catseye/kelxquoia | |
81 | bb:catseye/kosheri | |
82 | bb:catseye/larabee | |
83 | bb:catseye/maentwrog | |
84 | bb:catseye/mascarpone | |
85 | bb:catseye/muriel | |
86 | bb:catseye/mzstorkipiwanbotbotbot | |
87 | bb:catseye/n-dcnc | |
88 | bb:catseye/netusb | |
89 | bb:catseye/nhohnhehr | |
90 | bb:catseye/noit-o-mnain-worb | |
91 | bb:catseye/pail | |
92 | bb:catseye/pibfi | |
93 | bb:catseye/pixley | |
94 | bb:catseye/pl-goto-.net | |
95 | bb:catseye/pophery | |
96 | bb:catseye/quylthulg | |
97 | bb:catseye/redgreen | |
98 | bb:catseye/realpath | |
99 | bb:catseye/robin | |
100 | bb:catseye/rube | |
101 | bb:catseye/rube-ii | |
102 | bb:catseye/sally | |
103 | bb:catseye/sbeezg | |
104 | bb:catseye/shelta | |
105 | bb:catseye/sickbay | |
106 | bb:catseye/sixtypical | |
107 | bb:catseye/smetana | |
108 | bb:catseye/smith | |
109 | bb:catseye/specs-on-spec | |
110 | bb:catseye/squishy2k | |
111 | bb:catseye/strelnokoff | |
112 | bb:catseye/super-wumpus-land | |
113 | bb:catseye/tamsin | |
114 | bb:catseye/the-swallows | |
115 | bb:catseye/thue | |
116 | bb:catseye/toolshelf | |
117 | bb:catseye/tpis | |
118 | bb:catseye/treacle | |
119 | bb:catseye/troupe | |
120 | bb:catseye/unlikely | |
121 | bb:catseye/velo | |
122 | bb:catseye/version | |
123 | bb:catseye/whothm | |
124 | bb:catseye/wierd | |
125 | bb:catseye/wunnel | |
126 | bb:catseye/xigxag | |
127 | bb:catseye/xoomonk | |
128 | bb:catseye/yolk | |
129 | bb:catseye/yoob | |
130 | bb:catseye/yoob.js | |
131 | bb:catseye/ypsilax | |
132 | bb:catseye/yucca | |
133 | bb:catseye/zowie | |
134 | bb:catseye/zzrk | |
135 | ||
136 | bb:catseye/ophis | |
137 | bb:catseye/openzz | |
138 | bb:catseye/minischeme | |
139 | ]], | |
140 | ||
141 | install_instructions = [[ | |
131 | install_instructions() { | |
132 | cat <<EOF | |
142 | 133 | * At the boot prompt, select "1. Install NetBSD" |
143 | 134 | * After it boots, select a language for installation messages, and a keyboard type. |
144 | 135 | * At the next menu, select "Install NetBSD to hard disk". Then "yes". |
152 | 143 | * At "Bootblocks selection": Use BIOS console. |
153 | 144 | * Install from CD-ROM. |
154 | 145 | * When that's done - don't bother configuring anything. |
155 | * When back at the main menu, select "Exit Install System" and type `shutdown -p now` | |
156 | ]], | |
146 | * When back at the main menu, select "Exit Install System" and type 'shutdown -p now' | |
147 | EOF | |
148 | } | |
157 | 149 | |
158 | setup_instructions = [[ | |
150 | setup_instructions() { | |
151 | cat <<EOF | |
159 | 152 | * Login as root (which will not have a password. You may or may not wish to give it one, |
160 | 153 | depending on your security needs.) |
161 | 154 | * As root, run: |
163 | 156 | cp /cdrom/setup-netbsd.sh . |
164 | 157 | . ./setup-netbsd.sh |
165 | 158 | * Follow the instructions in the script. |
166 | * Once it is finished, log out and log in again as `user`. (You may or may not wish to | |
159 | * Once it is finished, log out and log in again as 'user'. (You may or may not wish to | |
167 | 160 | run passwd to give user a password at this point, depending on your security needs.) |
168 | 161 | * Then run: |
169 | 162 | th dock @/cdrom/infrastructure.catalog @/cdrom/catseye.catalog |
170 | ]], | |
163 | EOF | |
171 | 164 | } |
0 | https://github.com/git/git/archive/v1.9.4.zip | |
1 | make NO_CURL=1 | |
2 | temporarily link /usr/bin/perl to `which perl` (sighhhh) | |
3 | no porcelain, but e.g. git-log is available | |
4 | github.com/git/git | |
5 | build_command NO_PERL=1 LIBRARY_PATH=$TOOLSHELF/.lib CPATH=`toolshelf pwd curl-7.35.0`/install/include make | |
6 | ||
7 | */*/qemu-1.* | |
8 | build_command PKG_CONFIG_PATH=`toolshelf pwd glib-2.39.4`/install/lib/pkgconfig ./configure --with-system-pixman --disable-sdl --prefix=`pwd`/install && make && make install | |
9 | ||
10 | */*/glib-2.* | |
11 | build_command LIBFFI_CFLAGS=-I`toolshelf pwd libffi-3.0.13`/install/lib/libffi-3.0.13/include LIBFFI_LIBS="-L/home/user/toolshelf/.lib -lffi" ./configure --prefix=`pwd`/install && make && make install |
0 | #!/bin/sh | |
1 | ||
2 | cd /home/user | |
3 | mkdir -p .local | |
4 | ||
5 | if [ ! -d shelf ]; then | |
6 | unzip /cdrom/shelf.zip || exit 1 | |
7 | #cp -Rp /cdrom/shelf_cookies shelf_cookies | |
8 | fi | |
9 | ||
10 | cat >>.profile <<EOF | |
11 | . $HOME/shelf/shelf.sh | |
12 | export SHELF_FARMBASE=$HOME/.local | |
13 | export SHELF_PATH=$HOME/catseye | |
14 | #export SHELF_COOKIES=$HOME/shelf_cookies | |
15 | shelf_init | |
16 | EOF |
17 | 17 | echo >>fstab '/dev/cd0a /cdrom cd9660 ro' |
18 | 18 | mv fstab /etc/fstab |
19 | 19 | |
20 | su user -c "/bin/sh /cdrom/init-toolshelf.sh" | |
20 | su user -c "/bin/sh /cdrom/init-shelf.sh" |
0 | return { | |
1 | platform = VIC_20_Platform, | |
2 | install_image = 'blank.d64', | |
3 | setup_image = 'setup.d64', | |
4 | system_image = 'device8', | |
5 | dist_image = 'dist.d64', | |
6 | distrepos_specs = [[ | |
7 | gh:catseye/Dungeons-of-Ekileugor | |
8 | ]], | |
9 | setup_script = [[ | |
10 | cat >vicerc <<EOF | |
0 | PLATFORM=vic20-vice | |
1 | INSTALL_IMAGE='blank.d64' | |
2 | SETUP_IMAGE='setup.d64' | |
3 | SYSTEM_IMAGE='device8' | |
4 | DIST_IMAGE='dist.d64' | |
5 | ||
6 | if [ "x$DISTREPO_ROOT" = "x" ]; then | |
7 | DISTREPO_ROOT="https://github.com/" | |
8 | fi | |
9 | DISTREPOS=" | |
10 | catseye/Dungeons-of-Ekileugor | |
11 | " | |
12 | ||
13 | setup_script() { | |
14 | cat >vicerc <<EOF | |
11 | 15 | [VIC20] |
12 | 16 | VICDoubleScan=1 |
13 | 17 | VICDoubleSize=1 |
14 | 18 | DriveTrueEmulation=0 |
15 | 19 | EOF |
16 | cp distrepos/Dungeons-of-Ekileugor/bin/* device8/ | |
17 | ]], | |
18 | dist_script = [[ | |
19 | cd device8 | |
20 | for FILENAME in *; do | |
21 | c1541 -attach ../dist.d64 -write "$FILENAME" | |
22 | done | |
23 | cd .. | |
24 | c1541 -attach dist.d64 -dir | |
25 | ]], | |
20 | cp distrepos/Dungeons-of-Ekileugor/bin/* device8/ | |
21 | ls -la device8/ | |
26 | 22 | } |
23 | ||
24 | dist_script() { | |
25 | cd device8 | |
26 | for FILENAME in *; do | |
27 | c1541 -attach ../dist.d64 -write "$FILENAME" | |
28 | done | |
29 | cd .. | |
30 | c1541 -attach dist.d64 -dir | |
31 | } |
0 | # Amiga 500 w/ E-UAE w/ certain options | |
1 | ||
2 | DISTFILE_URL='http://www.rcdrummond.net/uae/e-uae-0.8.29-WIP4/e-uae-0.8.29-WIP4.tar.bz2' | |
3 | ||
4 | OPTS="-s bogomem_size=4 -s cpu_speed=max -s floppy_speed=800" | |
5 | ||
6 | platform_initsys() { | |
7 | mkdir -p "$SYSTEM_IMAGE" | |
8 | } | |
9 | ||
10 | platform_initsetup() { | |
11 | echo "No further initialization of setup image required." | |
12 | } | |
13 | ||
14 | platform_initdist() { | |
15 | dd if=/dev/zero of="$1" bs=1K count=880 | |
16 | } | |
17 | ||
18 | platform_start() { | |
19 | uae ${OPTS} -s "filesystem2=rw,DH0:Funicular:${SYSTEM_IMAGE},1" | |
20 | } | |
21 | ||
22 | platform_setup() { | |
23 | uae ${OPTS} -s "filesystem2=rw,DH0:Funicular:${SYSTEM_IMAGE},1" -s "floppy0=${SETUP_IMAGE}" | |
24 | } | |
25 | ||
26 | platform_dist() { | |
27 | uae ${OPTS} -s "floppy0=${DIST_IMAGE}" -s "filesystem2=rw,DH0:Funicular:${SYSTEM_IMAGE},1" | |
28 | } | |
29 | ||
30 | platform_distboot() { | |
31 | uae ${OPTS} -s "floppy0=${DIST_IMAGE}" | |
32 | } | |
33 | ||
34 | platform_install() { | |
35 | uae ${OPTS} -s "floppy0=${INSTALL_IMAGE}" -s "filesystem2=rw,DH0:HDD:Funicular:${SYSTEM_IMAGE},1" | |
36 | } |
0 | # Apple ][+ w/ Linapple w/ certain options | |
1 | ||
2 | DISTFILE_URL='https://github.com/timob/linapple/archive/master.zip' | |
3 | ||
4 | # floppies only, for now | |
5 | platform_initsys() { | |
6 | dd if=/dev/zero of="$1" bs=256 count=683 | |
7 | } | |
8 | ||
9 | platform_initsetup() { | |
10 | echo "No setup image required." | |
11 | } | |
12 | ||
13 | platform_initdist() { | |
14 | dd if=/dev/zero of="$1" bs=256 count=683 | |
15 | } | |
16 | ||
17 | platform_start() { | |
18 | linapple | |
19 | } | |
20 | ||
21 | platform_setup() { | |
22 | linapple | |
23 | } | |
24 | ||
25 | platform_dist() { | |
26 | linapple | |
27 | } | |
28 | ||
29 | platform_distboot() { | |
30 | linapple | |
31 | } | |
32 | ||
33 | platform_install() { | |
34 | echo "No install step. Installation will happen during setup." | |
35 | } |
0 | # Commodore 64 w/ VICE w/ certain options | |
1 | ||
2 | DISTFILE_URL='http://downloads.sourceforge.net/project/vice-emu/releases/vice-2.4.tar.gz' | |
3 | ||
4 | platform_initsys() { | |
5 | mkdir -p "$SYSTEM_IMAGE" | |
6 | } | |
7 | ||
8 | platform_initsetup() { | |
9 | echo "Not creating setup image. No setup image required." | |
10 | } | |
11 | ||
12 | platform_initdist() { | |
13 | dd if=/dev/zero of="$1" bs=256 count=683 | |
14 | c1541 -attach "$1" -format "DIST,2A" -dir | |
15 | } | |
16 | ||
17 | platform_start() { | |
18 | x64 -config vicerc -iecdevice8 -device8 1 -fs8 "${SYSTEM_IMAGE}" | |
19 | } | |
20 | ||
21 | platform_setup() { | |
22 | echo "Not starting emulator. No setup image required." | |
23 | #x64 -config vicerc -iecdevice8 -device8 1 -fs8 "${SYSTEM_IMAGE}" | |
24 | } | |
25 | ||
26 | platform_dist() { | |
27 | echo "Not starting emulator. No in-architecture dist steps required." | |
28 | #x64 -config vicerc -iecdevice8 -device8 1 -fs8 "${SYSTEM_IMAGE}" -iecdevice9 -9 "${DIST_IMAGE}" | |
29 | } | |
30 | ||
31 | platform_distboot() { | |
32 | x64 -config vicerc -iecdevice8 -device8 1 "${DIST_IMAGE}" | |
33 | } | |
34 | ||
35 | platform_install() { | |
36 | echo "No install step. Installation will happen during setup." | |
37 | } |
0 | # i386 w/ QEMU 1.6.2 w/ certain options | |
1 | ||
2 | DISTFILE_URL='http://wiki.qemu-project.org/download/qemu-1.6.2.tar.bz2' | |
3 | ||
4 | platform_initsys() { | |
5 | if [ "x$IMAGE_SIZE" = x ]; then | |
6 | IMAGE_SIZE=1024 | |
7 | echo "IMAGE_SIZE not set, defaulting to $IMAGE_SIZE megabytes" | |
8 | fi | |
9 | dd if=/dev/zero of="$1" bs=1M count=${IMAGE_SIZE} | |
10 | } | |
11 | ||
12 | platform_initsetup() { | |
13 | echo "Creating ISO image '$1'..." | |
14 | echo genisoimage -R -J -D -joliet-long -o "$1" staging_area | |
15 | genisoimage -R -J -D -joliet-long -o "$1" staging_area | |
16 | } | |
17 | ||
18 | platform_initdist() { | |
19 | if [ "x$IMAGE_SIZE" = x ]; then | |
20 | IMAGE_SIZE=1440 | |
21 | echo "IMAGE_SIZE not set, defaulting to $IMAGE_SIZE kilobytes" | |
22 | fi | |
23 | ||
24 | #-- TODO: this is a little restrictive | |
25 | case $IMAGE_SIZE in | |
26 | 360|720|1440) | |
27 | dd if=/dev/zero of="$1" bs=1K count=${IMAGE_SIZE} | |
28 | ;; | |
29 | *) | |
30 | echo "Only supported sizes: 360, 720 and 1440" | |
31 | exit 1 | |
32 | esac | |
33 | } | |
34 | ||
35 | platform_start() { | |
36 | qemu-system-i386 -hda "${SYSTEM_IMAGE}" | |
37 | } | |
38 | ||
39 | platform_setup() { | |
40 | qemu-system-i386 -hda "${SYSTEM_IMAGE}" -cdrom "${SETUP_IMAGE}" | |
41 | } | |
42 | ||
43 | platform_dist() { | |
44 | qemu-system-i386 -hda "${SYSTEM_IMAGE}" -fda "${DIST_IMAGE}" | |
45 | } | |
46 | ||
47 | platform_distboot() { | |
48 | qemu-system-i386 -fda "${DIST_IMAGE}" -boot order=a | |
49 | } | |
50 | ||
51 | platform_install() { | |
52 | qemu-system-i386 -hda "${SYSTEM_IMAGE}" -cdrom "${INSTALL_IMAGE}" -boot order=d | |
53 | } |
0 | # Vic 20 w/ VICE w/ certain options | |
1 | ||
2 | DISTFILE_URL='http://downloads.sourceforge.net/project/vice-emu/releases/vice-2.4.tar.gz' | |
3 | ||
4 | platform_initsys() { | |
5 | mkdir -p "$SYSTEM_IMAGE" | |
6 | } | |
7 | ||
8 | platform_initsetup() { | |
9 | echo "Not creating setup image. No setup image required." | |
10 | } | |
11 | ||
12 | platform_initdist() { | |
13 | dd if=/dev/zero of="$1" bs=256 count=683 | |
14 | c1541 -attach "$1" -format "DIST,2A" -dir | |
15 | } | |
16 | ||
17 | platform_start() { | |
18 | xvic -config vicerc -iecdevice8 -device8 1 -fs8 "${SYSTEM_IMAGE}" | |
19 | } | |
20 | ||
21 | platform_setup() { | |
22 | echo "Not starting emulator. No setup image required." | |
23 | #xvic -config vicerc -iecdevice8 -device8 1 -fs8 ${SYSTEM_IMAGE} | |
24 | } | |
25 | ||
26 | platform_dist() { | |
27 | echo "Not starting emulator. No in-architecture dist steps required." | |
28 | #xvic -config vicerc -iecdevice8 -device8 1 -fs8 ${SYSTEM_IMAGE} -iecdevice9 -9 ${DIST_IMAGE} | |
29 | } | |
30 | ||
31 | platform_distboot() { | |
32 | xvic -config vicerc -iecdevice8 -device8 1 "${DIST_IMAGE}" | |
33 | } | |
34 | ||
35 | platform_install() { | |
36 | echo "No install step. Installation will happen during setup." | |
37 | } |
0 | #!/bin/sh | |
1 | ||
2 | . ./Funicularfile | |
3 | ||
4 | DRIVER_DIR=`dirname $0` | |
5 | . ${DRIVER_DIR}/fu-platform-${PLATFORM}.sh | |
6 | ||
7 | runnable() { | |
8 | command -V $1 >/dev/null | |
9 | } | |
10 | ||
11 | funicular_init() { | |
12 | imgtype=$1 | |
13 | shift | |
14 | case $imgtype in | |
15 | system) | |
16 | if [ -e $SYSTEM_IMAGE ]; then | |
17 | echo "$SYSTEM_IMAGE already exists! Delete it first." | |
18 | exit 1 | |
19 | fi | |
20 | platform_initsys "$SYSTEM_IMAGE" | |
21 | ;; | |
22 | setup) | |
23 | funicular_initsetup "$SETUP_IMAGE" | |
24 | ;; | |
25 | dist) | |
26 | if [ -e $DIST_IMAGE ]; then | |
27 | echo "$DIST_IMAGE already exists! Delete it first." | |
28 | exit | |
29 | fi | |
30 | platform_initdist "$DIST_IMAGE" | |
31 | ;; | |
32 | *) | |
33 | echo "Usage: funicular init (system|setup|dist)" | |
34 | exit 1 | |
35 | esac | |
36 | } | |
37 | ||
38 | funicular_install() { | |
39 | if [ ! -e $INSTALL_IMAGE ]; then | |
40 | echo "$INSTALL_IMAGE does not exist. Obtain it first." | |
41 | echo $INSTALL_IMAGE_URL | |
42 | exit 1 | |
43 | fi | |
44 | if runnable install_instructions; then | |
45 | cat <<EOF | |
46 | ========================= | |
47 | INSTALLATION INSTRUCTIONS | |
48 | ========================= | |
49 | EOF | |
50 | install_instructions | |
51 | fi | |
52 | ||
53 | platform_install $* | |
54 | } | |
55 | ||
56 | funicular_initsetup() { | |
57 | echo "Creating setup image '$1'..." | |
58 | ||
59 | rm -rf "$1" | |
60 | ||
61 | mkdir -p distfiles | |
62 | for url in $DISTFILES; do | |
63 | dest=`basename $url` | |
64 | if [ -e distfiles/$dest ]; then | |
65 | echo "distfiles/$dest already fetched" | |
66 | else | |
67 | wget $url -O distfiles/$dest | |
68 | fi | |
69 | done | |
70 | ||
71 | mkdir -p distrepos | |
72 | cd distrepos | |
73 | for url in $DISTREPOS; do | |
74 | git clone $DISTREPO_ROOT$url | |
75 | done | |
76 | cd .. | |
77 | ||
78 | rm -rf staging_area | |
79 | mkdir -p staging_area | |
80 | ||
81 | for url in $DISTFILES; do | |
82 | dest=`basename $url` | |
83 | # TODO apply name map here | |
84 | dest_name=$dest | |
85 | cp -p distfiles/$dest staging_area/$dest_name | |
86 | done | |
87 | ||
88 | cd distrepos | |
89 | for repo in *; do | |
90 | tar zcfv ../staging_area/$repo.tar.gz $repo | |
91 | done | |
92 | cd .. | |
93 | ||
94 | # for spec in string.gmatch(distrepos_specs, "[^%s]+") do | |
95 | # local url = get_url_for_spec(funicular, spec) | |
96 | # local source_name = basename(url) | |
97 | # local dest_name = source_name | |
98 | # local domain = 'bitbucket.org' -- FIXME | |
99 | # local username = 'catseye' -- FIXME | |
100 | # if funicular.name_map and funicular.name_map[source_name] then | |
101 | # dest_name = funicular.name_map[source_name] | |
102 | # end | |
103 | # if funicular.toolshelf_inside then | |
104 | # local tarball_name = domain .. ',' .. username .. ',' .. dest_name .. '-master.tar.gz' | |
105 | # execute(funicular, 'cd distrepos && ' .. | |
106 | # 'tar zcf ../staging_area/' .. tarball_name .. ' ' .. source_name) | |
107 | # elseif funicular.zip_unversioned then | |
108 | # if exists('distrepos/' .. source_name .. '/.hg') then | |
109 | # execute(funicular, 'cd distrepos/' .. source_name .. | |
110 | # ' && hg archive -r tip -t zip ' .. | |
111 | # '-X .hgignore -X .gitignore -X .hgtags -X .hg_archival.txt ' .. | |
112 | # '../../staging_area/' .. dest_name .. '.zip') | |
113 | # else | |
114 | # execute(funicular, 'cd distrepos/' .. source_name .. | |
115 | # ' && git archive --format=zip HEAD ' .. | |
116 | # '--output=../../staging_area/' .. dest_name .. '.zip') | |
117 | # end | |
118 | # else | |
119 | # execute(funicular, 'cd distrepos && tar zcf ../staging_area/' .. | |
120 | # dest_name .. '.tgz ' .. source_name) | |
121 | # end | |
122 | # end | |
123 | ||
124 | if [ -d skel ]; then | |
125 | cp -Rp skel/* staging_area/ | |
126 | fi | |
127 | ||
128 | if runnable setup_script; then | |
129 | setup_script | |
130 | fi | |
131 | ||
132 | platform_initsetup "$1" | |
133 | ||
134 | #rm -rf staging_area | |
135 | } | |
136 | ||
137 | funicular_setup() { | |
138 | if runnable setup_instructions; then | |
139 | cat <<EOF | |
140 | ================== | |
141 | SETUP INSTRUCTIONS | |
142 | ================== | |
143 | EOF | |
144 | setup_instructions | |
145 | fi | |
146 | ||
147 | platform_setup $* | |
148 | } | |
149 | ||
150 | funicular_start() { | |
151 | platform_start $* | |
152 | } | |
153 | ||
154 | funicular_builddist() { | |
155 | if [ ! -e $DIST_IMAGE ]; then | |
156 | echo "$DIST_IMAGE does not exist. (Initialize it first.)" | |
157 | exit 1 | |
158 | fi | |
159 | ||
160 | if runnable dist_script; then | |
161 | dist_script $* | |
162 | fi | |
163 | ||
164 | if runnable dist_instructions; then | |
165 | cat <<EOF | |
166 | ========================= | |
167 | DISTRIBUTION INSTRUCTIONS | |
168 | ========================= | |
169 | EOF | |
170 | dist_instructions | |
171 | fi | |
172 | ||
173 | platform_dist $* | |
174 | } | |
175 | ||
176 | funicular_distboot() { | |
177 | if [ ! -e $DIST_IMAGE ]; then | |
178 | echo "$DIST_IMAGE does not exist. (Initialize and build it first.)" | |
179 | exit 1 | |
180 | fi | |
181 | ||
182 | platform_distboot $* | |
183 | } | |
184 | ||
185 | funicular_backup() { | |
186 | bu=`basename $SYSTEM_IMAGE` | |
187 | bu="$bu-backup.tar.gz" | |
188 | if [ -e $bu ]; then | |
189 | echo "$bu already exists! Delete it or rename it first." | |
190 | exit 1 | |
191 | fi | |
192 | tar zcvf $bu $SYSTEM_IMAGE | |
193 | } | |
194 | ||
195 | funicular_restore() { | |
196 | if [ -e $SYSTEM_IMAGE ]; then | |
197 | echo "$SYSTEM_IMAGE already exists! Delete it first." | |
198 | exit 1 | |
199 | fi | |
200 | ||
201 | bu=`basename $SYSTEM_IMAGE` | |
202 | bu="$bu-backup.tar.gz" | |
203 | tar zxvf $bu | |
204 | } | |
205 | ||
206 | ######## | |
207 | # MAIN # | |
208 | ######## | |
209 | ||
210 | CMD=$1 | |
211 | shift | |
212 | ||
213 | case $CMD in | |
214 | init|install|setup|start|builddist|distboot|backup|restore) | |
215 | funicular_$CMD $* | |
216 | ;; | |
217 | *) | |
218 | cat <<EOF | |
219 | Usage: funicular <command> | |
220 | where <command> is one of: | |
221 | init | |
222 | install | |
223 | setup | |
224 | start | |
225 | builddist | |
226 | distboot | |
227 | backup | |
228 | restore | |
229 | EOF | |
230 | exit 1 | |
231 | esac |