Bug 812681 - Review Request: glueminisat - Boolean SAT solver that implements literal blocks distance (LBD)
Summary: Review Request: glueminisat - Boolean SAT solver that implements literal bloc...
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Jerry James
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-04-15 22:50 UTC by John C Peterson
Modified: 2013-10-19 14:42 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-04-27 04:45:30 UTC
Type: ---
Embargoed:
loganjerry: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description John C Peterson 2012-04-15 22:50:32 UTC
Spec URL: http://www.eskimo.com/~jcp/glueminisat.spec
SRPM URL: http://www.eskimo.com/~jcp/glueminisat-2.2.5-1.fc16.src.rpm
Description: GlueMiniSat is a boolean, propositional satisfiability (SAT) problem solver. It is a derivative work of the open source MiniSat 2.2 solver, and implements a form of the literal blocks distance (LBD) evaluation criteria to predict the quality of clauses learned when conflicts are encountered in the search process.

The underlying concepts of literal blocks distance were first introduced in the paper "Predicting learnt clauses quality in modern SAT solvers" by Gilles Audemard and Laurent Simon, Proceedings of IJCAI-2009, pages 399-404, 2009. The authors' implementation of LBD, the Glucose 1.0 SAT solver, performed admirably by placing 2-nd at the international 2009 SAT competition in the Applications (UNSAT) category.

GlueMiniSat uses a slightly restricted concept of LBD, called strict LBD, and a dynamic restart strategy based on local averages of the decision levels and the LBDs of learned clauses. Experimental results show that GlueMiniSat also performs very well on SAT instances that are unsatisfiable.

GlueMiniSat supports the same command line options as MiniSat 2.2 (see the documentation from the minisat2 package). It can also run as a "clone" of the MiniSat 2.2 or Glucose 1.0 SAT solvers by specifying the command line options -minisat or -glucose, respectively.

Comment 1 Jerry James 2012-04-17 20:12:49 UTC
I will review this package

Comment 2 Jerry James 2012-04-17 20:42:32 UTC
This review has been produced with the help of fedora-review.  Here are a few additional comments.  First, the myname macro serves no useful purpose.  Eliminate it, and replace all uses of %{myname} with %{name}.  Second, please comment on the upstream status of the patches as described here: https://fedoraproject.org/wiki/Packaging:Guidelines#All_patches_should_have_an_upstream_bug_link_or_comment

Package Review
==============

Key:
- = N/A
x = Pass
! = Fail
? = Not evaluated



==== C/C++ ====
[x]: MUST Header files in -devel subpackage, if present.
[x]: MUST Package does not contain any libtool archives (.la)
[x]: MUST Package does not contain kernel modules.
[x]: MUST Package contains no static executables.
[x]: MUST Rpath absent or only used for internal libs.
[x]: MUST Package is not relocatable.


==== Generic ====
[x]: MUST Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: MUST Package successfully compiles and builds into binary rpms on at
     least one supported primary architecture.
[x]: MUST %build honors applicable compiler flags or justifies otherwise.
[x]: MUST All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[x]: MUST Buildroot is not present
     Note: Unless packager wants to package for EPEL5 this is fine
[x]: MUST Package contains no bundled libraries.
[x]: MUST Changelog in prescribed format.
[x]: MUST Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
     Note: Clean would be needed if support for EPEL is required
[x]: MUST Sources contain only permissible code or content.
[x]: MUST Each %files section contains %defattr if rpm < 4.4
     Note: Note: defattr macros not found. They would be needed for EPEL5
[x]: MUST Macros in Summary, %description expandable at SRPM build time.
[-]: MUST Package requires other packages for directories it uses.
[x]: MUST Package uses nothing in %doc for runtime.
[x]: MUST Package is not known to require ExcludeArch.
[x]: MUST Permissions on files are set properly.
[x]: MUST Package does not contain duplicates in %files.
[x]: MUST Spec file lacks Packager, Vendor, PreReq tags.
[x]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf would be needed if support for EPEL5 is required
[-]: MUST Large documentation files are in a -doc subpackage, if required.
[x]: MUST If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %doc.
[x]: MUST License field in the package spec file matches the actual license.
[x]: MUST Package consistently uses macros (instead of hard-coded directory
     names).
