
* Don't put the signer's name into the SignWith field, use the email address instead to avoid problems with spaces
42 lines
1.4 KiB
Bash
Executable File
42 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# This script creates a Debian repository in ${DIR} using the reprepro tool.
|
|
# The packages are signed with the key referenced in the newest changelog entry.
|
|
|
|
set -e
|
|
|
|
cd $(dirname $0)
|
|
DIR=./repo
|
|
CONFDIR=conf
|
|
CONFFILE=${CONFDIR}/distributions
|
|
|
|
SIGNER=`parsechangelog --file changelog | grep Maintainer | cut -d\< -f2 | cut -d\> -f1`
|
|
KEYID=`gpg --list-keys "${SIGNER}" | cut -d: -f2 | grep -w pub | cut -d/ -f2 | cut -d\ -f1`
|
|
echo Using signing key: ${SIGNER}
|
|
echo Key ID: ${KEYID}
|
|
|
|
# creating the reprepro config file dynamically allows us to specify the signer
|
|
mkdir -p ${CONFDIR}
|
|
echo "Origin: I2P" > ${CONFFILE}
|
|
echo "Label: I2P Debian Repository" >> ${CONFFILE}
|
|
echo "Suite: all" >> ${CONFFILE}
|
|
echo "Codename: all" >> ${CONFFILE}
|
|
echo "Architectures: i386 amd64 source" >> ${CONFFILE}
|
|
echo "Components: main" >> ${CONFFILE}
|
|
echo "SignWith: ${SIGNER}" >> ${CONFFILE}
|
|
|
|
# create the repository
|
|
echo Building the repository...
|
|
find packages/ -name *.deb -exec reprepro --ask-passphrase --outdir ${DIR} includedeb all {} \;
|
|
find packages/ -name *.changes -exec reprepro --ask-passphrase --outdir ${DIR} include all {} \;
|
|
find packages/ -name *.dsc -exec reprepro --ask-passphrase --outdir ${DIR} includedsc all {} \;
|
|
|
|
# export the public key
|
|
gpg --armor --export ${SIGNER} > ${DIR}/0x${KEYID}.asc
|
|
|
|
# remove the config file created above
|
|
echo Cleaning up...
|
|
rm -f ${CONFFILE}
|
|
rmdir ${CONFDIR}
|
|
|
|
echo Debian repository created in `pwd`/${DIR}.
|