Contents of /trunk/pkgtools/add2svn-r11.sh
Parent Directory | Revision Log
Revision 2117 -
(show annotations)
(download)
(as text)
Mon May 13 11:49:49 2013 UTC (11 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 10620 byte(s)
Mon May 13 11:49:49 2013 UTC (11 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 10620 byte(s)
-fixed REPO uris, fixed hardcored chroot path, create missing BUILDED and BUILDED/sources directory, do not print errors with virtual packages, make use of the die() function, always export the current ARCH and always export the PKGTYPE
1 | #!/bin/bash |
2 | |
3 | : ${MAGERC="/etc/mage.rc"} |
4 | |
5 | source /etc/mage.rc.global |
6 | source ${MAGERC} |
7 | source ${MLIBDIR}/mage4.functions.sh |
8 | source ${MLIBDIR}/smage2.functions.sh |
9 | |
10 | RESUME="" |
11 | if [[ $1 = --resume ]] |
12 | then |
13 | echo "resume enabled!" |
14 | RESUME="--resume" |
15 | shift |
16 | fi |
17 | |
18 | SMAGEFILE="$1" |
19 | if [[ -z ${SMAGEFILE} ]] |
20 | then |
21 | echo "No smagefile given." |
22 | exit 1 |
23 | fi |
24 | |
25 | [[ -n $2 ]] && [[ $2 != -st ]] && SVN_COMMIT="$2" |
26 | if [[ $3 = -st ]] || [[ $2 = -st ]] |
27 | then |
28 | echo "Using SRCTARBALL ..." |
29 | USE_SRCTARBALL=true |
30 | fi |
31 | |
32 | #CURARCH=i686 |
33 | #CURARCH=x86_64 |
34 | |
35 | if [[ -z ${CURARCH} ]] |
36 | then |
37 | echo "Environment variable \${CURARCH} not given. Aborted." |
38 | exit 1 |
39 | fi |
40 | |
41 | # get smagedir from given smagefile |
42 | SMAGESCRIPTSDIR=${SMAGEFILE%/*/*/*} |
43 | # source distribution file |
44 | if [[ ${SMAGESCRIPTSDIR}/distribution ]] |
45 | then |
46 | source ${SMAGESCRIPTSDIR}/distribution |
47 | fi |
48 | |
49 | # force usage of distrotag here |
50 | MAGE_FEATURES+=( "pkgdistrotag" ) |
51 | # load all mage features |
52 | load_mage_features |
53 | |
54 | USE_UNIONFS=false |
55 | |
56 | BUILDROOT=/mnt/BUILDROOT-R11-"${CURARCH}" |
57 | |
58 | if [[ ${USE_UNIONFS} = true ]] |
59 | then |
60 | BUILDROOT_CHROOT=${BUILDROOT}/chroot |
61 | BUILDROOT_WRITEABLE=${BUILDROOT}/writeable |
62 | BUILDROOT_LAYEREDFS=${BUILDROOT}/layeredfs |
63 | fi |
64 | |
65 | SMAGEDIR=$(dirname ${SMAGEFILE}) |
66 | MD5DIR=${SMAGEDIR}/md5 |
67 | MD5NAME=$(basename $1 .smage2).md5 |
68 | SMAGENAME=$(basename $1) |
69 | CURPNAME=$(magename2pname $1) |
70 | CURPVER=$(magename2pver $1) |
71 | CURPBUILD=$(magename2pbuild $(basename $1 .smage2)) |
72 | CURDISTROTAG=$(print_distrotag) |
73 | PKGNAME=${CURPNAME}-${CURPVER}-${CURARCH}${CURDISTROTAG}-${CURPBUILD}.${PKGSUFFIX} |
74 | SRCPKGNAME=${CURPNAME}-${CURPVER}-${CURPBUILD}.${SRCPKGSUFFIX} |
75 | REPO="$(echo ${SMAGEFILE#*trunk/} | cut -d'/' -f1)" |
76 | #REPO="$(echo ${SMAGEFILE#*branches/magellan-next/} | cut -d'/' -f1)" |
77 | SSHLOGIN="tjoke@magellan-linux.de:/var/www/htdocs/magellan/R11/packages" |
78 | SRCTARBALL_URI="http://magellan-linux.de/magellan/R11/packages/src" |
79 | |
80 | die() |
81 | { |
82 | echo "ERROR: $@" |
83 | trap_exit |
84 | exit 1 |
85 | } |
86 | |
87 | is_loc_mounted() |
88 | { |
89 | local filesys |
90 | local i |
91 | filesys=$1 |
92 | |
93 | i="$(cat /proc/mounts | grep " ${filesys} " | cut -d ' ' -f2)" |
94 | [[ ${i} != ${filesys} ]] && return 1 |
95 | |
96 | return 0 |
97 | } |
98 | |
99 | trap_exit() |
100 | { |
101 | is_loc_mounted "${BUILDROOT}/dev" && sudo umount ${BUILDROOT}/dev |
102 | is_loc_mounted "${BUILDROOT}/proc" && sudo umount ${BUILDROOT}/proc |
103 | is_loc_mounted "${BUILDROOT}/sys" && sudo umount ${BUILDROOT}/sys |
104 | if [[ ${USE_UNIONFS} = true ]] |
105 | then |
106 | is_loc_mounted "${BUILDROOT_LAYEREDFS}" && sudo umount ${BUILDROOT_LAYEREDFS} |
107 | fi |
108 | echo "add2svn-r11 aborted" |
109 | exit 1 |
110 | } |
111 | |
112 | get_value_from_file() |
113 | { |
114 | local var="$1" |
115 | local file="$2" |
116 | local value |
117 | |
118 | # source /etc/mage.rc to get the includes right |
119 | source /etc/mage.rc.global |
120 | source /etc/mage.rc |
121 | |
122 | # set the right arch |
123 | ARCH="${CURARCH}" |
124 | |
125 | # evaluate the value |
126 | source ${file} $> /dev/null |
127 | |
128 | # fix pcategorie -> pcat |
129 | if [[ -z ${PCAT} ]] |
130 | then |
131 | [[ -n ${PCATEGORIE} ]] && PCAT="${PCATEGORIE}" |
132 | fi |
133 | |
134 | eval value=\$$(echo ${var}) |
135 | echo "${value}" |
136 | } |
137 | |
138 | get_function_from_file() |
139 | { |
140 | local function="$1" |
141 | local file="$2" |
142 | |
143 | # source /etc/mage.rc to get the includes right |
144 | source /etc/mage.rc.global |
145 | source /etc/mage.rc |
146 | |
147 | # set the right arch |
148 | ARCH="${CURARCH}" |
149 | |
150 | # evaluate the value |
151 | source ${file} $> /dev/null |
152 | export -f ${function} |
153 | } |
154 | |
155 | CURPCAT=$(get_value_from_file PCAT ${SMAGEFILE}) |
156 | if [[ ${USE_UNIONFS} = true ]] |
157 | then |
158 | INSTALLDB_BUILDROOT=$(get_value_from_file INSTALLDB ${BUILDROOT}/chroot/etc/mage.rc) |
159 | else |
160 | INSTALLDB_BUILDROOT=$(get_value_from_file INSTALLDB ${BUILDROOT}/etc/mage.rc) |
161 | fi |
162 | CURSPLITPACKAGES="$(get_value_from_file SPLIT_PACKAGES ${SMAGEFILE})" |
163 | PKGTYPE="$(get_value_from_file PKGTYPE ${SMAGEFILE})" |
164 | |
165 | # set some proper traps |
166 | trap "trap_exit" SIGINT SIGTERM |
167 | |
168 | if [[ ${USE_UNIONFS} = true ]] |
169 | then |
170 | # install layeredfs direcories |
171 | [[ ! -d ${BUILDROOT_CHROOT} ]] && sudo install -d ${BUILDROOT_CHROOT} |
172 | [[ ! -d ${BUILDROOT_WRITEABLE} ]] && sudo install -d ${BUILDROOT_WRITEABLE} |
173 | [[ ! -d ${BUILDROOT_LAYEREDFS} ]] && sudo install -d ${BUILDROOT_LAYEREDFS} |
174 | |
175 | # mount layeredfs |
176 | sudo mount -t unionfs -o dirs=${BUILDROOT_WRITEABLE}=rw:${BUILDROOT_CHROOT}=ro unionfs ${BUILDROOT_LAYEREDFS} |
177 | BUILDROOT=${BUILDROOT_LAYEREDFS} |
178 | fi |
179 | |
180 | sudo mount -t proc proc ${BUILDROOT}/proc |
181 | sudo mount -t sysfs sysfs ${BUILDROOT}/sys |
182 | sudo mount -o bind /dev ${BUILDROOT}/dev |
183 | |
184 | # abort if the package is already installed in BUILDROOT |
185 | if [[ -z ${CURSPLITPACKAGES} ]] |
186 | then |
187 | if [[ -d ${BUILDROOT}/${INSTALLDB_BUILDROOT}/${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD} ]] |
188 | then |
189 | die "Package '${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD}' already installed in ${BUILDROOT}. Aborting!" |
190 | fi |
191 | else |
192 | for i in ${CURSPLITPACKAGES} |
193 | do |
194 | if [[ -d ${BUILDROOT}/${INSTALLDB_BUILDROOT}/${CURPCAT}/${i}-${CURPVER}-${CURPBUILD} ]] |
195 | then |
196 | SPLITINSTALLED+=" ${CURPCAT}/${i}-${CURPVER}-${CURPBUILD}" |
197 | fi |
198 | done |
199 | if [[ ! -z ${SPLITINSTALLED} ]] |
200 | then |
201 | echo "Following SPLIT-Packages are installled from ${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD} in ${BUILDROOT}:" |
202 | for i in ${SPLITINSTALLED} |
203 | do |
204 | echo " ${i}" |
205 | done |
206 | die "Aborted." |
207 | fi |
208 | fi |
209 | |
210 | # delete md5 if exist |
211 | [[ -f ${MD5DIR}/${MD5NAME} ]] && rm ${MD5DIR}/${MD5NAME} |
212 | |
213 | if [[ ${USE_SRCTARBALL} != true ]] |
214 | then |
215 | /sbin/smage2 download ${SMAGEFILE} |
216 | /sbin/smage2 calcmd5 ${SMAGEFILE} ${MD5DIR} |
217 | pushd ${SMAGEDIR}/../ |
218 | svn add ${CURPNAME} |
219 | pushd ${SMAGEDIR} |
220 | svn add md5 |
221 | svn add ${SMAGENAME} md5/${MD5NAME} |
222 | |
223 | [[ -z ${SVN_COMMIT} ]] && SVN_COMMIT="auto added: ver bump to ${CURPVER}-${CURPBUILD}" |
224 | svn commit -m "${SVN_COMMIT}" ../${CURPNAME} ${SMAGENAME} md5 md5/${MD5NAME} |
225 | popd |
226 | fi |
227 | |
228 | sudo -s << EOF |
229 | :> ${BUILDROOT}/.installrc |
230 | |
231 | echo "export LC_ALL=C" >> ${BUILDROOT}/.installrc |
232 | # do not start any services, set mage bootstrap flag |
233 | echo "export MAGE_BOOTSTRAP=true" >> ${BUILDROOT}/.installrc |
234 | echo "REPO=${REPO}" >> ${BUILDROOT}/.installrc |
235 | echo "CURPNAME=${CURPNAME}" >> ${BUILDROOT}/.installrc |
236 | echo "CURPVER=${CURPVER}" >> ${BUILDROOT}/.installrc |
237 | echo "CURPBUILD=${CURPBUILD}" >> ${BUILDROOT}/.installrc |
238 | echo "CURARCH=${CURARCH}" >> ${BUILDROOT}/.installrc |
239 | echo "CURDISTROTAG=${CURDISTROTAG}" >> ${BUILDROOT}/.installrc |
240 | echo "CURSPLITPACKAGES=\"${CURSPLITPACKAGES}\"" >> ${BUILDROOT}/.installrc |
241 | echo "SMAGENAME=${SMAGENAME}" >> ${BUILDROOT}/.installrc |
242 | echo "MD5NAME=${MD5NAME}" >> ${BUILDROOT}/.installrc |
243 | echo "PKGNAME=${PKGNAME}" >> ${BUILDROOT}/.installrc |
244 | echo "SPKGNAME=${SPKGNAME}" >> ${BUILDROOT}/.installrc |
245 | echo '/usr/bin/whoami' >> ${BUILDROOT}/.installrc |
246 | echo 'source /etc/profile' >> ${BUILDROOT}/.installrc |
247 | #echo 'echo PATH=\${PATH};read' >> ${BUILDROOT}/.installrc |
248 | echo 'cd /var/cache/mage/smage/trunk/${REPO}' >> ${BUILDROOT}/.installrc |
249 | #echo 'cd /var/cache/mage/smage/branches/magellan-next/${REPO}' >> ${BUILDROOT}/.installrc |
250 | echo 'svn update distribution' >> ${BUILDROOT}/.installrc |
251 | echo 'svn update include' >> ${BUILDROOT}/.installrc |
252 | echo 'svn update ${CURPNAME}' >> ${BUILDROOT}/.installrc |
253 | echo 'USE_SRCTARBALL=${USE_SRCTARBALL}' >> ${BUILDROOT}/.installrc |
254 | echo 'if [[ \${USE_SRCTARBALL} != true ]];then ' >> ${BUILDROOT}/.installrc |
255 | echo "/sbin/smage2 ${RESUME} /var/cache/mage/smage/trunk/${REPO}/${CURPNAME}/${SMAGENAME} || exit 1" >> ${BUILDROOT}/.installrc |
256 | #echo "/sbin/smage2 ${RESUME} /var/cache/mage/smage/branches/magellan-next/${REPO}/${CURPNAME}/${SMAGENAME} || exit 1" >> ${BUILDROOT}/.installrc |
257 | echo 'else' >> ${BUILDROOT}/.installrc |
258 | echo 'echo "Fetching SRC_TARBALL"' >> ${BUILDROOT}/.installrc |
259 | echo 'pushd /var/tmp/magebuild > /dev/null' >> ${BUILDROOT}/.installrc |
260 | echo "SRCTARBALL=${CURPNAME}-${CURPVER}-${CURPBUILD}.${SRCPKGSUFFIX}" >> ${BUILDROOT}/.installrc |
261 | echo "SRCTARBALL_URI=${SRCTARBALL_URI}" >> ${BUILDROOT}/.installrc |
262 | echo '/usr/bin/wget -c \${SRCTARBALL_URI}/\${SRCTARBALL}' >> ${BUILDROOT}/.installrc |
263 | echo '/sbin/smage2 -st \${SRCTARBALL}' >> ${BUILDROOT}/.installrc |
264 | echo '[[ -f \${SRCTARBALL} ]] && rm \${SRCTARBALL}' >> ${BUILDROOT}/.installrc |
265 | echo 'popd > /dev/null' >> ${BUILDROOT}/.installrc |
266 | echo 'fi' >> ${BUILDROOT}/.installrc |
267 | echo '[ ! -d /BUILDED ] && install -d /BUILDED' >> ${BUILDROOT}/.installrc |
268 | echo '[ ! -d /BUILDED/sources ] && install -d /BUILDED/sources' >> ${BUILDROOT}/.installrc |
269 | echo 'if [[ ! -z \${CURSPLITPACKAGES} ]]' >> ${BUILDROOT}/.installrc |
270 | echo 'then' >> ${BUILDROOT}/.installrc |
271 | echo 'for package in \${CURSPLITPACKAGES}' >> ${BUILDROOT}/.installrc |
272 | echo 'do' >> ${BUILDROOT}/.installrc |
273 | echo '/sbin/mage install \${package} || exit 1' >> ${BUILDROOT}/.installrc |
274 | echo 'mv /var/cache/mage/packages/\${package}-${CURPVER}-${CURARCH}${CURDISTROTAG}-${CURPBUILD}.${PKGSUFFIX} /BUILDED' >> ${BUILDROOT}/.installrc |
275 | echo 'done' >> ${BUILDROOT}/.installrc |
276 | echo 'else' >> ${BUILDROOT}/.installrc |
277 | echo '/sbin/mage install ${CURPNAME} || exit 1' >> ${BUILDROOT}/.installrc |
278 | echo 'mv /var/cache/mage/packages/${PKGNAME} /BUILDED' >> ${BUILDROOT}/.installrc |
279 | echo 'fi' >> ${BUILDROOT}/.installrc |
280 | echo 'mv /var/cache/mage/packages/sources/${SRCPKGNAME} /BUILDED/sources' >> ${BUILDROOT}/.installrc |
281 | echo 'rm -rf /var/cache/mage/sources/${CURPNAME}' >> ${BUILDROOT}/.installrc |
282 | EOF |
283 | |
284 | sudo -H chroot ${BUILDROOT} /bin/bash /.installrc |
285 | sudo rm ${BUILDROOT}/.installrc |
286 | |
287 | if [[ ! -z ${CURSPLITPACKAGES} ]] |
288 | then |
289 | for package in ${CURSPLITPACKAGES} |
290 | do |
291 | # get pkgtyp |
292 | get_function_from_file split_info_${package} ${SMAGEFILE} |
293 | split_info_${package} |
294 | if [[ ${PKGTYPE} = virtual ]] |
295 | then |
296 | unset PKGTYPE |
297 | continue |
298 | fi |
299 | if [[ ${NOPKGBUILD} = true ]] |
300 | then |
301 | unset NOPKGBUILD |
302 | continue |
303 | fi |
304 | |
305 | pkgname="${package}-${CURPVER}-${CURARCH}${CURDISTROTAG}-${CURPBUILD}.${PKGSUFFIX}" |
306 | |
307 | if [[ -f ${BUILDROOT}/BUILDED/${pkgname} ]] |
308 | then |
309 | scp ${BUILDROOT}/BUILDED/${pkgname} ${SSHLOGIN}/${CURARCH}/ |
310 | else |
311 | die "Error: ${BUILDROOT}/BUILDED/${pkgname} missing!" |
312 | fi |
313 | done |
314 | else |
315 | if [[ ${PKGTYPE} = virtual ]] |
316 | then |
317 | unset PKGTYPE |
318 | echo "Virtual Package: nothing to upload" |
319 | elif [[ -f ${BUILDROOT}/BUILDED/${PKGNAME} ]] |
320 | then |
321 | scp ${BUILDROOT}/BUILDED/${PKGNAME} ${SSHLOGIN}/${CURARCH}/ |
322 | else |
323 | die "Error: ${BUILDROOT}/BUILDED/${PKGNAME} missing!" |
324 | fi |
325 | fi |
326 | |
327 | if [[ -f ${BUILDROOT}/BUILDED/sources/${SRCPKGNAME} ]] |
328 | then |
329 | scp ${BUILDROOT}/BUILDED/sources/${SRCPKGNAME} ${SSHLOGIN}/src/ |
330 | else |
331 | echo "Error: ${BUILDROOT}/BUILDED/${SRCPKGNAME} missing!" |
332 | # die |
333 | fi |
334 | |
335 | [[ -d /var/cache/mage/sources/${CURPNAME} ]] && rm -rf /var/cache/mage/sources/${CURPNAME} |
336 | |
337 | # umount layeredfs |
338 | is_loc_mounted "${BUILDROOT}/dev" && sudo umount ${BUILDROOT}/dev |
339 | is_loc_mounted "${BUILDROOT}/proc" && sudo umount ${BUILDROOT}/proc |
340 | is_loc_mounted "${BUILDROOT}/sys" && sudo umount ${BUILDROOT}/sys |
341 | if [[ ${USE_UNIONFS} = true ]] |
342 | then |
343 | is_loc_mounted "${BUILDROOT_LAYEREDFS}" && sudo umount ${BUILDROOT_LAYEREDFS} |
344 | fi |
345 | |
346 | # if we don't break before; all things are right - regardless if $? is not zero |
347 | # because some things like src-pkg creation may be disabled |
348 | exit 0 |
349 |
Properties
Name | Value |
---|---|
svn:executable | * |