Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2117 - (hide annotations) (download) (as text)
Mon May 13 11:49:49 2013 UTC (11 years 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 niro 2017 #!/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 niro 2117 SSHLOGIN="tjoke@magellan-linux.de:/var/www/htdocs/magellan/R11/packages"
78     SRCTARBALL_URI="http://magellan-linux.de/magellan/R11/packages/src"
79 niro 2017
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 niro 2117 # set the right arch
123     ARCH="${CURARCH}"
124    
125 niro 2017 # 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 niro 2117 # set the right arch
148     ARCH="${CURARCH}"
149    
150 niro 2017 # 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 niro 2117 PKGTYPE="$(get_value_from_file PKGTYPE ${SMAGEFILE})"
164 niro 2017
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 niro 2117 die "Package '${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD}' already installed in ${BUILDROOT}. Aborting!"
190 niro 2017 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 niro 2117 die "Aborted."
207 niro 2017 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 niro 2117 echo '[ ! -d /BUILDED ] && install -d /BUILDED' >> ${BUILDROOT}/.installrc
268     echo '[ ! -d /BUILDED/sources ] && install -d /BUILDED/sources' >> ${BUILDROOT}/.installrc
269 niro 2017 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 niro 2117 sudo -H chroot ${BUILDROOT} /bin/bash /.installrc
285 niro 2017 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 niro 2117 if [[ ${PKGTYPE} = virtual ]]
316 niro 2017 then
317 niro 2117 unset PKGTYPE
318     echo "Virtual Package: nothing to upload"
319     elif [[ -f ${BUILDROOT}/BUILDED/${PKGNAME} ]]
320     then
321 niro 2017 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 *