Your message dated Thu, 20 Nov 2014 23:08:23 +0000
with message-id <[email protected]>
and subject line Re: Bug#769634: unblock: picosat/960-1 and undertaker/1.6-2
has caused the Debian Bug report #769634,
regarding unblock: picosat/960-1 and undertaker/1.6-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
769634: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=769634
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: [email protected]
Usertags: unblock
X-Debbugs-CC: [email protected] 

Hi,

In order to fix #766273 properly, we had to make changes to both picosat and
undertaker; the executive summary of #766273 is: undertaker, up to 1.6-1, used
to ship its own copy of picosat as some fixes were required. These fixes make up
the new upstream release 960 of picosat. With the uploads of picosat/960-1 and
undertaker/1.6-2 thus both #766273 as well as embedded code copy problems are
resolved.

While I am aware that new upstream releases are not desirable at this point, I
would ask to consider this update to picosat nevertheless as the upstream
changes are bugfixes only and picosat has the science-logic meta package as sole
rdepends, thus making this a low-risk step.

Thanks a lot in advance,
Michael

unblock picosat/960-1
unblock undertaker/1.6-2

diff -Nru picosat-959/debian/changelog picosat-960/debian/changelog
--- picosat-959/debian/changelog        2014-06-28 17:37:35.000000000 +0100
+++ picosat-960/debian/changelog        2014-11-08 18:15:20.000000000 +0000
@@ -1,3 +1,9 @@
+picosat (960-1) unstable; urgency=low
+
+  * New upstream version
+
+ -- Michael Tautschnig <[email protected]>  Sat, 08 Nov 2014 18:15:16 +0000
+
 picosat (959-1) unstable; urgency=low
 
   * New upstream version
diff -Nru picosat-959/LICENSE picosat-960/LICENSE
--- picosat-959/LICENSE 2014-02-07 06:23:28.000000000 +0000
+++ picosat-960/LICENSE 2014-10-26 10:03:30.000000000 +0000
@@ -1,4 +1,4 @@
-Copyright (c) 2006 - 2013, Armin Biere, Johannes Kepler University.
+Copyright (c) 2006 - 2014, Armin Biere, Johannes Kepler University.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to
diff -Nru picosat-959/makefile.in picosat-960/makefile.in
--- picosat-959/makefile.in     2014-02-07 06:23:28.000000000 +0000
+++ picosat-960/makefile.in     2014-10-26 10:03:30.000000000 +0000
@@ -1,5 +1,5 @@
 CC=@CC@
-CFLAGS=@CFLAGS@ -fno-strict-aliasing
+CFLAGS=@CFLAGS@
 
 all: @TARGETS@
 
diff -Nru picosat-959/NEWS picosat-960/NEWS
--- picosat-959/NEWS    2014-02-07 06:23:28.000000000 +0000
+++ picosat-960/NEWS    2014-10-26 10:03:30.000000000 +0000
@@ -1,3 +1,13 @@
+news for release 960 since 959
+------------------------------
+
+* fixed various issues pointed out by Stefan Hengelein:
+  - fixed incremental usage of 'picosat_adjust'
+  - added CPP fixes (STATS, NO_BINARY_CLAUSE versus TRACE mix-ups)
+  - removed redundant explicit set to zero on reset
+* fixed various usage bugs with 'picomus' (thanks to Stefan Hengelein)
+* removed '-fno-strict-aliasing' (thanks to Jerry James)
+
 news for release 959 since 953
 ------------------------------
 
