#!/bin/bash # export default C locale export LC_ALL=C MY_REPOS=( "branches/R11-stable" "trunk" ) MY_ARCHES=( "x86_64" "i686" ) MY_DISTRO_PKG_BASE="/var/www/htdocs/magellan/R11" MY_MAGE_FEATURES=( "pkgdistrotag" ) MY_MAGE_FEATURES_i686=( "srcpkgbuild" ) MY_SVN_BASE="$1" if [[ -z ${MY_SVN_BASE} ]] then MY_SVN_BASE="$(mktemp -d -t tree-cleanup.XXXXXXXXXX)" #MY_SVN_BASE="/tmp/tree-cleanup.Y7otVmppgA" fi MY_SVN_OPTS="" MY_SVN_ROOT="svn://cvs.magellan-linux.de" export PKGLIST=() export SRCPKGLIST=() # load_arch_values ARCH load_arch_values() { local arch="$1" MAGE_FEATURES=( ${MY_MAGE_FEATURES[*]} ) MAGE_FEATURES+=( $(eval echo \${MY_MAGE_FEATURES_${arch}[*]}) ) export MAGE_FEATURES export ARCH="${arch}" export CHOST="${arch}-pc-linux-gnu" export PACKAGES_SERVER_PATH="packages/${arch}" export PKGDIR="${MY_DISTRO_PKG_BASE}/packages/${arch}/" export SRCPKGDIR="${MY_DISTRO_PKG_BASE}/packages/src/" } # generate_pkg_file_list REPO generate_pkg_file_list() { local repo="$1" local smage local arch export SMAGESCRIPTSDIR="${repo}" # echo "DEBUG: repo='${repo}'" for smage in $(find ${repo} -name \*.${SMAGESUFFIX} | sort -u) do echo "Processing ${smage}" for arch in ${MY_ARCHES[*]} do load_arch_values ${arch} load_mage_features # echo # mprintfeatures # echo smagesource ${smage} &> /dev/null || die # honor split-packages if [[ -n ${SPLIT_PACKAGES} ]] then local split_pkg_base="${PNAME}" split_save_variables for subpackage in ${SPLIT_PACKAGES} do export PNAME="${subpackage}" split_info_${subpackage} # fix PCATEGORIE -> PCAT if [[ ! -z ${PCATEGORIE} ]] then PCAT="${PCATEGORIE}" unset PCATEGORIE fi # echo "DEBUG: split_package()" # echo "DEBUG: PNAME='${PNAME}'" # echo "DEBUG: PVER='${PVER}'" # echo "DEBUG: PBUILD='${PBUILD}'" # echo "DEBUG: SMAGESCRIPTSDIR='${SMAGESCRIPTSDIR}'" # echo "DEBUG: DISTROTAG='${DISTROTAG}'" # echo "DEBUG: print_distrotag()='$(print_distrotag)'" # echo "DEBUG: ARCH='${ARCH}'" # echo "DEBUG: CHOST='${CHOST}'" # echo "DEBUG: PACKAGES_SERVER_PATH='${PACKAGES_SERVER_PATH}'" # echo "DEBUG: PKGDIR='${PKGDIR}'" # echo "DEBUG: SRCPKGDIR='${SRCPKGDIR}'" # echo "DEBUG: ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX}" PKGLIST+=( ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX} ) # restore smage environment split_restore_variables done # unset all saved smage variables split_unset_variables else # echo "DEBUG: PNAME='${PNAME}'" # echo "DEBUG: PVER='${PVER}'" # echo "DEBUG: PBUILD='${PBUILD}'" # echo "DEBUG: SMAGESCRIPTSDIR='${SMAGESCRIPTSDIR}'" # echo "DEBUG: DISTROTAG='${DISTROTAG}'" # echo "DEBUG: print_distrotag()='$(print_distrotag)'" # echo "DEBUG: ARCH='${ARCH}'" # echo "DEBUG: CHOST='${CHOST}'" # echo "DEBUG: PACKAGES_SERVER_PATH='${PACKAGES_SERVER_PATH}'" # echo "DEBUG: PKGDIR='${PKGDIR}'" # echo "DEBUG: SRCPKGDIR='${SRCPKGDIR}'" # echo "DEBUG: ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX}" PKGLIST+=( ${PNAME}${target}-${PVER}-${ARCH}$(print_distrotag)-${PBUILD}.${PKGSUFFIX} ) fi if mqueryfeature "srcpkgbuild" then # echo "DEBUG: ${PNAME}${target}-${PVER}-${PBUILD}.${SRCPKGSUFFIX}" SRCPKGLIST+=( ${PNAME}${target}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} ) fi done done } # check_pkglist VARIABLE PKGFILE check_pkglist() { local i local var="$1" local pkg="$2" for i in $(eval echo "\${${var}[*]}") do [[ ${i} = ${pkg} ]] && return 0 done return 1 } # checkout svn sources for mage and smage repos export SVNROOT="${MY_SVN_ROOT}" for module in magellan-source/trunk/mage ${MY_REPOS[*]} do case ${module} in magellan-source/*) repo="${module}"; codir=mage-src ;; *) repo="smage/${module}"; codir="smage/${module}" ;; esac if [ ! -d ${MY_SVN_BASE}/${module}/.svn ] then ( cd ${MY_SVN_BASE}; svn checkout ${MY_SVN_OPTS} ${SVNROOT}/${repo} ${codir} ) else ( cd ${MY_SVN_BASE}; svn update ${MY_SVN_OPTS} ${SVNROOT}/${repo} ${codir} ) fi done # include functions from fresh mage checkout source ${MY_SVN_BASE}/mage-src/usr/lib/mage/mage.rc.global.in export MLIBDIR="${MY_SVN_BASE}/mage-src/usr/lib/mage" source ${MLIBDIR}/mage4.functions.sh source ${MLIBDIR}/smage2.functions.sh for repo in ${MY_REPOS[*]} do generate_pkg_file_list "${MY_SVN_BASE}/smage/${repo}" done #echo #echo "DEBUG:" #for i in $(echo ${PKGLIST[*]} | sort | uniq) #do # echo "${i}" #done #for i in $(echo "${SRCPKGLIST[*]}" | sort | uniq) #do # echo "${i}" #done #echo for arch in ${MY_ARCHES[*]} do load_arch_values "${arch}" load_mage_features if [ ! -d ${PKGDIR}/_deprecated ] then install -d ${PKGDIR}/_deprecated || die "install ${PKGDIR}/${arch}/_deprecated" fi for file in $(find ${PKGDIR} -name \*.${PKGSUFFIX} -printf '%f\n' | sort) do if check_pkglist PKGLIST "${file}" then echo -e "${COLGREEN}[k] - ${file}${COLDEFAULT}" else echo -e "${COLRED}[d] - ${file}${COLDEFAULT}" echo mv ${PKGDIR}/${file} ${PKGDIR}/_deprecated || die "move ${PKGDIR}/${file} -> _deprecated" fi done if mqueryfeature "srcpkgbuild" then for file in $(find ${SRCPKGDIR} -name \*.${SRCPKGSUFFIX} -printf '%f\n' | sort) do if check_pkglist SRCPKGLIST "${file}" then echo -e "${COLGREEN}[k] - ${file}${COLDEFAULT}" else echo -e "${COLRED}[d] - ${file}${COLDEFAULT}" echo mv ${SRCPKGDIR}/${file} ${SRCPKGDIR}/_deprecated || die "move ${SRCPKGDIR}/${file} -> _deprecated" fi done fi done