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

Apple silicon native code #1528

Closed
imrefazekas opened this issue Nov 18, 2020 · 88 comments
Closed

Apple silicon native code #1528

imrefazekas opened this issue Nov 18, 2020 · 88 comments

Comments

@imrefazekas
Copy link

Do you plan to release a version running natively on apple silicon?

Thanks...

@kertaljos
Copy link

This would be amazing. Guaranteed donation from me if this is achieved. 😄

@MaddTheSane
Copy link
Contributor

The following libraries which are included in the source tree would need to be updated with an ARM version:

  • libcurl
  • libssl
  • libcrypto

Once those are updated, I don't think it'll take much effort to test Transmission on an Apple Silicon device.
Tangentially related, but is there a reason why Transmission isn't linking against macOS' native libcurl?

@MaddTheSane
Copy link
Contributor

Correction: the libraries in the source tree are stub libraries. This doesn’t change anything: the libraries still need to be rebuilt. Or Transmission needs to be rewritten to take advantage of native macOS frameworks.

@scottdownes
Copy link

@MaddTheSane All three libraries are building on ARM via Homebrew now. Any tips on next steps?

@MaddTheSane
Copy link
Contributor

It depends on if you want to link statically or dynamically. Static linking will be easier, but the resulting Transmission package will be slightly larger due to two binaries (the app itself and the QuickLook plug-in) sharing the code. Dynamic linking will require a bit more preparation, and the size saved will probably not be worth the extra work.

For building with the static library, make sure that the deployment target is set to 10.10 to match Transmission's, and make sure the static libraries are universal (x86_64 and arm64).

@kuglee
Copy link

kuglee commented Dec 6, 2020

I was able to build a universal binary based on @MaddTheSane's libcurl modifications with upgraded libevent and openssl.

kuglee/transmission/tree/arm64

@MaddTheSane
Copy link
Contributor

For dynamic libraries, it'll be a bit more involved…

You need to have the libraries' install names set properly. Usually for libraries you intend to embed in applications, that means having them start with @rpath. You can use install_name_tool to change the names.

For instance, I used the following to change the libraries' install names from @kuglee's fork:

install_name_tool -change /usr/local/Cellar/openssl@1.1/1.1.1h/lib/libcrypto.1.1.dylib \
@rpath/libcrypto.dylib -change /opt/homebrew/Cellar/openssl@1.1/1.1.1h/lib/libcrypto.1.1.dylib \
@rpath/libcrypto.dylib -id @rpath/libssl.dylib libssl.dylib
install_name_tool -id @rpath/libcrypto.dylib libcrypto.dylib

Next, they need to be embedded into the application bundle. This can be done in Xcode by (in Xcode 12 and later, probably in some earlier versions, too.) going to targets, General, scroll down to "Framework, Libraries, and Embedded Content", and change libcrypto and libssl to "Embed and Sign":

Screen Shot 2020-12-06 at 3 34 27 PM copy

After that, you'll also need to set the Runtime Path of the QuickLook plug-in to point to the parent application's Framework directory.

@rgaufman
Copy link

@kuglee Any chance you could share this universal binary? :)

@kuglee
Copy link

kuglee commented Dec 12, 2020

@rgaufman Here you go: Transmission.dmg

@rgaufman
Copy link

rgaufman commented Dec 12, 2020

Says access denied, I requested access, thank you in advance for sharing!

EDIT: Downloaded and working great!

@hmkim
Copy link

hmkim commented Dec 17, 2020

@kuglee Thank you!

In Mac mini m1, there is working.

Install it and Do not update!

@imrefazekas
Copy link
Author

Works great! Thank you!

When can we expect an official version? some trackers filter out this version because it is not an official one...

@alexalder
Copy link

Works great! Thank you!

When can we expect an official version? some trackers filter out this version because it is not an official one...
@MaddTheSane any updates?

@MaddTheSane
Copy link
Contributor

Here's my fork of the ARM64 changes: https://github.com/MaddTheSane/transmission/tree/arm64

@imrefazekas
Copy link
Author

@MaddTheSane Works perfectly. Pulled submodules, built fine, binary built, and just works. Thanks!

@slu1982
Copy link

slu1982 commented Jan 5, 2021

@rgaufman Here you go: Transmission.dmg

Thank you. Tried it and worked flawlessly on public trackers. However on private ones I get "tracker gave http response code 400 (bad request)". Hopefully we will have an official version soon.

@rgaufman
Copy link

Would be great to have an official release :)

@n-osennij

This comment has been minimized.

@PongNg
Copy link

PongNg commented Jan 29, 2021

TBH, I still prefer to download it from the official site... not sure when trasmisson team gonna put it on their website

@khushmeeet

This comment has been minimized.

@tomlube
Copy link

tomlube commented Mar 3, 2021

Can't believe it still hasn't been posted on the official site, that build posted works great though.

@ghost

This comment has been minimized.

@jfoboss

This comment has been minimized.

1 similar comment
@whochumachenko

This comment has been minimized.

@reden87

This comment has been minimized.

@artemlazaruk

This comment has been minimized.

@mikedld mikedld added this to the 3.0x milestone Oct 28, 2021
@PongNg
Copy link

PongNg commented Oct 28, 2021

nothing has been posted ,not as stable nor beta or nightly

See two of my posts above. Both CI servers now produce universal (x86_64 + arm64) binaries, which means that a) it's already possible to produce such builds (including on your own machine), b) it's monitored and won't break with new changes coming in, and c) next release will contain universal binaries. No artifacts will be posted here, it just doesn't make sense; if you want to test out current nightly, please go grab it from one of CI boxes.

To me this issue is fixed and there's nothing more to discuss; if you observe issues with the nightlies, report them separately, otherwise please wait for changes to be released, as is the case with any other issue or feature which is currently pending release. Kindly be understanding in that this thread is not an appropriate place for release schedule question/concerns/grievances.

Hey Mike! Thank you so much for the update!!! I feel so grateful to hear that next release will contain the universal binary!!!!!! Thank you for the great job!!!!!!!

@palvajk
Copy link

palvajk commented Nov 10, 2021

The latest nightly is universal binary!

@rgaufman
Copy link

Excellent news! - looking forward to the official release!

@anonyme123
Copy link

Great news and kudos to the developers!! 🤗

@frozenpandaman
Copy link

frozenpandaman commented Nov 14, 2021

Exciting stuff! Really happy to see this. Hope theres an official release & version increment soon. :)

@dnisbetjones
Copy link

I just want to extend my appreciation to the developers and am looking forward to installing the M1-native version. Now is as good a time as any to support a great open source project and throw a few shekels your way. Cheers.

@dronezzzko
Copy link

However, the latest build works great on M1!
(https://build.transmissionbt.com/job/trunk-mac/)

@avichou
Copy link

avichou commented Dec 9, 2021

However, the latest build works great on M1! (https://build.transmissionbt.com/job/trunk-mac/)

have any idea as to when we should get it as stable ?

@ckerr
Copy link
Member

ckerr commented Dec 10, 2021

My best guess is January

@ckerr
Copy link
Member

ckerr commented Jan 17, 2022

My best guess is February 🙄

@avichou
Copy link

avichou commented Jan 17, 2022

My best guess is February 🙄

muahahahah

@dvcrn
Copy link

dvcrn commented Jan 18, 2022

FYI- Been running the trunk m1 builds for months now and had no issues here

@ckerr ckerr modified the milestones: 3.0x, 4.0.0-beta.1 Feb 21, 2022
@3zzy
Copy link

3zzy commented Feb 26, 2022

Feb came and went ... :(

@GaryElshaw
Copy link
Contributor

And then there was notice a milestone is soon.

@ckerr
Copy link
Member

ckerr commented Feb 26, 2022

Feb came and went ... :(

I didn't say which year!

@charan9999
Copy link

Just a regular user passing by waiting for the official stable release. 😆

@rgaufman
Copy link

There seems to be a horrible bug with the M1 version where you add magnet links, if the transfer didn't start yet, if you restart Transmission all those magnet downloads you add disappear :( - also waiting for a stable version!

@sweetppro
Copy link
Collaborator

There seems to be a horrible bug with the M1 version where you add magnet links, if the transfer didn't start yet, if you restart Transmission all those magnet downloads you add disappear :( - also waiting for a stable version!

This is fixed in the nightlies

@frozenpandaman
Copy link

Transmission 3.0.0 came out on May 22, 2020. That day's coming up, two years later (and includes even more 2's this time)… might be a good timeframe for the next release! ;)

@dvcrn
Copy link

dvcrn commented May 17, 2022

You can also just use a nightly release, been running it for a long long time without issues

@frozenpandaman
Copy link

@dvcrn Some sites only have certain clients whitelisted, which tend to not be nightly versions of software :)

@ghost
Copy link

ghost commented Aug 18, 2022

I am using the cli (and the web UI), which is native ARM build.

brew install transmission-cli
brew services start transmission-cli

@gouku
Copy link

gouku commented Aug 18, 2022

Any eta to draw a new release? I know Transmission is actively maintained but there's no any release in the last two years. I think there's something wrong with the pace of development?

@frozenpandaman

This comment was marked as duplicate.

@ilqvya

This comment was marked as abuse.

@transmission transmission locked as resolved and limited conversation to collaborators Aug 23, 2022
@ckerr
Copy link
Member

ckerr commented Aug 23, 2022

There is already a thread for the next release date at #2287

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Development

No branches or pull requests