laurent22 / joplin

Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.
https://joplinapp.org
Other
45.18k stars 4.92k forks source link

ARM build for mac os M1 processor #6052

Closed rafjaf closed 8 months ago

rafjaf commented 2 years ago

Hello, apparently Joplin 2.6.10 for macos is only optimized for intel-based Mac. Yet buiding Electron apps compatible with ARM proessors seems possible, see https://www.electronjs.org/blog/apple-silicon. Is there any plan to implement this? Thank you in advance for considering this issue.

sbkg0002 commented 2 years ago

Also wondering.

Joey-0812 commented 2 years ago

Also wondering.

ridicolos commented 2 years ago

Would love to see a native m1 version as well.

sbkg0002 commented 2 years ago

Is there a way I can help to fix this? I can update/create a Github workflow or something if needed.

Shamp0o commented 2 years ago

For reference: There's a discussion about building the app for arm64 on the forum, including some successful builds.

I'm happy to help with testing in order to get official arm64 builds for everyone.

runchard commented 2 years ago

I've done a PR with #5537 but failed to merge due to lack of tests. And to be honest, I can't figure out what kind of platform dependent test is needed here.

github-actions[bot] commented 2 years ago

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may comment on the issue and I will leave it open. Thank you for your contributions.

rafjaf commented 2 years ago

Hi, I still believe the issue to be relevant for the community, as show the discussions on the forum : https://discourse.joplinapp.org/t/running-joplin-on-apple-silicon/11455

github-actions[bot] commented 2 years ago

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? If you require support or are requesting an enhancement or feature then please create a topic on the Joplin forum. This issue may be closed if no further activity occurs. You may comment on the issue and I will leave it open. Thank you for your contributions.

sbkg0002 commented 2 years ago

Hi, I still believe the issue to be relevant for the community, as show the discussions on the forum : https://discourse.joplinapp.org/t/running-joplin-on-apple-silicon/11455

Same here. Looking for an alternative since this feels hopeless.

Bringoff commented 2 years ago

@laurent22 so this is the official dev team statement?

We don't quite have the resources to deal with all the rubbish coming from Apple, from the insane iOS release process, to the idiotic notarisation. That would be adding yet one more way things can fail, so that's why I'm not so keen on it, unless it becomes really necessary.

  1. Using apps running in Rosetta was proved to be the cause of extensive SSD usage on Mac. That may cause hardware issues in the long run.
  2. Rosetta uses AOT-compilation, so apps tend to launch very slowly after every update. Basically, all of your users have to compile Joplin for Mac by themselves (even without knowing), because you don't want to.

Joplin is one of two apps I was considering to use that still doesn't have Apple Silicon support (another one is Viber, and it's not the best peer to be compared to). I was seriously thinking about moving all of my notes to Joplin, but this kind of support is a joke. I understand that open-source software is often limited by dev resources. But you have a paid plan, it's not somebody's pet project.

Bringoff commented 2 years ago

Here's what a long AOT-compilation looks like on my MBP with M1 Pro.

https://user-images.githubusercontent.com/5401536/169690231-90b5abf2-9524-49dd-9c86-6f3dfab90df1.mov

github-actions[bot] commented 2 years ago

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? If you require support or are requesting an enhancement or feature then please create a topic on the Joplin forum. This issue may be closed if no further activity occurs. You may comment on the issue and I will leave it open. Thank you for your contributions.

ajgraves commented 2 years ago

Answering the bot; this issue is still relevant and outstanding. See https://discourse.joplinapp.org/t/running-joplin-on-apple-silicon/11455. Though it's definitely stagnated a bit.

github-actions[bot] commented 2 years ago

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? If you require support or are requesting an enhancement or feature then please create a topic on the Joplin forum. This issue may be closed if no further activity occurs. You may comment on the issue and I will leave it open. Thank you for your contributions.

ajgraves commented 2 years ago

Answering the bot again; this issue is still relevant and outstanding. See https://discourse.joplinapp.org/t/running-joplin-on-apple-silicon/11455.

github-actions[bot] commented 2 years ago

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? If you require support or are requesting an enhancement or feature then please create a topic on the Joplin forum. This issue may be closed if no further activity occurs. You may comment on the issue and I will leave it open. Thank you for your contributions.

skymagician commented 2 years ago

this issue is still relevant and outstanding.

guiix-code commented 2 years ago

Still relevant

Nctllnty commented 2 years ago

Still relevant

PatrickHuetter commented 2 years ago

Still relevant

pawelostr commented 2 years ago

Still relevant

lethargosapatheia commented 1 year ago

Would be really nice to have. Joplin works quite badly on M1 at the moment unfortunately.

andypiper commented 1 year ago

The process in the other repo works just fine and the M1 build linked there has been great on my MBP for several months. What would need to happen to integrate it into the build process in the main repo and releases?

boli commented 1 year ago

+1 - some rosetta apps are killing my M1

