yousseb / meld

Meld for macOS
https://yousseb.github.io/meld/
GNU General Public License v2.0
2.28k stars 119 forks source link

py2app error starting Meld on Mojave from command line #77

Open Stuk opened 5 years ago

Stuk commented 5 years ago

I have installed meld 3.19.2-r6,osx-15 from Homebrew, and get the following error when launching from the command line:

py2app stub executable has encountered a fatal error, and will now terminate.

The Info.plist file must have a PyRuntimeLocations array containing string values for preferred Python runtime locations. These strings should be "otool -L" style mach ids; "@executable_stub" and "~" prefixes will be translated accordingly.

Launching Meld from Finder works fine.

Any ideas what's wrong here?

yousseb commented 5 years ago

Instead of using a symlink, try using an alias.

alias meld=/Applications/..path../Meld

On Thu, Jan 3, 2019 at 1:44 PM Stuart Knightley notifications@github.com wrote:

I have installed meld 3.19.2-r6,osx-15 from Homebrew, and get the following error when launching from the command line:

py2app stub executable has encountered a fatal error, and will now terminate.

The Info.plist file must have a PyRuntimeLocations array containing string values for preferred Python runtime locations. These strings should be "otool -L" style mach ids; "@executable_stub" and "~" prefixes will be translated accordingly.

Launching Meld from Finder works fine.

Any ideas what's wrong here?

β€” You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/yousseb/meld/issues/77, or mute the thread https://github.com/notifications/unsubscribe-auth/AEgDipieUUWADcFUdFSM3tsXYhFkcSi7ks5u_nmjgaJpZM4Zoz81 .

Stuk commented 5 years ago

Thank you!

It now "launches", but there's only a dock icon, which when clicked shows the Meld menu in the menubar, but no Meld window appears. Clicking "New Comparison..." doesn't do anything.

yousseb commented 5 years ago

Try running meld β€”help One time. The next time it will work

On Thu, Jan 3, 2019 at 1:57 PM Stuart Knightley notifications@github.com wrote:

Thank you!

It now "launches", but there's only a dock icon, which when clicked shows the Meld menu in the menubar, but no Meld window appears. Clicking "New Comparison..." doesn't do anything.

β€” You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/yousseb/meld/issues/77#issuecomment-451290637, or mute the thread https://github.com/notifications/unsubscribe-auth/AEgDikUbbk6O2zGIbpam60eQOydK0n-Rks5u_nzmgaJpZM4Zoz81 .

Stuk commented 5 years ago

I gave that a go, restarted, tried again, and unfortunately it's still in the same state as above.

mvp commented 5 years ago

Why symlink is crashing? 😒 It was working just fine before...

Anyway, I found solution to make git difftool work properly with meld on Mac OS Mojave: Use this in ~/.gitconfig:

[diff]
    tool = meld

[mergetool "meld"]
    path = /Applications/Meld.app/Contents/MacOS/Meld
mtjo commented 5 years ago

I have installed meld 3.19.2-r6,osx-15 from Homebrew, and get the following error when launching from the command line:

py2app stub executable has encountered a fatal error, and will now terminate. The Info.plist file must have a PyRuntimeLocations array containing string values for preferred Python runtime locations. These strings should be "otool -L" style mach ids; "@executable_stub" and "~" prefixes will be translated accordingly.

Launching Meld from Finder works fine.

Any ideas what's wrong here?

install by brew ,get same error image meld[15055:76740] The Info.plist file must have a PyRuntimeLocations array containing string values for preferred Python runtime locations. These strings should be "otool -L" style mach ids; "@executable_stub" and "~" prefixes will be translated accordingly.

there is something wrong with /usr/local/bin/meld use open -W -a Meld --args $FILE1 $FILE2 $FILE3 to compare files or create a new /usr/local/bin/meld with below content

#!/bin/bash
open -W -a Meld --args $@
mtjo commented 5 years ago

Why symlink is crashing? 😒 It was working just fine before...

