Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows on arm build #218

Closed
1 of 6 tasks
xgdgsc opened this issue Dec 14, 2023 · 16 comments
Closed
1 of 6 tasks

Windows on arm build #218

xgdgsc opened this issue Dec 14, 2023 · 16 comments

Comments

@xgdgsc
Copy link

xgdgsc commented Dec 14, 2023


Relevant components

  • Standalone tray application (based on Qt Widgets)
  • Plasmoid/applet for Plasma desktop
  • Dolphin integration
  • Command line tool (syncthingctl)
  • Integrated Syncthing instance (libsyncthing)
  • Backend libraries

Is your feature request specific to a certain platform/environment? Please specify.
Windows on arm

https://www.qt.io/blog/qt-for-windows-on-arm don' t know how hard it is.

@Martchus
Copy link
Owner

Martchus commented Dec 14, 2023

A valid feature request but don't expect me to work on it anytime soon.

Note that this will most likely compile (and if not only trivial fixes should be necessary) so anybody is welcome to provide builds for that architecture similar to other additional builds that are already listed in the README's download section.

If you want to use Syncthing Tray on Windows/ARM right now then it is likely best to use the x86_64 build of Syncthing Tray in combination with the ARM build of Syncthing itself. (So basically avoid using the built-in Syncthing library so at least Syncthing itself runs natively.)

Copy link

stale bot commented Feb 13, 2024

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Feb 13, 2024
@stale stale bot closed this as completed Feb 20, 2024
@Martchus
Copy link
Owner

@Martchus Martchus reopened this Nov 25, 2024
@Martchus Martchus removed the stale label Nov 25, 2024
@xgdgsc
Copy link
Author

xgdgsc commented Nov 26, 2024

image
Thanks. The static reports missing libzstd.dll

@xgdgsc
Copy link
Author

xgdgsc commented Nov 26, 2024

Copying the file from msys2 works.

@Martchus
Copy link
Owner

I guess I'll have to dive into the CMake code again then…

Good that you've tested with the DLL from MSYS2. This way we know that the DLL is the only problem and that the executable generally works.

@Martchus
Copy link
Owner

I built a new version: https://martchus.dyn.f3l.de/repo/arch/ownstuff-experimental/os/x86_64/mingw-w64-clang-aarch64-syncthingtray-qt6-1.6.3-1-any.pkg.tar.zst (This package has the version 1.6.3 but it is actually a development build.)

This one should work (according to llvm-objdump the DLL is no longer linked against dynamically).

@xgdgsc
Copy link
Author

xgdgsc commented Nov 27, 2024

Works fine. The last version seemed exited after one night's sleep , I will see if this one also exit.

@xgdgsc
Copy link
Author

xgdgsc commented Nov 28, 2024

Also exit after one night' s sleep.
Report.zip
Found this from event viewer, doesn' t seem very helpful. The crash time is almost same as the time I let the laptop sleep.

@Martchus
Copy link
Owner

I suppose it "just" crashes. It is hard to tell why. I assume the issue does not exist in the x86_64 build?

Maybe you can start it in a terminal (so you can see stdout/stderr, use either MSYS2 or the -cli wrapper) and enable all logging (search for logging in the README). This way we might at least be able to see what it did shortly before crashing.

Maybe you can also share your Syncthing Tray config so I could at least rule out issues relating to features you don't have enabled.

Maybe you can find an easier way to reproduce the issue, e.g. maybe suspending and resuming the system triggers the issue (without waiting a whole night)? If that's the case maybe the code to suppress notifications after the system has just been resumed is at fault.

Otherwise I'm afraid I cannot really help much with this issue as I don't have a way to reproduce it myself.

@xgdgsc
Copy link
Author

xgdgsc commented Dec 3, 2024

I can use task scheduler to run it after unlock. It' s just it doesn' t auto connect after start with the auto connect option checked, I have to manually connect. Config:

[General]
v=1.6.4

[tray]
connections\size=1
connections\1\label=Primary instance
connections\1\syncthingUrl=http://127.0.0.1:8384
connections\1\authEnabled=false
connections\1\userName=
connections\1\password=
connections\1\apiKey=@ByteArray(ktRsr4NuZdX2nUwC7GQKrmcggtwgK4ew)
connections\1\trafficPollInterval=5000
connections\1\devStatsPollInterval=60000
connections\1\errorsPollInterval=30000
connections\1\reconnectInterval=30000
connections\1\diskEventLimit=200
connections\1\requestTimeout=0
connections\1\longPollingTimeout=0
connections\1\autoConnect=true
connections\1\pauseOnMetered=false
connections\1\statusComputionFlags=59
connections\1\httpsCertPath=C:/Users/ASUS/AppData/Local/syncthing/https-cert.pem
notifyOnDisconnect=true
notifyOnErrors=true
notifyOnLauncherErrors=true
notifyOnLocalSyncComplete=false
notifyOnRemoteSyncComplete=false
showSyncthingNotifications=false
notifyOnNewDeviceConnects=false
notifyOnNewDirectoryShared=false
ignoreInavailabilityAfterStart=15
showTraffic=true
showTabTexts=true
windowType=0
trayMenuSize=@Size(575 475)
frameStyle=16
tabPos=1
statusIcons="#ff26b6db,#ff0882c8,#ffffffff;#ffdb3c26,#ffc80828,#ffffffff;#ffc9ce3b,#ffebb83b,#ffffffff;#ff2d9d69,#ff2d9d69,#ffffffff;#ff26b6db,#ff0882c8,#ffffffff;#ff26b6db,#ff0882c8,#ffffffff;#ffa9a9a9,#ff58656c,#ffffffff;#ffa9a9a9,#ff58656c,#ffffffff"
trayIcons="#ff26b6db,#ff0882c8,#ffffffff;#ffdb3c26,#ffc80828,#ffffffff;#ffc9ce3b,#ffebb83b,#ffffffff;#ff2d9d69,#ff2d9d69,#ffffffff;#ff26b6db,#ff0882c8,#ffffffff;#ff26b6db,#ff0882c8,#ffffffff;#ffa9a9a9,#ff58656c,#ffffffff;#ffa9a9a9,#ff58656c,#ffffffff"
statusIconsRenderSize=@Size(32 32)
trayIconsRenderSize=@Size(32 32)
statusIconsStrokeWidth=0
trayIconsStrokeWidth=0
distinguishTrayIcons=false
preferIconsFromTheme=false
usePaletteForStatusIcons=false
usePaletteForTrayIcons=false
positioning\useCursorPos=true
positioning\useAssumedIconPosition=false
positioning\assumedIconPos=@Point(0 0)

