summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@kiwwwi.com.ar>2011-07-02 16:36:45 -0300
committerNicolás Reynolds <fauno@kiwwwi.com.ar>2011-07-02 16:36:45 -0300
commitc2c90f7eb525c7bcbecac08037cfa1e77f994c14 (patch)
treea3fe0acb110c728bd1fe546e316ddbd62391a701
parent1261792ace0f90b51ae4d8e34c8e056e79940ce3 (diff)
Optional package signing support for librestage
-rwxr-xr-xlibrestage45
-rw-r--r--libretools.conf5
2 files changed, 43 insertions, 7 deletions
diff --git a/librestage b/librestage
index d1784ab..e851dd4 100755
--- a/librestage
+++ b/librestage
@@ -72,7 +72,7 @@ SRCPKGDEST=${SRCPKGDEST:-.}
PKGEXT=".pkg.tar.?z"
-staged='n'
+staged=false
# Copies the packages to the specified repos inside staging
for _arch in ${ARCHES[@]}; do
for pkg in ${pkgname[@]}; do
@@ -85,36 +85,67 @@ for _arch in ${ARCHES[@]}; do
pkgfile=$(basename ${pkgpath})
+ if [ ! -z "${SIGID}" ]; then
+ sigpath=${pkgpath}${SIGEXT}
+ sigfile=${pkgfile}${SIGEXT}
+
+ msg "Signing package with ID ${SIGID}"
+ gpg --default-key "${SIGID}" --output ${sigpath} --detach-sig ${pkgpath} || {
+ error "Couldn't sign ${pkgfile}, aborting..."
+ exit 1
+ }
+ fi
+
if [ -e "${pkgpath}" ]; then
msg "Found ${pkgfile}"
canonical=""
for _repo in ${repos[@]}; do
- [[ -z "$canonical" ]] && {
+ if [ -z "$canonical" ]; then
canonical="${WORKDIR}/staging/${_repo}/${pkgfile}"
+
cp "${pkgpath}" "${WORKDIR}/staging/${_repo}/" || {
error "Can't put ${pkgfile} on [staging]"
exit 1
} && {
msg2 "${pkg} staged on [${_repo}]"
- staged='y'
+ staged=true
}
- } || {
+
+ if [ ! -z "${SIGID}" ]; then
+ canonical_sig="${WORKDIR}/staging/${_repo}/${pkgfile}${SIGEXT}"
+ cp "${sigpath}" "${WORKDIR}/staging/${_repo}/" || {
+ error "Can't put ${sigfile} on [staging]"
+ exit 1
+ } && {
+ msg2 "${pkg} signature on [${_repo}]"
+ }
+ fi
+ else
ln "${canonical}" "${WORKDIR}/staging/${_repo}/${pkgfile}" || {
error "Can't put ${pkgfile} on [staging]"
exit 1
} && {
msg2 "${pkg} staged on [${_repo}]"
- staged='y'
+ staged=true
}
- }
+
+ if [ ! -z "${SIGID}" ]; then
+ ln "${canonical_sig}" "${WORKDIR}/staging/${_repo}/${sigfile}" || {
+ error "Can't put ${sigfile} on [staging]"
+ exit 1
+ } && {
+ msg2 "${pkg} signature on [${_repo}]"
+ }
+ fi
+ fi
done
fi
done
done
-if [ $staged = 'n' ]; then
+if ! $staged ; then
error "No package was staged"
exit 1
fi
diff --git a/libretools.conf b/libretools.conf
index a506af7..014243b 100644
--- a/libretools.conf
+++ b/libretools.conf
@@ -58,6 +58,11 @@ FULLBUILDCMD="sudo libremakepkg -cumL -M --noconfirm -M --nocheck"
# Section for toru's vars
TORUPATH=/var/lib/libretools/toru
+## Package signing
+# Leave commented to disable signing
+#SIGEXT=".sig"
+#SIGID="0xYOURID"
+
# Checks if vars aren't empty
for VAR in CHROOTDIR CHROOT CHCOPY CACHEDIR PARABOLAHOST LIBREDESTDIR \