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

Isaac David isacdaavid at isacdaavid.info
Sat Sep 16 18:40:03 GMT 2017


Luke Shumaker wrote :
> If a user wants to
> install firefox and iceweasel side-by-side, the conflict should be
> happening with your-freedom->firefox, not iceweasel->firefox.  Another
> example is if a user wants to install linux and linux-libre
> side-by-side.
> 
> What we need is a way of specifying in blacklist.txt whether
> parabola-replacement provides=/conflicts=(arch-package)

agreed 100%

> So, the remaining question is: What should the syntax in blacklist.txt
> look like

obviously it would have an extra field (i'm calling it CONFLICT) that
allows for only 2 options. their meanings could be specified in a
number of equivalent ways, so i'm not deeply worried about those.

syntax-wise though, because CONFLICT is _necessary_ only in the
context of libre-replacement, it's easy to imagine something like the
following:

1.

        
original-package:[libre-replacement:CONFLICT]:[ref]:[id]:short-description

    however the variable-length format could complicate things too
    much for programs parsing blacklist.txt, such as libreblacklist.

2. this could be avoided by explicitly distinguishing
   [libre-replacement<SEPARATOR>CONFLICT] from top-level fields:

        
original-package:[libre-replacement+CONFLICT]:[ref]:[id]:short-description

3. finally, we can always keep CONFLICT and libre-replacement each on
   its own top-level field...

        
original-package:[libre-replacement]:[CONFLICT]:[ref]:[id]:short-description

   ...and be prepared to deal with errors like:

        flashplugin::ALREADY_CONFLICTED:::nonfree package with no 
replacement

> and [what] programs will need updated to deal with it?

libreblacklist is the elephant in the room. ideally all other programs
would restrict themselves to this interface. your-freedom & co. still
_need_ to parse blacklist.txt directly nonetheless:

    conflicts=($(
        < blacklist-${_gitver}.txt \
        libreblacklist normalize |
        cut -d: -f1,2 |
        sed -n 's/:$//p' |
        sort -u
    ))

i can't think of any other after you changed dbscripts to use
libreblacklist.

by the way, libreblacklist should be advertised more prominently on
the wiki to average users. it's much more elegant and discoverable
than blacklist.git. also, would you accept a patch to add a
get-ref/get-url function? have you noticed that get-reason doesn't
quite do what it says?:

    $ libreblacklist |& grep get-reason
    get-reason    Prints only the reason field of the blacklist line(s)

    $ libreblacklist cat | libreblacklist get-reason | tail -n 1
    parabola:1457:[semifree] recommends unfree projects from same author

-- 
Isaac David
GPG: 38D33EF29A7691134357648733466E12EC7BA943
Tox: 
0C730E0156E96E6193A1445D413557FF5F277BA969A4EA20AC9352889D3B390E77651E816F0C




More information about the Dev mailing list