Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2107 - (hide 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 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