2012/9/23 Ted Ralphs <ted(a)lehigh.edu>:
Hi Paulo,
Hi Ted,
Thanks very much for your e-mail. I am switching the conversation
over the
CoinBinary project mailing list (I just realized that the project's XML page
says that the mailing list for the project is coin-discuss---I will update
that). One of the goals of the CoinBinary project (and of the creation of
the CoinALl package) since the beginning has been to make it possible to put
together packages for Linux distributions (as well as installers for other
platforms). We have made a lot of changes to the build system in recent
years to support this eventual goal, but have lacked the manpower to follow
through in doing the packaging. I'll try to answer some of your questions
below, but we will probably have to have a bit of back and forth to work
everything out.
I was looking a bit more around, and learning of previous efforts, and I
believe the package split layout on
https://projects.coin-or.org/svn/CoinBinary/rpm/releases/1.2.0/Coin.spec
should be good enough, just that instead of using the CoinAll tarball, use
the tarball specific for every project.
I will try to learn a bit more from
https://projects.coin-or.org/CoinBinary/wiki/CoinDeb
and
https://projects.coin-or.org/CoinBinary/wiki/BuildingCoinRpms
On Sun, Sep 23, 2012 at 5:50 PM, Paulo César Pereira de Andrade
<paulo.cesar.pereira.de.andrade(a)gmail.com> wrote:
>
> Hi,
>
> I made an experimental coin-or package, at first from the CoinAll
> tarball,
> any feedback is welcome, e.g. if it is really desirable to make a package
> for
> every sub project, for easier updates, etc (I am more friendly to CoinAll
> because it is supposed to be tested that all bits work together).
The purpose of CoinAll was exactly this. For reasons we can discuss in more
detail, I think it is best to have a separate package for each project
(CoinUtils, Clp, Cbc, etc.). We have made a number of design choices with
the build system to support this.
There should be a reason fro CoinDeb using "coinor" instead of
"coin-or"
prefix to package names, so I think I should also use "coinor".
I think logically, every pkgconfig file should be in a specic package.
The experimental monolithic package I made has these:
$ rpm -ql coin-or-devel | egrep '\.pc$'
/usr/lib64/pkgconfig/alps.pc
/usr/lib64/pkgconfig/bcp.pc
/usr/lib64/pkgconfig/bcps.pc
/usr/lib64/pkgconfig/blis.pc
/usr/lib64/pkgconfig/bonmin.pc
/usr/lib64/pkgconfig/cbc.pc
/usr/lib64/pkgconfig/cgl.pc
/usr/lib64/pkgconfig/clp.pc
/usr/lib64/pkgconfig/coindatamiplib3.pc
/usr/lib64/pkgconfig/coindatanetlib.pc
/usr/lib64/pkgconfig/coindatasample.pc
/usr/lib64/pkgconfig/coinmp.pc
/usr/lib64/pkgconfig/coinutils.pc
/usr/lib64/pkgconfig/couenne.pc
/usr/lib64/pkgconfig/cppad.pc
/usr/lib64/pkgconfig/dip.pc
/usr/lib64/pkgconfig/dylp.pc
/usr/lib64/pkgconfig/flopcpp.pc
/usr/lib64/pkgconfig/ipopt.pc
/usr/lib64/pkgconfig/os.pc
/usr/lib64/pkgconfig/osi-cbc.pc
/usr/lib64/pkgconfig/osi-clp.pc
/usr/lib64/pkgconfig/osi-dylp.pc
/usr/lib64/pkgconfig/osi-sym.pc
/usr/lib64/pkgconfig/osi-unittests.pc
/usr/lib64/pkgconfig/osi-vol.pc
/usr/lib64/pkgconfig/osi.pc
/usr/lib64/pkgconfig/symphony-app.pc
/usr/lib64/pkgconfig/symphony.pc
/usr/lib64/pkgconfig/vol.pc
> Running fedora-review on the package I see these fatal errors:
>
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/miplib3/AUTHORS
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/miplib3/LICENSE
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/Netlib/README
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/Sample/AUTHORS
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/Sample/LICENSE
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/Netlib/LICENSE
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/miplib3/README
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/Sample/README
> coin-or.x86_64: E: zero-length /usr/share/coin/doc/Data/Netlib/AUTHORS
>
> Maybe those were supposed to be symbolic links?
The data projects are strange beasts---they consist of data files that are
part of widely distributed test sets. The origin of many of the files is
difficult to ascertain, so creating AUTHORS, README, and even LICENSE files
is difficult. We have had on our long-term TODO list to come up with a
solution for this, but in any case, they are not necessary for anything else
to work---they are mainly there for unit testing. We made them separate
projects to keep them isolated (to keep the provenance of other projects
cleaner) and to make it possible to choose whether to install them more
easily.
Ok. Splitting in multiple sub packages should make it easier to handle
this, otherwise, based on your comments, I would have just not installed
them on a final package :-)
> The warnings from fedora-review are issues that I can easily
handle,
> for example, \r\n line endings on some files, sources with executable bit
> set, etc. These may be of special interest:
>
> coin-or.x86_64: W: no-manual-page-for-binary cbc
> coin-or.x86_64: W: no-manual-page-for-binary blis
> coin-or.x86_64: W: no-manual-page-for-binary symphony
> coin-or.x86_64: W: no-manual-page-for-binary clp
> coin-or.x86_64: W: no-manual-page-for-binary OSSolverService
>
> help2man is not of much use for these, but it should be easy to create
> simple manpages based on documentation.
Yes, this should be asy to do.
>
> Another issue, I see that the COIN-OR-1.6.2-linux-x86_64-gcc4.4.5.tar.gz
> tarball does not distribute the AUTHORS, README and LICENSE files,
> but does distribute several pdf files. I do not see a make target to
> create
> those, but I may be missing something trivial.
You are correct that there is no target to create the PDF files that are
part of these, but we could create a target for that pretty easily. I'm not
sure what you mean about the tarball not distributing AUTHORS, README, etc.
I mean't:
$ tar ztvf COIN-OR-1.6.2-linux-x86_64-gcc4.4.5.tar.gz|egrep
'(README|LICENSE|AUTHORS)'
-rwxr-xr-x ted/ted 94 2012-02-22 14:23
COIN-OR/examples/branchCutPriceAUTHORS
-rwxr-xr-x ted/ted 11611 2012-02-22 14:23
COIN-OR/examples/branchCutPriceLICENSE
that is, comparing contents of the generated package (from make install)
and contents of the binary distribution.
Those should be installed for each project in the /share/doc
directory.
I will try to rework it a bit to install in the usual rpm documentation
directory /usr/share/doc/%{name}-%{version}
> The initial package is at:
> Spec:
http://fedorapeople.org/~pcpa/coin-or.spec
> SRPM:
http://fedorapeople.org/~pcpa/coin-or-1.6.0-1.fc19.src.rpm
Keep us posted and we'll be happy to help in whatever way we can.
Ok. I will try to come with a more detailed packaging plan and/or prototype
in the next few days.
Ted
--
Dr. Ted Ralphs
Associate Professor, Lehigh University
(610) 628-1280
ted 'at' lehigh 'dot' edu
coral.ie.lehigh.edu/~ted
Thanks,
Paulo