[Dev] [RFC] blacklist/your-freedom conflicts/replaces stragegy

Luke Shumaker lukeshu at lukeshu.com
Sun Sep 17 15:34:04 GMT 2017

On Sun, 17 Sep 2017 05:00:03 -0400,
bill-auger wrote:
> Luke Shumaker wrote :
> > the conflict should be
> > happening with your-freedom->firefox, not iceweasel->firefox.
> that seems completely reasonable - i quite imagined that this was how it
> worked already and am surprised to learn that it was not implemented
> that way from the beginning - it seems obvious from a design standpoint
> that the blacklist package should conflict with everything under it's
> concern and not to merely 'provides" anything - while the replacement
> dependencies themselves may or may not conflict with anything

So that's the "obvious" thing, but it doesn't work in many cases with
replacements because conflicts also apply to provides.  If
your-freedom conflicts=(paxd), and paxd-libre provides=(paxd), then
your-freedom also conflicts with paxd-libre!

> for clarity, this is the intended semantics of these package
> relationships according to archwiki:
> * any number of packages that 'provides' some feature can co-exist on
> the same system
> * packages in which either of them 'conflicts' are mutually exclusive
> * 'replaces' is for obsolete packages that this package replaces - the
> main reason to use 'replaces' is when the package should be
> automatically removed during a normal -S sync and replaced automatically
> with the NEW package that is said to replace it - 'provides' and
> 'conflicts' are only meaningful when specifically installing the new
> package - so it seems that 'replaces' does not fit the blacklist use
> case in any way

Surely it does!  We support users upgrading their existing Arch
installations to Parabola.  In that light, iceweasel surely does
replace=(firefox), and linux-libre surely does replace=(linux)!

> note that this seems to be assuming that a package will only ever
> 'provides', 'conflicts', or 'replaces' one single other package - what
> if for example, packages 'foo' and 'bar' both provide 'foo' and then a
> parabola replacement would need to conflict with both of them - would
> the current system allow for that?

As I said above, if conflicts=(foo) would conflict with bar if bar

Happy hacking,
~ Luke Shumaker

More information about the Dev mailing list