Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:executable *