#!/bin/oksh BASE="${0%/*}/.." . "${BASE}/conf/default.conf" if test ! -d "${state_dir}"; then echo "no upstream git state repo of packages.. exiting.." exit 1 fi if test ! -d "${packages_dir}"; then echo "no directory for uptream package descriptions.. exiting.." exit 1 fi find "${state_dir}"/{core,extra}-{any,x86_64} -type f > /tmp/update_packages.$$ nof_packages=`cat /tmp/update_packages.$$ | wc -l` nof_aur_packages=`wc -l ${aur_state_dir}/packages | cut -f 1 -d ' '` nof_checked_out_packages=`find "${packages_dir}" -type f -name PKGBUILD | wc -l` echo "${nof_packages} packages in state repo" echo "${nof_checked_out_packages} packages are checked out" echo "${nof_aur_packages} packages in AUR" > "${data_dir}/stats" echo "packages_state\t${nof_packages}" >> "${data_dir}/stats" echo "packages_repos\t${nof_checked_out_packages}" >> "${data_dir}/stats" # find duplicate entries in state repo > "${data_dir}/duplicates" for duplicate in `find "${state_dir}"/{core,extra}-{any,x86_64} -type f | \ rev | cut -f 1 -d / | rev | sort | uniq -D | uniq`; do for packages in `ls ${state_dir}/{core,extra}-{any,x86_64}/$duplicate 2>/dev/null`; do for instance in `echo $packages | rev | cut -f 1,2 -d / | rev`; do echo -n "${instance}\t" >> "${data_dir}/duplicates" cat "${state_dir}/$instance" | tr -s ' ' '\t' >> "${data_dir}/duplicates" done done done # find dangling repos which are no longer reference from the state git repo # (which should be dropped to the AUR) > "${data_dir}/missing_state_file" for pkgfile in `find "${packages_dir}" -type f -name PKGBUILD`; do repo_in_pkgfile=`echo $pkgfile | rev | cut -f 2-3 -d / | rev` pkgname_in_pkgfile=`echo $pkgfile | rev | cut -f 2 -d / | rev` state_file="${state_dir}/${repo_in_pkgfile}" if test ! -f "${state_file}"; then grep "^${pkgname_in_pkgfile}$" "${aur_state_dir}/packages" 2>&1 >/dev/null if test $? = 0; then state='missing' aur_state="${pkgname_in_pkgfile}" else state='missing' aur_state='missing' fi echo "${repo_in_pkgfile}\t${state}\t${aur_state}" >> "${data_dir}/missing_state_file" fi done nof_missing_state_files=`cat ${data_dir}/missing_state_file | wc -l` echo "missing_state_files\t${nof_missing_state_files}" >> "${data_dir}/stats" # find dangling references from the state repo not having a package repo > "${data_dir}/missing_package_repo" for pkg in `find "${state_dir}"/{core,extra}-{any,x86_64} -type f | \ rev | cut -f 1,2 -d / | rev | sort`; do pkgfile_in_repo=`echo ${packages_dir}/${pkg}/PKGBUILD` if test ! -f "${pkgfile_in_repo}"; then echo "${pkg}\tno git repo" >> "${data_dir}/missing_package_repo" fi done # TODO: update all single package directories # TODO: update all AUR package directories