-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathretroci
executable file
·66 lines (57 loc) · 1.47 KB
/
retroci
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/sh
# run expect \
exec expect -f "$0" "$@"
# lmap is missing in Tcl 8.5 (which is used by expect on OpenBSD)
proc lmap {_var list body} {
upvar 1 $_var var
set res {}
foreach var $list {lappend res [uplevel 1 $body]}
set res
}
if { $argc != 1 } {
error "usage: "
}
set ip "192.168.64.9"
set machine [lindex $argv 0]
switch -- $machine {
211 {
set name "2.11BSD"
set port 2301
}
43 {
set name "4.3BSD"
set port 2302
}
default {
error "invalid name: $machine"
}
}
# Prepare mk
puts "Cleaning..."
exec mk distclean
set files {mk.[1ch] compats.[ch] configure Mkfile}
set globbed [lmap f $files {glob "$f"}]
set prefixed [lmap f [join $globbed] {expr {"mk/$f"}}]
puts "Generating tarball..."
set data [exec sh -c "cd ..; tar -cf - -F tar $prefixed | compress -b12 | uuencode mk.tar.Z"]
puts "Connecting to $name..."
spawn telnet $ip $port
set prompt "\n\$ "
set timeout 120
expect "login: " { send "benni\r" }
expect $prompt { send "TERM=vt100; export TERM\r" }
expect $prompt { send "rm -rf mk mk.tar.Z\r" }
expect $prompt {
send "uudecode\r"
send "$data"
send "\r"
}
expect $prompt { send "uncompress < mk.tar.Z | tar -xf -\r" }
expect $prompt { send "cd mk\r" }
expect $prompt { send "./configure --prefix=/usr/local\r" }
expect $prompt { send "make\r" }
expect $prompt { send "cp mk xmk\r" }
expect $prompt { send "./xmk clean all\r" }
expect $prompt { send "./xmk -hv\r" }
expect $prompt { send "echo DONE\r" }
expect $prompt { send "\004" }