Skip to content

Instantly share code, notes, and snippets.

@b1tninja
Last active March 29, 2019 04:40
Show Gist options
  • Save b1tninja/2e41571a444a7641cb220c8cf5d1011e to your computer and use it in GitHub Desktop.
Save b1tninja/2e41571a444a7641cb220c8cf5d1011e to your computer and use it in GitHub Desktop.
archlinux-packages-keyring
pkgname='archlinux-packages-keyring-git'
pkgver=0.g6541223ad07
pkgrel=1
#SOURCE_DATE_EPOCH=$(date -u '+%s')
arch=('any')
_arch_git=${archgit:-'https://git.archlinux.org/svntogit/packages.git'}
_keyserver=${keyserver:-'hkps://hkps.pool.sks-keyservers.net'}
arch=('any')
makedepends=('pacman' 'bash')
depends=('pacman')
source=(
"https://sks-keyservers.net/sks-keyservers.netCA.pem"
# "git+${_arch_git}"
)
_keyring=${keyfile:-"pacakges.gpg"}
pkgver() {
_git_commit=$(git describe --long --all);
_git_timestamp=$(git log -1 --pretty=format:%ct)
echo "0.${_git_commit/'heads/master-0-'/}"
epoch=$_git_timestamp;
}
prepare() {
[[ -f "${_keyring}" ]] && rm "${_keyring}";
if [[ -d "${pkgname}" ]]
then
pushd "${pkgname}";
git pull;
else
git clone --depth=1 --no-checkout "${_arch_git}" "${pkgname}";
pushd "${pkgname}";
fi;
#git reset --hard HEAD
git checkout HEAD -- */trunk/PKGBUILD
}
build() {
(
declare -A pubkeys;
pkgbuilds=("${pkgname}/"*/trunk/PKGBUILD);
for pkgbuild in ${pkgbuilds[@]};
do
unset validpgpkeys;
shopt -u extglob;
source "${pkgbuild}";
if [[ -z "${validpgpkeys[@]}" ]];
then
: #echo "${pkgbuild} - ${pkgname} has no validpgpkeys";
else
for pgpkey in ${validpgpkeys[@]};
do
if [[ ! $pgpkey=~'[A-F0-9]{40}' ]] || [[ ! $pkgname=~'[^\s]+' ]]
then
echo "$pkgbuild has an invalid pkgname/key: ${pkgname}/${pgpkey}";
else
if [[ ! -z ${pubkeys[${pgpkey}]} ]]; then
echo "${pubkeys[${pgpkey}]} and ${pkgbase:-${pkgname[@]}} from ${pkgbuild} both use pgp key: ${pgpkey}"
multipkgkeys+=("${pgpkey}")
else
pubkeys[${pgpkey}]="${pkgbase:-${pkgname[@]}}";
fi;
echo $pgpkey $pkgbuild;
fi
done;
fi;
done;
echo "Found ${#pubkeys[@]} unique pgp keys in ${#pkgbuilds[@]} packages";
# [[ -d ".gnupg" ]] || mkdir .gnugpg -m 750
# cat > .gnupg/dirmngr.conf <<-EOF
# --standard-resolver
# keyserver --resolve ${_keyserver}
# hkp-cacert sks-keyservers.netCA.pem
#EOF
#gpg-connect-agent reloadagent /bye
gpg --auto-key-locate local,keyserver --keyserver "${_keyserver}" --no-default-keyring --keyring "${_keyring}" --auto-key-retrieve --recv-keys "${!pubkeys[@]}";
)
}
package() {
install -d -m 644 -o root -g root "${_keyring}" "${pkgdir}/usr/share/pacman/keyrings/${_keyring}"
}
sha256sums=('SKIP')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment