Bug 486804 - Review Request: libferrisloki - customized build of Loki library from Modern C++ Design for libferris
Summary: Review Request: libferrisloki - customized build of Loki library from Modern ...
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Nobody's working on this, feel free to take it
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: FE-DEADREVIEW
TreeView+ depends on / blocked
 
Reported: 2009-02-22 06:01 UTC by Ben Martin
Modified: 2010-11-02 00:55 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2010-11-02 00:55:53 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Ben Martin 2009-02-22 06:01:56 UTC
Spec URL: http://www.libferris.com/ferrisloki.spec
SRPM URL: http://www.libferris.com/ferrisloki-3.0.2-50021.src.rpm
Description: 
A C++ system library for SmartPtr, Singletons, Functors, Factories 
and other nice things. This version contains some changes for Linux
and other new items in Extensions.hh

The end result is to get libferrisloki, libferrisstreams, stldb4, libferris itself and a few other higher level libferris packages into Fedora itself. This is the base package that all the others rely on.

this is mer first package, and me are seeking a sponsor.

Comment 1 Michael Schwendt 2009-03-16 16:39:17 UTC
Might be that I've caught all issues, but a lot of work is needed to bring this into shape:


* Run "rpmlint -i" on your src.rpm and also on all built packages. Try to fix as many Warnings and Errors as plausible.


> License: GPL

This is not just an invalid value for the "License" tag, it is inaccurate. Some source files mention "GPLv2+", some the "Boost Software License 1.0". Others contain a "Copyright Only" header: https://fedoraproject.org/wiki/Licensing/CopyrightOnly
The "macros/ferrismacros.m4" file contains pieces licenced under the "LGPLv2+".

https://fedoraproject.org/wiki/Licensing


> Source: http://prdownloads.sourceforge.net/witme/%{name}-%{version}.tar.bz2

There are special guidelines for Sourceforge.net download locations:
https://fedoraproject.org/wiki/Packaging/SourceURL#Sourceforge.net


> Packager: Ben Martin <monkeyiq.net>

Don't set this tag. The build-system will do it. In general, be careful with hardcoding "Packager"/"Vendor" tags in spec files you release. There are people who build broken binary rpms, which would appear as if they have been built by you, because they contain your name in the "Packager" tag. The spec %changelog is less of a problem in case you wonder.


> BuildRequires: gcc-c++

Redundant, as the C++ compiler is available in the minimal build environment:
https://fedoraproject.org/wiki/Packaging:Guidelines#Exceptions_2


> if [ "$SMP" != "" ]; then
>   (make "MAKE=make -k -j $SMP"; exit 0)
>   make
> else
>   make
> fi

At least with Fedora, you can replace this with just:

make %{?_smp_mflags}


> %install
> %makeinstall

First command in %install section must be: rm -rf $RPM_BUILD_ROOT
(or "rm -rf %buildroot" if you prefer the lower case macro everywhere)

make DESTDIR="$RPM_BUILD_ROOT" install
or:
make DESTDIR="$RPM_BUILD_ROOT" INSTALL="install -p"

shall be preferred over %makeinstall.


> %files
> %defattr(-,root,root,0755)

Doesn't %defattr(-,root,root,-) work?

> %doc AUTHORS README COPYING ChangeLog INSTALL

Typically, the standard file "INSTALL" is irrelevant to RPM package users. Here it is empty even.