katosabi commented 1 year ago

+1 - using the instructions @andypiper linked, the native ARM build is way snappier than the Intel build on M1.

boli commented 1 year ago

+1 - using the instructions @andypiper linked, the native ARM build is way snappier than the Intel build on M1.

although i have to admit i didnt spend hours on it - i got stuck at the 'modify joplin json files' stage.

i looked at the PRs and didnt see which files, nor changes, it was referring to.

can anyone help? maybe a sed snippet for making the changes?

katosabi commented 1 year ago

+1 - using the instructions @andypiper linked, the native ARM build is way snappier than the Intel build on M1.

although i have to admit i didnt spend hours on it - i got stuck at the 'modify joplin json files' stage.

i looked at the PRs and didnt see which files, nor changes, it was referring to.

can anyone help? maybe a sed snippet for making the changes?

When you go to the PR, click the Commit tab, then the commit, then it will show you the 3 files/lines you need to modify in the 1st linked PR (red highlighted lines are removed, green are added), and the 1 file you need to change in the 2nd linked PR. For the 2nd PR there are two commits, you want the 2nd one (there is a red line here that is removed from the 1st commit, just ignore that and add the green lines).

pawelostr commented 1 year ago

Still relevant

boli commented 1 year ago

When you go to the PR, click the Commit tab, then the commit, then it will show you the 3 files/lines you need to modify in the 1st linked PR (red highlighted lines are removed, green are added), and the 1 file you need to change in the 2nd linked PR. For the 2nd PR there are two commits, you want the 2nd one (there is a red line here that is removed from the 1st commit, just ignore that and add the green lines).

thanks - that definitely got me a bit further - but then i got stuck again with some kind of npm dependency hell.

at npm install sharp, it fails with

npm ERR! Could not resolve dependency:
npm ERR! peer react-dom@"^16.13.1 || ^17.0.0 || ^18.0.0" from re-resizable@6.9.9

unless its an easy quick obvious fix - i think i need to wait for a proper package

guiix-code commented 1 year ago

When you go to the PR, click the Commit tab, then the commit, then it will show you the 3 files/lines you need to modify in the 1st linked PR (red highlighted lines are removed, green are added), and the 1 file you need to change in the 2nd linked PR. For the 2nd PR there are two commits, you want the 2nd one (there is a red line here that is removed from the 1st commit, just ignore that and add the green lines).

thanks - that definitely got me a bit further - but then i got stuck again with some kind of npm dependency hell.

at npm install sharp, it fails with

npm ERR! Could not resolve dependency:
npm ERR! peer react-dom@"^16.13.1 || ^17.0.0 || ^18.0.0" from re-resizable@6.9.9

unless its an easy quick obvious fix - i think i need to wait for a proper package

Having same issue

katosabi commented 1 year ago

When you go to the PR, click the Commit tab, then the commit, then it will show you the 3 files/lines you need to modify in the 1st linked PR (red highlighted lines are removed, green are added), and the 1 file you need to change in the 2nd linked PR. For the 2nd PR there are two commits, you want the 2nd one (there is a red line here that is removed from the 1st commit, just ignore that and add the green lines).

thanks - that definitely got me a bit further - but then i got stuck again with some kind of npm dependency hell.

at npm install sharp, it fails with

npm ERR! Could not resolve dependency:
npm ERR! peer react-dom@"^16.13.1 || ^17.0.0 || ^18.0.0" from re-resizable@6.9.9

unless its an easy quick obvious fix - i think i need to wait for a proper package

Per the guide's author, you might be able to just skip that section and move on:

Update April 2022: Tested working on version 2.7.15. Since my initial post Joplin has switched from npm to yarn, and with it some commands here may be unnecessary. I still include them since it’s how my successful build environment is setup.

I don't remember if I installed sharp or not, but I did do the "set NPM config flags" section.

boli commented 1 year ago

When you go to the PR, click the Commit tab, then the commit, then it will show you the 3 files/lines you need to modify in the 1st linked PR (red highlighted lines are removed, green are added), and the 1 file you need to change in the 2nd linked PR. For the 2nd PR there are two commits, you want the 2nd one (there is a red line here that is removed from the 1st commit, just ignore that and add the green lines).

thanks - that definitely got me a bit further - but then i got stuck again with some kind of npm dependency hell. at npm install sharp, it fails with

npm ERR! Could not resolve dependency:
npm ERR! peer react-dom@"^16.13.1 || ^17.0.0 || ^18.0.0" from re-resizable@6.9.9

unless its an easy quick obvious fix - i think i need to wait for a proper package

Per the guide's author, you might be able to just skip that section and move on:

Update April 2022: Tested working on version 2.7.15. Since my initial post Joplin has switched from npm to yarn, and with it some commands here may be unnecessary. I still include them since it’s how my successful build environment is setup.

I don't remember if I installed sharp or not, but I did do the "set NPM config flags" section.

