-
-
Notifications
You must be signed in to change notification settings - Fork 414
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
Support Raspberry Pi or Linux-arm ? #380
Comments
I don't know what needs to be done to make this possible. I can take a look at it but I don't think that support can be added before the next release. |
I appreciate your help. |
Looks like we need to wait till support for building on ARM will be added to AzureDevOps. Once that has been added I will take another look at this issue. |
Hello, |
I cannot give you an estimate because this all depends on when AzureDevOps will have arm64 support. And at this moment it has no support for that. |
AFAIK AzureDevOps now has support for arm64. arm/arm64 would also be super useful for Xamarin.Android projects. |
The build has moved from AzureDevOps to GitHub. Not sure if they support an ARM build. |
AFAIK they claim to support ARM. If I knew more about the GitHub build process I would test it myself. |
I seem to need it. |
are there any news for an arm/arm64 build ? |
I would also like arm32 and arm64 support |
Waiting for ARM support in GitHub actions for the open source developers. |
You can build ARM images on the GitHub build agents using Docker buildx/Docker experimental features. |
I stumbled upon this issue while trying to get the library working on my Raspberry Pi 4b. Everything ran extremely smoothly on my MacBook pro, so I was surprised it didn't on Linux. My Raspberry Pi 4b is running a 64-bit version of Debian, but I think I'm having similar issues to everyone here: The library dll is passed along in my deployment process, but performing any operations with it throws a I assume this is related to support for arm64 processors?
Are there any steps I can take to get this working, or do I need to wait until GitHub actions supports ARM processors? |
For this to work I will need to do an arm64 build of the Magick.Native library. The complete build has now moved to GitHub and we need to wait till they will provide support for the open source projects. |
For stuff I absolutely need to run cross platform I switched over to ImageSharp, it's not as well documented or as fast, but it seems pretty feature complete and is 100% managed code so will run anywhere .NET/Mono does. |
I tried to cross-compile Magick.Native for ARM64 on an Ubuntu x64 machine and copy the .so file manually. It kind of works for my purposes but some dependencies failed to build properly. (Forked for build script adjustments to Y56380X/Magick.Native) Failing dependencies:
|
Please add this..... busy setting up a project now and converting to Arm, and was kind stomped back when this is not working. is there an ETA? Please give this some LOVE |
You will need to ask GitHub for the ETA. Read my response:
|
It is feasible (and probably faster) approach to building ARM anything to run a cross compile, like for example something like this: Don't think you need to run specifically on ARM to compile for it. |
So instead of waiting for Azure and GitHub to be able to compile arm, can the ones of us that HAVE arm processors get the source to compile natively so that we can use this amazing tool that works so well on Intel chips? We can compile the entire CLI on arm without issue, can we get direction on what needs cloned and locally compiled so that this can be used? |
If you want to build Magick.NET with ARM support on your local machine you will need to clone this repository: https://github.com/dlemstra/Magick.Native. There are no instruction on how to build it with ARM support but you could probably follow the build steps on Linux. |
Alright, so following the suggestion from @dlemstra I have some notes.
This is my install.dependencies.sh now what give me a clean compile on Ubuntu x86. #!/bin/bash apt-get update -y #apt-get install -y autoconf autopoint gettext git gperf libtool nasm pkg-config python python-pip python3-pip ragel software-properties-common texinfo #add-apt-repository ppa:ubuntu-toolchain-r/test -y pip3 install cmake
You now have compiled objects. ls Q16 file Q16/libMagick.Native-Q16-x64.dll.so That was on Ubuntu. Debian doesn't seem to be very happy. Now, I can't say that they are 100% stable as right now I'm focusing on getting a clean build process to replicate on the Raspbery Pi.
When compiling the libraries, there's an error. libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I. -I../include -Iinclude -I../src -I/usr/local/include -I. -I../include -Iinclude -I../src -O3 -fPIC -MT src/arm/sysv.lo -MD -MP -MF src/arm/.deps/sysv.Tpo -c ../src/arm/sysv.S -o src/arm/sysv.o Then compiling ImageMagick /usr/bin/mkdir -p '/usr/local/share/ImageMagick-7' And then Magick.Native. [ 95%] Building C object CMakeFiles/Magick.Native-Q8-x64.dll.dir/Types/TypeMetric.c.o I'm guessing the failing libraries can be skipped, but if anyone has thoughts on the main ImageMagick and Magick.Native, I'd love to hear them so that we can maybe get a ARM object for Apples and Pis. |
Alright, so after working on this between other projects I have some updates. sudo apt install git -= Remove the failing libraries and Fix the install.dependencies.sh script=- vi Magick.Native/build/linux/install.dependencies.sh #add-apt-repository ppa:ubuntu-toolchain-r/test -y cd Magick.Native/build/linux Following that fixes all of the errors when compiling directly on the ARM Raspbery Pi through ../../../build/linux/build.ImageMagick.sh. This also means that the system needs to be considerably more complicated as we now have to offload 100% of the processing to a separate server. In our case we are now in the process of moving all image processing to AWS Lambda functions. The plan is now to
That adds a good 4 steps to the process by calling a processor and separate storage area and will cause more moving parts that can fail, but without being able to run the processor natively, offloading to a separate server does seem to be the only way. Now, here's the build process if anyone can see what's going on with it. I think that it's quite close to working but maybe missing a couple of minor tweaks to account for a different OS or some packages not be existing by default on the Pi. @raspberrypi:~/Magick.Native/src/Magick.Native# sudo ../../build/linux/build.Native.sh Update the VERSION argument value or use a ... suffix to tell -- The C compiler identification is GNU 8.3.0 |
@barrct I had success compiling Magick.Native for ARM with this fork: https://github.com/Y56380X/Magick.Native.git Note for example the |
HA! Got it! I do know that it did compile natively on the RasPi though. |
@barrct I am just working through the same process, did you have any luck replicating? |
Support for arm64 on Windows was recently added because it was easy to do a cross compilation with VisualStudio. Adding support for Linux ARM builds will probably not be added anytime soon. |
As .Net Maui became new standard for making apps in .net world, any chances to make this happen to run on arm ? |
Good news support for Linux ARM64 was added. This will become available in the next release. This does not include support for jpeg-xl but support for this might be added in a future release. |
Support for jpeg-xl in the Linux ARM64 build was added in the latest release. |
Nice, that ARM64 seems to be fully supported now. Good work! As regular raspberry raspian is (still) 32 bit, any estimate, how far it is from ARM64 to ARM and if that is something going to be implemented as well? |
I am not going to add 32 bit support for ARM. |
@dlemstra : Thank you for clarifying and letting us know. That really helps to plan my project. Hope, that 64bit raspian will become common soon. |
Can it be supported in the next version?
The text was updated successfully, but these errors were encountered: