[Libosinfo] [libosinfo PATCH 0/7] Drop GVFS dependency in favour of libsoup

Fabiano Fidêncio fidencio at redhat.com
Tue Jul 2 19:38:59 UTC 2019


On Tue, Jul 2, 2019 at 9:29 PM Cole Robinson <crobinso at redhat.com> wrote:
>
> On 7/2/19 2:07 PM, Fabiano Fidêncio wrote:
> > On Tue, Jul 2, 2019 at 1:51 AM Cole Robinson <crobinso at redhat.com> wrote:
> >>
> >> On 6/27/19 8:56 AM, Fabiano Fidêncio wrote:
> >>> Let's rely on libsoup in order to to http://, https://, and ftp://
> >>> requests.
> >>>
> >>> By doing this, GVFS (more specifically, gvfs-http) won't be dragged as
> >>> a dependency, which caused errors for apps running as root (as GVFS
> >>> relies on being run in the user's session).
> >>>
> >>> https://gitlab.com/libosinfo/libosinfo/issues/30
> >>>
> >>> Fabiano Fidêncio (7):
> >>>   media: Fix indentation in create_from_location_asunc_data_free()
> >>>   tree: Remove not used Tree from _CreateFromLocationAsyncData struct
> >>>   media: Improve on_location_read error message readability
> >>>   media: Use GInpuStream directly in on_location_read()
> >>>   media: Use libsoup for http://, https://, and ftp:// requests
> >>>   tree: Use libsoup for http://, https://, and ftp:// requests
> >>>   spec: Drop gvfs dependency
> >>>
> >>>  configure.ac          |   5 +-
> >>>  libosinfo.spec.in     |   2 +-
> >>>  osinfo/Makefile.am    |   5 +-
> >>>  osinfo/libosinfo.syms |   2 +
> >>>  osinfo/osinfo_media.c |  86 ++++++++++++++++++++++++---------
> >>>  osinfo/osinfo_tree.c  | 108 +++++++++++++++++++++++++++++-------------
> >>>  osinfo/osinfo_tree.h  |  11 +++++
> >>>  7 files changed, 159 insertions(+), 60 deletions(-)
> >>>
> >>
> >> Does libsoup actually handle FTP?
> >
> > Theoretically, yes:
> > https://gitlab.gnome.org/GNOME/libsoup/blob/master/libsoup/soup-uri.h#L35
> >
>
> I just grepped through the sources and git log, I don't see any evidence
> that it supports actual use of the ftp protocol, unless it's using some
> extra library for that. There's mention of http-aliases which seems to
> indicate that libsoup can be taught to treat ftp:// URLs as just an
> alias for http://, and the git log seems to suggest that was the
> historical default.
>
> >> Googling doesn't turn up any obvious
> >> hits. That said I don't know if GVFS handles it either.
> >
> > It also should, through gvfs-ftp, which seems to just use GSocket
> > under the hood.
> > >> With the
> >> virt-manager test suite and libosinfo git master, I see:
> >>
> >> $ ./setup.py test_urls --debug --force-libosinfo --only fedora-ftp
> >> ...
> >> DEBUG    Error creating libosinfo tree object for
> >> location=ftp://ftp.tu-chemnitz.de/pub/linux/fedora/linux/releases/30/Server/x86_64/os/
> >> : g-io-error-quark: Failed to load .treeinfo|treeinfo file: The
> >> specified location is not mounted (16)
> >> ...
> >>
> >> So it doesn't seem to work anyway. But with your patch series it hangs
> >> until it hits a two minute socket timeout. Which makes me wonder if
> >> libsoup is trying to talk http to an ftp URL.
> >
> > May be the case and may be a bug in libsoup.
> >
> >>
> >> FWIW I don't think that should be an argument for keeping a gvfs
> >> dependency. It's getting hard to even find public ftp mirrors these days
> >
> > Indeed.
> > I'm wondering about the check to do. Hardcoding "https://", "http://"
> > seems quite bad.
>
> FWIW that's what we've done in virt-install for years and it's never
> really been a problem.
>
>  Maybe I should just create the file and then check
> > for g_file_is_native() as done in osinfo-db-tools?
>
> I'd need to study up on this approach more to give an opinion. I think
> the important thing is to try and limit accidental access to gvfs,
> unless it's for an explicit case we really don't care much about like ftp://


Based on this and on the answer above, I'll just have the harcoded
check for "http://" and "https://" and be happy about this.
I'll change the docs to mention explicitly that we support local,
http://, and https:// files and submit a v2.

Thanks a lot for the input!

>
> - Cole




More information about the Libosinfo mailing list