etesync / etesync-dav

This is a CalDAV and CardDAV adapter for EteSync
https://www.etesync.com
GNU General Public License v3.0
290 stars 47 forks source link

Provide Linux build for ARM processors (aarch64) #184

Closed MorgothSauron closed 3 years ago

MorgothSauron commented 3 years ago

I was trying to setup etesync-dav using docker on a Pi4 (aarch64) but I realized that the build you provide is for AMD64. I'll probably be able to build etesync-dav to use it, but it would be good if a build for ARM was available.

os: Ubuntu 20.04.1 LTS cpu architecture: aarch64

tasn commented 3 years ago

Should be fixed now with the latest version. Please let me know if it's indeed the case.

MorgothSauron commented 3 years ago

That was fast.

The binary does run on Ubuntu 20.04.1 LTS on Pi4 without issue.

However I can't get it to work in docker

Error relocating /bin/linux-arm64-etesync-dav: __realpath_chk: symbol not found
Error relocating /bin/linux-arm64-etesync-dav: __memcpy_chk: symbol not found
Error relocating /bin/linux-arm64-etesync-dav: __snprintf_chk: symbol not found
Error relocating /bin/linux-arm64-etesync-dav: __vsnprintf_chk: symbol not found
Error relocating /bin/linux-arm64-etesync-dav: __strcpy_chk: symbol not found
Error relocating /bin/linux-arm64-etesync-dav: __vfprintf_chk: symbol not found
Error relocating /bin/linux-arm64-etesync-dav: __fprintf_chk: symbol not found
Error relocating /bin/linux-arm64-etesync-dav: __strcat_chk: symbol not found
Traceback (most recent call last):
  File "etesync-dav", line 101, in <module>
OSError: [Errno 29] Illegal seek
[6] Failed to execute script etesync-dav

I used ldd to check the object details and I can't see any outstanding dependency.

tasn commented 3 years ago

Alpine not working: maybe the libc6-compat isn't complete? Not sure. Debian in docker: no idea, though it looks like it's just failing in a python function. Could be a libc conflict but could also just be something with how you setup the docker image.

For whatever it's worth, there's a Dockerfile in this repo, and it's recommended to just run the Python code itself, rather than the pre-compiled binaries, in docker. Dockerfile: https://github.com/etesync/etesync-dav/blob/master/Dockerfile

MorgothSauron commented 3 years ago

I'll do more tests to try to find why it is not working in docker. It's a bit surprising that it fails with the official ubuntu:20.04 image because I do run Ubuntu 20.04 on the host.

For whatever it's worth, there's a Dockerfile in this repo, and it's recommended to just run the Python code itself, rather than the pre-compiled binaries, in docker. Dockerfile: https://github.com/etesync/etesync-dav/blob/master/Dockerfile

For now this is what I'm doing so I can have something to use with Thunderbird. But in the end it will be better if I can make it work with the binary. With the binary the docker image would be much faster to build. I could run the binary on the host directly but I prefer to isolate every components I host in a container.

I'll open a new issue once I have more details on this.

tasn commented 3 years ago

There are more lightweight ways to isolate applications, such as firejail. But sure, I get what you are trying to do.

Let me know.

julianfairfax commented 2 years ago

How come some builds include the arm64 version and others don't?

tasn commented 2 years ago

If memory serves: we used to build an travis-ci which supported ARM, and when we migrated Github actions didn't support ARM yet, at least not how we were using it.