Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 199168 (CGAL)
Summary: | Review Request: CGAL | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Laurent Rineau <laurent.rineau__fedora> | ||||
Component: | Package Review | Assignee: | Ed Hill <ed> | ||||
Status: | CLOSED NEXTRELEASE | QA Contact: | Fedora Package Reviews List <fedora-package-review> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | medium | ||||||
Version: | rawhide | CC: | cz172638, pertusus | ||||
Target Milestone: | --- | Flags: | kevin:
fedora-cvs+
|
||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2006-09-11 13:47:53 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 163779 | ||||||
Attachments: |
|
Description
Laurent Rineau
2006-07-17 17:36:12 UTC
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 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. 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? 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. 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. 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. 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 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. 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? (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] (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. 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. (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. > - 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...
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). (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. (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. (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). (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. As I said in comment #11, libs already are in CGAL-libs, and devel files are in CGAL-devel. I do not understand your point. What is the contradiction with Fedora conventions? (In reply to comment #17) > (In reply to comment #16) > > 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. > > As I said in comment #11, libs already are in CGAL-libs, and devel files are > in CGAL-devel. I do not understand your point. What is the contradiction with > Fedora conventions? CGAL would be assumed to contain runtime libs and/or applications and must not depend on *-devel. I would rename CGAL-libs into CGAL and drop the current CGAL entirely. It doesn't make sense. Alternatively, if you want to keep *-libs, just drop CGAL entirely. 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> - 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) Assigned To Ed Hill (ed) Save Changes Bug Comments Opened by Laurent Rineau (laurent.rineau__fedora_extras) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) 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). (Sorry for the bug spam: it seems that I have copy-pasted the whole bug history, in comment #19. Here is the comment as it should have been.) 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> - 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. 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). Created attachment 135376 [details]
Patch for shared CGALQt lib
With the attached patch you can modify the Makefile to produce a shared CGALQt
lib. This works just fine and we have used this in production for more than a
year.
Hi Laurent, I'm sorry for the delay. Heres a more formal review. good: + naming guidelines OK + source matches upstream + builds in in FC6-i386 mock OK + license files are correctly included + spec is legible and appears sane + shared libs OK + dir ownership looks OK + %clean is OK + macro use looks OK + code not content OK + proper use of devel + no *.la files needswork: - license should say QPL/LGPL and not QPL/GPL - the description in /usr/share/doc/CGAL-3.2.1/README.Fedora is no longer accurate since the CGAL-libs package was removed comments / not-sure: - Typically, packages are not supposed to include "private" versions of 3-rd party packages. Instead, the 3-rd party bits should be made into their own separate packages and then used as build- and/or run-time dependencies. At least theoretically, the CORE bits should be a separate package. Looking at the CORE web site: http://cs.nyu.edu/exact/core/download/prerelease/ it appears that CORE does not receive frequent updates. The last release was in 2004. So one could perhaps argue that the CGAL upstream is effectively acting as maintainers for CORE. Is that the case? If so, I think it could stay as-is provided there are no naming conflicts or other problems. - Could all the *.vcproj files be deleted? I don't see any reason why folks would want them on a Fedora system. rpmlint reports: E: CGAL-devel file-in-usr-marked-as-conffile /usr/share/CGAL/make/makefile W: CGAL-devel non-conffile-in-etc /etc/profile.d/cgal.sh E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.sh E: CGAL-devel non-executable-script /etc/profile.d/cgal.sh 0644 W: CGAL-devel non-conffile-in-etc /etc/profile.d/cgal.csh E: CGAL-devel script-without-shellbang /etc/profile.d/cgal.csh E: CGAL-devel non-executable-script /etc/profile.d/cgal.csh 0644 which are all probably safe to ignore I'm tempted to approve this package conditional on the two needswork items being fixed. Does anyone else have any objections or suggestions? If there are no negative comments in 2--3 days, I'll send an approval message. Hi Laurent, there have been no negative comments so I'll APPROVE this package. Please fix the two small needswork items (comment #22) before submitting the first build and please consider adding the CGALQt patch in comment #21. Thanks! Thanks you, Ed! I have successfully build CGAL-3_2_1-17_fc6 (job 1699 of the build system). Here are the changes: ========================================== * Mon Sep 11 2006 Laurent Rineau <laurent.rineau__fedora_extras> - 3.2.1-17 - libCGALQt.so needs -lGL - remove %{_bindir}/cgal_make_macosx_app * Sat Sep 11 2006 Laurent Rineau <laurent.rineau__fedora_extras> - 3.2.1-16 - Remove CORE support. Its acceptance in Fedora is controversial (bug #199168). - Exclude .vcproj files from the -demos-source subpackage. - Added a patch to build *shared* library libCGALQt. - Added a patch to avoid building static libraries. - Fixed the License: tag. ========================================== The patch for libCGALQt.so is mine. As the upstream maintainer of CGAL::Qt_widget, I will try to find a better solution before the release of CGAL-3.3. CORE and Taucs supports will be considered lately. As a consequence of the absence of CORE, at least the kernel CGAL::Exact_predicates_exact_constructions_kernel_with_sqrt will not be available. I have change my email address in Fedora's account system, as well as in Bugzilla. Can you apply s/laurent.rineau__fedora_extras/Laurent.Rineau__fedora/ in owners.list? Packages Changes Request ====================== Package Name: CGAL Updated Fedora Owners: Laurent.Rineau__fedora Packages Changes Request ====================== Package Name: ipe Updated Fedora Owners: Laurent.Rineau__fedora Packages Changes Request ====================== Package Name: libsyncml Updated Fedora Owners: Laurent.Rineau__fedora Packages Changes Request ====================== Package Name: par2cmdline Updated Fedora Owners: Laurent.Rineau__fedora Packages Changes Request ====================== Package Name: wbxml2 Updated Fedora Owners: Laurent.Rineau__fedora cvs done. Package Change Request ====================== Package Name: CGAL New Branches: epel7 Owners: rineau |