Hello,
I backported the commit 253b3720fb43 from the upstream. Everything is
works fine when applied. You will find a patch for the package's
repository.
--
Jimmy
From 86877f0895a99f266cf4fa92d391d2be072dc397 Mon Sep 17 00:00:00 2001
From: Jimmy Thrasibule thrasibule.ji...@gmail.com
Date: Sun, 15 Apr 2012 19:33:36 +0200
Subject: [PATCH] add patch to fix bug #660860
---
debian/patches/fix-bug-660860 | 53 +
debian/patches/series |1 +
2 files changed, 54 insertions(+), 0 deletions(-)
create mode 100644 debian/patches/fix-bug-660860
diff --git a/debian/patches/fix-bug-660860 b/debian/patches/fix-bug-660860
new file mode 100644
index 000..ed9a4cc
--- /dev/null
+++ b/debian/patches/fix-bug-660860
@@ -0,0 +1,53 @@
+Index: cfengine-debian/src/cf.defs.h
+===
+--- cfengine-debian.orig/src/cf.defs.h
cfengine-debian/src/cf.defs.h
+@@ -382,6 +382,7 @@ typedef int clockid_t;
+ #define CF_EXEC_EXPIREAFTER 1
+
+ #define MAXIP4CHARLEN 16
++#define PACK_UPIFELAPSED_SALT packageuplist
+
+ /***/
+ /* DBM*/
+Index: cfengine-debian/src/promises.c
+===
+--- cfengine-debian.orig/src/promises.c
cfengine-debian/src/promises.c
+@@ -776,7 +776,11 @@ md = EVP_get_digestbyname(FileHashName(t
+
+ EVP_DigestInit(context,md);
+
+-EVP_DigestUpdate(context,pp-promiser,strlen(pp-promiser));
++// multiple packages (promisers) may share same package_list_update_ifelapsed lock
++if(!(salt (strncmp(salt, PACK_UPIFELAPSED_SALT, sizeof(PACK_UPIFELAPSED_SALT) - 1) == 0)))
++ {
++ EVP_DigestUpdate(context,pp-promiser,strlen(pp-promiser));
++ }
+
+ if (pp-ref)
+{
+Index: cfengine-debian/src/verify_packages.c
+===
+--- cfengine-debian.orig/src/verify_packages.c
cfengine-debian/src/verify_packages.c
+@@ -59,7 +59,7 @@ PromiseBanner(pp);
+
+ if (a.packages.package_list_update_command)
+{
+- snprintf(lockname,CF_BUFSIZE-1,package-%s-%s,pp-promiser,a.packages.package_list_update_command);
++ snprintf(lockname,CF_BUFSIZE-1,%s-%s,PACK_UPIFELAPSED_SALT,a.packages.package_list_update_command);
+
+al = a;
+
+@@ -73,9 +73,8 @@ if (a.packages.package_list_update_comma
+if (thislock.lock != NULL)
+ {
+ ExecPackageCommand(a.packages.package_list_update_command,false,al,pp);
++ YieldCurrentLock(thislock);
+ }
+-
+- YieldCurrentLock(thislock);
+}
+
+ // Now verify the package itself
diff --git a/debian/patches/series b/debian/patches/series
index 6a99a2c..902d2e5 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,3 +2,4 @@ remove-man-errors
fhs-compliance
fix-examples-paths
fix-error-typos
+fix-bug-660860
--
1.7.7.6