NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.5k stars 13.68k forks source link

insync-v3 server doesn't seem to start #139728

Closed mightyiam closed 1 year ago

mightyiam commented 2 years ago

Issue description

insync-v3 server doesn't seem to start.

Steps to reproduce

$ nix-shell -p insync-v3
$ insync start

See that there is no insync process running.

Technical details

Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.

 - system: `"x86_64-linux"`
 - host os: `Linux 5.10.68, NixOS, 21.11 (Porcupine)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.3.15`
 - channels(mightyiam): `""`
 - channels(root): `"nixos-21.11pre318500.51bcdc4cdaa"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

@benley

dereklhansen commented 2 years ago

I believe this is caused by the Insync binaries expecting specific versions of some system libraries like glib. A similar problem has been reported on the Insync forums by a few Gentoo users. See https://forums.insynchq.com/t/segmentation-fault-core-dumped/16445 and https://forums.insynchq.com/t/segfault-libpython3-7m-so-1-0/16999. Since Insync releases are pegged to Ubuntu/Debian/Fedora releases, I'm not sure there's a good fix for this.

Fortunately, I was able to get insync v3 working in a nix-shell environment that is pinned to an earlier commit of nixpkgs (b49473e6679c733f917254b786bfac42339875eb). I uploaded a reproducible flake here: https://gist.github.com/dereklhansen/c293fed56dd5d3a201effa16d03dc687. The system icon shows up as a red circle, and native Wayland support doesn't work, but it seems fully functional other than that.

dereklhansen commented 2 years ago

Using nixpkgs pinned at b49473e6679c733f917254b786bfac42339875eb, I've been able to successfully run insync version 3.3.5.40925 (the version currently in nixpkgs) and version 3.6.1.50206 (latest available version).

This suggests that there was an update elsewhere in nixpkgs that wasn't backwards-compatible with insync. Pinning nixpkgs works for now, but it's not a long-term fix. Maybe we can try to identify which libraries need to be pinned and explicitly pin those? Or maybe use binaries targeting a distribution which is more up-to-date?

VanCoding commented 2 years ago

I've noticed this as well a while ago, and even figured out what the issue was, but was too lazy to report it until now. Sorry about that.

When you run insync start --no-daemon it should tell you why it can't start. In my case it had some issues harfbuzz, which most likely comes from the upgrate to version 3 here.

Harfbuzz removed some functions that were not officially documented, but are used by qt webview, which is why it fails. I think this is going to be fixed automatically at some point with either an insync update or an update of qt webview in nixpkgs.

But until then, your best bet is to use insync from an older nixpkgs commit. It might even be a better idea to completely remove insync from nixpkgs and providing it as a flake, that has a working nixpkgs version pinned to it.

jonahaberle commented 2 years ago

For me insync start --no-daemon just produces Segmentation fault (core dumped) :(

ajmasia commented 2 years ago

Using nixpkgs pinned at b49473e, I've been able to successfully run insync version 3.3.5.40925 (the version currently in nixpkgs) and version 3.6.1.50206 (latest available version).

This suggests that there was an update elsewhere in nixpkgs that wasn't backwards-compatible with insync. Pinning nixpkgs works for now, but it's not a long-term fix. Maybe we can try to identify which libraries need to be pinned and explicitly pin those? Or maybe use binaries targeting a distribution which is more up-to-date?

Hi @dereklhansen, how can I test this pinned version? Thanks!

v3eil commented 2 years ago

Any fix for this?

insync start --no-daemon Traceback (most recent call last): File "insync.py", line 19, in File "site-packages/click/core.py", line 829, in call File "site-packages/click/core.py", line 782, in main File "site-packages/click/core.py", line 1259, in invoke File "site-packages/click/core.py", line 1066, in invoke File "site-packages/click/core.py", line 610, in invoke File "idesklinux/cli.py", line 87, in start File "/usr/local/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module File "idesklinux/main.py", line 11, in File "/usr/local/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module File "idesklinux/platui_impl.py", line 7, in ImportError: /nix/store/41ms51yaqhqwfp83z8dms55g4abfzihp-insync-3.3.5.40925/lib/insync/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /nix/store/z8hz4nlh48niad995hs4w33wwryc3lkr-qtbase-5.15.3/lib/libQt5Widgets.so.5) [2847] Failed to execute script insync

benley commented 2 years ago

I'm afraid it has been a while since I used Insync because I couldn't find a fix for this type of issue. Instead I have been using google-drive-ocamlfuse which is also in nixpkgs

jonahaberle commented 2 years ago

I reached out to insync back when I made my last post and begged them to look into the issue. I offered to pay for a fix. I was told it was added to the developer backlog.

I've switched to using rclone.

benley commented 2 years ago

Yeah, it is frustrating that the Insync developers don't seem to be interested in providing a distro-agnostic version of their product. A flatpak or appimage distribution of insync seems like it should be an obvious win for them, but they haven't committed to anything. Here's hoping; I liked using Insync when I was able to.

hab25 commented 2 years ago

@benley @jonahaberle are you achieving continuous (real-time) sync with those tools?

Neither of the two tools supports that by itself

If you're achieving it by using the tool as part of a more elaborate solution, would you mind sharing how you're doing that?

douglastofoli commented 2 years ago

I wrote an overlay to pass by the error 403 of url down and I get it installed. But doesn't open yet

(self: super: {
  insync-v3 = super.insync-v3.overrideAttrs (_: {
    version = "3.7.11.50381";

    src = builtins.fetchurl {
      url = "https://cdn.insynchq.com/builds/linux/insync_3.7.11.50381-focal_amd64.deb";
      sha256 = "14vm7nck0rnnxz6mpzx2cclycbyj1s4rc3rwwjk4yx8m1y6i91jv";
    };
  });  
})

The error:

$ insync start --no-daemon
Traceback (most recent call last):
File "insynclinux/gui/insync.py", line 19, in <module>
File "site-packages/click/core.py", line 1130, in __call__
File "site-packages/click/core.py", line 1055, in main
File "site-packages/click/core.py", line 1657, in invoke
File "site-packages/click/core.py", line 1404, in invoke
File "site-packages/click/core.py", line 760, in invoke
File "insynclinux/gui/cli.py", line 92, in start
File "/usr/local/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
File "idesklinux/app.py", line 12, in <module>
File "/usr/local/lib/python3.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
File "idesklinux/platui_impl.py", line 7, in <module>
ImportError: /nix/store/3kcpi6dn0n3klz959dnmyqs0wns2k2bh-insync-3.7.11.50381/lib/insync/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /nix/store/dmj5kndgbkr2p159wsjw15551da5r70p-qtbase-5.15.5/lib/libQt5Widgets.so.5)
[154610] Failed to execute script insync

nix-shell -p nix-info --run "nix-info -m"

- system: `"x86_64-linux"`
- host os: `Linux 5.19.3, NixOS, 22.11 (Raccoon), 22.11.20220825.f3d0897`
- multi-user?: `yes`
- sandbox: `yes`
- version: `nix-env (Nix) 2.10.3`
- nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`
douglastofoli commented 2 years ago

