[Bug 199168] Review Request: CGAL

bugzilla at redhat.com bugzilla at redhat.com
Thu Aug 17 14:21:36 UTC 2006


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug report.

Summary: Review Request: CGAL
Alias: CGAL

https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=199168





------- Additional Comments From laurent.rineau__fedora_extras at normalesup.org  2006-08-17 10:12 EST -------
Update:
  Spec URL: http://www.di.ens.fr/~rineau/Fedora/CGAL-3.2.1-15.fc5.src.rpm
  SRPM URL: http://www.di.ens.fr/~rineau/Fedora/CGAL.spec

%changelog
* Thu Aug 17 2006 Laurent Rineau 
<laurent.rineau__fedora_extras at normalesup.org> - 3.2.1-15
- Change the permissions of /etc/profile.d/cgal.*sh
- Remove the meta package CGAL. CGAL-libs is renamed CGAL.
- Added two patchs:
  - CGAL-3.2.1-config.h-endianness_detection.patch which is an upstream patch
    to fix the endianness detection, so that is is no longer hard-coded in
    <CGAL/compiler_config.h>,
  - CGAL-3.2.1-install_cgal-no_versions_in_compiler_config.h.patch that
    removes hard-coded versions in <CGAL/compiler_config.h>.


I have new errors from rpmlint:
  E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh
  E: CGAL-devel non-executable-script /etc/profile.d/cgal.sh 0644
  E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh
  E: CGAL-devel non-executable-script /etc/profile.d/cgal.csh 0644
that comes from the new permissions of those files.

And two new warnings:
  W: CGAL-devel non-conffile-in-etc /etc/profile.d/cgal.sh
  W: CGAL-devel non-conffile-in-etc /etc/profile.d/cgal.csh
that could be fixed easily.

Reporter   Laurent Rineau (laurent.rineau__fedora_extras at normalesup.org)    
  Assigned To   Ed Hill (ed at eh3.com)    

   Save Changes 
 Bug Comments 
Opened by Laurent Rineau (laurent.rineau__fedora_extras at normalesup.org)   on 
2006-07-17 13:36 EST  [reply]      
  Spec URL: http://www.di.ens.fr/~rineau/Fedora/CGAL-3.2.1-13-fc5.src.rpm
SRPM URL: http://www.di.ens.fr/~rineau/Fedora/CGAL.spec
Description: Computational Geometry Algorithms Library

CGAL is a collaborative effort of several sites in Europe and
Israel. The goal is to make the most important of the solutions and
methods developed in computational geometry available to users in
industry and academia in a C++ library. The goal is to provide easy
access to useful, reliable geometric algorithms.

Homepage: http://www.cgal.org/

Packager notes:
* With CGAL-3.2.1, the tarball has been pruned from documentation files with 
undecided license, in order to make packaging possible.
* A Debian package has been submitted, and has been accepted 
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=251885
* Whereas the Debian packager choose to extract the core++ library and put it 
in a separate package, I choose to ship libcore++.a in the CGAL package. It 
could be modified, if needed.
* rpmlint shows several errors or warnings. Some of them come from the 
meta-package CGAL that requires all sub-packages.
* The -devel sub-package ships several static library. It is because upstream 
developers do not want to maintain SOMAJOR numbers for them, now, for 
libcore++.a, and libCGALQt.a

 
20060801173634  Comment #1 From Dennis Gilmore (dennis at ausil.us)    on 
2006-08-01 17:36 EST  [reply]      
  static linking is highly frowned upon 
http://fedoraproject.org/wiki/Packaging/Guidelines  for more info developer 
laziness is generally not considered a good enough reason.  

Looking at the sepc  all those macros  make the spec file confusing. Dont 
redefine  name version and release.

you need full urls  to the upstream source tarball. 

