#!/bin/bash if [ $# -ne 2 ]; then echo "usage: $(basename $0) " exit 1 fi reponame=$1 arch=$2 ##### Arch specific stuff. TODO make this configurable ##### ftppath="/home/ftp/$reponame/os/$arch/" ############################################################ if [ ! -d "$ftppath" ]; then echo "FTP path '$ftppath' does not exist" exit 1 fi if [ ! -f /etc/makepkg.conf ]; then echo "/etc/makepkg.conf not found! Aborting" exit 1 fi . /etc/makepkg.conf cd $ftppath # Get the package name from the filename # hackish, but should work for now getpkgname() { local tmp tmp=${1##*/} tmp=${tmp%$PKGEXT} tmp=${tmp%-$CARCH} echo ${tmp%-*-*} } showdupes() { done="" for i in *.pkg.tar.gz; do pkgname=$(getpkgname $i) if [ "$pkgname" = "$1" ]; then lastmod="$(stat -c %y $i | cut -d. -f1)" fname="$(basename $i)" echo "$lastmod $fname" done=1 else if [ "$done" = "1" ]; then return fi fi done } echo "Scanning for duplicate packages in '$reponame' ($arch)" DUPES="" lastpkg="" for pkg in *.pkg.tar.gz; do pkgname="$(getpkgname $pkg)" if [ "$lastpkg" = "$pkgname" ]; then DUPES="$DUPES $pkgname" fi lastpkg=$pkgname done if [ "$DUPES" ]; then DUPES="$(echo $DUPES | sed 's| |\n|g' | sort -u)" echo "Date Filename" for dupe in $DUPES; do showdupes $dupe done fi