diff options
author | Nicolás Reynolds <fauno@kiwwwi.com.ar> | 2011-07-02 16:36:45 -0300 |
---|---|---|
committer | Nicolás Reynolds <fauno@kiwwwi.com.ar> | 2011-07-02 16:36:45 -0300 |
commit | c2c90f7eb525c7bcbecac08037cfa1e77f994c14 (patch) | |
tree | a3fe0acb110c728bd1fe546e316ddbd62391a701 | |
parent | 1261792ace0f90b51ae4d8e34c8e056e79940ce3 (diff) |
Optional package signing support for librestage
-rwxr-xr-x | librestage | 45 | ||||
-rw-r--r-- | libretools.conf | 5 |
2 files changed, 43 insertions, 7 deletions
@@ -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 \ |