From f5cff74bb9665b4de3eb7cf16ed0504da0ee599e Mon Sep 17 00:00:00 2001 From: Justin Davis Date: Sun, 15 Apr 2012 18:39:15 -0400 Subject: New injectdigs script. This takes PKGDATA on standard input printing it to standard output. Digests for each file entry in the source array are printed along with the other PKGDATA fields. --- bin/injectdigs | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ setup | 2 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100755 bin/injectdigs diff --git a/bin/injectdigs b/bin/injectdigs new file mode 100755 index 0000000..2414acd --- /dev/null +++ b/bin/injectdigs @@ -0,0 +1,59 @@ +#!/bin/sh + +PROG=injectdigs + +if [ $# -eq 0 ] +then + digstr="md5 sha512" +else + digstr=$* +fi + +if ! which openssl > /dev/null +then + echo "$PROG: openssl needs to be installed to calculate digests" + exit 2 +fi + +awk -v digstr="$digstr" -v prog="$PROG" ' +BEGIN { + diglen = split(digstr, digalgs) + FS = "\n"; RS = ""; ORS = "\n\n" +} + +function calcdigs(alg, files) +{ + cmd = "openssl " alg " " files + digests = "" + while(cmd | getline > 0){ + digests = digests $2 "\n" + } + close(cmd) + return digests +} + +1 + +$1 == "source" { + for(i = 2; i <= NF; i++){ + file = $i + sub(/.*\//, "", file) + if(system("test -f " file) != 0){ + print prog ": source file " file " is missing!" | "cat 1>&2" + exit 1 + } + files = files file " " + filelen++ + } +} + +END { + FS = " "; RS = "\n" + OFS = ORS = "\n" + if(!filelen) exit 0 + for(i = 1; i <= diglen; i++){ + alg = digalgs[i] + print alg "sums", calcdigs(alg, files) + } +} +' diff --git a/setup b/setup index ef1fad7..7ed11f4 100755 --- a/setup +++ b/setup @@ -3,7 +3,7 @@ set -e umask 022 prog=setup -binfiles='genpkg mkpkgmeta modpkg pbfields putpkgtree getpkgtree' +binfiles='genpkg mkpkgmeta modpkg pbfields putpkgtree getpkgtree injectdigs' metas='perl perl.d/ perl.d/fetchcpan perl.d/perl-dist perl.d/perl-pkgbuild perl.d/scrapecore' -- cgit v1.2.3-24-g4f1b