Annotation of /trunk/pkgtools/svn-cleanup-pkg-tree.sh
Parent Directory | Revision Log
Revision 2029 -
(hide annotations)
(download)
(as text)
Tue Jan 22 14:34:56 2013 UTC (11 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 5628 byte(s)
Tue Jan 22 14:34:56 2013 UTC (11 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 5628 byte(s)
-initial release
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 | MY_MAGE_FEATURES=( "pkgdistrotag" ) | ||
10 | MY_MAGE_FEATURES_i686=( "srcpkgbuild" ) | ||
11 | |||
12 | MY_SVN_BASE="$1" | ||
13 | if [[ -z ${MY_SVN_BASE} ]] | ||
14 | then | ||
15 | MY_SVN_BASE="$(mktemp -d -t tree-cleanup.XXXXXXXXXX)" | ||
16 | #MY_SVN_BASE="/tmp/tree-cleanup.Y7otVmppgA" | ||
17 | fi | ||
18 | MY_SVN_OPTS="" | ||
19 | MY_SVN_ROOT="svn://cvs.magellan-linux.de" | ||
20 | |||
21 | export PKGLIST=() | ||
22 | export SRCPKGLIST=() | ||
23 | |||
24 | # load_arch_values ARCH | ||
25 | load_arch_values() | ||
26 | { | ||
27 | local arch="$1" | ||
28 | |||
29 | MAGE_FEATURES=( ${MY_MAGE_FEATURES[*]} ) | ||
30 | MAGE_FEATURES+=( $(eval echo \${MY_MAGE_FEATURES_${arch}[*]}) ) | ||
31 | export MAGE_FEATURES | ||
32 | |||
33 | export ARCH="${arch}" | ||
34 | export CHOST="${arch}-pc-linux-gnu" | ||
35 | export PACKAGES_SERVER_PATH="packages/${arch}" | ||
36 | export PKGDIR="${MY_DISTRO_PKG_BASE}/packages/${arch}/" | ||
37 | export SRCPKGDIR="${MY_DISTRO_PKG_BASE}/packages/src/" | ||
38 | } | ||
39 | |||
40 | # generate_pkg_file_list REPO | ||
41 | generate_pkg_file_list() | ||
42 | { | ||
43 | local repo="$1" | ||
44 | local smage | ||
45 | local arch | ||
46 | |||
47 | export SMAGESCRIPTSDIR="${repo}" | ||
48 | # echo "DEBUG: repo='${repo}'" | ||
49 | |||
50 | for smage in $(find ${repo} -name \*.${SMAGESUFFIX} | sort -u) | ||
51 | do | ||
52 | echo "Processing ${smage}" | ||
53 | for arch in ${MY_ARCHES[*]} | ||
54 | do | ||
55 | load_arch_values ${arch} | ||
56 | load_mage_features | ||
57 | # echo | ||
58 | # mprintfeatures | ||
59 | # echo | ||
60 | smagesource ${smage} &> /dev/null || die | ||
61 | |||
62 | # honor split-packages | ||
63 | if [[ -n ${SPLIT_PACKAGES} ]] | ||
64 | then | ||
65 | local split_pkg_base="${PNAME}" | ||
66 | split_save_variables | ||
67 | for subpackage in ${SPLIT_PACKAGES} | ||
68 | do | ||
69 | export PNAME="${subpackage}" | ||
70 | split_info_${subpackage} | ||
71 | # fix PCATEGORIE -> PCAT | ||
72 | if [[ ! -z ${PCATEGORIE} ]] | ||
73 | then | ||
74 | PCAT="${PCATEGORIE}" | ||
75 | unset PCATEGORIE | ||
76 | fi | ||
77 | |||
78 | # echo "DEBUG: split_package()" | ||
79 | # echo "DEBUG: PNAME='${PNAME}'" | ||
80 | # echo "DEBUG: PVER='${PVER}'" | ||
81 | # echo "DEBUG: PBUILD='${PBUILD}'" | ||
82 | # echo "DEBUG: SMAGESCRIPTSDIR='${SMAGESCRIPTSDIR}'" | ||
83 | # echo "DEBUG: DISTROTAG='${DISTROTAG}'" | ||
84 | # echo "DEBUG: print_distrotag()='$(print_distrotag)'" | ||
85 | # echo "DEBUG: ARCH='${ARCH}'" | ||
86 | # echo "DEBUG: CHOST='${CHOST}'" | ||
87 | # echo "DEBUG: PACKAGES_SERVER_PATH='${PACKAGES_SERVER_PATH}'" | ||
88 | # echo "DEBUG: PKGDIR='${PKGDIR}'" | ||
89 | # echo "DEBUG: SRCPKGDIR='${SRCPKGDIR}'" | ||
90 | |||
91 | # echo "DEBUG: ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX}" | ||
92 | PKGLIST+=( ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX} ) | ||
93 | |||
94 | # restore smage environment | ||
95 | split_restore_variables | ||
96 | done | ||
97 | # unset all saved smage variables | ||
98 | split_unset_variables | ||
99 | else | ||
100 | |||
101 | # echo "DEBUG: PNAME='${PNAME}'" | ||
102 | # echo "DEBUG: PVER='${PVER}'" | ||
103 | # echo "DEBUG: PBUILD='${PBUILD}'" | ||
104 | # echo "DEBUG: SMAGESCRIPTSDIR='${SMAGESCRIPTSDIR}'" | ||
105 | # echo "DEBUG: DISTROTAG='${DISTROTAG}'" | ||
106 | # echo "DEBUG: print_distrotag()='$(print_distrotag)'" | ||
107 | # echo "DEBUG: ARCH='${ARCH}'" | ||
108 | # echo "DEBUG: CHOST='${CHOST}'" | ||
109 | # echo "DEBUG: PACKAGES_SERVER_PATH='${PACKAGES_SERVER_PATH}'" | ||
110 | # echo "DEBUG: PKGDIR='${PKGDIR}'" | ||
111 | # echo "DEBUG: SRCPKGDIR='${SRCPKGDIR}'" | ||
112 | |||
113 | # echo "DEBUG: ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX}" | ||
114 | PKGLIST+=( ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX} ) | ||
115 | fi | ||
116 | if mqueryfeature "srcpkgbuild" | ||
117 | then | ||
118 | # echo "DEBUG: ${PNAME}${target}-${PVER}-${PBUILD}.${SRCPKGSUFFIX}" | ||
119 | SRCPKGLIST+=( ${PNAME}${target}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} ) | ||
120 | fi | ||
121 | done | ||
122 | done | ||
123 | } | ||
124 | |||
125 | # check_pkglist VARIABLE PKGFILE | ||
126 | check_pkglist() | ||
127 | { | ||
128 | local i | ||
129 | local var="$1" | ||
130 | local pkg="$2" | ||
131 | |||
132 | for i in $(eval echo "\${${var}[*]}") | ||
133 | do | ||
134 | [[ ${i} = ${pkg} ]] && return 0 | ||
135 | done | ||
136 | |||
137 | return 1 | ||
138 | } | ||
139 | |||
140 | # checkout svn sources for mage and smage repos | ||
141 | export SVNROOT="${MY_SVN_ROOT}" | ||
142 | for module in magellan-source/trunk/mage ${MY_REPOS[*]} | ||
143 | do | ||
144 | case ${module} in | ||
145 | magellan-source/*) repo="${module}"; codir=mage-src ;; | ||
146 | *) repo="smage/${module}"; codir="smage/${module}" ;; | ||
147 | esac | ||
148 | |||
149 | if [ ! -d ${MY_SVN_BASE}/${module}/.svn ] | ||
150 | then | ||
151 | ( cd ${MY_SVN_BASE}; svn checkout ${MY_SVN_OPTS} ${SVNROOT}/${repo} ${codir} ) | ||
152 | else | ||
153 | ( cd ${MY_SVN_BASE}; svn update ${MY_SVN_OPTS} ${SVNROOT}/${repo} ${codir} ) | ||
154 | fi | ||
155 | done | ||
156 | |||
157 | # include functions from fresh mage checkout | ||
158 | source ${MY_SVN_BASE}/mage-src/usr/lib/mage/mage.rc.global.in | ||
159 | export MLIBDIR="${MY_SVN_BASE}/mage-src/usr/lib/mage" | ||
160 | source ${MLIBDIR}/mage4.functions.sh | ||
161 | source ${MLIBDIR}/smage2.functions.sh | ||
162 | |||
163 | for repo in ${MY_REPOS[*]} | ||
164 | do | ||
165 | generate_pkg_file_list "${MY_SVN_BASE}/smage/${repo}" | ||
166 | done | ||
167 | |||
168 | #echo | ||
169 | #echo "DEBUG:" | ||
170 | #for i in $(echo ${PKGLIST[*]} | sort | uniq) | ||
171 | #do | ||
172 | # echo "${i}" | ||
173 | #done | ||
174 | #for i in $(echo "${SRCPKGLIST[*]}" | sort | uniq) | ||
175 | #do | ||
176 | # echo "${i}" | ||
177 | #done | ||
178 | #echo | ||
179 | |||
180 | for arch in ${MY_ARCHES[*]} | ||
181 | do | ||
182 | load_arch_values "${arch}" | ||
183 | load_mage_features | ||
184 | |||
185 | if [ ! -d ${PKGDIR}/_deprecated ] | ||
186 | then | ||
187 | install -d ${PKGDIR}/_deprecated || die "install ${PKGDIR}/${arch}/_deprecated" | ||
188 | fi | ||
189 | |||
190 | for file in $(find ${PKGDIR} -name \*.${PKGSUFFIX} -printf '%f\n' | sort) | ||
191 | do | ||
192 | if check_pkglist PKGLIST "${file}" | ||
193 | then | ||
194 | echo -e "${COLGREEN}[k] - ${file}${COLDEFAULT}" | ||
195 | else | ||
196 | echo -e "${COLRED}[d] - ${file}${COLDEFAULT}" | ||
197 | echo mv ${PKGDIR}/${file} ${PKGDIR}/_deprecated || die "move ${PKGDIR}/${file} -> _deprecated" | ||
198 | fi | ||
199 | done | ||
200 | if mqueryfeature "srcpkgbuild" | ||
201 | then | ||
202 | for file in $(find ${SRCPKGDIR} -name \*.${SRCPKGSUFFIX} -printf '%f\n' | sort) | ||
203 | do | ||
204 | if check_pkglist SRCPKGLIST "${file}" | ||
205 | then | ||
206 | echo -e "${COLGREEN}[k] - ${file}${COLDEFAULT}" | ||
207 | else | ||
208 | echo -e "${COLRED}[d] - ${file}${COLDEFAULT}" | ||
209 | echo mv ${SRCPKGDIR}/${file} ${SRCPKGDIR}/_deprecated || die "move ${SRCPKGDIR}/${file} -> _deprecated" | ||
210 | fi | ||
211 | done | ||
212 | fi | ||
213 | done |