diff -Nru picosat-959/picomus.c picosat-960/picomus.c
--- picosat-959/picomus.c       2014-02-07 06:23:28.000000000 +0000
+++ picosat-960/picomus.c       2014-10-26 10:03:30.000000000 +0000
@@ -1,5 +1,5 @@
 /****************************************************************************
-Copyright (c) 2011-2012, Armin Biere, Johannes Kepler University.
+Copyright (c) 2011-2014, Armin Biere, Johannes Kepler University.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to
@@ -34,7 +34,7 @@
 
 typedef struct Cls { int lit, red, * lits; } Cls;
 
-static int verbose = 1, nowitness;
+static int verbose, nowitness;
 static int fclose_input, pclose_input, close_output;
 static FILE * input_file, * output_file;
 static const char * input_name, * output_name;
@@ -66,6 +66,7 @@
 
 static void warn (const char * fmt, ...) {
   va_list ap;
+  if (verbose < 0) return;
   fputs ("c [picomus] WARNING: ", stdout);
   va_start (ap, fmt);
   vfprintf (stdout, fmt, ap);
@@ -150,7 +151,7 @@
   int remaining;
   const int * p;
   (void) dummy;
-  if (!verbose) return;
+  if (verbose <= 0) return;
   remaining = 0;
   for (p = mus; *p; p++) remaining++;
   assert (remaining <= nclauses);
@@ -161,6 +162,47 @@
        picosat_time_stamp () - start);
 }
 
+static const char * USAGE =
+"picomus [-h][-v][-q] [ <input> [ <output> ] ]\n"
+"\n"
+"  -h  print this command line option summary\n"
+"  -v  increase verbosity level (default 0 = no messages)\n"
+"  -q  be quiet (no warnings nor messages)\n"
+"\n"
+"This tool is a SAT solver that uses the PicoSAT library to\n"
+"generate a 'minimal unsatisfiable core' also known as 'minimal\n"
+"unsatisfiable set' (MUS) of a CNF in DIMACS format.\n"
+"\n"
+"Both file arguments can be \"-\" and then denote <stdin> and\n"
+"<stdout> respectively.  If no input file is given <stdin> is used.\n"
+"If no output file is specified the MUS is computed and only printed\n"
+"to <stdout> in the format of the SAT competition 2011 MUS track.\n"
+"\n"
+"Note, that the 's ...' lines and in case the instance is satisfiable\n"
+"also the 'v ...' lines for the satisfying assignment are always\n"
+"printed to <stdout> (or not printed at all with '-q').\n"
+"\n"
+"If '-n' is specified satisfying assignment and MUS printing\n"
+"on <stdout> (using the 'v ...' format) is suppressed.\n"
+"The 's ...' line is still printed unless '-q' is specified.\n"
+"If <output> is specified an MUS is written to this file,\n"
+"even if '-n' or '-q' is used.\n"
+"\n"
+#ifndef TRACE
+"WARNING: PicosSAT is compiled without trace support.\n"
+"\n"
+"This typically slows down this MUS extractor, since\n"
+"it only relies on clause selector variables and\n"
+"can not make use of core extraction.  To enable\n"
+"trace generation use './configure --trace' or\n"
+"'./configure -O --trace' when building PicoSAT.\n"
+#else
+"Since trace generation code is included, this binary\n"
+"uses also core extraction in addition to clause selector\n"
+"variables.\n"
+#endif
+;
+
 int main (int argc, char ** argv) {
   int i, * p, n, oldn, red, nonred, res, round, printed, len;
   const char * err;
@@ -173,41 +215,17 @@
   start = picosat_time_stamp ();
   for (i = 1; i < argc; i++) {
     if (!strcmp (argv[i], "-h")) {
-      printf (
-        "picomus [-v][-h][-a][<input>[<output>]]\n"
-        "\n"
-       "This tool is a SAT solver that uses the PicoSAT library to\n"
-       "generate a 'minimal unsatisfiable core' also known as 'minimal\n"
-       "unsatisfiable set' (MUS) of a CNF in DIMACS format.\n"
-        "\n"
-        "Both file arguments can be \"-\" and then denote <stdin> resp.\n"
-        "<stdout>.  If no input file is given <stdin> is used.  If no\n"
-       "output file is specified the MUS is computed and only printed\n"
-       "to <stdout> in the format of the SAT competition 2011 MUS track.\n"
-       "\n"
-       "If '-n' is specified solution respectively MUS printing\n"
-       "on <stdout> (using the 'v ...' format) is suppressed.\n"
-       "If <output> is specified an MUS is written to this file,\n"
-       "even if '-n' is used.\n"
-       "\n"
-#ifndef TRACE
-       "WARNING: PicosSAT is compiled without trace support.\n"
-       "\n"
-       "This typically slows down this MUS extractor, since\n"
-       "it only relies on clause selector variables and\n"
-       "can not make use of core extraction.  To enable\n"
-       "trace generation use './configure --trace' or\n"
-       "'./configure -O --trace' when building PicoSAT.\n"
-#else
-       "Since trace generation code is included, this binary\n"
-       "uses also core extraction in addition to clause selector\n"
-       "variables.\n"
-#endif
-       );
+      fputs (USAGE, stdout);
       exit (0);
-    } else if (!strcmp (argv[i], "-v")) verbose++;
-    else if (!strcmp (argv[i], "-n")) nowitness = 1;
-    else if (argv[i][0] == '-') 
+    } else if (!strcmp (argv[i], "-v")) {
+      if (verbose < 0) die ("'-v' option after '-q'");
+      verbose++;
+    } else if (!strcmp (argv[i], "-q")) {
+      if (verbose < 0) die ("two '-q' options");
+      if (verbose > 0) die ("'-q' option after '-v'");
+      verbose = -1;
+    } else if (!strcmp (argv[i], "-n")) nowitness = 1;
+    else if (argv[i][0] == '-' && argv[i][1]) 
       die ("invalid command line option '%s'", argv[i]);
     else if (output_name) die ("too many arguments");
     else if (!input_name) input_name = argv[i];
@@ -268,8 +286,9 @@
       if (!printed) {
        assert (round == 1);
        printed = 1;
-       printf ("s UNSATISFIABLE\n");
-       fflush (stdout);
+       if (verbose >= 0)
+         printf ("s UNSATISFIABLE\n"),
+         fflush (stdout);
       }
       for (i = 0; i < nclauses; i++) {
        c = clauses + i;
@@ -327,7 +346,8 @@
   }
   res = picosat_sat (ps, -1);
   if (res == 20) {
-    if (!printed) printf ("s UNSATISFIABLE\n"), fflush (stdout);
+    if (!printed && verbose >= 0)
+      printf ("s UNSATISFIABLE\n"), fflush (stdout);
     for (i = 0; i < nclauses; i++) clauses[i].red = 1;
     q = picosat_mus_assumptions (ps, 0, callback, 1);
     while ((i = *q++)) {
@@ -338,21 +358,23 @@
   } else {
 SAT:
     assert (res == 10);
-    printf ("s SATISFIABLE\n"); fflush (stdout);
-    if (!nowitness) {
+    if (!printed && verbose >= 0)
+      printf ("s SATISFIABLE\n"), fflush (stdout);
+    if (!nowitness && verbose >= 0) {
       for (i = 1; i <= nvars; i++)
        printf ("v %d\n", ((picosat_deref (ps, i) < 0) ? -1 : 1) * i);
       printf ("v 0\n");
     }
   }
-  if (verbose) picosat_stats (ps);
+  if (verbose > 0) picosat_stats (ps);
   picosat_reset (ps);
   n = 0;
   for (i = 0; i < nclauses; i++) if (!clauses[i].red) n++;
   red = nclauses - n;
   msg (1, "found %d redundant clauses %.0f%%", red, percent (red, nclauses));
-  msg (0, "computed MUS of size %d out of %d (%.0f%%)",
-       n, nclauses, percent (n, nclauses));
+  if (res == 20)
+    msg (0, "computed MUS of size %d out of %d (%.0f%%)",
+        n, nclauses, percent (n, nclauses));
   if (output_name && strcmp (output_name, "-")) {
     output_file = fopen (output_name, "w");
     if (!output_file) die ("can not write '%s'", output_name);
@@ -368,7 +390,7 @@
     if (close_output) fclose (output_file);
   } 
   if (res == 20) {
-    if (!nowitness) {
+    if (!nowitness && verbose >= 0) {
       for (i = 0; i < nclauses; i++)
        if (!clauses[i].red) printf ("v %d\n", i+1);
       printf ("v 0\n");
diff -Nru picosat-959/picosat.c picosat-960/picosat.c
--- picosat-959/picosat.c       2014-02-07 06:23:28.000000000 +0000
+++ picosat-960/picosat.c       2014-10-26 10:03:30.000000000 +0000
@@ -1322,7 +1322,10 @@
 #endif
 
   if (learned && size > 2)
-    *CLS2ACT (res) = ps->cinc;
+    {
+      Act * p = CLS2ACT (res);
+      *p = ps->cinc;
+    }
 
   return res;
 }
@@ -1456,8 +1459,6 @@
   delete_zhains (ps);
 #endif
 #ifdef NO_BINARY_CLAUSES
-  ps->implvalid = 0;
-  ps->cimplvalid = 0;
   {
     unsigned i;
     for (i = 2; i <= 2 * ps->max_var + 1; i++)
@@ -1469,7 +1470,6 @@
 #endif
 #ifndef NFL
   DELETEN (ps->saved, ps->saved_size);
-  ps->saved_size = 0;
 #endif
   DELETEN (ps->htps, 2 * ps->size_vars);
 #ifndef NDSC
@@ -1480,204 +1480,33 @@
   DELETEN (ps->jwh, 2 * ps->size_vars);
   DELETEN (ps->vars, ps->size_vars);
   DELETEN (ps->rnks, ps->size_vars);
-
   DELETEN (ps->trail, ps->eot - ps->trail);
-  ps->trail = ps->ttail = ps->ttail2 = ps->thead = ps->eot = 0;
-#ifndef NADC
-  ps->ttailado = 0;
-#endif
-
   DELETEN (ps->heap, ps->eoh - ps->heap);
-  ps->heap = ps->hhead = ps->eoh = 0;
-
   DELETEN (ps->als, ps->eoals - ps->als);
-  ps->als = ps->eoals = ps->alshead = ps->alstail = 0;
-  ps->extracted_all_failed_assumptions = 0;
-  ps->failed_assumption = 0;
-  ps->adecidelevel = 0;
   DELETEN (ps->CLS, ps->eocls - ps->CLS);
-  ps->CLS = ps->eocls = ps->clshead = 0;
   DELETEN (ps->rils, ps->eorils - ps->rils);
-  ps->rils = ps->eorils = ps->rilshead = 0;
   DELETEN (ps->cils, ps->eocils - ps->cils);
-  ps->cils = ps->eocils = ps->cilshead = 0;
   DELETEN (ps->fals, ps->eofals - ps->fals);
-  ps->fals = ps->eofals = ps->falshead = 0;
   DELETEN (ps->mass, ps->szmass);
-  ps->szmass = 0;
-  ps->mass = 0;
   DELETEN (ps->mssass, ps->szmssass);
-  ps->szmssass = 0;
-  ps->mssass = 0;
   DELETEN (ps->mcsass, ps->szmcsass);
-  ps->nmcsass = ps->szmcsass = 0;
-  ps->mcsass = 0;
   DELETEN (ps->humus, ps->szhumus);
-  ps->szhumus = 0;
-  ps->humus = 0;
-
-  ps->size_vars = 0;
-  ps->max_var = 0;
-
-  ps->mtcls = 0;
-#ifdef TRACE
-  ps->ocore = -1;
-#endif
-  ps->conflict = 0;
-
   DELETEN (ps->added, ps->eoa - ps->added);
-  ps->eoa = ps->ahead = 0;
-
   DELETEN (ps->marked, ps->eom - ps->marked);
-  ps->eom = ps->mhead = 0;
-
   DELETEN (ps->dfs, ps->eod - ps->dfs);
-  ps->eod = ps->dhead = 0;
-
   DELETEN (ps->resolved, ps->eor - ps->resolved);
-  ps->eor = ps->rhead = 0;
-
   DELETEN (ps->levels, ps->eolevels - ps->levels);
-  ps->eolevels = ps->levelshead = 0;
-
   DELETEN (ps->dused, ps->eodused - ps->dused);
-  ps->eodused = ps->dusedhead = 0;
-
   DELETEN (ps->buffer, ps->eob - ps->buffer);
-  ps->eob = ps->bhead = 0;
-
   DELETEN (ps->indices, ps->eoi - ps->indices);
-  ps->eoi = ps->ihead = 0;
-
   DELETEN (ps->soclauses, ps->eoso - ps->soclauses);
-  ps->soclauses = ps->eoso = ps->sohead = 0;
-  ps->saveorig = ps->partial = 0;
-
   delete_prefix (ps);
-
   delete (ps, ps->rline[0], ps->szrline);
   delete (ps, ps->rline[1], ps->szrline);
-  ps->rline[0] = ps->rline[1] = 0;
-  ps->szrline = ps->RCOUNT = 0;
   assert (getenv ("LEAK") || !ps->current_bytes);      /* found leak if 
failing */
-  ps->max_bytes = 0;
-  ps->recycled = 0;
-  ps->current_bytes = 0;
-
-  ps->lrestart = 0;
-  ps->lreduce = 0;
-  ps->lastreduceconflicts = 0;
-  ps->llocked = 0;
-  ps->lsimplify = 0;
-  ps->fsimplify = 0;
-
-  ps->seconds = 0;
-  ps->flseconds = 0;
-  ps->entered = 0;
-  ps->nentered = 0;
-  ps->measurealltimeinlib = 0;
-
-  ps->levelsum = 0.0;
-  ps->calls = 0;
-  ps->decisions = 0;
-  ps->restarts = 0;
-  ps->simps = 0;
-  ps->iterations = 0;
-  ps->reports = 0;
-  ps->lastrheader = -2;
-  ps->fixed = 0;
-#ifndef NFL
-  ps->failedlits = 0;
-  ps->simplifying = 0;
-  ps->fllimit = 0;
-#ifdef STATS
-  ps->efailedlits = ps->ifailedlits = 0;
-  ps->fltried = ps->flskipped = ps->floopsed = 0;
-  ps->flcalls = ps->flrounds = 0;
-  ps->flprops = 0;
-#endif
-#endif
-  ps->propagations = 0;
-  ps->contexts = 0;
-  ps->internals = 0;
-  ps->conflicts = 0;
-  ps->noclauses = 0;
-  ps->oadded = 0;
-  ps->lladded = 0;
-  ps->loadded = 0;
-  ps->olits = 0;
-  ps->nlclauses = 0;
-  ps->ladded = 0;
-  ps->addedclauses = 0;
-  ps->llits = 0;
-  ps->out = 0;
-#ifdef TRACE
-  ps->trace = 0;
-#endif
-  ps->rup = 0;
-  ps->rupstarted = 0;
-  ps->rupclauses = 0;
-  ps->rupvariables = 0;
-  ps->LEVEL = 0;
-
-  ps->reductions = 0;
-
-  ps->vused = 0;
-  ps->llitsadded = 0;
-  ps->visits = 0;
-#ifdef STATS
-  ps->loused = 0;
-  ps->llused = 0;
-  ps->bvisits = 0;
-  ps->tvisits = 0;
-  ps->lvisits = 0;
-  ps->othertrue = 0;
-  ps->othertrue2 = 0;
-  ps->othertruel = 0;
-  ps->othertrue2u = 0;
-  ps->othertruelu = 0;
-  ps->ltraversals = 0;
-  ps->traversals = 0;
-#ifndef NO_BINARY_CLAUSES
-  ps->antecedents = 0;
-#endif
-  ps->znts = 0;
-  ps->uips = 0;
-  ps->assumptions = 0;
-  ps->rdecisions = 0;
-  ps->sdecisions = 0;
-  ps->srecycled = 0;
-  ps->rrecycled = 0;
-#endif
-  ps->minimizedllits = 0;
-  ps->nonminimizedllits = 0;
-  ps->state = RESET;
-  ps->srng = 0;
-
-  ps->saved_flips = 0;
-  ps->saved_max_var = 0;
-  ps->min_flipped = UINT_MAX;
-
-  ps->flips = 0;
-#ifdef STATS
-  ps->FORCED = 0;
-  ps->assignments = 0;
-#endif
-
-  ps->sdflips = 0;
-  ps->defaultphase = JWLPHASE;
-
-#ifdef STATS
-  ps->staticphasedecisions = 0;
-  ps->inclreduces = 0;
-  ps->skippedrestarts = 0;
-#endif
-
 #ifdef VISCORES
   pclose (ps->fviscores);
