Annotation of /trunk/toolchain/minstallpkg.sh
Parent Directory | Revision Log
Revision 153 -
(hide annotations)
(download)
(as text)
Mon Jul 4 00:41:38 2005 UTC (18 years, 11 months ago) by niro
File MIME type: application/x-sh
File size: 5140 byte(s)
Mon Jul 4 00:41:38 2005 UTC (18 years, 11 months ago) by niro
File MIME type: application/x-sh
File size: 5140 byte(s)
new toolchain create utilities and smages
1 | niro | 153 | #!/bin/bash |
2 | # 26.08.2004 <niro@magellan-linux.de> | ||
3 | |||
4 | ################################################### | ||
5 | # function install_direcories # | ||
6 | # install_direcories $PKGNAME # | ||
7 | ################################################### | ||
8 | install_directories() { | ||
9 | local PKGNAME | ||
10 | PKGNAME=$1 | ||
11 | |||
12 | if [ -e ${BUILDDIR}/${PKGNAME}/.dirs ] | ||
13 | then | ||
14 | |||
15 | #sets fieldseperator to "§" instead of " " | ||
16 | IFS=§ | ||
17 | |||
18 | while read pathto posix user group | ||
19 | do | ||
20 | if [ ! -z $pathto ] | ||
21 | then | ||
22 | echo -e "\t>>> DIR: ${ROOT}$pathto" | ||
23 | install -m $posix -o $user -g $group -d ${ROOT}${pathto} | ||
24 | fi | ||
25 | done < ${BUILDDIR}/${PKGNAME}/.dirs | ||
26 | |||
27 | #very important: unsetting the '§' fieldseperator | ||
28 | unset IFS | ||
29 | else | ||
30 | fatal_error .dir | ||
31 | fi | ||
32 | } | ||
33 | |||
34 | |||
35 | ################################################### | ||
36 | # function install_files # | ||
37 | # install_files $PKGNAME # | ||
38 | ################################################### | ||
39 | install_files(){ | ||
40 | local PKGNAME | ||
41 | local RETVAL | ||
42 | local COUNTER | ||
43 | local FILENAME | ||
44 | local DESTINATION | ||
45 | |||
46 | PKGNAME=$1 | ||
47 | |||
48 | if [ -e ${BUILDDIR}/${PKGNAME}/.files ] | ||
49 | then | ||
50 | #sets fieldseperator to "§" instead of " " | ||
51 | IFS=§ | ||
52 | |||
53 | while read pathto posix user group mtime md5sum | ||
54 | do | ||
55 | if [ ! -z $pathto ] | ||
56 | then | ||
57 | echo -e "\t>>> FILE: ${ROOT}${pathto}" | ||
58 | |||
59 | ### kleiner notfall fix ### | ||
60 | if [ ! -d `dirname $pathto` ] | ||
61 | then | ||
62 | install -d `dirname ${ROOT}${pathto}` | ||
63 | fi | ||
64 | |||
65 | FILE="${pathto}" | ||
66 | install -m ${posix} -o ${user} -g ${group} \ | ||
67 | ${BUILDDIR}/${PKGNAME}/binfiles/$FILE \ | ||
68 | ${ROOT}${pathto} | ||
69 | fi | ||
70 | done < ${BUILDDIR}/${PKGNAME}/.files | ||
71 | |||
72 | #very important: unsetting the '§' fieldseperator | ||
73 | unset IFS | ||
74 | else | ||
75 | fatal_error .files | ||
76 | fi | ||
77 | } | ||
78 | |||
79 | |||
80 | ################################################### | ||
81 | # function install_symlinks # | ||
82 | # install_symlinks $PKGNAME # | ||
83 | ################################################### | ||
84 | install_symlinks() { | ||
85 | local PKGNAME | ||
86 | PKGNAME=$1 | ||
87 | |||
88 | if [ -e ${BUILDDIR}/${PKGNAME}/.symlinks ] | ||
89 | then | ||
90 | #sets fieldseperator to "§" instead of " " | ||
91 | IFS=§ | ||
92 | |||
93 | while read pathto posix link mtime | ||
94 | do | ||
95 | if [ ! -z $pathto ] | ||
96 | then | ||
97 | echo -e "\t>>> LINK: ${ROOT}${pathto}" | ||
98 | ln -snf $link ${ROOT}${pathto} | ||
99 | fi | ||
100 | done < ${BUILDDIR}/${PKGNAME}/.symlinks | ||
101 | |||
102 | #very important: unsetting the '§' fieldseperator | ||
103 | unset IFS | ||
104 | else | ||
105 | fatal_error .symlinks | ||
106 | fi | ||
107 | } | ||
108 | |||
109 | |||
110 | ################################################### | ||
111 | # function install_blockdevices # | ||
112 | # install_blockdevices $PKGNAME # | ||
113 | ################################################### | ||
114 | install_blockdevices() { | ||
115 | local PKGNAME | ||
116 | PKGNAME=$1 | ||
117 | |||
118 | if [ -e ${BUILDDIR}/${PKGNAME}/.pipes ] | ||
119 | then | ||
120 | #sets fieldseperator to "§" instead of " " | ||
121 | IFS=§ | ||
122 | |||
123 | while read pathto posix | ||
124 | do | ||
125 | if [ ! -z $pathto ] | ||
126 | then | ||
127 | echo -e "\t>>> PIPE: ${ROOT}${pathto}" | ||
128 | mkfifo -m $posix ${ROOT}${pathto} | ||
129 | fi | ||
130 | done < ${BUILDDIR}/${PKGNAME}/.pipes | ||
131 | |||
132 | #very important: unsetting the '§' fieldseperator | ||
133 | unset IFS | ||
134 | else | ||
135 | fatal_error .pipes | ||
136 | fi | ||
137 | } | ||
138 | |||
139 | |||
140 | ################################################### | ||
141 | # function install_characterdevices # | ||
142 | # install_characterdevices $PKGNAME # | ||
143 | ################################################### | ||
144 | install_characterdevices() { | ||
145 | local PKGNAME | ||
146 | PKGNAME=$1 | ||
147 | |||
148 | if [ -e ${BUILDDIR}/${PKGNAME}/.char ] | ||
149 | then | ||
150 | #sets fieldseperator to "§" instead of " " | ||
151 | IFS=§ | ||
152 | |||
153 | while read pathto posix | ||
154 | do | ||
155 | if [ ! -z $pathto ] | ||
156 | then | ||
157 | echo -e "\t>>> CHAR: ${ROOT}${pathto}" | ||
158 | mknode -m $posix -c ${ROOT}${pathto} | ||
159 | fi | ||
160 | done < ${BUILDDIR}/${PKGNAME}/.char | ||
161 | |||
162 | #very important: unsetting the '§' fieldseperator | ||
163 | unset IFS | ||
164 | else | ||
165 | fatal_error .char | ||
166 | fi | ||
167 | |||
168 | #very important: unsetting the '§' fieldseperator | ||
169 | unset IFS | ||
170 | } | ||
171 | |||
172 | |||
173 | ################################################### | ||
174 | # function build_doinstall # | ||
175 | # build_doinstall $PKGNAME # | ||
176 | # NOTE: this is an wrapper do install packages # | ||
177 | ################################################### | ||
178 | build_doinstall() { | ||
179 | #this is only a wrapper | ||
180 | |||
181 | # NOTE: | ||
182 | # !! we use § as field seperator !! | ||
183 | # doing so prevent us to get errors by filenames with spaces | ||
184 | |||
185 | local PKGNAME | ||
186 | PKGNAME=$1 | ||
187 | |||
188 | install_directories ${PKGNAME} | ||
189 | install_files ${PKGNAME} | ||
190 | install_symlinks ${PKGNAME} | ||
191 | install_blockdevices ${PKGNAME} | ||
192 | install_characterdevices ${PKGNAME} | ||
193 | } | ||
194 | |||
195 | usage(){ | ||
196 | echo | ||
197 | echo -e "Usage:" | ||
198 | echo -e "$(basename $0) /path/to/foo.mpk" | ||
199 | echo | ||
200 | echo -e "Use ROOT=/path/to/install-location" | ||
201 | echo -e "to overide the default-root '/'" | ||
202 | echo | ||
203 | |||
204 | exit 1 | ||
205 | } | ||
206 | |||
207 | [ -z "$1" ] && usage | ||
208 | |||
209 | PKGFILE=$1 | ||
210 | PKGNAME=$(basename ${PKGFILE} .mpk) | ||
211 | |||
212 | |||
213 | if [ -z "${BUILDDIR}" ] | ||
214 | then | ||
215 | export BUILDDIR=/var/tmp/magebuild | ||
216 | install -d ${BUILDDIR} | ||
217 | fi | ||
218 | |||
219 | echo -e "\nInstallation of Package: ${COLGREEN}${PKGNAME/-${ARCH}/}${COLDEFAULT}\n" | ||
220 | echo -en "Unpacking Package ... " | ||
221 | tar xjmf ${PKGFILE} -C ${BUILDDIR} | ||
222 | echo "done" | ||
223 | |||
224 | #fake root ? | ||
225 | if [ -n "${ROOT}" ] | ||
226 | then | ||
227 | echo | ||
228 | echo "Installing package to fake ROOT '${ROOT}'" | ||
229 | echo | ||
230 | fi | ||
231 | |||
232 | #build_doinstall | ||
233 | build_doinstall ${PKGNAME} | ||
234 | |||
235 | #cleanup | ||
236 | if [ -d ${BUILDDIR}/${PKGNAME} ] | ||
237 | then | ||
238 | rm -rf ${BUILDDIR}/${PKGNAME} | ||
239 | fi | ||
240 | |||
241 | echo -e "\nPackage '${PKGNAME/-${ARCH}/}' sucessfully installed.\n" |
Properties
Name | Value |
---|---|
svn:executable | * |