Skip to content
This repository has been archived by the owner on Jun 24, 2022. It is now read-only.

More work to get 64-bit Mac builds of LilyPond working #69

Draft
wants to merge 20 commits into
base: master
Choose a base branch
from

Conversation

marnen
Copy link

@marnen marnen commented Oct 22, 2019

This builds on @Jahrme’s work in #64 (perfect number!). So far all the tools* stuff is building, but I’d like some help finding the logic that figures out if we’re cross-compiling, because I think I’m going to need to change it and I haven’t found it yet.

Copy link

@hahnjo hahnjo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One general question: From previous discussions, it seemed that you can't cross-build from Linux. What's the expected behavior when the user tries to?

More radically, does it really make sense to use the complicated GUB for building a native application on macOS? I really see the great idea behind a unified build system for many packages and multiple platforms. But as far as I know, LilyPond is currently the only project using GUB (correct me if I'm wrong), is there another project actively working to adopt it? If GUB now also loses the ability to build for all needed platforms (in addition to some binary packages being broken or outdated), I wonder if it's worth the development effort...

gub/config_cache.py Show resolved Hide resolved
@marnen
Copy link
Author

marnen commented Oct 22, 2019

@hahnjo:

One general question: From previous discussions, it seemed that you can't cross-build from Linux. What's the expected behavior when the user tries to?

Huh? I though all Mac and Windows releases up till now had been cross-built on Linux. The issue is that, for a combination of technical and licensing reasons, we can't do 64-bit Mac builds on Linux.

More radically, does it really make sense to use the complicated GUB for building a native application on macOS?

I've wondered this myself, but the fact seems to be that at the moment, GUB has the only build script for making a native Mac .app bundle (which involves doing things like moving dylibs around, so I'm not eager to recreate it elsewhere). Please see the discussion at http://lilypond.1069038.n5.nabble.com/macOS-64-bit-td221367.html before we rehash this.

I really see the great idea behind a unified build system for many packages and multiple platforms. But as far as I know, LilyPond is currently the only project using GUB (correct me if I'm wrong), is there another project actively working to adopt it?

I thought Inkscape was still using it (and was having some of the same Mac packaging issues!), but looking at the website, I'm not sure I'm right about that.

If GUB now also loses the ability to build for all needed platforms (in addition to some binary packages being broken or outdated), I wonder if it's worth the development effort...

I'd love for GUB to go away for a different reason: I think the LilyPond build process should be simpler than it currently is. But the fact remains that until that happens, it looks to me like GUB is the easiest way to create a native 64-bit Mac .app bundle. If you have a better idea, I'm happy to hear it—as long as it builds something that can be installed cleanly on a Mac without developer tools by a technically naïve user.

@hahnjo
Copy link

hahnjo commented Oct 22, 2019

@hahnjo:

One general question: From previous discussions, it seemed that you can't cross-build from Linux. What's the expected behavior when the user tries to?

Huh? I though all Mac and Windows releases up till now had been cross-built on Linux. The issue is that, for a combination of technical and licensing reasons, we can't do 64-bit Mac builds on Linux.

Yes, sorry for being unclear: Up to now, the binary packages were cross-built from Linux, that's also my understanding. But exactly that won't be possible for darwin-64 for the reasons you stated.

More radically, does it really make sense to use the complicated GUB for building a native application on macOS?

I've wondered this myself, but the fact seems to be that at the moment, GUB has the only build script for making a native Mac .app bundle (which involves doing things like moving dylibs around, so I'm not eager to recreate it elsewhere). Please see the discussion at http://lilypond.1069038.n5.nabble.com/macOS-64-bit-td221367.html before we rehash this.

There surely must be other (open) projects creating .app bundles, no?

I really see the great idea behind a unified build system for many packages and multiple platforms. But as far as I know, LilyPond is currently the only project using GUB (correct me if I'm wrong), is there another project actively working to adopt it?

I thought Inkscape was still using it (and was having some of the same Mac packaging issues!), but looking at the website, I'm not sure I'm right about that.

There was a spec for Inkscape, but it was 2 repositories behind and I've removed it in 79a8000.

If GUB now also loses the ability to build for all needed platforms (in addition to some binary packages being broken or outdated), I wonder if it's worth the development effort...

I'd love for GUB to go away for a different reason: I think the LilyPond build process should be simpler than it currently is. But the fact remains that until that happens, it looks to me like GUB is the easiest way to create a native 64-bit Mac .app bundle. If you have a better idea, I'm happy to hear it—as long as it builds something that can be installed cleanly on a Mac without developer tools by a technically naïve user.

I don't have a concrete proposal right now, and no Mac either to help with any of this activities. I've tried to find out which binary packages would be required going forward, but the response on lilypond-dev has been that targets should not be dropped unless already broken.

@marnen
Copy link
Author

marnen commented Oct 22, 2019

@hahnjo:

There surely must be other (open) projects creating .app bundles, no?

Not for LilyPond AFAIK. The GUB builds have been the one and only source of LilyPond.app that I'm aware of.

no Mac either to help with any of this activities.

I set up a build environment at MacStadium largely so this would no longer be an issue. I wasn't planning to give other people access to it just yet (I'm hoping to get the builds working before I do that), but if you feel like it would be useful to play around, contact me and we'll figure something out.

