On Thu, Mar 24, 2011 at 4:46 PM, Ray Kohler <ataraxia937@gmail.com> wrote:
I first noticed that checksums weren't calculated if a relative path was used, since they're done after moving into the $tmpdir and relative paths become useless. Then I saw that PGP sigs had basically the same problem, with the addition of the introduction of $startdir, which was never set beforehand (cut-n-paste from makepkg?). Seeing that having this value known would solve both problems, I just defined it and used it for the checksums as well.
Hmm. This is caused by bitrot, actually: commit 7ce90bb removed startdir on purpose. I'd prefer a fix that does not reintroduce this- e.g. just moving the checksum calculation block before the first pushd call, as well as doing the PGP business there too if necessary.
Signed-off-by: Ray Kohler <ataraxia937@gmail.com> --- scripts/repo-add.sh.in | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index 59e98cf..0461c7a 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -235,7 +235,8 @@ db_write_entry() # blank out all variables local pkgfile="$1" local pkgname pkgver pkgdesc csize size md5sum url arch builddate packager \ - _groups _licenses _replaces _depends _conflicts _provides _optdepends + startdir _groups _licenses _replaces _depends _conflicts _provides \ + _optdepends
local OLDIFS="$IFS" # IFS (field separator) is only the newline character @@ -271,6 +272,8 @@ db_write_entry() return 1 fi
+ startdir=$(pwd) + pushd "$tmpdir" >/dev/null if [[ -d $pkgname-$pkgver ]]; then warning "$(gettext "An entry for '%s' already existed")" "$pkgname-$pkgver" @@ -286,9 +289,9 @@ db_write_entry()
# compute checksums msg2 "$(gettext "Computing checksums...")" - md5sum="$(openssl dgst -md5 "$pkgfile")" + md5sum="$(openssl dgst -md5 "$startdir/$pkgfile")" md5sum="${md5sum##* }" - sha256sum="$(openssl dgst -sha256 "$pkgfile")" + sha256sum="$(openssl dgst -sha256 "$startdir/$pkgfile")" sha256sum="${sha256sum##* }"
# remove an existing entry if it exists, ignore failures @@ -317,7 +320,7 @@ db_write_entry() echo -e "%SHA256SUM%\n$sha256sum\n" >>desc
# add base64'd PGP signature - if [[ -f $startdir/$pkgfile.sig ]]; then + if [[ -f "$startdir/$pkgfile.sig" ]]; then pgpsig=$(openssl base64 -in "$startdir/$pkgfile.sig" | tr -d '\n') echo -e "%PGPSIG%\n$pgpsig\n" >>desc fi -- 1.7.4.1