Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1330 - (show 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 #!/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 *