-  ps->fviscores = 0;
 #endif
-
   if (ps->edelete)
     ps->edelete (ps->emgr, ps, sizeof *ps);
   else
@@ -1954,11 +1783,9 @@
 
   if (c == &ps->impl)
     return;
-#else
-#ifdef STATS
+#elif defined(STATS) && defined(TRACE)
   ps->antecedents++;
 #endif
-#endif
   if (ps->rhead == ps->eor)
     ENLARGE (ps->resolved, ps->rhead, ps->eor);
 
@@ -2960,7 +2787,7 @@
   Ltk * s;
   Lit ** p;
 
-  for (s = ps->impls + 2; s < ps->impls + 2 * ps->max_var; s++)
+  for (s = ps->impls + 2; s <= ps->impls + 2 * ps->max_var + 1; s++)
     for (p = s->start; p < s->start + s->count; p++)
       *p += delta;
 }
@@ -3061,21 +2888,26 @@
   RESIZEN (ps->vars, ps->size_vars, new_size_vars);
   RESIZEN (ps->rnks, ps->size_vars, new_size_vars);
 
-  lits_delta = ps->lits - old_lits;
-  rnks_delta = ps->rnks - old_rnks;
-
-  fix_trail_lits (ps, lits_delta);
-  fix_clause_lits (ps, lits_delta);
-  fix_added_lits (ps, lits_delta);
-  fix_assumed_lits (ps, lits_delta);
-  fix_cls_lits (ps, lits_delta);
+  if ((lits_delta = ps->lits - old_lits))
+    {
+      fix_trail_lits (ps, lits_delta);
+      fix_clause_lits (ps, lits_delta);
+      fix_added_lits (ps, lits_delta);
+      fix_assumed_lits (ps, lits_delta);
+      fix_cls_lits (ps, lits_delta);
 #ifdef NO_BINARY_CLAUSES
-  fix_impl_lits (ps, lits_delta);
+      fix_impl_lits (ps, lits_delta);
 #endif
 #ifndef NADC
-  fix_ados (ps, lits_delta);
+      fix_ados (ps, lits_delta);
 #endif
-  fix_heap_rnks (ps, rnks_delta);
+    }
+
+  if ((rnks_delta = ps->rnks - old_rnks))
+    {
+      fix_heap_rnks (ps, rnks_delta);
+    }
+
   assert (ps->mhead == ps->marked);
 
   ps->size_vars = new_size_vars;
