Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:executable *