On Fri, Oct 9, 2015 at 9:32 PM, Kevin Kofler <kevin.kof...@chello.at> wrote:

> Neal Gompa wrote:
> > ​At this point in time, Fedora is the only major distribution I know of
> > that doesn't use versioned shared library package names. Both SUSE and
> > Mageia do, and of course the Debian/Ubuntu family does. I've spoken to
> > folks working in both SUSE and Mageia (especially Mageia as of late), and
> > I've heard that there's a particular eagerness to find a way to have RPM
> > generate these versioned library names for packages.
>
> Debian has to use it because dpkg does not support soname dependencies. But
> for RPM-based distributions, it just does not make sense. The only thing it
> allows (that the soname AutoProvides and AutoRequires don't already handle)
> is to attempt to parallel-install libraries for which this is NOT
> supported,
> which is a recipe for:
> 1. security issues, because you are using an obsolete unmaintained library
>    version without realizing it (because nothing will replace your libfoo1
>    if the current version of your distribution ships libfoo2 instead), and
> 2. file conflicts, because nobody tested parallel installation of the 2
>    versions.
>
> IMHO, shipping a compatibility library needs to be a concious decision by a
> maintainer. A naming scheme that allows abusing old unmaintained packages
> as
> compatibility packages is a recipe for a disaster.
>
> > Mageia itself has a macro that generates these names, and packagers
> merely
> > have to utilize them to get the appropriate name generation. Part of that
> > is because of the quirks of urpmi and supporting multilib, but I don't
> see
> > why we couldn't work with the other two distros to develop a standardized
> > soname suffix generator that could simply be activated as a flag on a
> > subpackage.
>
> The Mageia soversion macros are a horrible overengineered mess that leads
> to
> unreadable and overcomplicated spec files. Please do NOT pollute Fedora
> packages with such completely unnecessary macros.
>
> I also think our naming scheme for libraries makes a lot more sense:
> 1. The default version of the library typically has NO version suffix.
> Thus:
>    1.1. It is obvious to users which version is the default.
>    1.2. The package names for the default version are simpler.
>

​That's a fair point.


> 2. Compatibility libraries are normally named after the user-visible
>    version, NOT the soversion. E.g., if we ship libfoo 0.10 as a
>    compatibility library, we ship it as libfoo010, not something like
>    libfoo7. Soversion-based naming is particularly misleading for kdelibs,
>    where kdelibs 3 has the soversion 4 and kdelibs 4 has the soversion 5.
>    (The new KDE Frameworks 5 now typically also have 5 as their soversion,
>    the libraries have new names (libKF5*.so) so they don't conflict. But as
>    long as older kdelibs still exist, that just adds to the confusion.) Our
>    kdelibs 3 package is called kdelibs3, not kdelibs4, which would be
>    extremely misleading. Debian used kdelibs4c2a for kdelibs 3 and kdelibs5
>    for kdelibs 4! (The "c2a" is another unreadable mess because they
> decided
>    to encode the C++ ABI in the package name. We just did a mass rebuild on
>    a flag day and were done with it.)
>

​Then it sounds like it would make more sense to have a mechanism to
automatically add the user-visible version number rather than the soname.
Though, I don't quite understand what the purpose for sonames are in the
first place, if they aren't really designed for supporting parallel
installable stuff...



> 3. There is also no requirement that library package names start with
>    "lib*". This should also stay that way. E.g., upstream thinks of glib as
>    glib, not libglib (a particularly silly name, by the way). So we should
>    not unnecessarily munge the name.
>
>
​I don't want to have to unnecessarily munge the name either. For a similar
reason, I don't like the lib/lib64 prefix naming they have to do in order
to work around weaknesses in some of their tooling.​



> > ​IMO, it would be very nice if we could come together and hash out a
> > standardized approach to things. We've done it with %autosetup,
> > %autopatch, %make_build / %make_install, and a number of other things in
> > RPM, I don't see why we can't for this too.
>
> %autosetup is an inflexible nonsense that just does not work in many setups
> (no control over the application order of the patches, no control over the
> switches passed to patch, no way to conditionally apply patches, etc.), and
> also does not help specfile readability. I refuse to use %autosetup in my
> packages and will yell at anybody that dares changing one of my packages to
> use it (and revert the commit).
>
>
​As far as I can tell, %autosetup patch application order is controlled by
your PatchN declarations. I've not seen a circumstance where it works
differently. But that's besides the point. The point I was trying to make
is that we should move towards implementing more standardized mechanisms.​
The other criticisms are fair, but I think %autosetup comes in handy when
you have lots and lots of patches, and you really don't need the
conditional application.



>         Kevin Kofler
>
>



-- 
真実はいつも一つ!/ Always, there's only one truth!
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Reply via email to