[x]: MUST Package is named according to the Package Naming Guidelines.
[x]: MUST Package does not generate any conflict.
[x]: MUST Package obeys FHS, except libexecdir and /usr/target.
[x]: MUST Package must own all directories that it creates.
[x]: MUST Package does not own files or directories owned by other packages.
[x]: MUST Package installs properly.
[x]: MUST Requires correct, justified where necessary.
[!]: MUST Rpmlint output is silent.

rpmlint glueminisat-2.2.5-1.fc18.i686.rpm

glueminisat.i686: W: spelling-error %description -l en_US boolean -> Boolean, boo lean, boo-lean
glueminisat.i686: W: spelling-error %description -l en_US satisfiability -> insatiability, advisability
glueminisat.i686: W: spelling-error %description -l en_US learnt -> learn, learns, learn t
glueminisat.i686: W: spelling-error %description -l en_US nd -> ND, Nd, n
glueminisat.i686: W: spelling-error %description -l en_US unsatisfiable -> unsatisfied, unjustifiable
glueminisat.i686: W: spelling-error %description -l en_US minisat -> mini sat, mini-sat, minis at
glueminisat.i686: W: no-manual-page-for-binary glueminisat
1 packages and 0 specfiles checked; 0 errors, 7 warnings.


rpmlint glueminisat-2.2.5-1.fc18.src.rpm

glueminisat.src: W: spelling-error %description -l en_US boolean -> Boolean, boo lean, boo-lean
glueminisat.src: W: spelling-error %description -l en_US satisfiability -> insatiability, advisability
glueminisat.src: W: spelling-error %description -l en_US learnt -> learn, learns, learn t
glueminisat.src: W: spelling-error %description -l en_US nd -> ND, Nd, n
glueminisat.src: W: spelling-error %description -l en_US unsatisfiable -> unsatisfied, unjustifiable
glueminisat.src: W: spelling-error %description -l en_US minisat -> mini sat, mini-sat, minis at
1 packages and 0 specfiles checked; 0 errors, 6 warnings.


rpmlint glueminisat-debuginfo-2.2.5-1.fc18.i686.rpm

1 packages and 0 specfiles checked; 0 errors, 0 warnings.

[x]: MUST Sources used to build the package match the upstream source, as
     provided in the spec URL.
/home/jamesjer/812681/glueminisat-2.2.5.tar.gz :
  MD5SUM this package     : 1b96e19f7c0c5e0bec8c26c4eead9261
  MD5SUM upstream package : 1b96e19f7c0c5e0bec8c26c4eead9261

[x]: MUST Spec file is legible and written in American English.
[x]: MUST Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[-]: MUST Package contains a SysV-style init script if in need of one.
[x]: MUST File names are valid UTF-8.
[x]: MUST Useful -debuginfo package or justification otherwise.
[x]: SHOULD Reviewer should test that the package builds in mock.
[-]: SHOULD If the source package does not include license text(s) as a
     separate file from upstream, the packager SHOULD query upstream to
     include it.
[x]: SHOULD Dist tag is present.
[x]: SHOULD No file requires outside of /etc, /bin, /sbin, /usr/bin,
     /usr/sbin.
[x]: SHOULD Final provides and requires are sane (rpm -q --provides and rpm -q
     --requires).
[x]: SHOULD Package functions as described.
[x]: SHOULD Latest version is packaged.
[x]: SHOULD Package does not include license text files separate from
     upstream.
[-]: SHOULD Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[!]: SHOULD SourceX / PatchY prefixed with %{name}.
     Note: Source0:
     https://sites.google.com/a/nabelab.org/glueminisat/home/download/glueminisat-%{version}.tar.gz
     (glueminisat-%{version}.tar.gz) Source1: glueminisat-test.in
     (glueminisat-test.in) Patch0: glueminisat-FPU.patch (glueminisat-
     FPU.patch) Patch1: glueminisat-printf.patch (glueminisat-printf.patch)
[x]: SHOULD SourceX is a working URL.
[-]: SHOULD Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: SHOULD Package should compile and build into binary rpms on all supported
     architectures.
[x]: SHOULD %check is present and all tests pass.
[x]: SHOULD Packages should try to preserve timestamps of original installed
     files.
[x]: SHOULD Spec use %global instead of %define.

Issues:
[!]: MUST Rpmlint output is silent.

rpmlint glueminisat-2.2.5-1.fc18.i686.rpm

glueminisat.i686: W: spelling-error %description -l en_US boolean -> Boolean, boo lean, boo-lean
glueminisat.i686: W: spelling-error %description -l en_US satisfiability -> insatiability, advisability
glueminisat.i686: W: spelling-error %description -l en_US learnt -> learn, learns, learn t
glueminisat.i686: W: spelling-error %description -l en_US nd -> ND, Nd, n
glueminisat.i686: W: spelling-error %description -l en_US unsatisfiable -> unsatisfied, unjustifiable
glueminisat.i686: W: spelling-error %description -l en_US minisat -> mini sat, mini-sat, minis at
glueminisat.i686: W: no-manual-page-for-binary glueminisat
1 packages and 0 specfiles checked; 0 errors, 7 warnings.


rpmlint glueminisat-2.2.5-1.fc18.src.rpm

glueminisat.src: W: spelling-error %description -l en_US boolean -> Boolean, boo lean, boo-lean
glueminisat.src: W: spelling-error %description -l en_US satisfiability -> insatiability, advisability
glueminisat.src: W: spelling-error %description -l en_US learnt -> learn, learns, learn t
glueminisat.src: W: spelling-error %description -l en_US nd -> ND, Nd, n
glueminisat.src: W: spelling-error %description -l en_US unsatisfiable -> unsatisfied, unjustifiable
glueminisat.src: W: spelling-error %description -l en_US minisat -> mini sat, mini-sat, minis at
1 packages and 0 specfiles checked; 0 errors, 6 warnings.


rpmlint glueminisat-debuginfo-2.2.5-1.fc18.i686.rpm

1 packages and 0 specfiles checked; 0 errors, 0 warnings.


See: http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint

The spelling warnings are bogus.  The warning about the lack of a man page is legitimate, but since the minisat2 package doesn't have one either, I can hardly start throwing stones.

[!]: SHOULD SourceX / PatchY prefixed with %{name}.
     Note: Source0:
     https://sites.google.com/a/nabelab.org/glueminisat/home/download/glueminisat-%{version}.tar.gz
     (glueminisat-%{version}.tar.gz) Source1: glueminisat-test.in
     (glueminisat-test.in) Patch0: glueminisat-FPU.patch (glueminisat-
     FPU.patch) Patch1: glueminisat-printf.patch (glueminisat-printf.patch)

This warning can be eliminated by changing the explicit "glueminisat-" prefixes to "%{name}-", for both the sources and the patches.

Generated by fedora-review 0.1.3
External plugins:

Comment 3 John C Peterson 2012-04-24 18:20:22 UTC
Spec URL: http://www.eskimo.com/~jcp/glueminisat.spec
SRPM URL: http://www.eskimo.com/~jcp/glueminisat-2.2.5-2.fc16.src.rpm

I think I have taken care of most of the loose ends in this version. I sent both of the patches to the upstream author Nabeshima Hidetomo and received a prompt reply. He said he would be applying the patches to his next release, and pointed out another small tweak to the printf patch to keep the console output from line wrapping.

No argument here on the less than complete documentation. I was going to suggest writing up a small HTML page for %doc with a short overview, links to the GlueMiniSat home page, and to David Wheeler's online tutorial for vanilla MiniSat with a few words about the extra command line options, namely -glucose and -minisat. Any thoughts on a better format or approach?

I double checked the words that rpmlint claims are mispelled and they all check out (many dictionaries seem to be lacking in knowledge of technically oriented words, no stranger to that problem).

John