Update about insync-v3. It worked when i pinned a rev from github. To fix the broken URL I created an overlay to override the version and URL of current version on nixpkgs.

My insync-v3.nix My overlay

The original code

hellwolf commented 1 year ago

I am trying to fix it for the latest insync binary...

https://github.com/NixOS/nixpkgs/pull/205954/files

But it doesn't work, it crashes, badly

$ ./result/bin/insync start --no-daemon 
Segmentation fault (core dumped)

If I don't do these:

rm $out/lib/insync/libstdc++.so.6
rm $out/lib/insync/libgcc_s.so.1

Insync will crash with:

$ ./result/bin/insync start --no-daemon 
Traceback (most recent call last):
  File "insynclinux/gui/insync.py", line 19, in <module>
  File "click/core.py", line 1130, in __call__
  File "click/core.py", line 1055, in main
  File "click/core.py", line 1657, in invoke
  File "click/core.py", line 1404, in invoke
  File "click/core.py", line 760, in invoke
  File "insynclinux/gui/cli.py", line 140, in start
  File "PyInstaller/loader/pyimod03_importers.py", line 540, in exec_module
  File "idesklinux/app.py", line 12, in <module>
  File "PyInstaller/loader/pyimod03_importers.py", line 540, in exec_module
  File "idesklinux/platui_impl.py", line 7, in <module>
  File "PyInstaller/loader/pyimod03_importers.py", line 540, in exec_module
  File "PySide2/__init__.py", line 51, in <module>
  File "PySide2/__init__.py", line 21, in _setupQtDirectories
  File "PyInstaller/loader/pyimod03_importers.py", line 540, in exec_module
  File "shiboken2/__init__.py", line 27, in <module>
ImportError: /nix/store/hsk71z8admvgykn7vzjy11dfnar9f4r1-glibc-2.35-163/lib/libc.so.6: version `GLIBC_2.36' not found (required by /nix/store/1xcww9zshhsc34wvvq7702alcn51vbrm-insync-3.8.3.50473/lib/insync/libstdc++.so.6)
[353108] Failed to execute script insync

Something about GLIBC_2.36, while nixos is still at glibc 2.35.

But it shouldn't be a issue, otherwise insync would only work for distro that is glibc 2.35...

Hope it gives some hints, if anyone wants to continue from here, feel free!

hellwolf commented 1 year ago

I made https://github.com/NixOS/nixpkgs/pull/205954 build and insync-v3 run again, but it would need to patch two more python packages... to continued.

hellwolf commented 1 year ago

Update from #205954, the package should be resuscitated soon, coming to unstable and hopefully in time for 23.05!

benley commented 1 year ago

@hellwolf thank you for persevering on this and getting insync working again!

benwbooth commented 1 year ago

@hellwolf thanks for this package! Could you also please add the .desktop file and icons? The base insync package has them but they are not added to the wrapper package and are not currently user visible. Thanks again!

benwbooth commented 1 year ago

Also the insync binary is currently named insync-${version}. Can you please strip the version from the binary name? Otherwise the desktop file won't work. Thanks!

hellwolf commented 1 year ago

Also the insync binary is currently named insync-${version}. Can you please strip the version from the binary name? Otherwise the desktop file won't work. Thanks!

@hellwolf thanks for this package! Could you also please add the .desktop file and icons? The base insync package has them but they are not added to the wrapper package and are not currently user visible. Thanks again!

No problems. I will look into these!

hellwolf commented 1 year ago

Also the insync binary is currently named insync-${version}. Can you please strip the version from the binary name? Otherwise the desktop file won't work. Thanks!

https://github.com/NixOS/nixpkgs/pull/233044

Might have the desktop files solved.