Contents of /trunk/pkgtools/add2svn-next.sh
Parent Directory | Revision Log
Revision 1330 -
(show annotations)
(download)
(as text)
Tue May 31 17:42:39 2011 UTC (13 years ago) by niro
File MIME type: application/x-sh
File size: 9374 byte(s)
Tue May 31 17:42:39 2011 UTC (13 years 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 | * |