On Fri, Jan 17, 2014 at 10:28 AM, Colin Guthrie <gm...@colin.guthr.ie> wrote:
> As far as I understand things, the goal is to be API compatible in terms
> of function calls, but change the name of the pc files which is an API
> break. Is this a correct summary? (if not then some of my comments below
> don't work :D)
>
> 'Twas brillig, and Kay Sievers at 17/01/14 08:18 did gyre and gimble:
>> On Fri, Jan 17, 2014 at 4:06 AM, Zbigniew Jędrzejewski-Szmek
>> <zbys...@in.waw.pl> wrote:
>>
>>> So there's "binary" compatibility, and "source" compatibility.
>>> It would be nice if we could do those changes without
>>>
>>> a) requiring recompilation ("binary")
>>> b) requiring editing build scripts in dependent packages ("source").
>>>
>>> For b, keeping around a .pc file which points to the *new* library
>>> name should be enough:
>>>
>>> - Libs: -L${libdir} -lsystemd-login
>>> + Libs: -L${libdir} -lsystemd
>>>
>>> On our side it's a tiny effort, and avoid a major PITA for distributions.
>>
>> No, it will clash with the files from the old lib package. We should
>> not do that, if we no longer provide the same lib.
>
> I guess Fedora do things differently, but we ship pc files in the -devel
> package, so there would be no clashes with the old lib package for us...
> This would be very useful.

The header will not change, the new lib will install them too. So your
old -devel package cannot be installed in parallel.

>>> For a, a compatibility symlink (e.g. libsystemd-login.so.0 -> 
>>> libsystemd.so.0)
>>> can be provided. I'm attaching a POC patch which moves the symbol exports
>>> so that programs compiled against libsystemd-login will continue working.
>>> The symlink is not created, this part must be done by hand.
>>>
>>> I think that if we ever decide to futher merge libraries, those
>>> would be the steps to take.
>>
>> Same here, it creates clashes with the old files and is not strictly
>> what it pretends to be with the symlink name.
>
> If said symlink is binary compatible, you could just ship an updated
> version of that package. Sure it's a bit of a lie in that it's not a
> real lib but I'd be OK with that personally (esp as it has to be done by
> hand). If not then a stub lib rather than symlink wouldn't be lying so
> is still OK as a plan if compatibility is desirable.

No, it's not ok to rely on such magic. The SONAME is not the same, and
such hacks do not belong there.

>>>> Could we not provide a libsystemd-daemon.so.0 that is just a stub and
>>>> links to libsystemd.so.X and just calls the functions therein? That way
>>>> the API could still be provided with the old lib (and old .pc files too)
>>>> until such times as everything is updated. I would presume the name
>>>> mangling would allow for this to work OK with some clever tricks here
>>>> and there... (correctly me if I'm wrong)
>>> Yes, I think that's the way to go.
>>>
>>>> This would surely be the nicest way to handle things during any
>>>> transition phase and could be turned off with a configure switch?
>>
>> What are we trying to solve here? This is the job of the distro, it is
>> what it is there for. The distro either leaves the old lib around as
>> long as needed, or it re-compiles the users to use the new one.
>>
>> Please do not mix code (upstream) and system composition
>> (distribution) too much here. It's all really the same model as an
>> SONAME bump, something that happens every day.
>
> Well you're also forcing "code" work onto "system composition" people as
> they actively need patch things when we could provide an easy mechanism
> for them to avoid this. This is different to an SONAME bump which
> generally doesn't change the name of the .pc file and will often be fine
> with a rebuild without any code modification.
>
> As a disro maintainer, I'd be happy enough to ship a new systemd then
> rebuild needed packages accordingly. What I'd be less happy about is the
> API change that means my configure scripts don't work any longer and I
> have to push patches into the consumer packages. There is no real need
> for compat libs here, just compat .pc files. So from a distro
> perspective I'd be happy with just that.

It's just one "echo" and you have that file if you need it.

> Perhaps you'd argue that such compat .pc files should just be shipped in
> the distro's systemd package and not upstream? What I'm a little
> confused about is that RHEL is going to be shipping systemd 207 or 208
> and these "old" .pc names will be kinda embedded for quite some time.
> Therefore consumer upstreams will be under pressure to keep the old
> names in their configure scripts for a good number of years. If we
> change them then we're forcing them to do an if/else structure in their
> configures to check for both which is a little nasty. Surely shipping
> compat .pc files just makes life easier for all concerned until there is
> the need for a "real" API break?
>
>
> Forgive me if I've misunderstood some other details of the change.

We should just keep the libs as they are for a release, but provide
the functionality in the new lib under its correct name, and post
stuff over. After that's done we should see what's actually left to
cover, I doubt there is much. There is no need to solve that problem
at this very moment, we can just ship the old stuff for a short while.

This year will bring huge flag day compat breaks. We will drop all old
D-Bus support, we will require on a bleeding edge kernel, and so on.

I think mangling around a pc file name is absolutely nothing compared
what the next months will bring us. It's just not worth when you look
at the big picture what will happen soon.

Kay
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to