#!/bin/bash # # genpkglist # # Generates a text package database for use with the setup script # (also used to check for missing packages in the download directory) # # Get the package name from the filename # hackish, but should work for now getpkgname() { local tmp tmp=${1##*/} tmp=${tmp%.pkg.tar.gz} tmp=${tmp%-i686} tmp=${tmp%-x86_64} echo ${tmp%-*-*} } pkgfile="`pwd`/packages.txt" ftppath=$1 dbarch=$2 rm -f $pkgfile for category in `find * -maxdepth 0 -type d | grep -v CVS`; do cd $category for pkg in `/bin/ls`; do cd $pkg if [ -f PKGBUILD ]; then . PKGBUILD if [ -f $ftppath/$pkgname-$pkgver-$pkgrel.pkg.tar.gz ]; then echo "$category/$pkgname-$pkgver-$pkgrel.pkg.tar.gz" >>$pkgfile elif [ -f $ftppath/$pkgname-$pkgver-$pkgrel-$dbarch.pkg.tar.gz ]; then echo "$category/$pkgname-$pkgver-$pkgrel-$dbarch.pkg.tar.gz" >>$pkgfile else echo "notice: Missing $pkgname-$pkgver-$pkgrel-$dbarch.pkg.tar.gz in ftp site" >&2 fi fi cd .. done cd .. done cd $ftppath unset DUPES DUPEFILES last for pkg in *.pkg.tar.gz; do pkgname=$(getpkgname $pkg) if [ "$last" = "$pkgname" ]; then DUPES="$DUPES $pkgname" DUPEFILES="$DUPEFILES $pkg" fi last=$pkgname done showdupes() { done= for i in *.pkg.tar.gz; do pkgname=$(getpkgname $i) if [ "$pkgname" = "$1" ]; then ls -l $i | awk '{print $6" "$7" "$8" "$9}' done=1 else [ "$done" = "1" ] && return fi done } if [ "$DUPES" ]; then echo "Possible Dupes for $ftppath (remove old versions)" echo "Date Filename" for dupe in $((for d in `echo $DUPES`; do echo $d; done) | sort -u); do showdupes $dupe done fi