I've tried to find out which binary packages would be required going forward, but the response on lilypond-dev has been that targets should not be dropped unless already broken.

I have no idea what you are saying here.

@hahnjo
Copy link

hahnjo commented Oct 22, 2019

@hahnjo:

There surely must be other (open) projects creating .app bundles, no?

Not for LilyPond AFAIK. The GUB builds have been the one and only source of LilyPond.app that I'm aware of.

No, but for other open-source projects. And they won't have it that complicated as GUB has it.

no Mac either to help with any of this activities.

I set up a build environment at MacStadium largely so this would no longer be an issue. I wasn't planning to give other people access to it just yet (I'm hoping to get the builds working before I do that), but if you feel like it would be useful to play around, contact me and we'll figure something out.

I've tried to find out which binary packages would be required going forward, but the response on lilypond-dev has been that targets should not be dropped unless already broken.

I have no idea what you are saying here.

Please see this thread: https://lists.gnu.org/archive/html/lilypond-devel/2019-10/msg00045.html

@hahnjo
Copy link

hahnjo commented Oct 22, 2019

@hahnjo:

There surely must be other (open) projects creating .app bundles, no?

Not for LilyPond AFAIK. The GUB builds have been the one and only source of LilyPond.app that I'm aware of.

No, but for other open-source projects. And they won't have it that complicated as GUB has it.

[ Disclaimer: I don't have a Mac, just looking around for now. ]
Okay, .app bundles just seem to a directory, see https://stackoverflow.com/a/3251285. What GUB does is to download http://lilypond.org/downloads/gub-sources/osx-lilypad-universal/osx-lilypad-universal-0.6.3.tar.gz (which was probably built on a Mac and contains the right structure) and change some bits around here: https://github.com/gperciva/gub/blob/master/gub/installer.py#L307

@marnen
Copy link
Author

marnen commented Oct 22, 2019

@hahnjo:

No, but for other open-source projects. And they won't have it that complicated as GUB has it.

You'd be surprised. I would have thought so too, but I've found relatively little, and anyway, the script in GUB is already customized for the LilyPond project, so why wouldn't I use it?

Besides, as long as the other releases are using GUB, I kind of like the idea of using the same build process rather than making things too divergent. In principle I think we could cross-compile the Linux and Windows builds on a Mac if we wanted to, although I haven't tried that.

So: I don't like GUB that much, but I like less the idea of having the build processes diverge too much. Can we abandon GUB and still have a unified build process? (Eventually, of course we can. But my priority now is getting a 64-bit Mac build happening, not revamping LilyPond's entire build process on all platforms.)

@marnen
Copy link
Author

marnen commented Oct 22, 2019

@hahnjo:

[ Disclaimer: I don't have a Mac, just looking around for now. ]
Okay, .app bundles just seem to a directory
...

Correct, and yes I’ve seen that Stack Overflow post about moving libraries around. :)

What GUB does is to download http://lilypond.org/downloads/gub-sources/osx-lilypad-universal/osx-lilypad-universal-0.6.3.tar.gz (which was probably built on a Mac and contains the right structure) and change some bits around here: https://github.com/gperciva/gub/blob/master/gub/installer.py#L307

No, I think there's more to it than that. In particular, LilyPond needs a lot of dylibs moved into the .app bundle (which LilyPad presumably wouldn't have, or at least wouldn't itself need to have). I think, but am not positive, that Rewirer does that.

@hahnjo
Copy link

hahnjo commented Oct 22, 2019

@marnen sorry for chiming in, thought I could help

@marnen
Copy link
Author

marnen commented Oct 22, 2019

@hahnjo Don’t apologize! I really appreciate your input here, and you may well be able to help.

@marnen
Copy link
Author

marnen commented Oct 22, 2019

@hahnjo Actually, you have helped already. You’ve gotten me to think seriously about how hard it would be to build the .app bundle without GUB. Perhaps I should give it a try before I completely discount it.

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

Successfully merging this pull request may close these issues.

4 participants