Magellan Linux

Contents of /trunk/pkgtools/svn-cleanup-pkg-tree.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2107 - (show annotations) (download) (as text)
Mon May 13 11:36:10 2013 UTC (11 years 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