]> gitweb.fluxo.info Git - simplepkg.git/commitdiff
attempting to fix #56
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Mon, 26 Jan 2009 22:09:19 +0000 (22:09 +0000)
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Mon, 26 Jan 2009 22:09:19 +0000 (22:09 +0000)
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@779 04377dda-e619-0410-9926-eae83683ac58

trunk/conf/simplepkg.conf
trunk/doc/CHANGELOG
trunk/src/createpkg

index 2da111694fe98180244bb868206778fdb57dc09d..841eddd242658f88ffd9e9b431ef9a2efdd9e85a 100644 (file)
@@ -127,6 +127,12 @@ SIGN_MANIFESTS_KEYID=""
 # Whether to use gpg-agent to sign Manifests
 SIGN_MANIFESTS_WITH_GPG_AGENT="off"
 
+# Whether to just build packages that have Manifest files.
+FORCE_MANIFEST_CHECK="off"
+
+# Whether to just build packages that have signed Manifest files.
+FORCE_MANIFEST_CHECK_SIGNATURE="off"
+
 #---------------------------------------------------------------------
 #                        SIMPLARET SECTION
 #---------------------------------------------------------------------
index 59fcef43ddfbebfb116e04bfc6985272c317b4b4..257be6679aaff74f25b2fc9663df62579cafa0dd 100644 (file)
@@ -51,12 +51,13 @@ simplepkg changelog
       - minor changes
       - renamed config parameter CREATE_ARCH to CREATEPKG_ARCH
       - renamed all "MAKEPKG" config parameters to "PACKAGES", "MAKEPKG_REPOS" to "PACKAGES_DIR"
-      - new config parameters PACKAGES_REPOS_STYLE, MOVE_SLACK_REQUIRED, MKBUILDS_SVN_USER,
-        PACKAGES_SVN_USER, PACKAGES_SVN_GROUP, MKBUILDS_SVN_GROUP, PACKAGES_REPOS_NOARCH,
-        PACKAGES_SVN, CREATEPKG_AUTHOR, SIGN_PACKAGES, SIGN_PACKAGES_USER. SIGN_PACKAGES_KEYID,
-        SIGN_PACKAGES_WITH_GPG_AGENT, SOURCE_DIR_USER, SOURCE_DIR_GROUP, SIGN_MANIFESTS, 
-        SIGN_MANIFESTS_KEYID, SIGN_MANIFESTS_WITH_GPG_AGENT
       - cleaner -s option output
+     - new config parameters PACKAGES_REPOS_STYLE, MOVE_SLACK_REQUIRED, MKBUILDS_SVN_USER,
+       PACKAGES_SVN_USER, PACKAGES_SVN_GROUP, MKBUILDS_SVN_GROUP, PACKAGES_REPOS_NOARCH,
+       PACKAGES_SVN, CREATEPKG_AUTHOR, SIGN_PACKAGES, SIGN_PACKAGES_USER. SIGN_PACKAGES_KEYID,
+       SIGN_PACKAGES_WITH_GPG_AGENT, SOURCE_DIR_USER, SOURCE_DIR_GROUP, SIGN_MANIFESTS, 
+       SIGN_MANIFESTS_KEYID, SIGN_MANIFESTS_WITH_GPG_AGENT, FORCE_MANIFEST_CHECK,
+       FORCE_MANIFEST_CHECK_SIGNATURE
     - lspkg: fix on package search routine
     - jail-commit: using unified diff
 
index 9b252f66a38a91619a91f2e145d98c877ebb72b3..08280a40d0812bc7283f6043aff2e5b25b59ba93 100644 (file)
@@ -266,6 +266,8 @@ function load_parameters {
   MOVE_BIN_PACKAGE="`eval_boolean_parameter MOVE_BIN_PACKAGE $off`"
   MOVE_SLACK_REQUIRED="`eval_boolean_parameter MOVE_SLACK_REQUIRED $off`"
   PACKAGES_REPOS_NOARCH="`eval_boolean_parameter PACKAGES_REPOS_NOARCH $on`"
+  FORCE_MANIFEST_CHECK="`eval_boolean_parameter FORCE_MANIFEST_CHECK $off`"
+  FORCE_MANIFEST_CHECK_SIGNATURE="`eval_boolean_parameter FORCE_MANIFEST_CHECK_SIGNATURE $off`"
 
 }
 
@@ -600,6 +602,28 @@ function create_package {
   else
     FAKEROOT=""
   fi
+
+  # Manifest checking
+  if [ $FORCE_MANIFEST_CHECK -eq $on ] || [ $FORCE_MANIFEST_CHECK_SIGNATURE -eq $on ]; then
+    if [ ! -e "`dirname $SCRIPT_NAME`/Manifest" ]; then
+      eecho $messag "$BASENAME: ERROR: no Manifest file for $PACKAGE."
+      return 1
+    fi
+  fi
+
+  # Manifest signature checking
+  if [ $FORCE_MANIFEST_CHECK_SIGNATURE -eq $on ]; then
+    if grep -q -- "-----BEGIN PGP SIGNED MESSAGE-----" `dirname $SCRIPT_NAME`/Manifest; then
+      gpg --verify `dirname $SCRIPT_NAME`/Manifest &> /dev/null
+      if [ "$?" != "0" ]; then
+        eecho $messag "$BASENAME: ERROR: invalid signature for $PACKAGES's Manifest file."
+        return 1
+      fi
+    else
+      eecho $messag "$BASENAME: ERROR: no signed Manifest file for $PACKAGE."
+      return 1
+    fi
+  fi
   
   # Run SlackBuild script
   [ $DEBUG -eq $off ] && SHELL_FLAG="+x" || SHELL_FLAG="-x"
@@ -754,7 +778,7 @@ function build_queue {
   # createpkg's build queue
   # usage: build_queue <package1> ... <packageN>
 
-  local unable_to_install built=0 total=0
+  local unable_to_install last_status built=0 total=0
 
   if [ -z "$1" ]; then
     return
@@ -762,20 +786,24 @@ function build_queue {
 
   for PACKAGE in $*; do
     create_package
-    if [ "$?" != "0" ]; then
+    last_status="$?"
+    let total++
+    if [ "$last_status" != "0" ]; then
       unable_to_install="$unable_to_install\n\t`echo $PACKAGE | sed -e 's/\\\+/\+/'`"
-      let total++
     else
       let built++
     fi
   done
 
-  if [ ! -z "$unable_to_install" ]; then
-    eecho $messag "$BASENAME: done building $built of $total existing SlackBuilds."
+  if [ ! -z "$unable_to_install" ] && [[ $total > 1 ]]; then
+    eecho $messag "$BASENAME: done building $built of $total requested SlackBuilds."
     eecho $messag "$BASENAME: unable to create the following packages:"
     echo -e "$unable_to_install"
   fi
 
+  # Exit if last build package exit status
+  exit $last_status
+
 }
 
 #---------------------------------------------------