[startup]
syncthingAutostart=true
useLibSyncthing=false
libSyncthingConfigDir=
libSyncthingDataDir=
libSyncthingLogLevel=2
libSyncthingExpandPaths=false
syncthingPath=C:/Users/ASUS/Documents/App/syncthing/syncthing.exe
syncthingArgs="serve --no-browser --logflags=3"
considerLauncherForReconnect=true
showLauncherButton=true
stopOnMetered=false
tools\Process\autostart=false
tools\Process\path=
tools\Process\args=

[webview]
mode=1
customCommand=
disabled=true
qt\font="Microsoft YaHei UI,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
qt\customfont=false
qt\palette=@Variant(\0\0\0\x44\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xb3\xb3\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xffxxxxxx\0\0\x1\x1\xff\xff\xa0\xa0\xa0\xa0\xa0\xa0\0\0\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xb3\xb3\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xf3\xf3\xf3\xf3\xf3\xf3\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\0\0xx\xd7\xd7\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\0\0xx\xd7\xd7\0\0\x1\x1\xff\xff\0\0\x1a\x1ajj\0\0\x1\x1\xff\xff\xe9\xe9\xe7\xe7\xe3\xe3\0\0\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xb3\xb3\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xffxxxxxx\0\0\x1\x1\xff\xff\xa0\xa0\xa0\xa0\xa0\xa0\0\0\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xb3\xb3\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xf3\xf3\xf3\xf3\xf3\xf3\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\0\0xx\xd7\xd7\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\0\0\0\0\xff\xff\0\0\x1\x1\xff\xff\xff\xff\0\0\xff\xff\0\0\x1\x1\xff\xff\xf7\xf7\xf7\xf7\xf7\xf7\0\0\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xb3\xb3\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xffxxxxxx\0\0\x1\x1\xff\xff\xa0\xa0\xa0\xa0\xa0\xa0\0\0\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xff\xff\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xe4\xe4\0\0\0\0\0\0\0\0\x1\x1\xb3\xb3\xff\xff\xff\xff\xff\xff\0\0\x1\x1\xff\xff\xf3\xf3\xf3\xf3\xf3\xf3\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\0\0xx\xd7\xd7\0\0\x1\x1\xff\xff\0\0\0\0\0\0\0\0\x1\x1\xff\xff\0\0xx\xd7\xd7\0\0\x1\x1\xff\xff\0\0\x1a\x1ajj\0\0\x1\x1\xff\xff\xe9\xe9\xe7\xe7\xe3\xe3\0\0)
qt\custompalette=false
qt\widgetstyle=windows11
qt\customwidgetstyle=false
qt\stylesheetpath=
qt\customstylesheet=false
qt\icontheme=breeze
qt\customicontheme=false
qt\locale=zh_CN
qt\customlocale=false
qt\plugindir=
qt\iconthemepath=
qt\trpath=

@Martchus
Copy link
Owner

Martchus commented Dec 3, 2024

Ok, so it does not crash or otherwise exists early. The only problem is that Syncthing Tray does not auto-connect to Syncthing when resuming from standby. Am I now getting the problem correctly?

The settings look correct for this to happen so this must be a bug then. I can try to reproduce it locally when I have time. Maybe this is related to the launcher not being able to use Boost.Process (so it uses QProcess and those code paths aren't regularly tested). It the output of Syncthing shown correctly in the launcher and in particular is the GUI listening address shown?

Note that Syncthing Tray ignores the unavailability of Syncthing the first 15 seconds (ignoreInavailabilityAfterStart) after the start to give Syncthing it some time and avoid an error notification. Then it'll only re-connect after 30 seconds (reconnectInterval) and continue to do so every 30 seconds. If you start Syncthing Tray with logging as suggested before, can you see that those connection attempts are made?

There's also a different experiment you could do which might be useful: Does it work when you disable considerLauncherForReconnect? Then Syncthing Tray will of course needlessly re-connect while Syncthing is not launched anyway and notifications won't be suppressed. However, when it works with considerLauncherForReconnect we know that it has something to do with the launcher.

@xgdgsc
Copy link
Author

xgdgsc commented Dec 3, 2024

No. It crashes. I just try to auto start it with task scheduler. I will try your proposals.

@xgdgsc
Copy link
Author

xgdgsc commented Dec 4, 2024

considerLauncherForReconnect=false works for me. It connects immediately after start.

@Martchus
Copy link
Owner

Martchus commented Dec 4, 2024

Ok, then considerLauncherForReconnect is probably broken when using QProcess. I'll look into this because it can probably also be reproduced under any platform. Did you see any log message from before the crash meanwhile? If it really always crashes after resuming from standby this should be easy to reproduce.

@Martchus
Copy link
Owner

As the build itself is provided I'm closing this issue in favor of #304.

@xgdgsc xgdgsc closed this as completed Dec 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants