Contents of /trunk/pkgtools/svn-cleanup-pkg-tree.sh
Parent Directory | Revision Log
Revision 2107 -
(show annotations)
(download)
(as text)
Mon May 13 11:36:10 2013 UTC (11 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 8054 byte(s)
Mon May 13 11:36:10 2013 UTC (11 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 8054 byte(s)
-support http method
1 | #!/bin/bash |
2 | |
3 | # export default C locale |
4 | export LC_ALL=C |
5 | |
6 | MY_REPOS=( "branches/R11-stable" "trunk" ) |
7 | MY_ARCHES=( "x86_64" "i686" ) |
8 | MY_DISTRO_PKG_BASE="/var/www/htdocs/magellan/R11" |
9 | MY_DISTRO_HTTP_PKG_BASE="http://magellan-linux.de/magellan/R11" |
10 | MY_SSHLOGIN_BASE="tjoke@magellan-linux.de" |
11 | MY_MAGE_FEATURES=( "pkgdistrotag" ) |
12 | MY_MAGE_FEATURES_i686=( "srcpkgbuild" ) |
13 | |
14 | # decide wether to use http method or not |
15 | USE_HTTP=0 |
16 | if [[ $1 = --http ]] |
17 | then |
18 | USE_HTTP=1 |
19 | shift |
20 | fi |
21 | |
22 | MY_SVN_BASE="$1" |
23 | if [[ -z ${MY_SVN_BASE} ]] |
24 | then |
25 | MY_SVN_BASE="$(mktemp -d -t tree-cleanup.XXXXXXXXXX)" |
26 | #MY_SVN_BASE="/tmp/tree-cleanup.Y7otVmppgA" |
27 | fi |
28 | MY_SVN_OPTS="" |
29 | MY_SVN_ROOT="svn://cvs.magellan-linux.de" |
30 | |
31 | export PKGLIST=() |
32 | export SRCPKGLIST=() |
33 | |
34 | # load_arch_values ARCH |
35 | load_arch_values() |
36 | { |
37 | local arch="$1" |
38 | |
39 | MAGE_FEATURES=( ${MY_MAGE_FEATURES[*]} ) |
40 | MAGE_FEATURES+=( $(eval echo \${MY_MAGE_FEATURES_${arch}[*]}) ) |
41 | export MAGE_FEATURES |
42 | |
43 | export ARCH="${arch}" |
44 | export CHOST="${arch}-pc-linux-gnu" |
45 | export PACKAGES_SERVER_PATH="packages/${arch}" |
46 | export PKGDIR="${MY_DISTRO_PKG_BASE}/packages/${arch}/" |
47 | export HTTP_PKGDIR="${MY_DISTRO_HTTP_PKG_BASE}/packages/${arch}/" |
48 | export SRCPKGDIR="${MY_DISTRO_PKG_BASE}/packages/src/" |
49 | export HTTP_SRCPKGDIR="${MY_DISTRO_HTTP_PKG_BASE}/packages/src/" |
50 | } |
51 | |
52 | # generate_pkg_file_list REPO |
53 | generate_pkg_file_list() |
54 | { |
55 | local repo="$1" |
56 | local smage |
57 | local arch |
58 | local _findlist |
59 | export SMAGESCRIPTSDIR="${repo}" |
60 | |
61 | # speed up things - include distribution file here |
62 | source ${SMAGESCRIPTSDIR}/distribution |
63 | |
64 | _findlist=$(find ${repo} -name \*.${SMAGESUFFIX} | sort -u) |
65 | for arch in ${MY_ARCHES[*]} |
66 | do |
67 | load_arch_values ${arch} |
68 | load_mage_features |
69 | |
70 | for smage in ${_findlist} |
71 | do |
72 | echo "Processing ${smage}" |
73 | |
74 | #smagesource ${smage} &> /dev/null || die |
75 | # speed up things |
76 | FVERBOSE=off |
77 | source "${smage}" &> /dev/null || die |
78 | |
79 | # honor split-packages |
80 | if [[ -n ${SPLIT_PACKAGES} ]] |
81 | then |
82 | local split_pkg_base="${PNAME}" |
83 | split_save_variables |
84 | for subpackage in ${SPLIT_PACKAGES} |
85 | do |
86 | export PNAME="${subpackage}" |
87 | split_info_${subpackage} |
88 | # fix PCATEGORIE -> PCAT |
89 | if [[ ! -z ${PCATEGORIE} ]] |
90 | then |
91 | PCAT="${PCATEGORIE}" |
92 | unset PCATEGORIE |
93 | fi |
94 | |
95 | # echo "DEBUG: split_package()" |
96 | # echo "DEBUG: PNAME='${PNAME}'" |
97 | # echo "DEBUG: PVER='${PVER}'" |
98 | # echo "DEBUG: PBUILD='${PBUILD}'" |
99 | # echo "DEBUG: SMAGESCRIPTSDIR='${SMAGESCRIPTSDIR}'" |
100 | # echo "DEBUG: DISTROTAG='${DISTROTAG}'" |
101 | # echo "DEBUG: print_distrotag()='$(print_distrotag)'" |
102 | # echo "DEBUG: ARCH='${ARCH}'" |
103 | # echo "DEBUG: CHOST='${CHOST}'" |
104 | # echo "DEBUG: PACKAGES_SERVER_PATH='${PACKAGES_SERVER_PATH}'" |
105 | # echo "DEBUG: PKGDIR='${PKGDIR}'" |
106 | # echo "DEBUG: SRCPKGDIR='${SRCPKGDIR}'" |
107 | |
108 | # echo "DEBUG: ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX}" |
109 | PKGLIST+=( ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX} ) |
110 | |
111 | # restore smage environment |
112 | split_restore_variables |
113 | done |
114 | # unset all saved smage variables |
115 | split_unset_variables |
116 | else |
117 | |
118 | # echo "DEBUG: PNAME='${PNAME}'" |
119 | # echo "DEBUG: PVER='${PVER}'" |
120 | # echo "DEBUG: PBUILD='${PBUILD}'" |
121 | # echo "DEBUG: SMAGESCRIPTSDIR='${SMAGESCRIPTSDIR}'" |
122 | # echo "DEBUG: DISTROTAG='${DISTROTAG}'" |
123 | # echo "DEBUG: print_distrotag()='$(print_distrotag)'" |
124 | # echo "DEBUG: ARCH='${ARCH}'" |
125 | # echo "DEBUG: CHOST='${CHOST}'" |
126 | # echo "DEBUG: PACKAGES_SERVER_PATH='${PACKAGES_SERVER_PATH}'" |
127 | # echo "DEBUG: PKGDIR='${PKGDIR}'" |
128 | # echo "DEBUG: SRCPKGDIR='${SRCPKGDIR}'" |
129 | |
130 | # echo "DEBUG: ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX}" |
131 | PKGLIST+=( ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX} ) |
132 | fi |
133 | if mqueryfeature "srcpkgbuild" |
134 | then |
135 | # echo "DEBUG: ${PNAME}${target}-${PVER}-${PBUILD}.${SRCPKGSUFFIX}" |
136 | SRCPKGLIST+=( ${PNAME}${target}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} ) |
137 | fi |
138 | done |
139 | done |
140 | } |
141 | |
142 | # check_pkglist VARIABLE PKGFILE |
143 | check_pkglist() |
144 | { |
145 | local i |
146 | local var="$1" |
147 | local pkg="$2" |
148 | |
149 | for i in $(eval echo "\${${var}[*]}") |
150 | do |
151 | if [[ ${i} = ${pkg} ]] |
152 | then |
153 | # delete found entry from variable |
154 | eval $(echo "${var}=(\${${var}[*]//${i}})") |
155 | return 0 |
156 | fi |
157 | done |
158 | |
159 | return 1 |
160 | } |
161 | |
162 | # checkout svn sources for mage and smage repos |
163 | export SVNROOT="${MY_SVN_ROOT}" |
164 | [[ ! -d ${MY_SVN_BASE} ]] && install -d ${MY_SVN_BASE} |
165 | for module in magellan-source/trunk/mage ${MY_REPOS[*]} |
166 | do |
167 | case ${module} in |
168 | magellan-source/*) repo="${module}"; codir=mage-src ;; |
169 | *) repo="smage/${module}"; codir="smage/${module}" ;; |
170 | esac |
171 | |
172 | if [ ! -d ${MY_SVN_BASE}/${module}/.svn ] |
173 | then |
174 | ( cd ${MY_SVN_BASE}; svn checkout ${MY_SVN_OPTS} ${SVNROOT}/${repo} ${codir} ) |
175 | else |
176 | ( cd ${MY_SVN_BASE}; svn update ${MY_SVN_OPTS} ${SVNROOT}/${repo} ${codir} ) |
177 | fi |
178 | |
179 | # exclude deprecated |
180 | if [ -d ${MY_SVN_BASE}/${codir}/deprecated ] |
181 | then |
182 | echo "deleting ${MY_SVN_BASE}/${codir}/deprecated" |
183 | rm -r ${MY_SVN_BASE}/${codir}/deprecated |
184 | fi |
185 | done |
186 | |
187 | # include functions from fresh mage checkout |
188 | source ${MY_SVN_BASE}/mage-src/usr/lib/mage/mage.rc.global.in |
189 | export MLIBDIR="${MY_SVN_BASE}/mage-src/usr/lib/mage" |
190 | source ${MLIBDIR}/mage4.functions.sh |
191 | source ${MLIBDIR}/smage2.functions.sh |
192 | |
193 | for repo in ${MY_REPOS[*]} |
194 | do |
195 | generate_pkg_file_list "${MY_SVN_BASE}/smage/${repo}" |
196 | done |
197 | |
198 | #echo |
199 | #echo "DEBUG:" |
200 | #for i in $(echo ${PKGLIST[*]} | sort | uniq) |
201 | #do |
202 | # echo "${i}" |
203 | #done |
204 | #for i in $(echo "${SRCPKGLIST[*]}" | sort | uniq) |
205 | #do |
206 | # echo "${i}" |
207 | #done |
208 | #echo |
209 | |
210 | # initialize lists |
211 | if [[ ${USE_HTTP} = 1 ]] |
212 | then |
213 | :> ${MY_SVN_BASE}/pkglist |
214 | :> ${MY_SVN_BASE}/srcpkglist |
215 | fi |
216 | |
217 | # make a copy of the lists |
218 | CP_PKGLIST=( ${PKGLIST[*]} ) |
219 | CP_SRCPKGLIST=( ${SRCPKGLIST[*]} ) |
220 | # and save them for resume |
221 | echo "${CP_PKGLIST[*]}" > ${MY_SVN_BASE}/saved_pkglist |
222 | echo "${CP_SRCPKGLIST[*]}" > ${MY_SVN_BASE}/saved_srcpkglist |
223 | |
224 | for arch in ${MY_ARCHES[*]} |
225 | do |
226 | load_arch_values "${arch}" |
227 | load_mage_features |
228 | |
229 | # make arch copy of the arrays |
230 | eval $(echo "PKGLIST_${arch}=( ${PKGLIST[*]} )") |
231 | eval $(echo "SRCPKGLIST_${arch}=( ${SRCPKGLIST[*]} )") |
232 | |
233 | if [ ! -d ${PKGDIR}/_deprecated ] |
234 | then |
235 | install -d ${PKGDIR}/_deprecated || die "install ${PKGDIR}/${arch}/_deprecated" |
236 | fi |
237 | |
238 | if [[ ${USE_HTTP} = 1 ]] |
239 | then |
240 | _filelist=$(lynx -dump -listonly ${HTTP_PKGDIR} | grep ".${PKGSUFFIX}" | sed "s:.*${PACKAGES_SERVER_PATH}/\(.*.${PKGSUFFIX}\):\1:") |
241 | else |
242 | _filelist=$(find ${PKGDIR} -name \*.${PKGSUFFIX} -printf '%f\n' | sort) |
243 | fi |
244 | |
245 | if [[ ${USE_HTTP} = 1 ]] |
246 | then |
247 | echo "install -d ${PKGDIR}/_deprecated" >> ${MY_SVN_BASE}/pkglist |
248 | fi |
249 | for file in ${_filelist} |
250 | do |
251 | if check_pkglist PKGLIST "${file}" |
252 | then |
253 | echo -e "${COLGREEN}[k] - ${file}${COLDEFAULT}" |
254 | else |
255 | echo -e "${COLRED}[d] - ${file}${COLDEFAULT}" |
256 | if [[ ${USE_HTTP} = 1 ]] |
257 | then |
258 | echo "mv -v ${PKGDIR}/${file} ${PKGDIR}/_deprecated/ " >> ${MY_SVN_BASE}/pkglist |
259 | else |
260 | mv ${PKGDIR}/${file} ${PKGDIR}/_deprecated/ || die "move ${PKGDIR}/${file} -> _deprecated" |
261 | fi |
262 | fi |
263 | done |
264 | if mqueryfeature "srcpkgbuild" |
265 | then |
266 | if [[ ${USE_HTTP} = 1 ]] |
267 | then |
268 | _filelist=$(lynx -dump -listonly ${HTTP_SRCPKGDIR} | grep ".${SRCPKGSUFFIX}" | sed "s:.*packages/src/\(.*.${SRCPKGSUFFIX}\):\1:") |
269 | else |
270 | _filelist=$(find ${SRCPKGDIR} -name \*.${SRCPKGSUFFIX} -printf '%f\n' | sort) |
271 | fi |
272 | |
273 | if [[ ${USE_HTTP} = 1 ]] |
274 | then |
275 | echo "install -d ${SRCPKGDIR}/_deprecated" >> ${MY_SVN_BASE}/srcpkglist |
276 | fi |
277 | for file in ${_filelist} |
278 | do |
279 | if check_pkglist SRCPKGLIST "${file}" |
280 | then |
281 | echo -e "${COLGREEN}[k] - ${file}${COLDEFAULT}" |
282 | else |
283 | echo -e "${COLRED}[d] - ${file}${COLDEFAULT}" |
284 | if [[ ${USE_HTTP} = 1 ]] |
285 | then |
286 | echo "mv -v ${SRCPKGDIR}/${file} ${SRCPKGDIR}/_deprecated/" >> ${MY_SVN_BASE}/srcpkglist |
287 | else |
288 | mv ${SRCPKGDIR}/${file} ${SRCPKGDIR}/_deprecated/ || die "move ${SRCPKGDIR}/${file} -> _deprecated" |
289 | fi |
290 | fi |
291 | done |
292 | fi |
293 | done |
294 | |
295 | if [[ ${USE_HTTP} = 777 ]] |
296 | then |
297 | for list in pkglist srcpkglist |
298 | do |
299 | if [[ -f ${MY_SVN_BASE}/${list} ]] |
300 | then |
301 | scp ${MY_SVN_BASE}/${list} ${MY_SSHLOGIN_BASE}:~ |
302 | ssh ${MY_SSHLOGIN_BASE} bash ~/${list} |
303 | fi |
304 | done |
305 | fi |