Annotation of /trunk/pkgtools/svn-cleanup-pkg-tree.sh
Parent Directory | Revision Log
Revision 2107 -
(hide 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 | niro | 2029 | #!/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 | niro | 2107 | MY_DISTRO_HTTP_PKG_BASE="http://magellan-linux.de/magellan/R11" |
10 | MY_SSHLOGIN_BASE="tjoke@magellan-linux.de" | ||
11 | niro | 2029 | MY_MAGE_FEATURES=( "pkgdistrotag" ) |
12 | MY_MAGE_FEATURES_i686=( "srcpkgbuild" ) | ||
13 | |||
14 | niro | 2107 | # 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 | niro | 2029 | 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 | niro | 2107 | export HTTP_PKGDIR="${MY_DISTRO_HTTP_PKG_BASE}/packages/${arch}/" |
48 | niro | 2029 | export SRCPKGDIR="${MY_DISTRO_PKG_BASE}/packages/src/" |
49 | niro | 2107 | export HTTP_SRCPKGDIR="${MY_DISTRO_HTTP_PKG_BASE}/packages/src/" |
50 | niro | 2029 | } |
51 | |||
52 | # generate_pkg_file_list REPO | ||
53 | generate_pkg_file_list() | ||
54 | { | ||
55 | local repo="$1" | ||
56 | local smage | ||
57 | local arch | ||
58 | niro | 2107 | local _findlist |
59 | niro | 2029 | export SMAGESCRIPTSDIR="${repo}" |
60 | |||
61 | niro | 2107 | # 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 | niro | 2029 | do |
67 | niro | 2107 | load_arch_values ${arch} |
68 | load_mage_features | ||
69 | |||
70 | for smage in ${_findlist} | ||
71 | niro | 2029 | do |
72 | niro | 2107 | echo "Processing ${smage}" |
73 | niro | 2029 | |
74 | niro | 2107 | #smagesource ${smage} &> /dev/null || die |
75 | # speed up things | ||
76 | FVERBOSE=off | ||
77 | source "${smage}" &> /dev/null || die | ||
78 | |||
79 | niro | 2029 | # 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 | niro | 2107 | if [[ ${i} = ${pkg} ]] |
152 | then | ||
153 | # delete found entry from variable | ||
154 | eval $(echo "${var}=(\${${var}[*]//${i}})") | ||
155 | return 0 | ||
156 | fi | ||
157 | niro | 2029 | done |
158 | |||
159 | return 1 | ||
160 | } | ||
161 | |||
162 | # checkout svn sources for mage and smage repos | ||
163 | export SVNROOT="${MY_SVN_ROOT}" | ||
164 | niro | 2107 | [[ ! -d ${MY_SVN_BASE} ]] && install -d ${MY_SVN_BASE} |
165 | niro | 2029 | 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 | niro | 2107 | |
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 | niro | 2029 | 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 | niro | 2107 | # 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 | niro | 2029 | for arch in ${MY_ARCHES[*]} |
225 | do | ||
226 | load_arch_values "${arch}" | ||
227 | load_mage_features | ||
228 | |||
229 | niro | 2107 | # make arch copy of the arrays |
230 | eval $(echo "PKGLIST_${arch}=( ${PKGLIST[*]} )") | ||
231 | eval $(echo "SRCPKGLIST_${arch}=( ${SRCPKGLIST[*]} )") | ||
232 | |||
233 | niro | 2029 | if [ ! -d ${PKGDIR}/_deprecated ] |
234 | then | ||
235 | install -d ${PKGDIR}/_deprecated || die "install ${PKGDIR}/${arch}/_deprecated" | ||
236 | fi | ||
237 | |||
238 | niro | 2107 | 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 | niro | 2029 | 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 | niro | 2107 | 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 | niro | 2029 | fi |
263 | done | ||
264 | if mqueryfeature "srcpkgbuild" | ||
265 | then | ||
266 | niro | 2107 | 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 | niro | 2029 | 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 | niro | 2107 | 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 | niro | 2029 | fi |
291 | done | ||
292 | fi | ||
293 | done | ||
294 | niro | 2107 | |
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 |