@@ -4616,11 +4448,11 @@
 
   assert (ps->max_var < ps->size_vars);
 
-  ps->max_var++;                       /* new index of variable */
-  assert (ps->max_var);                /* no unsigned overflow */
+  if (ps->max_var + 1 == ps->size_vars)
+    enlarge (ps, ps->size_vars + 2*(ps->size_vars + 3) / 4); /* +25% */
 
-  if (ps->max_var == ps->size_vars)
-    enlarge (ps, ps->size_vars + (ps->size_vars + 3) / 4); /* +25% */
+  ps->max_var++;                       /* new index of variable */
+  assert (ps->max_var);                        /* no unsigned overflow */
 
   assert (ps->max_var < ps->size_vars);
 
@@ -4846,7 +4678,8 @@
                  {
                    Lit * other = *s;
                    Var *v = LIT2VAR (other);
-                   if (v->level || other->val != TRUE)
+                   if (v->level ||
+                       other->val != TRUE)
                      *r++ = other;
                  }
              lstk->count = r - lstk->start;
@@ -5611,8 +5444,7 @@
 static int
 cmp_glue_activity_size (PS * ps, Cls * c, Cls * d)
 {
-  Act a;
-  Act b;
+  Act a, b, * p, * q;
 
   (void) ps;
 
@@ -5625,8 +5457,10 @@
   if (c->glue > d->glue)
     return -1;
 
-  a = *CLS2ACT (c);
-  b = *CLS2ACT (d);
+  p = CLS2ACT (c);
+  q = CLS2ACT (d);
+  a = *p;
+  b = *q;
 
   if (a < b)                           // then higher activity
     return -1;
@@ -7100,6 +6934,29 @@
 }
 
 static int