ok. thats got it. working now. thanks.

lethargosapatheia commented 1 year ago

Does anyone know of a relatively decent alternative to joplin that works on m1 properly?

guiix-code commented 1 year ago

I ended up cancelling my sponsorship and trying Obsidian. It has some quirks with WYSIWYG not being as good as Joplin. But syncing works much better (for Apple ecosystem people, it uses iCloud files, which auto-sync between devices). And it's compiled for M1.

tthnu commented 1 year ago

Does anyone know of a relatively decent alternative to joplin that works on m1 properly?

maybe you could try this repo

boli commented 1 year ago

Does anyone know of a relatively decent alternative to joplin that works on m1 properly?

maybe you could try this repo

unless there is an easy way to sign that before installing it - its not much use to anyone

from the repo: "Since this was not code-signed and notarized there will be installation error messages. Either: "You do not have permission to open the application", or a "Joplin.app is damaged and can't be opened. You should move it to the trash."

lethargosapatheia commented 1 year ago

@boli My thoughts exactly. How would I be able to trust it after all?

@doomsy Thanks for the suggestions, I'll give it a try.

Joey-0812 commented 1 year ago

Still relevant

razvangvr commented 1 year ago

Still relevant. Please consider having a Joplin build for Apple M1.

glls commented 1 year ago

Still relevant. Please consider having a M1 optimized build.

Nctllnty commented 1 year ago

Still relevant.

bluedogtwo commented 1 year ago

surprised

pawelostr commented 1 year ago

Still relevant

Avalarion commented 1 year ago

Awesome that https://github.com/noah-nash/joplin-arm64-darwin-guide/releases/tag/2.8.8-arm64 is working with this comment: https://discourse.joplinapp.org/t/running-joplin-on-apple-silicon/11455/38

Would love to have this as a normal build, not as a hack...

pierredewilde commented 1 year ago

On MacBookAir M2, arm64 apps takes only a few seconds to load. Joplin is the only Intel app and it takes nearly 10s to load.

rafjaf commented 1 year ago

I concur that an official build would be most welcome but this being said, in the meanwhile, it's not so difficult to build Joplin ourselves for Mac M1. I wrote a small script to automate the process:

#!/bin/zsh
if [ -z "$1" ]; then
    echo "$0 [version]"
    echo "Builds Joplin [version] in ARM64, e.g.:"
    echo "$0 2.9.17"
    echo
    echo "Before running for the first time, you should install dependancies by running"
    echo "brew install node yarn cocoapods vips jq jo macos-trash"
    if [ ! -e "/usr/bin/python" ]; then
        echo
        echo "You should also install Python2 from https://www.python.org/downloads/release/python-2718/"
    fi
    exit
fi

# Cloning the requested version of Joplin from Github
echo "Cloning the requested version of Joplin from Github"
cd ~/Downloads
git clone --depth 1 --branch "v$1" https://github.com/laurent22/joplin.git

# Modifying the target for the build (Apple Silicon instead of Intel)
cd joplin
TMP=$(mktemp)
VALUE=$(jo target=default "arch[]=arm64")
jq ".build.mac.target=$VALUE" packages/app-desktop/package.json > $TMP
mv $TMP packages/app-desktop/package.json

# Downloading and building dependancies
echo "Downloading and building dependancies"
yarn install
cd packages/app-desktop

# If Python 2 is not installed by default, change the path which is
# hard-coded in the build files with the actual path to Python 2
# (obviously won't work if Python 2 is not installed)
if [ ! -e "/usr/bin/python" ]; then
    sed -i '' "s|/usr/bin/python|$(which python2)|" node_modules/dmg-builder/out/dmg.js
fi

# Let's finally build Joplin!
echo "Let's finally build Joplin!"
npx electron-builder
EXIT=$?

# Joplin.app will be copied to the root of the Downloads folder
echo "Copy Joplin.app to the root of the Downloads folder"
cp -R dist/mac-arm64/Joplin.app ~/Downloads
cd ~/Downloads

# Remove the files downloaded from Github if all went well
if [[ $EXIT -eq 0 ]]; then
    echo "Remove the files downloaded from Github since all went well"
    trash joplin
fi

# Make a beep to signal it's over
tput bel
pierredewilde commented 1 year ago

Thank you for the script to build Joplin arm64.

I got lots of warnings and 1 error when building YN0009: │ sqlite3@npm:4.2.0 couldn't be built successfully

But it builds Joplin.app successfully in 6 minutes. And as expected, Joplin (arm64) now takes 2s to load.

Yes, an official build would be most welcome.

sbkg0002 commented 1 year ago

Care to share the binary? :)

pierredewilde commented 1 year ago

It is unsafe to share binary from unofficial sources. This is the reason we insist to get the official arm64 binary.

@sbkg0002 that said, you may download my arm64 build (Apple M2) from here (link expires 2022-12-27).