Anyway, I found solution to make git difftool work properly with meld on Mac OS Mojave: Use this in ~/.gitconfig:

[diff]
    tool = meld

[mergetool "meld"]
    path = /Applications/Meld.app/Contents/MacOS/Meld

work fine with this config

[diff]
    tool = meld
    external = git-meld.sh

[difftool]
    prompt = false
[difftool "meld"]
    trustExitCode = true
    cmd = open -W -a Meld --args \"$LOCAL\" \"$PWD/$REMOTE\"
[merge]
    tool = meld
[mergetool]
    prompt = false
[mergetool "meld"]
    trustExitCode = true
    cmd = open -W -a Meld --args --auto-merge \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" --output=\"$PWD/$MERGED\"
mvp commented 5 years ago

Well, git has some knowledge about meld by default, and I wanted to make use of it as much as possible, without using any extra scripts or configs. By default, git is trying to find meld from path, but it crashes on Mojave. Setting just path as I did above makes it work for all modes: diff, merge, etc.

That said, real solution to this problem is fixing symlink to work again.

mtjo commented 5 years ago

Well, git has some knowledge about meld by default, and I wanted to make use of it as much as possible, without using any extra scripts or configs. By default, git is trying to find meld from path, but it crashes on Mojave. Setting just path as I did above makes it work for all modes: diff, merge, etc.

That said, real solution to this problem is fixing symlink to work again.

another way is to downgrade to the old version

fiendish commented 5 years ago

use open -W -a Meld --args $FILE1 $FILE2 $FILE3 to compare files or create a new /usr/local/bin/meld with below content

#!/bin/bash
open -W -a Meld --args $@

Your replacement /usr/local/bin/meld suggestion does not work for me, as it converts all paths to root-oriented instead of pwd-oriented ("foo" becomes "/foo", "../foo" becomes "/foo", etc).

Using alias meld="/Applications/Meld.app/Contents/MacOS/Meld" and just removing /usr/local/bin/meld works correctly.

Stuk commented 5 years ago

For the moment I have reverted to version 3.19.2-r3 to resolve the issue with the Meld window not appearing:

brew cask uninstall meld
brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/c7296b5939b9b785eaca28cca398d5634f7b960a/Casks/meld.rb
ploxiln commented 5 years ago

this variant of /usr/local/bin/meld works for me:

#!/bin/sh
exec /Applications/Meld.app/Contents/MacOS/Meld "$@"
fgm commented 5 years ago

None of the variants above work. Best case is with the @mtjo's solution, where the menu bar appears a few seconds after running the command from the CLI, but no window appears.

Switching on fullscreen mode causes the whole screen to go black. Same problem using either one or two screens. With two screens, only one goes black, the one containing the menu bar.

When opening a comparison from the menu, the menu navigation works normally, but no window appears.

hindol commented 5 years ago

brew cask formula has been updated now. Simply re-installing solved the issue for me.

brew cask reinstall meld
Stuk commented 5 years ago

