Magellan Linux

Contents of /trunk/pkgtools/add2svn-r11.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2117 - (show annotations) (download) (as text)
Mon May 13 11:49:49 2013 UTC (10 years, 11 months 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 *