% rpmlint -v glueminisat.spec ../SRPMS/glueminisat-2.2.5-2.fc16.src.rpm ../RPMS/x86_64/glueminisat-2.2.5-2.fc16.x86_64.rpm
glueminisat.spec: I: checking-url https://sites.google.com/a/nabelab.org/glueminisat/home/download/glueminisat-2.2.5.tar.gz (timeout 10 seconds)
glueminisat.src: I: checking
glueminisat.src: W: spelling-error %description -l en_US boolean -> Boolean, boo lean, boo-lean
glueminisat.src: W: spelling-error %description -l en_US satisfiability -> insatiability, advisability
glueminisat.src: W: spelling-error %description -l en_US learnt -> learn, learns, learn t
glueminisat.src: W: spelling-error %description -l en_US nd -> ND, Nd, n
glueminisat.src: W: spelling-error %description -l en_US unsatisfiable -> unsatisfied, unjustifiable
glueminisat.src: W: spelling-error %description -l en_US minisat -> mini sat, mini-sat, minis at
glueminisat.src: I: checking-url http://glueminisat.nabelab.org/ (timeout 10 seconds)
glueminisat.src: I: checking-url https://sites.google.com/a/nabelab.org/glueminisat/home/download/glueminisat-2.2.5.tar.gz (timeout 10 seconds)
glueminisat.x86_64: I: checking
glueminisat.x86_64: W: spelling-error %description -l en_US boolean -> Boolean, boo lean, boo-lean
glueminisat.x86_64: W: spelling-error %description -l en_US satisfiability -> insatiability, advisability
glueminisat.x86_64: W: spelling-error %description -l en_US learnt -> learn, learns, learn t
glueminisat.x86_64: W: spelling-error %description -l en_US nd -> ND, Nd, n
glueminisat.x86_64: W: spelling-error %description -l en_US unsatisfiable -> unsatisfied, unjustifiable
glueminisat.x86_64: W: spelling-error %description -l en_US minisat -> mini sat, mini-sat, minis at
glueminisat.x86_64: I: checking-url http://glueminisat.nabelab.org/ (timeout 10 seconds)
glueminisat.x86_64: W: no-manual-page-for-binary glueminisat
2 packages and 1 specfiles checked; 0 errors, 13 warnings.

Comment 4 Jerry James 2012-04-24 20:24:16 UTC
This looks good.  The document with HTML links sounds great, but I'll approve this package as is.  You still need to be sponsored, right?  If so, what is your FAS account name?

Comment 5 Jerry James 2012-04-24 20:25:28 UTC
Also, I've run into trouble before when the name in the bug summary did not exactly match the package name.  I think you'll need to change the summary to read "glueminisat" before the git work will be done.