Unfortunately pulling the latest forumla and reinstalling meld did not fix my issue :(

yousseb commented 5 years ago

I’ll make this the highest priority of the next release. My apologies, but I’m terribly busy at the moment. Give it a week to ten days (crossing fingers).

On Sun, Feb 3, 2019 at 4:01 PM Stuart Knightley notifications@github.com wrote:

Unfortunately pulling the latest forumla and reinstalling meld did not fix my issue :(

β€” You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/yousseb/meld/issues/77#issuecomment-460101341, or mute the thread https://github.com/notifications/unsubscribe-auth/AEgDik8rcj5hIuB_hjXLtHTBYNW4FEkMks5vJ3hbgaJpZM4Zoz81 .

Stuk commented 5 years ago

No worries! Thank you for your hard work :)

fgm commented 5 years ago

Just for the record, with this Meld can be started from the Applications folder, but the "meld" command line is no longer available, making it pretty much unavailable. Maybe it is possible to create a symlink to something within the app, but which file ?

ploxiln commented 5 years ago

The file is /Applications/Meld.app/Contents/MacOS/Meld but a symlink to that file does not work - apparently because the dynamic linking uses some relative paths and is confused, and the result is py2app PyRuntimeLocations error in the original report.

My technique posted above, of using a script instead of a symlink to invoke that Meld executable inside the application folder, works for me on macOS 10.13 High Sierra, but it is quite possible that it does not work on 10.12 or 10.14 (but I expect it should work for everyone on 10.13). I submitted the change to Hombrew-Cask which creates a script wrapper - and somewhat confusingly creates a symlink to the script wrapper inside the versioned cask folder in order to follow Homebrew conventions. So if you install the latest version of the Cask you should get something like this:

$ which meld
/usr/local/bin/meld
$ ls -l /usr/local/bin/meld
lrwxr-xr-x  1 yourname  admin  57 Jan 19 03:28 /usr/local/bin/meld -> /usr/local/Caskroom/meld/3.19.2-r6,osx-15/meld.wrapper.sh
$ cat /usr/local/Caskroom/meld/3.19.2-r6,osx-15/meld.wrapper.sh
#!/bin/sh
exec '/Applications/Meld.app/Contents/MacOS/Meld' "$@"

If the meld command is not working for you, I suggest reporting:

Stuk commented 5 years ago

I'm getting the same as you for those commands:

/usr/local/bin/meld
lrwxr-xr-x  1 xxxx  wheel  57 Feb  3 15:20 /usr/local/bin/meld -> /usr/local/Caskroom/meld/3.19.2-r6,osx-15/meld.wrapper.sh
/usr/local/bin/meld: POSIX shell script text executable, ASCII text
#!/bin/sh
exec '/Applications/Meld.app/Contents/MacOS/Meld' "$@"
ploxiln commented 5 years ago

Which version of macOS are you running? Are you still getting the original error text exactly?

Could you try modifying the script to something like:

#!/bin/sh
cd /Applications/Meld.app/Contents/MacOS
exec ./Meld "$@"
Stuk commented 5 years ago

I'm on 10.14.2 (18C54). I'm no longer getting the original error, but this issue:

It now "launches", but there's only a dock icon, which when clicked shows the Meld menu in the menubar, but no Meld window appears. Clicking "New Comparison..." doesn't do anything. https://github.com/yousseb/meld/issues/77#issuecomment-451290637

I tried modifying the script, but still get the same issue :(

ploxiln commented 5 years ago

I see, sorry, the wrapper script only addresses the py2app PyRuntimeLocations thing.

aminasadi0 commented 5 years ago

To run meld from terminal without py2app error or app not showing up add this to your ~/.bash_profile:

alias meld="rm -r ~/.local/share/meld ~/Library/Preferences/org.gnome.meld.plist ~/Library/Saved\ Application\ State/org.gnome.meld.savedState/; /Applications/Meld.app/Contents/MacOS/Meld"

fgm commented 5 years ago

@aminasadi0 's alias works for normal meld usage πŸ‘ .

However, the git integration doesn't work. I tried wrapping meld in a script named differently, but git knows about meld and rejects use of the script. Then I renamed the script to "meld", ensuring it was in the path before meld itself, but then meld doesn't appear.

mvp commented 5 years ago

@fgm, for git integration, adding just this to .gitconfig makes it work:

[mergetool "meld"]
path = /Applications/Meld.app/Contents/MacOS/Meld

That said, it's surprising that fixing this takes so long.

yousseb commented 5 years ago

Author here: I suggest alias meld=/Applications/Meld.app/Contents/MacOS/Meld Then call meld as usual.

It's taking so long simply because I'm the sole contributor to the OSX port (contributors welcome) and I've been too busy followed by being too sick.

fgm commented 5 years ago

@mvp / @yousseb : thanks for the suggestions, but neither work. This was my first try, but with that I gest the meld icon in the Alt-tab apps list, but nothing on the screen, even when focusing it.

m8mble commented 5 years ago

To re-state the current status on my OS X mojave 10.14.6 system:

I'm willing to help debugging this, but I'd need some help where to start searching.

Pluies commented 5 years ago

I'm running into the same issue – sometimes the meld cli invocation seems to start Meld, and the icon shows, but it doesn't bring up any window.

When this happens, I've found the following workaround to be nice enough:

@yousseb thanks heaps for your work on getting Meld to OS X, it's such a useful tool!

fgm commented 5 years ago

@m8mble how do you download that version ? I tried to do it using:

brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/7c22b43b03262a73d3f03c6bac30b5218ff5c137/Casks/meld.rb

as explained on https://www.jverdeyen.be/mac/downgrade-brew-cask-application/

but I get an error:

Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
No changes to formulae.

==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/7c22b43b03262a73d3f03c6bac30b5218ff5c137/Casks/meld.rb.
######################################################################## 100.0%
curl: (22) The requested URL returned error: 416
Warning: Unexpected method 'appcas' called on Cask movist-pro.
Follow the instructions here:
  https://github.com/Homebrew/homebrew-cask#reporting-bugs
Error: Cask 'meld' is unavailable: Failed to download https://raw.githubusercontent.com/Homebrew/homebrew-cask/7c22b43b03262a73d3f03c6bac30b5218ff5c137/Casks/meld.rb. Did you mean β€œmeld”?
m8mble commented 5 years ago

I can't say anything about the error, since that does not appear for me. I've been installing the latest meld just with

brew cask install meld

The older version (that seems to run stable for me) is provided by a different cask url. The details have been pointed out here.

fgm commented 5 years ago

@m8mble can't believe I missed that comment. Sorry about the noise. Yes, installing using that comment worked for install. Meld still doesn't work as a git difftool/mergetool, but at least plain Meld comparisons are usable again. Thanks.

yousseb commented 5 years ago

Maintainer here..

I've been away from the project for a long time due to personal issue. My brother was killed in the New Zealand terrorist attack that took place last March and it was quite devastating. https://www.stuff.co.nz/national/christchurch-shooting/111375038/osama-abu-kwaik-was-a-refugee-born-to-an-orphan-who-died-in-christchurch-the-city-he-loved

I'm resuming work on this project starting this week. A lot of things have changed as far as I see. I have to start rebuilding the environment first which usually takes a significant amount of time. I'll work over this week end and the next couple of week-ends to reproduce this same meld version but using the new toolchain. Once there, I'll work on pulling latest version of meld and catch up with upstream.

dsbecker commented 5 years ago

I'm sorry for your loss. That was a shocking situation even for those of us with no direct connection. Please take all the time you need. As much as we love Meld for Mac, your own health and personal need are more important.

It sounds like others are willing to chip in and contribute, but need some guidance on getting started. Thank you for all you do and have done.

yousseb commented 5 years ago

@dsbecker Thank you.

jhbuild for osx has seen some significant changes. This is why I'm rebuilding the toolchain and updating instructions for it. Once done I'll update the instructions and hopefully others will be able to jump in and help. I think Meld for Mac is an important piece of software and I really don't want it to die either.

yousseb commented 4 years ago

I was able to rebuild the underlying environment again. Docs updated on how to build the environment. Hopefully will be able to make a new release this weekend with meld 3.21.0 (git-dev version as on upstream).

yousseb commented 4 years ago

New release here: https://github.com/yousseb/meld/releases/tag/osx-16

This release bring some cool new features, but has some drawbacks from the underlying Gtk. I'll keep on putting some hours during the week-ends until we get to a good version, but testing would definitely help. Thank you.

I updated the build instructions for those who would like to help. To be honest, I'd like to focus on building Gtk4 with Vulkan backend + GtkSourceView 4 for the next week (which doesn't resolve issues, but will allow us to merge latest upstream & have fast rendering so that meld won't feel slow). Once this is done and upstream is merged in, I can get back to resolving OSX specific issues. If someone would like to help resolve issues while I focus on Gtk4/Vulkan/GtkSourceView4/upstream merge, it would be great.