[Pulp-dev] To integrate Fus or not to....
Jeff Ortel
jortel at redhat.com
Fri Oct 12 17:11:28 UTC 2018
On 10/12/2018 11:37 AM, Milan Kovacik wrote:
>
>
> On Fri, Oct 12, 2018 at 5:17 PM Jeff Ortel <jortel at redhat.com
> <mailto:jortel at redhat.com>> wrote:
>
>
>
> On 10/12/2018 09:53 AM, Milan Kovacik wrote:
>>
>>
>> On Fri, Oct 12, 2018 at 3:59 PM Jeff Ortel <jortel at redhat.com
>> <mailto:jortel at redhat.com>> wrote:
>>
>>
>>
>> On 10/10/2018 08:59 AM, Milan Kovacik wrote:
>>> ...that might be the question we should ask ourselves once
>>> again when it comes to recursive copying of units between
>>> repositories.
>>>
>>> I'd like to poll folks opinions about the possibilities that
>>> we may have when it comes to integrating third party solvers
>>> in Pulp. My yesterday's chat with the #fedora-modularity
>>> folks about us integrating the Fus[1] solver in order to
>>> reuse the Fus algorithm ran into a couple of bumps:
>>>
>>> * it would be laborous to create a programmatic Python API
>>> between Fus and Pulp because we can't directly use the
>>> libsolv thingies (pools, solvables and friends) in such an
>>> API because Fus is written utilizing GObject, which is
>>> incompatible with Swig, which in turn is used in libsolv to
>>> expose the python bindings. One would have to either re-wrap
>>> libsolv code in Fus to work with pygobject or submit PRs
>>> against libsolv to support GObject introspection. I dunno
>>> the details of either approach (yet) but from the sad faces
>>> on the IRC and the Fus PR[1] it seemed like a lot of work
>>> but it's still an option
>>>
>>> * we still should be able to integrate thru a pipe into Fus,
>>> that would make it possible to dump modular and ursine
>>> metadata into Fus to perform the dependency solving in a
>>> separate subprocess. We should probably re-check the reasons
>>> behind our previous decision not to do the same with DNF[2].
>>
>> How is Integration with Fus via pipe (CLI) easier than with
>> gobject? Either way, you "can't directly use the libsolv
>> thingies (pools, solvables and friends)". Right? What am I
>> missing?
>>
>>
>> Right, a publish-like operation would be required every time, for
>> all repositories involved in the copy to dump the metadata to the
>> pipe(s); sample of this interface is can be found in Pungi:
>> https://pagure.io/pungi/blob/master/f/pungi/wrappers/fus.py the
>> "query" is passed thru command line.
>> I just learnt Fedora will keep modules and their ursine deps in
>> separate repos, so the source repo won't necessarily be closed on
>> dependencies thus multiple source repos would be needed.
>
> This be done using the Fus gobject interface as well?
>
>
> we'd just dump the XML (and YAML) metadata and run: fus --repo
> source1,1,/path/to/pipe1 --repo source2,2,/path/to/pipe2 --repo
> target,system,/path/to/target_pipe "module(walrus)" "penguin:1-2.3" etc
> then parse the textual output of fus such as:
Can't this ^ be done with Fus through gobject as well and instead of
parsing textual output, inspect the objects returned?
>
> # ---%>---------
> - nothing provides policycoreutils-python-utils needed by
> container-selinux-2:2.69-3.git452b90d.module_2040+0e96cf1b.noarch
> Problem 1 / 1:
> - conflicting requests
> - nothing provides libpthread.so.0(GLIBC_2.2.5)(64bit) needed by
> atomic-1.22.1-2.module_1637+1872e86a.x86_64
> - nothing provides libc.so.6(GLIBC_2.2.5)(64bit) needed by
> atomic-1.22.1-2.module_1637+1872e86a.x86_64
> - nothing provides libpthread.so.0(GLIBC_2.3.2)(64bit) needed by
> atomic-1.22.1-2.module_1637+1872e86a.x86_64
> - nothing provides /bin/bash needed by
> atomic-1.22.1-2.module_1637+1872e86a.x86_64
> - nothing provides /usr/bin/python3 needed by
> atomic-1.22.1-2.module_1637+1872e86a.x86_64
> - nothing provides python3-dateutil needed by
> atomic-1.22.1-2.module_1637+1872e86a.x86_64
> - nothing provides dbus needed by
> atomic-1.22.1-2.module_1637+1872e86a.x86_64
> # ---->%----------
> (fus:8524): fus-WARNING **: 15:13:09.350: Can't resolve all solvables
> module:docker:2017.0:20180816194539:3ff668f0.x86_64 at f29
> module:container-tools:2017.0:20180816194450:80bd9113.x86_64 at f29
> *docker-devel-2:1.13.1-61.git9cb56fd.module_2109+7c83ead1.noarch at f29
> *containers-common-0.1.31-14.dev.gitb0b750d.module_2040+0e96cf1b.x86_64 at f29
>
>
>
>>>
>>> * we should be able to extend current libsolv solver in
>>> Pulp, reimplementing the algorithm from Fus. This might be
>>> as laborous as the first option. It would probably give us
>>> more flexibility as well as more room for screwing things up
>>> but the responsibility would be ours alone.
>>>
>>> Please let me know what option seems more appealing to you;
>>> other option suggestion are welcome too.
>>>
>>> Cheers,
>>> milan
>>>
>>> [1] https://github.com/fedora-modularity/fus/pull/46
>>> [2] https://pulp.plan.io/issues/3528#note-7
>>>
>>>
>>> _______________________________________________
>>> Pulp-dev mailing list
>>> Pulp-dev at redhat.com <mailto:Pulp-dev at redhat.com>
>>> https://www.redhat.com/mailman/listinfo/pulp-dev
>>
>> _______________________________________________
>> Pulp-dev mailing list
>> Pulp-dev at redhat.com <mailto:Pulp-dev at redhat.com>
>> https://www.redhat.com/mailman/listinfo/pulp-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/pulp-dev/attachments/20181012/3045b1ac/attachment.htm>
More information about the Pulp-dev
mailing list