[pacman-dev] [PATCH 4/4] repo-add : remove realpath usage

Xavier Chantry shiningxc at gmail.com
Wed Feb 18 11:19:02 EST 2009


Rework slightly db_write_entry so that $pkgfile is no longer referenced
from the temporary dir. This means $pkgfile can be a relative path and does
not need to be converted with realpath anymore.

Signed-off-by: Xavier Chantry <shiningxc at gmail.com>
---
 scripts/repo-add.sh.in |   39 +++++++++++++++++----------------------
 1 files changed, 17 insertions(+), 22 deletions(-)

diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index 7a271c4..2afb5e9 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -98,7 +98,7 @@ write_list_entry() {
 db_write_delta()
 {
 	# blank out all variables and set deltafile to absolute path
-	local deltafile=$($realpath "$1")
+	local deltafile="$1"
 	local filename=$(basename "$deltafile")
 	local deltavars pkgname fromver tover arch csize md5sum
 
@@ -129,11 +129,11 @@ db_write_delta()
 db_write_entry()
 {
 	# blank out all variables and set pkgfile to an absolute path
-	local pkgfile=$($realpath "$1")
+	local pkgfile="$1"
 	local pkgname pkgver pkgdesc url builddate packager csize size \
 		group depend backup license replaces provides conflict force \
 		_groups _depends _backups _licenses _replaces _provides _conflicts \
-		startdir optdepend _optdepends
+		startdir optdepend _optdepends md5sum
 
 	local OLDIFS="$IFS"
 	# IFS (field separator) is only the newline character
@@ -159,22 +159,22 @@ db_write_entry()
 
 	IFS=$OLDIFS
 
-	# get compressed size of package
+	# get md5sum and compressed size of package
+	md5sum="$(openssl dgst -md5 "$pkgfile" | awk '{print $NF}')"
 	csize=$(@SIZECMD@ "$pkgfile")
 
-	startdir=$(pwd)
-	pushd "$gstmpdir" 2>&1 >/dev/null
-
 	# ensure $pkgname and $pkgver variables were found
 	if [ -z "$pkgname" -o -z "$pkgver" ]; then
 		error "$(gettext "Invalid package file '%s'.")" "$pkgfile"
-		popd 2>&1 >/dev/null
 		return 1
 	fi
 
 	# remove an existing entry if it exists, ignore failures
 	db_remove_entry "$pkgname"
 
+	startdir=$(pwd)
+	pushd "$gstmpdir" 2>&1 >/dev/null
+
 	# create package directory
 	mkdir "$pkgname-$pkgver"
 	cd "$pkgname-$pkgver"
@@ -191,7 +191,7 @@ db_write_entry()
 
 	# compute checksums
 	msg2 "$(gettext "Computing md5 checksums...")"
-	echo -e "%MD5SUM%\n$(openssl dgst -md5 "$pkgfile" | awk '{print $NF}')\n" >>desc
+	echo -e "%MD5SUM%\n$md5sum\n" >>desc
 
 	[ -n "$url" ] && echo -e "%URL%\n$url\n" >>desc
 	write_list_entry "LICENSE" "$_licenses" "desc"
@@ -209,6 +209,7 @@ db_write_entry()
 	write_list_entry "OPTDEPENDS" "$_optdepends" "depends"
 
 	# create deltas entry if there are delta files
+	# Xav : why should deltas be in $startdir?
 	for delta in $startdir/$pkgname-*-*_to_*-*-$arch.delta; do
 		# This for loop also pulls in all files that start with the current package
 		# name and are followed by a -whatever. For instance, running this loop for
@@ -234,11 +235,15 @@ db_write_entry()
 	# add the final newline
 	[ -f "deltas" ] && echo -e "" >>deltas
 
+	popd 2>&1 >/dev/null
+
 	# preserve the modification time
-	touch -r "$pkgfile" desc depends
-	[ -f "deltas" ] && touch -r "$pkgfile" deltas
+	# Xav : what for?
+	pkgdir="$gstmpdir/$pkgname-$pkgver"
+	touch -r "$pkgfile" "$pkgdir/desc" "$pkgdir/depends"
+	[ -f "$pkgdir/deltas" ] && touch -r "$pkgfile" "$pkgdir/deltas"
 
-	popd 2>&1 >/dev/null
+	return 0
 } # end db_write_entry
 
 # remove existing entries from the DB
@@ -285,16 +290,6 @@ if [ $# -lt 2 ]; then
 	exit 1
 fi
 
-# check for and store the name of a realpath-like program
-if [ $(type -t realpath) ]; then
-	realpath='realpath'
-elif [ $(type -t readlink) ]; then
-	realpath='readlink -f'
-else
-	error "$(gettext "Either realpath or readlink are required by repo-add.")"
-	exit 1 # $E_MISSING_PROGRAM
-fi
-
 # main routine
 gstmpdir=$(mktemp -d /tmp/repo-tools.XXXXXXXXXX) || (\
 	error "$(gettext "Cannot create temp directory for database building.")"; \
-- 
1.6.1.3



More information about the pacman-dev mailing list