Bug 1220037

Summary: distrobox package should require/recommend flatpak (without it distrobox-host-exec doesn't work)
Product: [openSUSE] openSUSE Tumbleweed Reporter: Miller <charlesmillerspam>
Component: BasesystemAssignee: Dario Faggioli <dfaggioli>
Status: NEW --- QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: charlesmillerspam, dfaggioli
Version: Current   
Target Milestone: ---   
Hardware: x86-64   
OS: openSUSE Tumbleweed   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Miller 2024-02-18 12:00:52 UTC
User-Agent:       Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
Build Identifier: 

One discussion can be seen here:
https://github.com/89luca89/distrobox/issues/1198

Installing OpenSusse MicroOS, then installing distrobox, the flatpak-helper dbus service is not a dependency of distrobox, nor is it recommended. As a result, the distrobox-host-exec, based on host-spawn, doesn't work, and also doesn't provide an error message.

distrobox-host-exec is an important feature of distrobox, so it should either depend on or recommend having flatpak-helper.

Reproducible: Always

Steps to Reproduce:
1.Install MicroOS
2. transactional-update pkg in distrobox; reboot
3. distrobox create -n test
4. distrobox-enter test
5. distrobox-host-exec ls /
6. Notice there is no result.
7. transactional-update pkg in flatpak; reboot
8. distrobox-enter test
9. distrobox-host-exec ls /
10. Now we see the result.

Actual Results:  
distrobox-host-exec doesn't work unless manually installing flatpak.

Expected Results:  
After installing distrobox, I expect the needed dependencies for all features like distrobox-host-exec to work will be installed.

I think it's quite simple to adjust the dependencies.
Comment 1 Dario Faggioli 2024-02-22 17:32:06 UTC
(In reply to Miller from comment #0)
> User-Agent:       Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
> Build Identifier: 
> 
> One discussion can be seen here:
> https://github.com/89luca89/distrobox/issues/1198
> 
> Installing OpenSusse MicroOS, then installing distrobox, the flatpak-helper
> dbus service is not a dependency of distrobox, nor is it recommended. As a
> result, the distrobox-host-exec, based on host-spawn, doesn't work, and also
> doesn't provide an error message.
> 
> distrobox-host-exec is an important feature of distrobox, so it should
> either depend on or recommend having flatpak-helper.
> 
> Reproducible: Always
> 
> Steps to Reproduce:
> 1.Install MicroOS
> 2. transactional-update pkg in distrobox; reboot
> 3. distrobox create -n test
> 4. distrobox-enter test
> 5. distrobox-host-exec ls /
> 6. Notice there is no result.
> 7. transactional-update pkg in flatpak; reboot
> 8. distrobox-enter test
> 9. distrobox-host-exec ls /
> 10. Now we see the result.
> 
> Actual Results:  
> distrobox-host-exec doesn't work unless manually installing flatpak.
> 
> Expected Results:  
> After installing distrobox, I expect the needed dependencies for all
> features like distrobox-host-exec to work will be installed.
> 
> I think it's quite simple to adjust the dependencies.
>
Yeah, but distrobox should be able to deal with this, via host-spawn:

https://github.com/1player/host-spawn

Which is, in fact, downloaded synamically by distrobox-host-exec-itself.

However, I just tried and, it indeed does not work:

> tumbleweed:~ # bash -x /usr/bin/distrobox-host-exec ls /
> + host_command=
> + non_interactive=0
> + '[' '!' -t 1 ']'
> + tty
> + distrobox_host_exec_default_command=/usr/bin/bash
> + host_spawn_version=1.5.0
> + download_command=
> + sudo_command=
> + verbose=0
> + version=1.6.0.1
> ++ basename /usr/bin/distrobox-host-exec
> + '[' distrobox-host-exec '!=' distrobox-host-exec ']'
> + '[' -z '' ']'
> + :
> + case $1 in
> + '[' -n ls ']'
> + host_command=ls
> + shift
> + break
> + set -o errexit
> + set -o nounset
> + '[' 0 -ne 0 ']'
> + '[' '!' -f /run/.containerenv ']'
> + '[' -z ls ']'
> ++ id -ru
> + '[' 0 -ne 0 ']'
> + command -v curl
> + download_command='curl -sLo'
> + command -v host-spawn
> ++ sort -V
> ++ head -n 1
> +++ host-spawn --version
> ++ printf '%s\n%s\n' 1.5.0 1.5.0
> + '[' 1.5.0 '!=' 1.5.0 ']'
> + XDG_RUNTIME_DIR=/run/host//run/user/0
> ++ echo unix:path=/run/user/0/bus
> ++ cut -d = -f2-
> + DBUS_SESSION_BUS_ADDRESS=unix:path=/run/host//run/user/0/bus
> ++ basename ls
> + '[' ls = xdg-open ']'
> ++ basename ls
> + '[' ls = gio ']'
> + '[' '!' -t 1 ']'
> + tty
> + host-spawn ls /

So host spawn is invoked... But it does not work:

> tumbleweed:~ # which host-spawn 
> /usr/bin/host-spawn
> tumbleweed:~ # file /usr/bin/host-spawn 
> /usr/bin/host-spawn: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=mAXS1lQZ5THMhy4Omaf6/LkObaearV4_gMPp5n3CC/KK9QiNsRkSnVLJjhLkdy/gM9apm8tq> kE-IDLej4Yn, with debug_info, not stripped
> tumbleweed:~ # host-spawn ls /
> tumbleweed:~ # host-spawn
Comment 2 Dario Faggioli 2024-02-22 17:33:36 UTC
More info:

> tumbleweed:~ # host-spawn ls /
> tumbleweed:~ # echo $?
> 127

And I have a strace too, that I can upload.
Comment 3 Dario Faggioli 2024-02-22 17:35:39 UTC
I think the best way forward, here, is to open an issue in either distrobox or host-spawn GH pages.

Miller, can you do that?
Comment 4 Miller 2024-02-22 17:37:34 UTC
When I opened an issue with distrobox, the response was "host-spawn and by proxy, distrobox-host-exec, depend on host's having flatpak-helper dbus service to work"

Flatpak is not a dependency of distrobox in OpenSuse, so we have the problem. If we install flatpak, it works fine.
Comment 5 Dario Faggioli 2024-02-22 17:40:57 UTC
Ah, ok, and there was even a link to the discussion... Sorry for overlooking it.

Well, I guess we do need to add that dependency, after all. I'll do that