+tderef (PS * ps, int int_lit)
+{
+  Lit * lit;
+  Var * v;
+
+  assert (abs (int_lit) <= (int) ps->max_var);
+
+  lit = int2lit (ps, int_lit);
+
+  v = LIT2VAR (lit);
+  if (v->level > 0)
+    return 0;
+
+  if (lit->val == TRUE)
+    return 1;
+
+  if (lit->val == FALSE)
+    return -1;
+
+  return 0;
+}
+
+static int
 pderef (PS * ps, int int_lit)
 {
   Lit * lit;
@@ -7127,6 +6984,9 @@
 {
   unsigned * occs, maxoccs, tmpoccs, npartial;
   int * p, * c, lit, best, val;
+#ifdef LOGGING
+  int tl;
+#endif
 
   assert (!ps->partial);
 
@@ -7141,10 +7001,25 @@
 
   for (c = ps->soclauses; c < ps->sohead; c = p + 1) 
     {
+#ifdef LOGGING
+      tl = 0;
+#endif
       best = 0; 
       maxoccs = 0;
       for (p = c; (lit = *p); p++)
        {
+         val = tderef (ps, lit);
+         if (val < 0)
+           continue;
+         if (val > 0)
+           {
+#ifdef LOGGING
+             tl = 1;
+#endif
+             best = lit;
+             maxoccs = occs[lit];
+           }
+
          val = pderef (ps, lit);
          if (val > 0)
            break;
@@ -7163,8 +7038,8 @@
       if (!lit)
        {
          assert (best);
-         LOG ( fprintf (ps->out, "%sautark %d with %d occs\n", 
-              ps->prefix, best, maxoccs));
+         LOG ( fprintf (ps->out, "%sautark %d with %d occs%s\n", 
+              ps->prefix, best, maxoccs, tl ? " (top)" : ""));
          ps->vars[abs (best)].partial = 1;
          npartial++;
        }
@@ -7302,9 +7177,6 @@
 int
 picosat_deref_toplevel (PS * ps, int int_lit)
 {
-  Lit *lit;
-  Var * v;
-
   check_ready (ps);
   ABORTIF (!int_lit, "API usage: can not deref zero literal");
 
@@ -7314,19 +7186,7 @@
   if (abs (int_lit) > (int) ps->max_var)
     return 0;
 
-  lit = int2lit (ps, int_lit);
-
-  v = LIT2VAR (lit);
-  if (v->level > 0)
-    return 0;
-
-  if (lit->val == TRUE)
-    return 1;
-
-  if (lit->val == FALSE)
-    return -1;
-
-  return 0;
+  return tderef (ps, int_lit);
 }
 
 int
@@ -8160,16 +8020,12 @@
      ps->prefix, PERCENT (redlits, ps->nonminimizedllits));
 
 #ifdef STATS
-#ifndef NO_BINARY_CLAUSES
+#ifdef TRACE
    fprintf (ps->out,
           "%s%llu antecedents (%.1f antecedents per clause",
           ps->prefix, ps->antecedents, AVERAGE (ps->antecedents, 
ps->conflicts));
-#endif
-#ifdef TRACE
   if (ps->trace)
      fprintf (ps->out, ", %.1f bytes/antecedent)", AVERAGE (ps->znts, 
ps->antecedents));
-#endif
-#if !defined(NO_BINARY_CLAUSES) || defined(TRACE)
   fputs (")\n", ps->out);
 #endif
 
diff -Nru picosat-959/VERSION picosat-960/VERSION
--- picosat-959/VERSION 2014-02-07 06:23:28.000000000 +0000
+++ picosat-960/VERSION 2014-10-26 10:03:30.000000000 +0000
@@ -1 +1 @@
-959
+960
diff -Nru undertaker-1.6/debian/changelog undertaker-1.6/debian/changelog
--- undertaker-1.6/debian/changelog     2014-10-19 21:04:57.000000000 +0100
+++ undertaker-1.6/debian/changelog     2014-11-12 04:07:57.000000000 +0000
@@ -1,3 +1,11 @@
+undertaker (1.6-2) unstable; urgency=medium
+
+  * Use system picsoat >= 960 (Closes: #766273)
+  * Apply logic bugfix from upstream for undertaker-checkpatch when
+    calucating statistics about Kconfig changes.
+
+ -- Reinhard Tartler <[email protected]>  Tue, 11 Nov 2014 23:05:38 -0500
+
 undertaker (1.6-1) unstable; urgency=medium
 
   * New upstream release
diff -Nru undertaker-1.6/debian/control undertaker-1.6/debian/control
--- undertaker-1.6/debian/control       2014-10-19 19:08:54.000000000 +0100
+++ undertaker-1.6/debian/control       2014-11-12 04:00:27.000000000 +0000
@@ -15,6 +15,7 @@
  libboost-wave-dev (>= 1.40),
  libpstreams-dev,
  libpuma-dev (>= 1:1.0-4~),
+ picosat (>= 960),
  python-all (>= 2.6.6-3~)
 Standards-Version: 3.9.5
 Homepage: http://vamos.informatik.uni-erlangen.de/trac/undertaker
diff -Nru undertaker-1.6/debian/patches/series 
undertaker-1.6/debian/patches/series
--- undertaker-1.6/debian/patches/series        2014-10-19 21:04:57.000000000 
+0100
+++ undertaker-1.6/debian/patches/series        2014-11-12 04:04:47.000000000 
+0000
@@ -0,0 +1,2 @@
+update_picomus.patch
+undertaker-checkpatch-fix-Kconfig-parsing.patch
diff -Nru 
undertaker-1.6/debian/patches/undertaker-checkpatch-fix-Kconfig-parsing.patch 
undertaker-1.6/debian/patches/undertaker-checkpatch-fix-Kconfig-parsing.patch
--- 
undertaker-1.6/debian/patches/undertaker-checkpatch-fix-Kconfig-parsing.patch   
    1970-01-01 01:00:00.000000000 +0100
+++ 
undertaker-1.6/debian/patches/undertaker-checkpatch-fix-Kconfig-parsing.patch   
    2014-11-12 04:04:54.000000000 +0000
@@ -0,0 +1,27 @@
+From 69c153a00c3f4dc496ac55f3b44446b4217c9d9e Mon Sep 17 00:00:00 2001
+From: Valentin Rothberg <[email protected]>
+Date: Thu, 6 Nov 2014 18:37:00 +0100
+Subject: [PATCH] undertaker-checkpatch: fix Kconfig parsing
+
+This patch fixes the parsing of changes to Kconfig files. There is
+an internal dictionary which is meant to contain all added
+identifiers to Kconfig statements, such as 'if'/'depends on'/'select'.
+Accidentally, only removed statements have been checked which caused
+some false positives.
+
+Change-Id: I1cb950d5079a04e9a9bebf6b6c301c1c8d1be0bd
+---
+ python/undertaker-checkpatch | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/python/undertaker-checkpatch
++++ b/python/undertaker-checkpatch
+@@ -295,7 +295,7 @@ def parse_patch(patchfile):
+                     removals[path] = removed
+ 
+             # added statements (if, select, depends on)
+-            elif change[0] and not change[1] and \
++            elif not change[0] and change[1] and \
+                     REGEX_KCONFIG_STMT.match(change[2]):
+                 stmts = statements.get(path, set())
+                 for feature in REGEX_FEATURE.findall(change[2]):
diff -Nru undertaker-1.6/debian/patches/update_picomus.patch 
undertaker-1.6/debian/patches/update_picomus.patch
--- undertaker-1.6/debian/patches/update_picomus.patch  1970-01-01 
01:00:00.000000000 +0100
+++ undertaker-1.6/debian/patches/update_picomus.patch  2014-11-12 
03:59:14.000000000 +0000
@@ -0,0 +1,45 @@
+From: Stefan Hengelein <[email protected]>
+Date: Mon, 10 Nov 2014 14:24:34 +0100
+Subject: [PATCH] undertaker: adjust picomus call for debian release
+
+This patches uses the new "quiet" mode of picomus 960. Earlier version
+of picomus did not support the "-q" option but produce slightly
+different diagnostic messages.
+
+---
+ Makefile                           | 2 --
+ undertaker/BlockDefectAnalyzer.cpp | 5 +----
+ 2 files changed, 1 insertion(+), 6 deletions(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -115,8 +115,6 @@ install: all $(MANPAGES)
+       @install -v undertaker/rsf2cnf $(DESTDIR)$(BINDIR)
+       @install -v undertaker/satyr $(DESTDIR)$(BINDIR)
+ 
+-      @install -v picosat/picomus $(DESTDIR)$(BINDIR)
+-
+       @install -v ziz/zizler $(DESTDIR)$(BINDIR)
+ 
+       @install -v scripts/Makefile.list $(DESTDIR)$(LIBDIR)
+--- a/undertaker/BlockDefectAnalyzer.cpp
++++ b/undertaker/BlockDefectAnalyzer.cpp
+@@ -247,7 +247,7 @@ void DeadBlockDefect::reportMUS(Configur
+     sc(_musFormula);
+     const kconfig::PicosatCNF *cnf = sc.getCNF();
+     // call picosat in quiet mode with stdin as input and stdout as output
+-    redi::pstream cmd_process("picomus - -");
++    redi::pstream cmd_process("picomus -q - -");
+     // write to stdin of the process
+     cmd_process << "p cnf " << cnf->getVarCount() << " " << 
cnf->getClauseCount() << std::endl;
+     for (const int &clause : cnf->getClauses()) {
+@@ -261,9 +261,6 @@ void DeadBlockDefect::reportMUS(Configur
+     std::stringstream ss;
+     ss << cmd_process.rdbuf();
+     cmd_process.close();
+-    // remove first line from ss (=UNSATISFIABLE)
+-    std::string garbage;
+-    std::getline(ss, garbage);
+ 
+     // create a string from DIMACs CNF Format (=picomus result) to a more 
readable CNF Format
+     // Note: The formula might be incomplete, since a lot operators create 
new CNF-IDs without

Attachment: pgp_jSqwmyJcN.pgp
Description: PGP signature


--- End Message ---
--- Begin Message ---
On Sat, Nov 15, 2014 at 08:23:03AM +0000, Michael Tautschnig wrote:
> In order to fix #766273 properly, we had to make changes to both picosat and
> undertaker; the executive summary of #766273 is: undertaker, up to 1.6-1, used
> to ship its own copy of picosat as some fixes were required. These fixes make 
> up
> the new upstream release 960 of picosat. With the uploads of picosat/960-1 and
> undertaker/1.6-2 thus both #766273 as well as embedded code copy problems are
> resolved.
> 
> While I am aware that new upstream releases are not desirable at this point, I
> would ask to consider this update to picosat nevertheless as the upstream
> changes are bugfixes only and picosat has the science-logic meta package as 
> sole
> rdepends, thus making this a low-risk step.

It's not awesome, but not terrible. Unblocked.


-- 
Jonathan Wiltshire                                      [email protected]
Debian Developer                         http://people.debian.org/~jmw

4096R: 0xD3524C51 / 0A55 B7C5 1223 3942 86EC  74C3 5394 479D D352 4C51

Attachment: signature.asc
Description: Digital signature


--- End Message ---

Reply via email to