Magellan Linux

Contents of /trunk/freespace2/fs2-open-installer.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 96 - (show annotations) (download) (as text)
Wed Jan 17 00:23:25 2007 UTC (17 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 3634 byte(s)
several fixes; first running release

1 #!/bin/bash
2 # $Header: /root/magellan-cvs/src/freespace2/fs2-open-installer.sh,v 1.2 2007-01-17 00:23:25 niro Exp $
3 # Freespace2 retail files installer
4
5 # some default vars
6 DATADIR=/usr/games/freespace2
7 CDROM="$1"
8
9 COLRED="\033[1;6m\033[31m"
10 COLGREEN="\033[1;6m\033[32m"
11 COLDEFAULT="\033[0m"
12
13 if [[ ${NOCOLORS} = true ]]
14 then
15 COLRED=""
16 COLGREEN=""
17 COLDEFAULT=""
18 fi
19
20 is_mounted() {
21 local dev=$1
22 local i
23
24 i=$(cat /proc/mounts | grep "${dev} " | cut -d ' ' -f1)
25 [[ ${i} != ${dev} ]] && return 1
26
27 return 0
28 }
29
30 die()
31 {
32 echo -e ${COLRED}"Error: $@"${COLDEFAULT}
33
34 # clean up
35 is_mounted ${CDROM} && umount ${CDROM}
36 sleep 2
37 [[ -d ${TMP} ]] && rm -rf ${TMP}
38
39 exit 1
40 }
41
42 cecho()
43 {
44 echo -e ${COLGREEN}"$@"${COLDEFAULT}
45 }
46
47 [[ $(id -u) != 0 ]] && die "You must be root!"
48 [[ -f ${DATADIR}/.installed ]] && die "Media files already installed."
49 [[ -z $(which unshield) ]] && die "unshield not found."
50 [[ -z $(which mktemp) ]] && die "mktemp not found."
51 [[ -z $(which eject) ]] && die "eject not found."
52 [[ -z ${CDROM} ]] && die "No cdrom device given."
53
54 TMP="$(mktemp -d)"
55
56 # some needed directories
57 install -d ${TMP}/cdrom
58 install -d ${TMP}/data
59 install -d ${TMP}/retailvp
60
61 cecho "To setup Freespace2 I need to copy several files from the original CDs."
62 echo
63
64 #### disc1 ####
65 eject ${CDROM}
66 cecho "Please insert disc1 of Freespace2 into your cdrom and press enter"
67 read
68 eject -t ${CDROM}
69
70 mount ${CDROM} ${TMP}/cdrom || die "mount disc1"
71 [[ ! -f ${TMP}/cdrom/data1.cab ]] && die "disc1 not found"
72
73 cecho "Now extracting retail files from data1.cab ..."
74 pushd ${TMP}
75 for group in "Basic Install Files" \
76 "Intel Anims" \
77 "Music Compressed" \
78 "High Res Files"
79 do
80 unshield -d ./retailvp -g "${group}" -L -j x ${TMP}/cdrom/data1.cab || die "unpacking '${group}'"
81 done
82 unshield -d ./ -g "Hud Config Files" -L -j x ${TMP}/cdrom/data1.cab || die "unpacking ${group}"
83 popd
84
85 umount ${TMP}/cdrom || die "umount disc1 failed"
86 eject ${CDROM}
87
88
89 #### disc2 ####
90 echo
91 cecho "Please insert disc2 of Freespace2 into your cdrom and press enter"
92 read
93 eject -t ${CDROM}
94
95 mount ${CDROM} ${TMP}/cdrom || die "mount disc2"
96 [[ ! -f ${TMP}/cdrom/data2.cab ]] && die "disc2 not found"
97
98 for i in tango1_fs2.vp COLOSSUS.MVE INTRO.MVE MONO1.MVE
99 do
100 cecho "Copying ${i} to ${TMP}/data"
101 # lower case needed!
102 cp -vg ${TMP}/cdrom/${i} ${TMP}/data/$(echo $i | tr [:upper:] [:lower:]) || die "copying ${i}"
103 done
104 umount ${TMP}/cdrom || die "umount disc2 failed"
105 eject ${CDROM}
106
107
108 #### disc3 ####
109 echo
110 cecho "Please insert disc3 of Freespace2 into your cdrom and press enter"
111 read
112 eject -t ${CDROM}
113
114 mount ${CDROM} ${TMP}/cdrom || die "mount disc3"
115 [[ ! -f ${TMP}/cdrom/data3.cab ]] && die "disc3 not found"
116
117
118 for i in tango2_fs2.vp tango3_fs2.vp BASTION.MVE ENDPART1.MVE \
119 ENDPRT2A.MVE ENDPRT2B.MVE MONO2.MVE MONO3.MVE MONO4.MVE
120 do
121 cecho "Copying ${i} to ${TMP}/data"
122 # lower case needed!
123 cp -vg ${TMP}/cdrom/${i} ${TMP}/data/$(echo $i | tr [:upper:] [:lower:]) || die "copying ${i}"
124 done
125 umount ${TMP}/cdrom || die "umount disc3 failed"
126 eject ${CDROM}
127
128
129 cecho "Installing Retail Freespace2 files to the system ..."
130 install -v -m0644 ${TMP}/hud_config_files/* ${DATADIR}/data/players || die "installing HUD"
131 install -v -m0644 ${TMP}/retailvp/*/* ${DATADIR}/data/players || die "installing retailvps1"
132 install -v -m0644 ${TMP}/data/*.vp ${DATADIR} || die "installing retailvps2"
133 install -v -m0644 ${TMP}/data/*.mve ${DATADIR}/data/movies || die "installing movies"
134
135 # mark installation as "installed"
136 touch ${DATADIR}/.installed
137
138 cecho "Cleaning up temp dirs ..."
139 [[ -d ${TMP} ]] && rm -rf ${TMP}
140
141 cecho "Installation of Freespace2 successfully finished!"
142 exit 0