Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2011 - (hide annotations) (download) (as text)
Thu Jan 3 09:58:41 2013 UTC (11 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 9587 byte(s)
-sync
1 niro 1330 #!/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 niro 2011 USE_UNIONFS=false
28    
29 niro 1330 BUILDROOT=/mnt/BUILDROOT-"${CURARCH}"-NEXT
30    
31 niro 2011 if [[ ${USE_UNIONFS} = true ]]
32     then
33     BUILDROOT_CHROOT=${BUILDROOT}/chroot
34     BUILDROOT_WRITEABLE=${BUILDROOT}/writeable
35     BUILDROOT_LAYEREDFS=${BUILDROOT}/layeredfs
36     fi
37 niro 1330
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 niro 2011 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 niro 1330 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 niro 2011
97     # fix pcategorie -> pcat
98     if [[ -z ${PCAT} ]]
99     then
100     [[ -n ${PCATEGORIE} ]] && PCAT="${PCATEGORIE}"
101     fi
102    
103 niro 1330 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 niro 2011 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 niro 1330 CURSPLITPACKAGES="$(get_value_from_file SPLIT_PACKAGES ${SMAGEFILE})"
129    
130     # set some proper traps
131 niro 2011 trap "trap_exit" SIGINT SIGQUIT EXIT
132 niro 1330
133 niro 2011 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 niro 1330
140 niro 2011 # 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 niro 1330
145 niro 2011 sudo mount -t proc proc ${BUILDROOT}/proc
146     sudo mount -t sysfs sysfs ${BUILDROOT}/sys
147     sudo mount -o bind /dev ${BUILDROOT}/dev
148 niro 1330
149     # abort if the package is already installed in BUILDROOT
150     if [[ -z ${CURSPLITPACKAGES} ]]
151     then
152 niro 2011 if [[ -d ${BUILDROOT}/${INSTALLDB_BUILDROOT}/${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD} ]]
153 niro 1330 then
154 niro 2011 echo "Package '${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD}' already installed in ${BUILDROOT}. Aborting!"
155 niro 1330 exit 1
156     fi
157     else
158     for i in ${CURSPLITPACKAGES}
159     do
160 niro 2011 if [[ -d ${BUILDROOT}/${INSTALLDB_BUILDROOT}/${CURPCAT}/${i}-${CURPVER}-${CURPBUILD} ]]
161 niro 1330 then
162 niro 2011 SPLITINSTALLED+=" ${CURPCAT}/${i}-${CURPVER}-${CURPBUILD}"
163 niro 1330 fi
164     done
165     if [[ ! -z ${SPLITINSTALLED} ]]
166     then
167 niro 2011 echo "Following SPLIT-Packages are installled from ${CURPCAT}/${CURPNAME}-${CURPVER}-${CURPBUILD} in ${BUILDROOT}:"
168 niro 1330 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 niro 2011 echo 'svn update distribution' >> ${BUILDROOT}/.installrc
217 niro 1330 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 niro 2011 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 niro 1330
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 *