> %{_libdir}/*
> %{_includedir}/*

Package must be split into a main library pkg and a ferrisloki-devel sub-package, which contains the files needed only for software development (i.e. the *.so symlink and the headers).

%{_libdir}/*  includes too many files it must not include (e.g. the debuginfo files). Use at most  %{_libdir}/*.so.*   for the main pkg and %{_libdir}/*.so  for the -devel subpkg.


> -rw-r--r--  /usr/lib/libferrisloki.a
> -rwxr-xr-x  /usr/lib/libferrisloki.la

Don't build/include these.
https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries


> -rw-r--r--  /usr/include/FerrisLoki/Extensions.cpp
> -rw-r--r--  /usr/include/FerrisLoki/OrderedStatic.cpp
> -rw-r--r--  /usr/include/FerrisLoki/SafeFormat.cpp
> -rw-r--r--  /usr/include/FerrisLoki/Singleton.cpp
> -rw-r--r--  /usr/include/FerrisLoki/SmallObj.cpp
> -rw-r--r--  /usr/include/FerrisLoki/SmartPtr.cpp
> -rw-r--r--  /usr/include/FerrisLoki/StrongPtr.cpp

Hmm?


* The pkgconfig file ferrisloki.pc is questionable, because it is tuned for static linking and does a few bad things:

> Libs: -L${libdir} -lferrisloki  -lsigc-2.0  
The shared library is linked with libsigc-2.0 already. No need to link again.

> Requires: 

The pkgconfig dependency on "sigc++-2.0" is missing in this field if you really want it to be a strict dependency - I doubt you want it. It would also add the proper libsigc++20 CFLAGS and LDFLAGS automatically when running pkg-config, and you would not need to add them to your .pc file manually.

For platforms older than Fedora 11, the ferrisloki-devel subpackage must "Requires: libsigc++20-devel", however see below.

> Cflags: -I${includedir} -I${includedir}/FerrisLoki
> -I${includedir}/FerrisLoki/loki   -I/usr/include/sigc++-2.0
> -I/usr/lib/sigc++-2.0/include

Why do add two search paths for FerrisLoki and FerrisLoki/loki? There are several files which include <loki/...>, so the extra search path is not needed.

The sigc++-2.0 related Cflags are redundant, if you would fill in the Requires field correctly. However, only the boost extension uses sigc++20 headers. And that extension would need "Requires: boost-devel" in the spec file.

In other words, I don't see why the sigc++ stuff is in the .pc file at all.

Comment 2 Michael Schwendt 2009-03-16 16:41:32 UTC
> make DESTDIR="$RPM_BUILD_ROOT" install
> or:
> make DESTDIR="$RPM_BUILD_ROOT" INSTALL="install -p"

Cut'n'paste error from a file where I made that typo before. Second line must read:

make DESTDIR="$RPM_BUILD_ROOT" INSTALL="install -p" install

Comment 3 Ben Martin 2009-03-17 09:48:25 UTC
Firstly, thank you for your indepth and very informative comments! A
few issues like not having split out a -devel package I forgot to do
before submitting and apologize for that.

I should mention up front that I've been using this spec on the
openSUSE build system (OBS) to make rpms for Fedora and openSUSE. If
possible I'd like to continue using the same spec in Fedora and in the
OBS to make openSUSE rpms too. I'm not sure if this is possible or
not, but I can always hope.

I've updated the spec file and src.rpm file with changes from your
comments. This should also make the next spec less of a hassle because
I'll have already addressed these comments.


> Might be that I've caught all issues, but a lot of work is needed to bring this
> into shape:
> 
> 
> * Run "rpmlint -i" on your src.rpm and also on all built packages. Try to fix
> as many Warnings and Errors as plausible.
> 

There are still a few issues rpmlint picks up. The main one is how to
use multiple licenses properly.

> 
> > License: GPL
> 
> This is not just an invalid value for the "License" tag, it is inaccurate. Some
> source files mention "GPLv2+", some the "Boost Software License 1.0". Others
> contain a "Copyright Only" header:
> https://fedoraproject.org/wiki/Licensing/CopyrightOnly
> The "macros/ferrismacros.m4" file contains pieces licenced under the "LGPLv2+".
> 
> https://fedoraproject.org/wiki/Licensing

OK, I've taken a look at these to see if I could consolidate things (if I owned
copyright on the file & code) but it looks like we'll need these three liceneses
unless I plan to rewrite some already working code. So now we have:

License: LGPLv2+, Boost, Copyright only

I'm not sure how to chain them though. rpmlint doesn't seem to like comma separated 
and rpmbuild doesn't like multiple tags.

> 
> 
> 
> > Source: http://prdownloads.sourceforge.net/witme/%{name}-%{version}.tar.bz2
> 
> There are special guidelines for Sourceforge.net download locations:
> https://fedoraproject.org/wiki/Packaging/SourceURL#Sourceforge.net

Excellent. The above URL was one I came up with ages ago, though it is
surprisingly close to the Fedora recommendation. I've updated to fix
this inline with the URL above.

> 
> 
> > Packager: Ben Martin <monkeyiq.net>
> 
> Don't set this tag. The build-system will do it. In general, be careful with
> hardcoding "Packager"/"Vendor" tags in spec files you release. There are people
> who build broken binary rpms, which would appear as if they have been built by
> you, because they contain your name in the "Packager" tag. The spec %changelog
> is less of a problem in case you wonder.

Removed. Though I also plan to try to use the same .spec with OBS to
make openSUSE rpms, so I might have to add it back conditionally.

> 
> 
> > BuildRequires: gcc-c++
> 
> Redundant, as the C++ compiler is available in the minimal build environment:
> https://fedoraproject.org/wiki/Packaging:Guidelines#Exceptions_2

Ah, if this redundancy is OK can we leave it? To build with OBS you
have to include the compiler too so I need that redundant line for the
spec to with on OBS too.

> 
> 
> > if [ "$SMP" != "" ]; then
> >   (make "MAKE=make -k -j $SMP"; exit 0)
> >   make
> > else
> >   make
> > fi
> 
> At least with Fedora, you can replace this with just:
> 
> make %{?_smp_mflags}
> 

Done. If openSUSE doesn't actually set _smp_mflags I might add some
glue in the header of the spec to set it properly on OBS.

> 
> > %install
> > %makeinstall
> 
> First command in %install section must be: rm -rf $RPM_BUILD_ROOT
> (or "rm -rf %buildroot" if you prefer the lower case macro everywhere)
> 
> make DESTDIR="$RPM_BUILD_ROOT" install
> or:
> make DESTDIR="$RPM_BUILD_ROOT" INSTALL="install -p"
> 
> shall be preferred over %makeinstall.

This is one area where I thought using the macro was the golden thing
to do.  Changed to the second version with the modification you
included.

> 
> 
> > %files
> > %defattr(-,root,root,0755)
> 
> Doesn't %defattr(-,root,root,-) work?
> 
> > %doc AUTHORS README COPYING ChangeLog INSTALL
> 
> Typically, the standard file "INSTALL" is irrelevant to RPM package users. Here
> it is empty even.

Fixed.

> 
> > %{_libdir}/*
> > %{_includedir}/*
> 
> Package must be split into a main library pkg and a ferrisloki-devel
> sub-package, which contains the files needed only for software development
> (i.e. the *.so symlink and the headers).
> 
> %{_libdir}/*  includes too many files it must not include (e.g. the debuginfo
> files). Use at most  %{_libdir}/*.so.*   for the main pkg and %{_libdir}/*.so 
> for the -devel subpkg.
> 
> 
> > -rw-r--r--  /usr/lib/libferrisloki.a
> > -rwxr-xr-x  /usr/lib/libferrisloki.la
> 
> Don't build/include these.
> https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries
> 
> 
> > -rw-r--r--  /usr/include/FerrisLoki/Extensions.cpp
> > -rw-r--r--  /usr/include/FerrisLoki/OrderedStatic.cpp
> > -rw-r--r--  /usr/include/FerrisLoki/SafeFormat.cpp
> > -rw-r--r--  /usr/include/FerrisLoki/Singleton.cpp
> > -rw-r--r--  /usr/include/FerrisLoki/SmallObj.cpp
> > -rw-r--r--  /usr/include/FerrisLoki/SmartPtr.cpp
> > -rw-r--r--  /usr/include/FerrisLoki/StrongPtr.cpp
> 
> Hmm?

OK I split the package to include a -devel package and distribute the
libdir stuff as mentioned. The strange .cpp files are no longer
packaged.

> 
> 
> * The pkgconfig file ferrisloki.pc is questionable, because it is tuned for
> static linking and does a few bad things:
> 
> > Libs: -L${libdir} -lferrisloki  -lsigc-2.0  
> The shared library is linked with libsigc-2.0 already. No need to link again.
> 
> > Requires: 
> 
> The pkgconfig dependency on "sigc++-2.0" is missing in this field if you really
> want it to be a strict dependency - I doubt you want it. It would also add the
> proper libsigc++20 CFLAGS and LDFLAGS automatically when running pkg-config,
> and you would not need to add them to your .pc file manually.
> 
> For platforms older than Fedora 11, the ferrisloki-devel subpackage must
> "Requires: libsigc++20-devel", however see below.
> 
> > Cflags: -I${includedir} -I${includedir}/FerrisLoki
> > -I${includedir}/FerrisLoki/loki   -I/usr/include/sigc++-2.0
> > -I/usr/lib/sigc++-2.0/include
> 
> Why do add two search paths for FerrisLoki and FerrisLoki/loki? There are
> several files which include <loki/...>, so the extra search path is not needed.
> 
> The sigc++-2.0 related Cflags are redundant, if you would fill in the Requires
> field correctly. However, only the boost extension uses sigc++20 headers. And
> that extension would need "Requires: boost-devel" in the spec file.
> 
> In other words, I don't see why the sigc++ stuff is in the .pc file at all.
> 

Updated to remove the sigc++ stuff from the cflags and libs in the .pc
and use Requires for both sigc++ and boost instead.

The problem that lead to this is that I have added some extensions to
the libferrisloki library beyond what the mainline Loki library
has. These extensions are in

%{_includedir}/FerrisLoki/*.hh

and over time have grown to include sigc++ and boost support to make
all the higher level libraries that use libferrisloki easier to
write. Of course, if you don't #include any of these extensions then
sigc++ and boost are not strictly needed by libferrisloki. On the
other hand, since I'm the main (sole?) user of libferrisloki just
adding both sigc++ and boost to the requires should make things
cleaner.

Comment 4 Michael Schwendt 2009-03-21 17:45:05 UTC
Haven't had a look at the update rpms yet, so just some answers:


> If possible I'd like to continue using the same spec in Fedora
> and in the OBS to make openSUSE rpms too.

I'm not aware of any policy that disallows this. However, history has shown that it's more convenient to keep spec files distribution-specific and clean.

Often distribution-independent spec files are expanded with many conditional sections, which reduce readability and sometime even cause side-effects. This can get really ugly in places where you must use Fedora-specific macros or scriptlet fragments. And also in the %changelog.


> License: LGPLv2+, Boost, Copyright only
>
> I'm not sure how to chain them though.

https://fedoraproject.org/wiki/Packaging/LicensingGuidelines#Multiple_Licensing_Scenarios


> %makeinstall

https://fedoraproject.org/wiki/Packaging:Guidelines#Why_the_.25makeinstall_macro_should_not_be_used

Comment 5 Michael Schwendt 2009-04-13 09:40:04 UTC
Please point to the updated src.rpm.

Comment 6 Ben Martin 2009-04-13 10:08:48 UTC
Sorry about the delay. I moved them to my fuuko subdomain:
http://fuuko.libferris.com/fedora/

Also, since Extensions.cpp/hh are GPLv2+ I added that and metadata comment to the specfile.

Comment 7 Michael Schwendt 2009-06-08 11:25:40 UTC
* Currently doesn't even build, because the %files section is unmaintained:

error: Installed (but unpackaged) file(s) found:
   /usr/include/FerrisLoki/Extensions.cpp
   /usr/include/FerrisLoki/OrderedStatic.cpp
   /usr/include/FerrisLoki/SafeFormat.cpp
   /usr/include/FerrisLoki/Singleton.cpp
   /usr/include/FerrisLoki/SmallObj.cpp
   /usr/include/FerrisLoki/SmartPtr.cpp
   /usr/include/FerrisLoki/StrongPtr.cpp
   /usr/lib/libferrisloki.a
   /usr/lib/libferrisloki.la

* It would be extremely helpful (not just during review) if you maintained the spec %changelog and increased the "Release" value with every update of your package. It's something you would need to do for future updates anyway, so early practice would be beneficial.

The latest package (from April 13th) is still ferrisloki-3.0.2-50021.src.rpm with only two changelog entries from 2001 and 2004. What exactly does the 50021 release value mean?

* Fedora's optflags are used, but duplicated, and an appended -O3 -DNDEBUG overrides them.
https://fedoraproject.org/wiki/Packaging:Guidelines#Compiler_flags

* https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRoot_tag

* https://fedoraproject.org/wiki/Packaging:Guidelines#Requiring_Base_Package

* https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries_2

* https://fedoraproject.org/wiki/Packaging:ReviewGuidelines

* https://fedoraproject.org/wiki/PackageMaintainers

Comment 8 Jason Tibbitts 2009-07-14 18:13:51 UTC
It's been over a month since the last comment with no response from the submitter; I'll close this soon if there's no further progress.

Comment 9 Ben Martin 2009-07-15 01:19:54 UTC
I have updated the sources and spec file, now available at
http://fuuko.libferris.com/fedora/
These are release xxx30. The high starting release number as just what I happened to be using as the base OBS spec number when I started. 

The forced -O3... cflagss should not happen now.

Comment 10 Mamoru TASAKA 2009-09-02 20:12:31 UTC
Some notes:

* Versioning
  - Well, I cannot understand why your spec file has excessively
    large release number and I don't think this large release
    number is needed.
    If this release number comes from some reasons unrelated to
    Fedora, please reset this.

  - Also, please consider to use %{?_dist} tag.
    https://fedoraproject.org/wiki/Packaging/DistTag

* Licensing
  - The license tag should simply be "GPLv2+".
    src/Extensions.cpp is under GPLv2+, libferrisloki.so uses
    .libs/Extensions.o, which renders libferrisloki.so to be under GPLv2+,
    so other license tag is useless.
--------------------------------------------------------------------
   192  libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -I. -I. -I.. -I.. -I/usr/include -I./../include/FerrisLoki -I/usr/local/include -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -MT Extensions.lo -MD -MP -MF .deps/Extensions.Tpo -c Extensions.cpp  -fPIC -DPIC -o .libs/Extensions.o
   213  libtool: link: g++ -shared -nostdlib /usr/lib/gcc/i686-redhat-linux/4.4.1/../../../crti.o /usr/lib/gcc/i686-redhat-linux/4.4.1/crtbeginS.o  .libs/Extensions.o .libs/OrderedStatic.o .libs/SafeFormat.o .libs/Singleton.o .libs/SmallObj.o .libs/SmartPtr.o .libs/StrongPtr.o   -lsigc-2.0 -L/usr/lib/gcc/i686-redhat-linux/4.4.1 -L/usr/lib/gcc/i686-redhat-linux/4.4.1/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/i686-redhat-linux/4.4.1/crtendS.o /usr/lib/gcc/i686-redhat-linux/4.4.1/../../../crtn.o  -m32 -march=i686 -mtune=atom -Wl,-O1 -Wl,--hash-style=both   -Wl,-soname -Wl,libferrisloki.so.3 -o .libs/libferrisloki.so.3.0.0
--------------------------------------------------------------------

* BuildRoot
  - BuildRoot currently used in your spec file is not valid
    on Fedora:
    https://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag

  ! Note
    On currently supported Fedora version (Fedora 10/11/12), you can
    simply BuildRoot line completely.

* URL
  - Perhaps http://witme.sourceforge.net/ is better?

* BuildRequires
  - BR: gcc-c++ is redundant:
    https://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2

* About %build
  - From build.log:
-------------------------------------------------------------------
    44  + ./configure --build=i386-redhat-linux-gnu --host=i386-redhat-linux-gnu --target=i686-redhat-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-sigcxx-2x=yes
    45  configure: WARNING: unrecognized options: --with-sigcxx-2x
-------------------------------------------------------------------
    is "--with-sigcxx-2x" needed?

  - tarball contains include/FerrisLoki/loki/, i.e. this package uses
    internal copy of loki, however on Fedora loki is already packaged:

    https://admin.fedoraproject.org/pkgdb/packages/name/loki-lib
    http://koji.fedoraproject.org/koji/packageinfo?packageID=4740

    This package (ferrisloki) should be patched to use system-wide loki-lib
    and include/FerrisLoki/loki/ should be removed at %prep.

* %files
   - Fedora strongly suggests not to include static archives (.a files)
     https://fedoraproject.org/wiki/Packaging/Guidelines#Packaging_Static_Libraries

   - The directory %{_includedir}/FerrisLoki itself is not owned by
     any packages:
     https://fedoraproject.org/wiki/Packaging/Guidelines#File_and_Directory_Ownership
     https://fedoraproject.org/wiki/Packaging/UnownedDirectories#Forgetting_to_Include_a_Toplevel_Directory


* pkgconfig file
  - ferrisloki.pc says (on i686, rawhide):
---------------------------------------------------
     6  Name: ferrisloki
     7  Description: Version of standard loki library with extensions.
     8  Version: 3.0.2
     9  Requires: 
    10  Libs: -L${libdir} -lferrisloki  -lsigc-2.0  
    11  Cflags: -I${includedir} -I${includedir}/FerrisLoki -I${includedir}/FerrisLoki/loki   -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include  
---------------------------------------------------

    This should be changed to:
---------------------------------------------------
Name: ferrisloki
Description: Version of standard loki library with extensions.
Version: 3.0.2
Requires: sigc++-2.0
Libs: -L${libdir} -lferrisloki
Cflags: -I${includedir}/FerrisLoki -I${includedir}/FerrisLoki/loki
---------------------------------------------------

* Requires (for -devel subpackage)
  - For example FerrisLoki/BoostExtensions.hh contains:
---------------------------------------------------
    53  #include <boost/config.hpp>
    54  #include <boost/mpl/integral_c.hpp>
    55  #include <boost/mpl/integral_c_tag.hpp>
---------------------------------------------------
    This package means that ferrisloki-devel should have "Requires: boost-devel".

* Requires between subpackages
  - Usually the dependency between packages rebuilt from the same srpm should
    have exact EVR (Epoch-Version-Release).
    i.e. ferrislock-devel should have "Requires: %{name} = %{version}-%{release}",
         not just "Requires: %{name} >= %{version}":
    https://fedoraproject.org/wiki/Packaging/Guidelines#Requiring_Base_Package

Comment 11 Michael Schwendt 2009-12-14 12:02:12 UTC
Once again, haven't had another look at the pkg since previously mentioned issues are still present and Mamoru has added a review.

Just about the licensing:

> * Licensing
>   - The license tag should simply be "GPLv2+".
>     src/Extensions.cpp is under GPLv2+, libferrisloki.so uses
>     .libs/Extensions.o, which renders libferrisloki.so to be under GPLv2+,
>     so other license tag is useless.

* Relicensing of source files to GPLv2+ is neither automatic nor implicit. It would be best to make the GPLv2+ licensing explicit in all source files where license conversion is possible. Even the copied LGPLv2+ m4 macros could be converted to GPLv2+ by following the instructions in the LGPL appendix. However:

* The BoostExtensions.hh file, which applies its own license, is included in the built rpms. Hence: http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#Multiple_Licensing_Scenarios

* About the several C++ source files with very short licensing terms or just copyright messages (e.g. LockingPtr.h), please don't take these issues lightly. 

See what is included in the built rpms. Some of the files (albeit from Loki lib) explicitly refer to "MIT" licensing. Several other files, used in ferrisloki (e.g. SmallObj.cpp) apply terms that look like

  https://fedoraproject.org/wiki/Licensing/MIT#Old_Style

instead, i.e. more than a "Copyright Only" header even if it doesn't mention "MIT" anywhere.

Simply ignoring such licensing issues in the Fedora package "License:" tag would be wrong. In particular, what I don't feel good about is this:

| provided that [...] both that copyright notice and this 
| permission notice appear in supporting documentation.

The 2nd example on the linked "Copyright Only" Fedora Licensing page wants copyright notices "to remain" in documentation. Vague enough already. These terms, however, can be read as requiring them to appear in supporting documentation. Compare with the MIT#Old_Style pointed at above. That is more than what the GPL requires. Those files could not be converted to GPL without the permission of the original authors, as the requirement where to put copyright notices and additional terms would be some sort of sublicensing, which would be illegal with the GPL.

Comment 12 Mamoru TASAKA 2009-12-14 13:11:19 UTC
(In reply to comment #11)
> Once again, haven't had another look at the pkg since previously mentioned
> issues are still present and Mamoru has added a review.
> 
> Just about the licensing:
> 
> > * Licensing
> >   - The license tag should simply be "GPLv2+".
> >     src/Extensions.cpp is under GPLv2+, libferrisloki.so uses
> >     .libs/Extensions.o, which renders libferrisloki.so to be under GPLv2+,
> >     so other license tag is useless.
> 
> * Relicensing of source files to GPLv2+ is neither automatic nor implicit. It
> would be best to make the GPLv2+ licensing explicit in all source files where
> license conversion is possible. 

- We always can it and there is no problem.

> Even the copied LGPLv2+ m4 macros could be
> converted to GPLv2+ by following the instructions in the LGPL appendix.
> However:
> 
> * The BoostExtensions.hh file, which applies its own license, is included in
> the built rpms. Hence:
> http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#Multiple_Licensing_Scenarios
> 
> * About the several C++ source files with very short licensing terms or just
> copyright messages (e.g. LockingPtr.h), please don't take these issues lightly. 
> See what is included in the built rpms. Some of the files (albeit from Loki
> lib) explicitly refer to "MIT" licensing. Several other files, used in
> ferrisloki (e.g. SmallObj.cpp) apply terms that look like
> 
>   https://fedoraproject.org/wiki/Licensing/MIT#Old_Style
> 
> instead, i.e. more than a "Copyright Only" header even if it doesn't mention
> "MIT" anywhere.

https://fedoraproject.org/wiki/Packaging/LicensingGuidelines#Multiple_Licensing_Scenarios

Quoted:
If your package contains files which are under multiple, distinct, and *independent* licenses, then the spec must reflect this by using "and" as a separator.

The relation between MIT and GPL is not independent.

> Simply ignoring such licensing issues in the Fedora package "License:" tag
> would be wrong. In particular, what I don't feel good about is this:
> 
> | provided that [...] both that copyright notice and this 
> | permission notice appear in supporting documentation.
> 
> The 2nd example on the linked "Copyright Only" Fedora Licensing page wants
> copyright notices "to remain" in documentation. Vague enough already.
 
https://fedoraproject.org/wiki/Licensing/MIT#Old_Style_with_legal_disclaimer
Quoted:

and that both that
copyright notice and this permission notice appear in supporting
documentation,

Comment 13 Michael Schwendt 2009-12-14 13:32:16 UTC
> We always can it and there is no problem.

We can always do what?


> https://fedoraproject.org/wiki/Licensing/MIT#Old_Style_with_legal_disclaimer

Such a legal disclaimer is not found in the files.
As I pointed out before:
https://fedoraproject.org/wiki/Licensing/MIT#Old_Style

Comment 14 Mamoru TASAKA 2009-12-14 15:15:05 UTC
(In reply to comment #13)
> Such a legal disclaimer is not found in the files.
> As I pointed out before:
> https://fedoraproject.org/wiki/Licensing/MIT#Old_Style  

If you insist that the license you quoted is not MIT, ask
spot.

Comment 15 Michael Schwendt 2009-12-14 17:53:44 UTC
I have no idea what you're talking about. To not answer my brief question doesn't help.

[...]

In comment 11, I've mentioned that _some_ of the source file headers in the build rpm explicitly give the licensing the name "MIT License",

  $ grep MIT *
  CachedFactory.h:// Code covered by the MIT License
  DataGenerators.h:// Code covered by the MIT License
  Factory.h:// Code covered by the MIT License
  Key.h:// Code covered by the MIT License
  SPCachedFactory.h:// Code covered by the MIT License
  StrongPtr.h:// The copyright on this file is protected under the terms of the MIT license.


while other files apply a nameless license as in:
https://fedoraproject.org/wiki/Licensing/MIT#Old_Style

Due to even different licenses applied to other files in the binary rpm, currently the following guideline applies:

  https://fedoraproject.org/wiki/Packaging/LicensingGuidelines#Multiple_Licensing_Scenarios

  ==> License: GPLv2+ and MIT and Boost

Compatibility with GPL is given by both MIT and Boost, but there is no automatic/implict conversion of the licensing of either The Program or individual files included in the binary rpms. Further, MIT#Old_Style does not explicitly permit sublicensing. And with that we're back at older comments in this ticket.

Comment 16 Jason Tibbitts 2010-11-02 00:55:53 UTC
There were several constructive comments made before the licensing discussion broke out, and it's been well over a year with no response from the submitter, so I'm just going to go ahead and close this.


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