I really sugegst reading the packaging guidelines  and doing some work on them

 
20060802035012  Comment #2 From Laurent Rineau 
(laurent.rineau__fedora_extras at normalesup.org)    on 2006-08-02 03:50 EST  
[reply]      
  1/ I know that static libraries should be avoided, when possible (see my not 
in comment #1). In that case, the upstream developpers do not provide shared 
library for libCGALQt.a and libcore++.a. For libcore++, I could package Core 
separately (http://www.cs.nyu.edu/exact/core/download/core_v1.7/). But, for 
libCGALQt.a, do you see a solution? Waiting for the next release which could 
have shared version for all libraries cannot be a solution: CGAL releases come 
each year. It was really a chance that I manage to make the documention files  
removed from the upstream tarball of CGAL-3.2.1 (for license issues).

2/ As regards the macros... yes I know. This spec file is configurable, so 
that it can be applied to internal release of CGAL as well. What do you mean 
by redefining name of version or release? If I am not wrong, the conditionals 
make them be defined only once. If reviewers agreed that it is two much, I 
will pruned the spec file to remove the macro, as if the default values were 
hard-coded.

3/ For the upstream source tarball, I do not understand your point. spectool 
(from package fedora-rpmdevtools) can understand the macros and give the full 
URLs.

I know pretty well the packaging guidelines. Please give me pointers to 
paragraphs that I could have missed.


 
20060814221318  Comment #3 From Ed Hill (ed at eh3.com)    on 2006-08-14 22:13 
EST  [reply]      
  Hi Laurent, I'm interested in reviewing CGAL but am getting a 404 Not Found 
error when trying to download the SRPM.  Is this submission still active?

 
20060815041708  Comment #4 From Laurent Rineau 
(laurent.rineau__fedora_extras at normalesup.org)    on 2006-08-15 04:17 EST  
[reply]      
  Sorry. The url is there:

Spec URL: http://www.di.ens.fr/~rineau/Fedora/CGAL-3.2.1-13.fc5.src.rpm
SRPM URL: http://www.di.ens.fr/~rineau/Fedora/CGAL.spec

I am thinking about simplifying the spec file. Tell me what you think about 
it.

 
20060815105259  Comment #5 From Ed Hill (ed at eh3.com)    on 2006-08-15 10:52 
EST  [reply]      
  Hi Laurent, thanks for fixing the URL!  I grabbed the SRPM and am looking 
through it.  I agree with you that it would be a very good idea to cleanup 
the spec file and remove all the bits that are unnecessary for Fedora 
Extras (eg. all the internal_release, prefix, build_doc, etc. macros).  As 
soon as you have a slimmed-down SRPM available, please post it and I'll 
start doing a thorough review.

 
20060815185744  Comment #6 From Laurent Rineau 
(laurent.rineau__fedora_extras at normalesup.org)    on 2006-08-15 18:57 EST  
[reply]      
  Update:
  Spec URL: http://www.di.ens.fr/~rineau/Fedora/CGAL-3.2.1-14.fc5.src.rpm
  SRPM URL: http://www.di.ens.fr/~rineau/Fedora/CGAL.spec

I have pruned the spec files from non Fedora stuff. I eventually admit that 
the spec file is complicated enough, even now: the %install stage is quite 
complicated, as the upstream installation process is not yet well adapted to 
Fedora Extras requirements.


 
20060816010647  Comment #7 From Ralf Corsepius (rc040203 at freenet.de)    on 
2006-08-16 01:06 EST  [reply]      
  I must be missing something very basic:

# rpm -qlp CGAL-3.2.1-14.i386.rpm
/usr/share/doc/CGAL-3.2.1
/usr/share/doc/CGAL-3.2.1/LICENSE
/usr/share/doc/CGAL-3.2.1/LICENSE.FREE_USE
/usr/share/doc/CGAL-3.2.1/LICENSE.LGPL
/usr/share/doc/CGAL-3.2.1/LICENSE.QPL
/usr/share/doc/CGAL-3.2.1/README.Fedora

This doesn't look like a reasonable packaging to me.

Also:

# rpmlint CGAL-*3.2.1-14.i386.rpm
E: CGAL devel-dependency CGAL-devel
E: CGAL no-binary
W: CGAL-devel no-dependency-on CGAL
E: CGAL-devel file-in-usr-marked-as-conffile /usr/share/CGAL/make/makefile
E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh
E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh

 
20060816025233  Comment #8 From Ralf Corsepius (rc040203 at freenet.de)    on 
2006-08-16 02:52 EST  [reply]      
  Further issues:

- The *-devel package ships /usr/include/CORE
IMO, this directory name is too general.

- Static libs:
/usr/lib/libCGALQt.a
/usr/lib/libcore++.a

- A more general design problem:
Some headers in /usr/include/CGAL hard-code configuration-time detected
* system features, e.g. the version of zlib and Qt

* compiler characteristics, e.g. endianness.




 
20060816031135  Comment #9 From Laurent Rineau 
(laurent.rineau__fedora_extras at normalesup.org)    on 2006-08-16 03:11 EST  
[reply]      
  Actions(In reply to comment #7)
> I must be missing something very basic:
> 
> # rpm -qlp CGAL-3.2.1-14.i386.rpm
> /usr/share/doc/CGAL-3.2.1
> /usr/share/doc/CGAL-3.2.1/LICENSE
> /usr/share/doc/CGAL-3.2.1/LICENSE.FREE_USE
> /usr/share/doc/CGAL-3.2.1/LICENSE.LGPL
> /usr/share/doc/CGAL-3.2.1/LICENSE.QPL
> /usr/share/doc/CGAL-3.2.1/README.Fedora
> 
> This doesn't look like a reasonable packaging to me.
> 
> Also:
> 
> # rpmlint CGAL-*3.2.1-14.i386.rpm
> E: CGAL devel-dependency CGAL-devel
> E: CGAL no-binary
> W: CGAL-devel no-dependency-on CGAL

CGAL is a meta-package that requires CGAL-libs, CGAL-devel, and CGAL-sources. 
The reason is that the CGAL users community is used to get CGAL as a whole.

> E: CGAL-devel file-in-usr-marked-as-conffile /usr/share/CGAL/make/makefile
> E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh
> E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh

As far as I know, these rpmlint errors should be ignored.

(In reply to comment #8)
> Further issues:
> 
> - The *-devel package ships /usr/include/CORE
> IMO, this directory name is too general.

CGAL-3.2.1 ships CORE-1.7, http://www.cs.nyu.edu/exact/core_pages/intro.html
This directory is from CORE.

> - Static libs:
> /usr/lib/libCGALQt.a
> /usr/lib/libcore++.a

upstream libCGALQt is static only, as indicated in comment #1, as well as 
upstream libcore++. I know that static libraries should be avoided "as far as 
possible", in Fedora. Is the upstream devs choice a sufficient reason?

> - A more general design problem:
> Some headers in /usr/include/CGAL hard-code configuration-time detected
> * system features, e.g. the version of zlib and Qt
> 
> * compiler characteristics, e.g. endianness.

Yes, it should only be /usr/include/CGAL/compiler_config.h. Is it a blocker?


 
20060816032618  Comment #10 From Ralf Corsepius (rc040203 at freenet.de)    on 
2006-08-16 03:26 EST  [reply]      
  (In reply to comment #9)
> Actions(In reply to comment #7)
> > I must be missing something very basic:
> > 
> > # rpm -qlp CGAL-3.2.1-14.i386.rpm
> > /usr/share/doc/CGAL-3.2.1
> > /usr/share/doc/CGAL-3.2.1/LICENSE
> > /usr/share/doc/CGAL-3.2.1/LICENSE.FREE_USE
> > /usr/share/doc/CGAL-3.2.1/LICENSE.LGPL
> > /usr/share/doc/CGAL-3.2.1/LICENSE.QPL
> > /usr/share/doc/CGAL-3.2.1/README.Fedora
> > 
> > This doesn't look like a reasonable packaging to me.
> > 
> > Also:
> > 
> > # rpmlint CGAL-*3.2.1-14.i386.rpm
> > E: CGAL devel-dependency CGAL-devel
> > E: CGAL no-binary
> > W: CGAL-devel no-dependency-on CGAL
> 
> CGAL is a meta-package that requires CGAL-libs, CGAL-devel, and 
CGAL-sources. 

Contradicts Fedora conventions and IMNSOH, is complete non-sense.
Consider this to be a MUST FIX.

Put the run-time libs into CGAL or CGAL-libs and the devel files into *-devel.

> > E: CGAL-devel file-in-usr-marked-as-conffile /usr/share/CGAL/make/makefile
> > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh
> > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh
> 
> As far as I know, these rpmlint errors should be ignored.
Nope, these scripts are incomplete. MUSTFIX

> (In reply to comment #8)
> > Further issues:
> > 
> > - The *-devel package ships /usr/include/CORE
> > IMO, this directory name is too general.
> 
> CGAL-3.2.1 ships CORE-1.7, http://www.cs.nyu.edu/exact/core_pages/intro.html
> This directory is from CORE.
And? This doesn't answer my remark.

> > - Static libs:
> > /usr/lib/libCGALQt.a
> > /usr/lib/libcore++.a
> 
> upstream libCGALQt is static only, as indicated in comment #1, as well as 
> upstream libcore++. I know that static libraries should be avoided "as far 
as 
> possible", in Fedora. Is the upstream devs choice a sufficient reason?
Formally not, but it's sufficient reason for me not to approve a package and 
to
classify a package's quality as "low" ;)

> > - A more general design problem:
> > Some headers in /usr/include/CGAL hard-code configuration-time detected
> > * system features, e.g. the version of zlib and Qt
> > 
> > * compiler characteristics, e.g. endianness.
> 
> Yes, it should only be /usr/include/CGAL/compiler_config.h. Is it a blocker?
Well, there actually are 2 issues with this.
- Package dependencies. You will have to find a way to handle the hard-coded
version dependencies in rpm.


- Hard-coding compiler characteristics is a common design flaw many packages
suffer from. This should not be much of a problem for current Fedora, but can
easily become one. In many cases, such stuff disqualfies a package from
inclusion in multilib'ed distros. This is an upstream problem, which probably
doesn't affect current Fedora.

[Wrt. endianness: Many people miss that endianness is a compiler feature.
Packages hard-coding endianness break on biendian targets, e.g. for 
multilib'ed
mips and sh distros]




 
20060816035855  Comment #11 From Laurent Rineau 
(laurent.rineau__fedora_extras at normalesup.org)    on 2006-08-16 03:58 EST  
[reply]      
  (In reply to comment #10)
> > CGAL is a meta-package that requires CGAL-libs, CGAL-devel, and 
CGAL-sources. 
> 
> Contradicts Fedora conventions and IMNSOH, is complete non-sense.
> Consider this to be a MUST FIX.
> 
> Put the run-time libs into CGAL or CGAL-libs and the devel files into 
*-devel.

For the moment (CGAL-3.2.1-14), libs are in CGAL-libs, and devel files are in 
CGAL-devel. 

> > > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh
> > > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh
> > 
> > As far as I know, these rpmlint errors should be ignored.
> Nope, these scripts are incomplete. MUSTFIX

Ok. I thought it was agreed that shell scripts in /etc/profile.d/ should not 
have shell bangs. If it is really a MUSTFIX, this should be written somewhere, 
and bugs should be reported, against all almost all package that ship 
something in /etc/profile.d/

> > (In reply to comment #8)
> > > Further issues:
> > > 
> > > - The *-devel package ships /usr/include/CORE
> > > IMO, this directory name is too general.
> > 
> > CGAL-3.2.1 ships CORE-1.7, 
http://www.cs.nyu.edu/exact/core_pages/intro.html
> > This directory is from CORE.
> And? This doesn't answer my remark.

I do not see any solution, here. <CORE/...h> is the documented way to include 
CORE headers. If this is a blocker, CORE cannot be into Fedora. That's it.
> > > - A more general design problem:
> > > Some headers in /usr/include/CGAL hard-code configuration-time detected
> > > * system features, e.g. the version of zlib and Qt
> > > 
> > > * compiler characteristics, e.g. endianness.
> > 
> > Yes, it should only be /usr/include/CGAL/compiler_config.h. Is it a 
blocker?
> Well, there actually are 2 issues with this.
> - Package dependencies. You will have to find a way to handle the hard-coded
> version dependencies in rpm.

Actually, these version macros are not used in CGAL. They are not even 
documented. They could be pruned. They are used by the CGAL test suite to 
display dependencies' versions.


 
20060816063508  Comment #12 From Patrice Dumas (pertusus at free.fr)    on 
2006-08-16 06:35 EST  [reply]      
  For computation package like this one I think it is much better 
to keep the static libraries, since the usual reasons for not having
static libraries don't hold, while it is very convenient to be
able to link models statically to run them on any linux.

 
20060816064157  Comment #13 From Patrice Dumas (pertusus at free.fr)    on 
2006-08-16 06:41 EST  [reply]      
  (In reply to comment #10)
> (In reply to comment #9)
> > Actions(In reply to comment #7)

> > > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh
> > > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh
> > 
> > As far as I know, these rpmlint errors should be ignored.
> Nope, these scripts are incomplete. MUSTFIX

This is really an ignorable error. These files are sourced and not
executed. Most of the files in /etc/profile.d don't have a shebang.


> > > - Static libs:

> > upstream libcore++. I know that static libraries should be avoided "as far 
as 
> > possible", in Fedora. Is the upstream devs choice a sufficient reason?
> Formally not, but it's sufficient reason for me not to approve a package and 
to
> classify a package's quality as "low" ;)

Although it would be preferable to have dynamic libraries, it is 
important in my view to have static library for computational 
packages too, in order to be able to build statically compiled
executables to be able to run on any linux.

 
20060816115516  Comment #14 From Ed Hill (ed at eh3.com)    on 2006-08-16 11:55 
EST  [reply]      
  >  - Static libs:

My view on static libs is somewhere between Patrice and Ralf.  In 
situations where upstream does not provide a build mechanism for 
shared libs then I think it is acceptable for Fedora Extras packagers 
to ship static libs in -devel (that is, I don't think its necessary to 
force FE packagers to modify the build files to the extent needed to 
produce shared instead of static).  And, this view is entirely 
consistent with the Packaging Guidelines as they are currently 
written.

That said, we can always submit patches to the upstream folks and try 
to help them build and use shared libs.  Helping the upstream projects 
is an honorable thing!  :-)

In any case, using the latest (-14) SRPM:
 + significantly cleaned up spec file (good!)
 + built for me in mock on FC5-i386
 + has an ability to work with LEDA but, since LEDA is now 
   proprietary, its fine that we don't try to use it (OK)
 - has an ability to work with TAUCS and, since TAUCS is LGPL,
   we should seriously consider packaging it for FE and using 
   it as a CGAL build dependency

Anyway, I'll submit a more thorough review later this week...

 
20060816162206  Comment #15 From Laurent Rineau 
(laurent.rineau__fedora_extras at normalesup.org)    on 2006-08-16 16:22 EST  
[reply]      
  Taucs suffers the "static-only-libs" problem too. And its build/config 
system 
is really strange.

Let us see if CGAL can be include in FE, then I will handle Taucs as a further 
step (CGAL libraries do not depend on Taucs: only the templates library, in 
headers, do).

 
20060817032959  Comment #16 From Ralf Corsepius (rc040203 at freenet.de)    on 
2006-08-17 03:29 EST  [reply]      
  (In reply to comment #13)
> (In reply to comment #10)
> > (In reply to comment #9)
> > > Actions(In reply to comment #7)
> 
> > > > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh
> > > > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh
> > > 
> > > As far as I know, these rpmlint errors should be ignored.
> > Nope, these scripts are incomplete. MUSTFIX
> 
> This is really an ignorable error.
Well, agreed, it's minor error, nevertheless it's an error and easy to fix.

> These files are sourced and not
> executed. 
Then they should NOT be executable => chmod -x

> Most of the files in /etc/profile.d don't have a shebang.
Just because others are sloppy, doesn't mean I need to be.

 
20060817074840  Comment #17 From Laurent Rineau 
(laurent.rineau__fedora_extras at normalesup.org)    on 2006-08-17 07:48 EST  
[reply]      
  (In reply to comment #16)
> > > > > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh
> > > > > E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh
> > These files are sourced and not
> > executed. 
> Then they should NOT be executable => chmod -x

Agreed. It is patch in my spec file. Maybe should someone fill bugs about 
other packages that share that issue. I do not know how to use XML-XPC.
  >> TODO-latter

(In reply to comment #8)
> - A more general design problem:
> Some headers in /usr/include/CGAL hard-code configuration-time detected
> * system features, e.g. the version of zlib and Qt

The CGAL_FOOBAR_VERSION macros are not used in CGAL, actually. They are here 
only for internal uses (to be displayed by the testsuite). I can prune that 
from the package.
 
> * compiler characteristics, e.g. endianness.

The endianness detection has been fixed in the upstream SVN repository 
yesterday, from your comment #10. It now uses macros, and no longer hard-code 
endianness. I will backport the patch in the src.rpm package.

To summarize, the issues that remains:
(In reply to comment #8)
> Further issues:
> 
> - The *-devel package ships /usr/include/CORE
> IMO, this directory name is too general.
> 
> - Static libs:
> /usr/lib/libCGALQt.a
> /usr/lib/libcore++.a

These two issue last. And I do not see how to deal with that (especially 
the /usr/include/CORE issue, which cannot be fixed without changing CORE 
documentation and uses).


-- 
Configure bugmail: https://bugzilla.redhat.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.




More information about the Fedora-package-review mailing list