Comment 6 John C Peterson 2012-04-25 01:11:14 UTC
Indeed, I still do need a sponsor. I just signed up with FAS and got my RSA public key uploaded. The account name is "jcp" (Gotta love it when the login I've always used since 1979 was available!)

I went ahead and started writing a short user's guide in HTML, it should be ready within the next day or two.

Not 100% clear on your comment #5, I assume you mean the title of this bugzilla entry (which I have changed to start with "glueminisat")

Comment 7 Jerry James 2012-04-25 18:39:12 UTC
(In reply to comment #6)
> I went ahead and started writing a short user's guide in HTML, it should be
> ready within the next day or two.

Okay.  Let me know when that's ready and we can close out this review.

> Not 100% clear on your comment #5, I assume you mean the title of this bugzilla
> entry (which I have changed to start with "glueminisat")

Yes, that's what I meant, and your change was exactly correct.

Comment 8 John C Peterson 2012-04-26 06:58:55 UTC
Spec URL: http://www.eskimo.com/~jcp/glueminisat.spec
SRPM URL: http://www.eskimo.com/~jcp/glueminisat-2.2.5-3.fc16.src.rpm

This revision should be ready to go. I wrote an HTML document titled "Introduction to GlueMiniSat" that redirects the interested user to the available upstream documentation. I didn't think it was really complete enough to call it a User Guide.
  
Output from rpmlint to be on the safe side,

% rpmlint glueminisat.spec  ../RPMS/x86_64/glueminisat-2.2.5-3.fc16.x86_64.rpm ../RPMS/x86_64/glueminisat-debuginfo-2.2.5-3.fc16.x86_64.rpm ../SRPMS/glueminisat-2.2.5-3.fc16.src.rpm 
glueminisat.x86_64: W: spelling-error %description -l en_US boolean -> Boolean, boo lean, boo-lean
glueminisat.x86_64: W: spelling-error %description -l en_US satisfiability -> insatiability, advisability
glueminisat.x86_64: W: spelling-error %description -l en_US learnt -> learn, learns, learn t
glueminisat.x86_64: W: spelling-error %description -l en_US nd -> ND, Nd, n
glueminisat.x86_64: W: spelling-error %description -l en_US unsatisfiable -> unsatisfied, unjustifiable
glueminisat.x86_64: W: spelling-error %description -l en_US minisat -> mini sat, mini-sat, minis at
glueminisat.x86_64: W: no-manual-page-for-binary glueminisat
glueminisat.src: W: spelling-error %description -l en_US boolean -> Boolean, boo lean, boo-lean
glueminisat.src: W: spelling-error %description -l en_US satisfiability -> insatiability, advisability
glueminisat.src: W: spelling-error %description -l en_US learnt -> learn, learns, learn t
glueminisat.src: W: spelling-error %description -l en_US nd -> ND, Nd, n
glueminisat.src: W: spelling-error %description -l en_US unsatisfiable -> unsatisfied, unjustifiable
glueminisat.src: W: spelling-error %description -l en_US minisat -> mini sat, mini-sat, minis at
3 packages and 1 specfiles checked; 0 errors, 13 warnings.

Comment 9 Jerry James 2012-04-26 16:42:00 UTC
Looks good.  This package is APPROVED.

John, I will go push the button to sponsor you as a packager.  If you have any questions or run into any problems, please feel free to contact me at any time.  I will also keep an eye on your packaging activities for the next few months, just to watch for signs that you are running into difficulties.  Think of me as a resource you can draw on to help solve packaging problems.

Also, I'm always interested in trading package reviews, if you have more packages you want to submit to Fedora.

Welcome to Fedora!

Comment 10 John C Peterson 2012-04-26 18:42:49 UTC
New Package SCM Request
=======================
Package Name: glueminisat
Short Description: Boolean SAT solver that implements literal blocks distance (LBD)
Owners: jcp
Branches: f16 f17
InitialCC:

Comment 11 Gwyn Ciesla 2012-04-27 13:53:42 UTC
Git done (by process-git-requests).

Comment 12 John C Peterson 2012-04-27 20:18:56 UTC
Package Change Request
======================
Package Name: glueminisat
New Branches: f15
Owners: jcp

Opps! Newbie forgot that f15 is still being supported...

Comment 13 Jerry James 2012-04-27 21:12:00 UTC
(In reply to comment #12)
> Opps! Newbie forgot that f15 is still being supported...

Are you sure you want to do that?  When Fedora 17 is released in less than a month (we hope!) no more new packages can be submitted for it.  A couple of months after that, it will reach End Of Life.  Unless there is a compelling reason, I wouldn't bother creating f15 branches at this point.

Comment 14 Gwyn Ciesla 2012-04-28 14:40:57 UTC
Git done (by process-git-requests).

Comment 15 Fedora Update System 2012-04-29 05:50:03 UTC
glueminisat-2.2.5-3.fc15 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/glueminisat-2.2.5-3.fc15

Comment 16 Fedora Update System 2012-04-29 05:50:13 UTC
glueminisat-2.2.5-3.fc16 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/glueminisat-2.2.5-3.fc16

Comment 17 Fedora Update System 2012-04-29 05:50:22 UTC
glueminisat-2.2.5-3.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/glueminisat-2.2.5-3.fc17

Comment 18 Fedora Update System 2012-05-10 14:22:28 UTC
glueminisat-2.2.5-3.fc16 has been pushed to the Fedora 16 stable repository.

Comment 19 Fedora Update System 2012-05-10 14:28:13 UTC
glueminisat-2.2.5-3.fc15 has been pushed to the Fedora 15 stable repository.

Comment 20 Fedora Update System 2012-05-26 07:35:15 UTC
glueminisat-2.2.5-3.fc17 has been pushed to the Fedora 17 stable repository.


Note You need to log in before you can comment on or make changes to this bug.