pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Package naming when no backward compatibility at all?



On 10/19, Greg Troxel wrote:
> The rule is to increase PKGREVISION of all depending packages if (and
> only if) there *is* an ABI break.   Sometimes that is "there seems like
> there might, so err on the side of caution", which leads to unnecessary
> rebuilds.
> 
> An ABI break can be any of:
>   - symbol withdrawn in a shlib
>   - calling args changed in a function in a shlib
>   - behavior changed for any function, other than bug fixes
>   - any program/script which could reasonably be used by another program
>     changing behavior (in a non-bugfix way)
> 
> Whether or not ABI changes happen in various kinds of releases is an
> upstream ASE issue, and is not relevant to the revbump process.
 
OK, I think the difficulty is that upstream does not make this clear,
and it's not always easy to tell.  I was leaning toward doing a
preemptive revbump since I know upstream's policy, but it sounds like
you think that's not a good idea.  You think that I should assume that
there's no API/ABI break, and I should only do a revbump if I know there
has been a break.  Am I understanding correctly?

> > In package foo's buildlink3.mk file, I think I'd use "=" for the
> > BUILDLINK_A{P,B}I_DEPENDS.foo assignment, not "+=", and set an exact
> > match for the dependency, not a package wild card.  For example, I think
> > I'd want to use
> >
> >   BUILDLINK_API_DEPENDS.foo=     foo-7.0.9
> >   BUILDLINK_ABI_DEPENDS.foo=     foo-7.0.9
> >
> > not
> >
> >   BUILDLINK_API_DEPENDS.foo+=    foo>=7.0.9
> >   BUILDLINK_ABI_DEPENDS.foo+=    foo>=7.0.9
> >
> > This way, I'd catch at build time any API changes, and I think this
> > would make a binary package upgrade work too.
> 
> This is contrary to pkgsrc norms.

OK, then if you think it would be better to assume no API/ABI break, and
only change the API/ABI depends when I know there's a break, I could do
it that way.  My biggest concern, though, is that I probably won't know
if there's a break because I won't be able to test all of it.  So, that
makes me nervous that the packages will be broken more often than not.
If I were to do the revbump and change the API/ABI depends for every
release, I was thinking that I would have a better chance of inverting
that so that the packages would likely be working more often than not.
 
> You haven't yet explained whether *every single* release from this
> upstream has an ABI break, or what fraction of them.

Probably not every single release, but it could be.  I didn't explain
what fraction have an API/ABI break because I don't know, and I don't
think upstream knows either.

> (You haven't named it either, so nobody else could look.)

I think it would not be easy to find out, so I didn't think it would be
useful to name it.  But anyway, it's EPICS and the various modules and
extensions for it:

* https://epics-controls.org/
* https://epics.anl.gov/

Here's a link into a related mailing list thread (which also points to
another thread) on upstream's backward compatibility stance:

* https://epics.anl.gov/core-talk/2021/msg00523.php

Thanks,

Lewis


Home | Main Index | Thread Index | Old Index