Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2017 - (show annotations) (download) (as text)
Thu Jan 3 10:02:24 2013 UTC (11 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 10269 byte(s)
-added more scripts
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/magellan-dev/R11/packages"
78 SRCTARBALL_URI="http://magellan-linux.de/magellan/magellan-dev/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 # evaluate the value
123 source ${file} $> /dev/null
124
125 # fix pcategorie -> pcat
126 if [[ -z ${PCAT} ]]
127 then
128 [[ -n ${PCATEGORIE} ]] && PCAT="${PCATEGORIE}"
129 fi
130
131 eval value=\$$(echo ${var})
132 echo "${value}"
133 }
134
135 get_function_from_file()
136 {
137 local function="$1"
138 local file="$2"
139
140 # source /etc/mage.rc to get the includes right
141 source /etc/mage.rc.global
142 source /etc/mage.rc
143
144 # evaluate the value
145 source ${file} $> /dev/null
146 export -f ${function}
147 }
148
149 CURPCAT=$(get_value_from_file PCAT ${SMAGEFILE})
150 if [[ ${USE_UNIONFS} = true ]]
151 then
152 INSTALLDB_BUILDROOT=$(get_value_from_file INSTALLDB ${BUILDROOT}/chroot/etc/mage.rc)
153 else
154 INSTALLDB_BUILDROOT=$(get_value_from_file INSTALLDB ${BUILDROOT}/etc/mage.rc)
155 fi
156 CURSPLITPACKAGES="$(get_value_from_file SPLIT_PACKAGES ${SMAGEFILE})"
157
158 # set some proper traps
159 trap "trap_exit" SIGINT SIGTERM
160
161 if [[ ${USE_UNIONFS} = true ]]
162 then
163 # install layeredfs direcories
164 [[ ! -d ${BUILDROOT_CHROOT} ]] && sudo install -d ${BUILDROOT_CHROOT}
165 [[ ! -d ${BUILDROOT_WRITEABLE} ]] && sudo install -d ${BUILDROOT_WRITEABLE}
166 [[ ! -d ${BUILDROOT_LAYEREDFS} ]] && sudo install -d ${BUILDROOT_LAYEREDFS}
167
168 # mount layeredfs
169 sudo mount -t unionfs -o dirs=${BUILDROOT_WRITEABLE}=rw:${BUILDROOT_CHROOT}=ro unionfs ${BUILDROOT_LAYEREDFS}
170 BUILDROOT=${BUILDROOT_LAYEREDFS}
171 fi
172
173 sudo mount -t proc proc ${BUILDROOT}/proc
174 sudo mount -t sysfs sysfs ${BUILDROOT}/sys
175 sudo mount -o bind /dev ${BUILDROOT}/dev
176
177 # abort if the package is already installed in BUILDROOT
178 if [[ -z ${CURSPLITPACKAGES} ]]
179 then
180 if [[ -d ${BUILDROOT}/${INSTALLDB_BUILDROOT}/${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD} ]]
181 then
182 echo "Package '${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD}' already installed in ${BUILDROOT}. Aborting!"
183 exit 1
184 fi
185 else
186 for i in ${CURSPLITPACKAGES}
187 do
188 if [[ -d ${BUILDROOT}/${INSTALLDB_BUILDROOT}/${CURPCAT}/${i}-${CURPVER}-${CURPBUILD} ]]
189 then
190 SPLITINSTALLED+=" ${CURPCAT}/${i}-${CURPVER}-${CURPBUILD}"
191 fi
192 done
193 if [[ ! -z ${SPLITINSTALLED} ]]
194 then
195 echo "Following SPLIT-Packages are installled from ${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD} in ${BUILDROOT}:"
196 for i in ${SPLITINSTALLED}
197 do
198 echo " ${i}"
199 done
200 echo "Aborted."
201 exit 1
202 fi
203 fi
204
205 # delete md5 if exist
206 [[ -f ${MD5DIR}/${MD5NAME} ]] && rm ${MD5DIR}/${MD5NAME}
207
208 if [[ ${USE_SRCTARBALL} != true ]]
209 then
210 /sbin/smage2 download ${SMAGEFILE}
211 /sbin/smage2 calcmd5 ${SMAGEFILE} ${MD5DIR}
212 pushd ${SMAGEDIR}/../
213 svn add ${CURPNAME}
214 pushd ${SMAGEDIR}
215 svn add md5
216 svn add ${SMAGENAME} md5/${MD5NAME}
217
218 [[ -z ${SVN_COMMIT} ]] && SVN_COMMIT="auto added: ver bump to ${CURPVER}-${CURPBUILD}"
219 svn commit -m "${SVN_COMMIT}" ../${CURPNAME} ${SMAGENAME} md5 md5/${MD5NAME}
220 popd
221 fi
222
223 sudo -s << EOF
224 :> ${BUILDROOT}/.installrc
225
226 echo "export LC_ALL=C" >> ${BUILDROOT}/.installrc
227 # do not start any services, set mage bootstrap flag
228 echo "export MAGE_BOOTSTRAP=true" >> ${BUILDROOT}/.installrc
229 echo "REPO=${REPO}" >> ${BUILDROOT}/.installrc
230 echo "CURPNAME=${CURPNAME}" >> ${BUILDROOT}/.installrc
231 echo "CURPVER=${CURPVER}" >> ${BUILDROOT}/.installrc
232 echo "CURPBUILD=${CURPBUILD}" >> ${BUILDROOT}/.installrc
233 echo "CURARCH=${CURARCH}" >> ${BUILDROOT}/.installrc
234 echo "CURDISTROTAG=${CURDISTROTAG}" >> ${BUILDROOT}/.installrc
235 echo "CURSPLITPACKAGES=\"${CURSPLITPACKAGES}\"" >> ${BUILDROOT}/.installrc
236 echo "SMAGENAME=${SMAGENAME}" >> ${BUILDROOT}/.installrc
237 echo "MD5NAME=${MD5NAME}" >> ${BUILDROOT}/.installrc
238 echo "PKGNAME=${PKGNAME}" >> ${BUILDROOT}/.installrc
239 echo "SPKGNAME=${SPKGNAME}" >> ${BUILDROOT}/.installrc
240 echo '/usr/bin/whoami' >> ${BUILDROOT}/.installrc
241 echo 'source /etc/profile' >> ${BUILDROOT}/.installrc
242 #echo 'echo PATH=\${PATH};read' >> ${BUILDROOT}/.installrc
243 echo 'cd /var/cache/mage/smage/trunk/${REPO}' >> ${BUILDROOT}/.installrc
244 #echo 'cd /var/cache/mage/smage/branches/magellan-next/${REPO}' >> ${BUILDROOT}/.installrc
245 echo 'svn update distribution' >> ${BUILDROOT}/.installrc
246 echo 'svn update include' >> ${BUILDROOT}/.installrc
247 echo 'svn update ${CURPNAME}' >> ${BUILDROOT}/.installrc
248 echo 'USE_SRCTARBALL=${USE_SRCTARBALL}' >> ${BUILDROOT}/.installrc
249 echo 'if [[ \${USE_SRCTARBALL} != true ]];then ' >> ${BUILDROOT}/.installrc
250 echo "/sbin/smage2 ${RESUME} /var/cache/mage/smage/trunk/${REPO}/${CURPNAME}/${SMAGENAME} || exit 1" >> ${BUILDROOT}/.installrc
251 #echo "/sbin/smage2 ${RESUME} /var/cache/mage/smage/branches/magellan-next/${REPO}/${CURPNAME}/${SMAGENAME} || exit 1" >> ${BUILDROOT}/.installrc
252 echo 'else' >> ${BUILDROOT}/.installrc
253 echo 'echo "Fetching SRC_TARBALL"' >> ${BUILDROOT}/.installrc
254 echo 'pushd /var/tmp/magebuild > /dev/null' >> ${BUILDROOT}/.installrc
255 echo "SRCTARBALL=${CURPNAME}-${CURPVER}-${CURPBUILD}.${SRCPKGSUFFIX}" >> ${BUILDROOT}/.installrc
256 echo "SRCTARBALL_URI=${SRCTARBALL_URI}" >> ${BUILDROOT}/.installrc
257 echo '/usr/bin/wget -c \${SRCTARBALL_URI}/\${SRCTARBALL}' >> ${BUILDROOT}/.installrc
258 echo '/sbin/smage2 -st \${SRCTARBALL}' >> ${BUILDROOT}/.installrc
259 echo '[[ -f \${SRCTARBALL} ]] && rm \${SRCTARBALL}' >> ${BUILDROOT}/.installrc
260 echo 'popd > /dev/null' >> ${BUILDROOT}/.installrc
261 echo 'fi' >> ${BUILDROOT}/.installrc
262 echo 'if [[ ! -z \${CURSPLITPACKAGES} ]]' >> ${BUILDROOT}/.installrc
263 echo 'then' >> ${BUILDROOT}/.installrc
264 echo 'for package in \${CURSPLITPACKAGES}' >> ${BUILDROOT}/.installrc
265 echo 'do' >> ${BUILDROOT}/.installrc
266 echo '/sbin/mage install \${package} || exit 1' >> ${BUILDROOT}/.installrc
267 echo 'mv /var/cache/mage/packages/\${package}-${CURPVER}-${CURARCH}${CURDISTROTAG}-${CURPBUILD}.${PKGSUFFIX} /BUILDED' >> ${BUILDROOT}/.installrc
268 echo 'done' >> ${BUILDROOT}/.installrc
269 echo 'else' >> ${BUILDROOT}/.installrc
270 echo '/sbin/mage install ${CURPNAME} || exit 1' >> ${BUILDROOT}/.installrc
271 echo 'mv /var/cache/mage/packages/${PKGNAME} /BUILDED' >> ${BUILDROOT}/.installrc
272 echo 'fi' >> ${BUILDROOT}/.installrc
273 echo 'mv /var/cache/mage/packages/sources/${SRCPKGNAME} /BUILDED/sources' >> ${BUILDROOT}/.installrc
274 echo 'rm -rf /var/cache/mage/sources/${CURPNAME}' >> ${BUILDROOT}/.installrc
275 EOF
276
277 sudo -H /sbin/chroot ${BUILDROOT} /bin/bash /.installrc
278 sudo rm ${BUILDROOT}/.installrc
279
280 if [[ ! -z ${CURSPLITPACKAGES} ]]
281 then
282 for package in ${CURSPLITPACKAGES}
283 do
284 # get pkgtyp
285 get_function_from_file split_info_${package} ${SMAGEFILE}
286 split_info_${package}
287 if [[ ${PKGTYPE} = virtual ]]
288 then
289 unset PKGTYPE
290 continue
291 fi
292 if [[ ${NOPKGBUILD} = true ]]
293 then
294 unset NOPKGBUILD
295 continue
296 fi
297
298 pkgname="${package}-${CURPVER}-${CURARCH}${CURDISTROTAG}-${CURPBUILD}.${PKGSUFFIX}"
299
300 if [[ -f ${BUILDROOT}/BUILDED/${pkgname} ]]
301 then
302 scp ${BUILDROOT}/BUILDED/${pkgname} ${SSHLOGIN}/${CURARCH}/
303 else
304 die "Error: ${BUILDROOT}/BUILDED/${pkgname} missing!"
305 fi
306 done
307 else
308 if [[ -f ${BUILDROOT}/BUILDED/${PKGNAME} ]]
309 then
310 scp ${BUILDROOT}/BUILDED/${PKGNAME} ${SSHLOGIN}/${CURARCH}/
311 else
312 die "Error: ${BUILDROOT}/BUILDED/${PKGNAME} missing!"
313 fi
314 fi
315
316 if [[ -f ${BUILDROOT}/BUILDED/sources/${SRCPKGNAME} ]]
317 then
318 scp ${BUILDROOT}/BUILDED/sources/${SRCPKGNAME} ${SSHLOGIN}/src/
319 else
320 echo "Error: ${BUILDROOT}/BUILDED/${SRCPKGNAME} missing!"
321 # die
322 fi
323
324 [[ -d /var/cache/mage/sources/${CURPNAME} ]] && rm -rf /var/cache/mage/sources/${CURPNAME}
325
326 # umount layeredfs
327 is_loc_mounted "${BUILDROOT}/dev" && sudo umount ${BUILDROOT}/dev
328 is_loc_mounted "${BUILDROOT}/proc" && sudo umount ${BUILDROOT}/proc
329 is_loc_mounted "${BUILDROOT}/sys" && sudo umount ${BUILDROOT}/sys
330 if [[ ${USE_UNIONFS} = true ]]
331 then
332 is_loc_mounted "${BUILDROOT_LAYEREDFS}" && sudo umount ${BUILDROOT_LAYEREDFS}
333 fi
334
335 # if we don't break before; all things are right - regardless if $? is not zero
336 # because some things like src-pkg creation may be disabled
337 exit 0
338

Properties

Name Value
svn:executable *