aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--trunk/doc/CHANGELOG2
-rw-r--r--trunk/lib/common.sh42
-rw-r--r--trunk/src/createpkg2
3 files changed, 39 insertions, 7 deletions
diff --git a/trunk/doc/CHANGELOG b/trunk/doc/CHANGELOG
index f1d3843..1ae2a84 100644
--- a/trunk/doc/CHANGELOG
+++ b/trunk/doc/CHANGELOG
@@ -7,7 +7,7 @@ simplepkg changelog
- new "compact" template storage format
- common.sh:
- default arch when its not present at /etc/slackware-version is now assumed to be "i486"
- - other minor changes
+ - other minor changes and new functions
- repository metainformationg is now added at svn control if applicable
- new functions svn_remove_empty_folders, svn_del, su_svn, chown_svn, chgrp_svn,
regexp_slash, default_distro and svn_add
diff --git a/trunk/lib/common.sh b/trunk/lib/common.sh
index c4224c8..a6f82bc 100644
--- a/trunk/lib/common.sh
+++ b/trunk/lib/common.sh
@@ -94,7 +94,7 @@ function install_packages {
# check if the package was installed
pack="`echo $pack | sed -e 's/\+/\\\+/'`"
- installed=`eval "ls /$root/var/log/packages/ | grep -E '^$pack-[^-]+-[^-]+-[^-]+$'"`
+ installed="`check_installed $pack $root`"
check=$?
if [ ! -z "$installed" ] && [ "$check" == "0" ]; then
@@ -855,7 +855,7 @@ function update_jail_packages {
# check if the package is installed
pack="`echo $pack | sed -e 's/\+/\\\+/'`"
- installed=`eval "ls /$1/var/log/packages/ | grep -E '^$pack-[^-]+-[^-]+-[^-]+$'"`
+ installed="`check_installed $pack $1`"
check=$?
if [ -z "$installed" ] || [ "$check" != "0" ]; then
@@ -1114,7 +1114,7 @@ function repo_gpg_key {
# usage: repo_gpg_key <folder>
- local folder="$1"
+ local folder="$1" tmp_gpg_folder
if [ -z "$SIGN_KEYID" ]; then
echo "GPG-KEY checking failed, no sign key id set."
@@ -1125,11 +1125,34 @@ function repo_gpg_key {
if [ -f "$folder/GPG-KEY" ]; then
if ! gpg --with-colons < $folder/GPG-KEY | cut -d : -f 5 | grep -q -e "$SIGN_KEYID$"; then
echo "Adding OpenPGP key id $SIGN_KEYID to $folder/GPG-KEY file..."
+
+ tmp_gpg_folder="`mktemp -d $TMP/tmp_gpg_folder.XXXXXX`"
+ tmp_gpg_pubkey="`mktemp -d $TMP/tmp_gpg_pubkey.XXXXXX`"
+
if [ ! -z "$SIGN_PACKAGES_USER" ]; then
- su $SIGN_PACKAGES_USER -c "gpg --export --armor $SIGN_KEYID" >> $folder/GPG-KEY
+ chown $SIGN_PACKAGES_USER $tmp_gpg_folder
+ chown $SIGN_PACKAGES_USER $tmp_gpg_pubkey
+
+ # merge pubkey information in a temporary keyring
+ su $SIGN_PACKAGES_USER -c "gpg --export --armor $SIGN_KEYID > $tmp_gpg_pubkey/pubkey.asc"
+ su $SIGN_PACKAGES_USER -c "gpg --homedir $tmp_gpg_folder --import < $folder/GPG-KEY"
+ su $SIGN_PACKAGES_USER -c "gpg --homedir $tmp_gpg_folder --import < $tmp_gpg_pubkey/pubkey.asc"
+
+ # export temporary keyring to repository keyring
+ su $SIGN_PACKAGES_USER -c "gpg --homedir $tmp_gpg_folder --export --armor" > $folder/GPG-KEY
else
- gpg --export --armor $SIGN_KEYID >> $folder/GPG-KEY
+ # merge pubkey information in a temporary keyring
+ gpg --export --armor $SIGN_KEYID > $tmp_gpg_pubkey/pubkey.asc
+ gpg --homedir $tmp_gpg_folder --import < $folder/GPG-KEY
+ gpg --homedir $tmp_gpg_folder --import < $tmp_gpg_pubkey/pubkey.asc
+
+ # export temporary keyring to repository keyring
+ gpg --homedir $tmp_gpg_folder --export --armor > $folder/GPG-KEY
fi
+
+ # cleanup
+ rm -rf $tmp_gpg_folder $tmp_gpg_pubkey
+
fi
else
echo "Adding OpenPGP key id $SIGN_KEYID to $folder/GPG-KEY file..."
@@ -1409,3 +1432,12 @@ function check_gnupg {
fi
}
+
+function check_installed {
+
+ # checks if a package is installed
+ # usage: check_installed <package_name> [root]
+
+ eval "ls /$2/var/log/packages/ | grep -E '^$1-[^-]+-[^-]+-[^-]+$'"
+
+}
diff --git a/trunk/src/createpkg b/trunk/src/createpkg
index 6c0a4df..2344a1b 100644
--- a/trunk/src/createpkg
+++ b/trunk/src/createpkg
@@ -141,7 +141,7 @@ function solve_dep {
# Check package in local system
PACK="`echo $PACK | sed -e 's/\+/\\\+/'`"
- INSTALLED=`eval "ls /var/log/packages/ | grep -E '^$PACK-[^-]+-[^-]+-[^-]+$'"`
+ INSTALLED="`check_installed $PACK`"
CHECK=$?
# TODO: check dependency versions