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

Mac OS X maintainer #1583

Open
dorkster opened this Issue Feb 24, 2018 · 86 comments

Comments

Projects
None yet
6 participants
@dorkster
Collaborator

dorkster commented Feb 24, 2018

Opening this thread for anyone that would like to create the .dmg files for Mac OS X. This includes both the engine and the engine+game files.

@dorkster dorkster added this to the Pre-1.0 milestone Feb 24, 2018

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 3, 2018

What's involved here? I've got a fair amount of experience compiling software as a Unix/Linux Sysadmin over the last quarter century.

tvleavitt commented Mar 3, 2018

What's involved here? I've got a fair amount of experience compiling software as a Unix/Linux Sysadmin over the last quarter century.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 3, 2018

Collaborator

I know practically nothing about Mac OS development. Maybe @clintbellanger can at least explain, how 0.19 was built and packaged. I suspect the most notable change for the current engine would be swapping out SDL 1.2 for SDL 2.

I don't know if a dmg is just a plain archive, or if there's more to it. If the files that would need to be added are similar to the Windows zips, the dmgs should look like this:

Engine

flare executable
SDL 2 libraries, akin to Windows .dlls
COPYING
CREDITS.engine.txt
README.engine.md
RELEASE_NOTES.txt
mods/mods.txt
mods/default/

Engine + Game

(everything from the engine)
README.md (part of flare-game)
CREDITS.txt (part of flare-game)
mods/fantasycore/ (part of flare-game)
mods/empyrean_campaign/ (part of flare-game)
mods/centered_statbars/ (part of flare-game)
Collaborator

dorkster commented Mar 3, 2018

I know practically nothing about Mac OS development. Maybe @clintbellanger can at least explain, how 0.19 was built and packaged. I suspect the most notable change for the current engine would be swapping out SDL 1.2 for SDL 2.

I don't know if a dmg is just a plain archive, or if there's more to it. If the files that would need to be added are similar to the Windows zips, the dmgs should look like this:

Engine

flare executable
SDL 2 libraries, akin to Windows .dlls
COPYING
CREDITS.engine.txt
README.engine.md
RELEASE_NOTES.txt
mods/mods.txt
mods/default/

Engine + Game

(everything from the engine)
README.md (part of flare-game)
CREDITS.txt (part of flare-game)
mods/fantasycore/ (part of flare-game)
mods/empyrean_campaign/ (part of flare-game)
mods/centered_statbars/ (part of flare-game)
@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 3, 2018

Hmm... well, I was able to pull the source from GitHub, and successfully build and run the code (0.95.19), and creating a DMG looks to be pretty trivial, so I suspect all I need is a list of what should be contained in the DMG and I'll be good to go.

tvleavitt commented Mar 3, 2018

Hmm... well, I was able to pull the source from GitHub, and successfully build and run the code (0.95.19), and creating a DMG looks to be pretty trivial, so I suspect all I need is a list of what should be contained in the DMG and I'll be good to go.

@clintbellanger

This comment has been minimized.

Show comment
Hide comment
@clintbellanger

clintbellanger Mar 3, 2018

Collaborator

Maybe you can grab a prebuilt copy of 0.18 or 0.19 to see how the DMG was structured.
Besides all those data files listed above, I remember needing to put a copy of the main Libraries / Frameworks in the DMG. Version 2 of these:

  • SDL,
  • SDL_image
  • SDL_mixer
  • SDL_ttf
Collaborator

clintbellanger commented Mar 3, 2018

Maybe you can grab a prebuilt copy of 0.18 or 0.19 to see how the DMG was structured.
Besides all those data files listed above, I remember needing to put a copy of the main Libraries / Frameworks in the DMG. Version 2 of these:

  • SDL,
  • SDL_image
  • SDL_mixer
  • SDL_ttf
@clintbellanger

This comment has been minimized.

Show comment
Hide comment
@clintbellanger

clintbellanger Mar 3, 2018

Collaborator

I always cobbled the DMG together manually. If you (or anyone) knows how to make a script that will create the DMG perfectly each time, we'd love to add it to this repo.

Collaborator

clintbellanger commented Mar 3, 2018

I always cobbled the DMG together manually. If you (or anyone) knows how to make a script that will create the DMG perfectly each time, we'd love to add it to this repo.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 4, 2018

I'll take a look at the previous DMG. Should I build it based on the current release, 0.95.19?

tvleavitt commented Mar 4, 2018

I'll take a look at the previous DMG. Should I build it based on the current release, 0.95.19?

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 4, 2018

Collaborator

Since we're finished the first week of our 2-week testing period, I've bumped the version to 0.96 for both engine and game. So please use that tag.

Collaborator

dorkster commented Mar 4, 2018

Since we're finished the first week of our 2-week testing period, I've bumped the version to 0.96 for both engine and game. So please use that tag.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 10, 2018

Collaborator

Today is the last day of our testing period. The original plan was to tag 1.0 tomorrow and get the binaries ready, However, @gunchleoc asked me for an extension to finish his translation.

So @tvleavitt, if I tagged 1.0 on Monday, do you think you could get the DMG files made and sent to me the same day? I think we will release no matter what on Monday, but I would like the Mac OS release to be simultaneous.

Collaborator

dorkster commented Mar 10, 2018

Today is the last day of our testing period. The original plan was to tag 1.0 tomorrow and get the binaries ready, However, @gunchleoc asked me for an extension to finish his translation.

So @tvleavitt, if I tagged 1.0 on Monday, do you think you could get the DMG files made and sent to me the same day? I think we will release no matter what on Monday, but I would like the Mac OS release to be simultaneous.

@dorkster dorkster modified the milestones: Pre-1.0, Post-1.0 Mar 12, 2018

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 12, 2018

Collaborator

@gunchleoc finished his translation, so I've tagged 1.0 tonight. We'll be releasing tomorrow, so getting DMGs for the engine and game soon would be much appreciated.

Collaborator

dorkster commented Mar 12, 2018

@gunchleoc finished his translation, so I've tagged 1.0 tonight. We'll be releasing tomorrow, so getting DMGs for the engine and game soon would be much appreciated.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 12, 2018

I'll work on this tomorrow afternoon, then. Will provide update around 5 p.m. or so.

Edit: I took a peek at this, just before going to bed.

So, this is what is in the 0.19 Engine + Alpha Demo DMG:

COPYING
CREDITS.txt
Flare.app
README
RELEASE_NOTES.txt
(plus misc. OS X system files that I doubt are relevant)

I see no SDL or other libraries. I see no "mods" directory.

The executable produced by running cmake / make is "flare". Not Flare.app.

My main question at this point would be, how do I create a .app file, and what would go into it? Or do we want to create a .pkg file instead, and have people run that, instead of dragging and dropping the monolithic executable?

tvleavitt commented Mar 12, 2018

I'll work on this tomorrow afternoon, then. Will provide update around 5 p.m. or so.

Edit: I took a peek at this, just before going to bed.

So, this is what is in the 0.19 Engine + Alpha Demo DMG:

COPYING
CREDITS.txt
Flare.app
README
RELEASE_NOTES.txt
(plus misc. OS X system files that I doubt are relevant)

I see no SDL or other libraries. I see no "mods" directory.

The executable produced by running cmake / make is "flare". Not Flare.app.

My main question at this point would be, how do I create a .app file, and what would go into it? Or do we want to create a .pkg file instead, and have people run that, instead of dragging and dropping the monolithic executable?

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 12, 2018

I'm finished with my morning client; am free most of the day, I'll try and figure this out, but guidance would speed up the process considerably, I suspect.

tvleavitt commented Mar 12, 2018

I'm finished with my morning client; am free most of the day, I'll try and figure this out, but guidance would speed up the process considerably, I suspect.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 12, 2018

Collaborator

I think the Flare.app file is a package that contains

  • the mods directory
  • a "MacOS" folder with the actual flare executable (and probably SDL libs) inside of it. Apparently, you can browse this via "Show Package Contents" in Finder
Collaborator

dorkster commented Mar 12, 2018

I think the Flare.app file is a package that contains

  • the mods directory
  • a "MacOS" folder with the actual flare executable (and probably SDL libs) inside of it. Apparently, you can browse this via "Show Package Contents" in Finder
@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 12, 2018

Got it. See that now. Just have to figure out how to create the package.

tvleavitt commented Mar 12, 2018

Got it. See that now. Just have to figure out how to create the package.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 12, 2018

Building Info.plist.

What do I put for these (optional)? No values in previous Info.plist.

LSMinimumSystemVersion (Minimum system version) The minimum version of macOS required for this application to run. The value for this key is a string of the form n.n.n where each n is a number representing either the major or minor version number of macOS that is required. For example, the value 10.1.5 would represent macOS v10.1.5.
NSHumanReadableCopyright (Copyright (human-readable)) The copyright notice for the application. This is a human readable string and can be localized by including the key in an InfoPlist.strings file in your language-specific project directories.

Have the following changed?

NSMainNibFile (Main nib file base name) The nib file to load when the application is launched (without the .nib filename extension). The main nib file is an Interface Builder archive containing the objects (main window, application delegate, and so on) needed at launch time.
NSPrincipalClass (Principal class) The entry point for dynamically loaded Objective-C code. For an application bundle, this is almost always the NSApplication class or a custom subclass.

Here's what's there now:

    <key>NSMainNibFile</key>
<string>SDLMain</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>

I'm building the package by hand (will turn it into a script), trying to figure out how to do it via XCode seems like a lot of overhead for a one-off project like this.

https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

tvleavitt commented Mar 12, 2018

Building Info.plist.

What do I put for these (optional)? No values in previous Info.plist.

LSMinimumSystemVersion (Minimum system version) The minimum version of macOS required for this application to run. The value for this key is a string of the form n.n.n where each n is a number representing either the major or minor version number of macOS that is required. For example, the value 10.1.5 would represent macOS v10.1.5.
NSHumanReadableCopyright (Copyright (human-readable)) The copyright notice for the application. This is a human readable string and can be localized by including the key in an InfoPlist.strings file in your language-specific project directories.

Have the following changed?

NSMainNibFile (Main nib file base name) The nib file to load when the application is launched (without the .nib filename extension). The main nib file is an Interface Builder archive containing the objects (main window, application delegate, and so on) needed at launch time.
NSPrincipalClass (Principal class) The entry point for dynamically loaded Objective-C code. For an application bundle, this is almost always the NSApplication class or a custom subclass.

Here's what's there now:

    <key>NSMainNibFile</key>
<string>SDLMain</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>

I'm building the package by hand (will turn it into a script), trying to figure out how to do it via XCode seems like a lot of overhead for a one-off project like this.

https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 12, 2018

Collaborator

I think @clintbellanger used XCode to do the old builds, so I don't know much about those fields. I would leave the first blank and if we get any old Mac users complaining they can't run the game. NSMainNibFile is probably the same as it was before.

Collaborator

dorkster commented Mar 12, 2018

I think @clintbellanger used XCode to do the old builds, so I don't know much about those fields. I would leave the first blank and if we get any old Mac users complaining they can't run the game. NSMainNibFile is probably the same as it was before.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 12, 2018

InfoPlist.strings from 0.19

/* Localized versions of Info.plist keys */

CFBundleName = "Flare";
CFBundleShortVersionString = "Flare version 0.1";
CFBundleGetInfoString = "Flare version 0.1, Copyright 2013 Clint Bellanger.";
NSHumanReadableCopyright = "Copyright 2013 Clint Bellanger.";

Would this update to

/* Localized versions of Info.plist keys */

CFBundleName = "Flare";
CFBundleShortVersionString = "Flare version 1.0";
CFBundleGetInfoString = "Flare version 1.0, Copyright 2018 Clint Bellanger.";
NSHumanReadableCopyright = "Copyright 2018 Clint Bellanger.";

?

tvleavitt commented Mar 12, 2018

InfoPlist.strings from 0.19

/* Localized versions of Info.plist keys */

CFBundleName = "Flare";
CFBundleShortVersionString = "Flare version 0.1";
CFBundleGetInfoString = "Flare version 0.1, Copyright 2013 Clint Bellanger.";
NSHumanReadableCopyright = "Copyright 2013 Clint Bellanger.";

Would this update to

/* Localized versions of Info.plist keys */

CFBundleName = "Flare";
CFBundleShortVersionString = "Flare version 1.0";
CFBundleGetInfoString = "Flare version 1.0, Copyright 2018 Clint Bellanger.";
NSHumanReadableCopyright = "Copyright 2018 Clint Bellanger.";

?

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 12, 2018

Collaborator

Yes. Looks like it was made for the first Mac OS build and then forgotten about.

Collaborator

dorkster commented Mar 12, 2018

Yes. Looks like it was made for the first Mac OS build and then forgotten about.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 12, 2018

I think I have everything. I looks like I have to manually create the SDL_xxxxx.framework files, working on that now. Then, obviously, testing.

tvleavitt commented Mar 12, 2018

I think I have everything. I looks like I have to manually create the SDL_xxxxx.framework files, working on that now. Then, obviously, testing.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 12, 2018

Great; SDL wiki page says I'm right. I don't see SDL in either /Library/Frameworks or ~/Library/Frameworks. I'm going to see if I can download them from somewhere... manually assembling these seems... sketchy.

http://overooped.com/post/42240519/properly-bundling-frameworks-in-your-application

tvleavitt commented Mar 12, 2018

Great; SDL wiki page says I'm right. I don't see SDL in either /Library/Frameworks or ~/Library/Frameworks. I'm going to see if I can download them from somewhere... manually assembling these seems... sketchy.

http://overooped.com/post/42240519/properly-bundling-frameworks-in-your-application

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 13, 2018

I downloaded DMG files for the appropriate SDL libraries and copied them over.

I don't see an application icon file in the original Flare.app build. I'm building a Flare.app and Flare-engine.app folder for Flare and Flare-engine, along with associated DMG files. What do I do here? Like, 1.0 should have an icon. I can repurpose something else if I'm pointed to it.

The Application Icon File

One special resource that belongs in your top-level Resources directory is your application icon file. By convention, this file takes the name of the bundle and an extension of .icns; the image format can be any supported type, but if no extension is specified, the system assumes .icns.

tvleavitt commented Mar 13, 2018

I downloaded DMG files for the appropriate SDL libraries and copied them over.

I don't see an application icon file in the original Flare.app build. I'm building a Flare.app and Flare-engine.app folder for Flare and Flare-engine, along with associated DMG files. What do I do here? Like, 1.0 should have an icon. I can repurpose something else if I'm pointed to it.

The Application Icon File

One special resource that belongs in your top-level Resources directory is your application icon file. By convention, this file takes the name of the bundle and an extension of .icns; the image format can be any supported type, but if no extension is specified, the system assumes .icns.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster
Collaborator

dorkster commented Mar 13, 2018

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 13, 2018

This is what I get when I try to launch the Flare.app at this point.

flare error ss

tvleavitt commented Mar 13, 2018

This is what I get when I try to launch the Flare.app at this point.

flare error ss

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 13, 2018

Collaborator

Where did you put the mods folder in the Flare.app? It might need to be alongside the actual executable.

Collaborator

dorkster commented Mar 13, 2018

Where did you put the mods folder in the Flare.app? It might need to be alongside the actual executable.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 13, 2018

Resources/mods as in original 0.19 DMG Flare.app package.

tvleavitt commented Mar 13, 2018

Resources/mods as in original 0.19 DMG Flare.app package.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 13, 2018

Collaborator

If you're building with cmake you may need to add -DDATADIR=Resources. If you're not using cmake, you'll need to define DATA_INSTALL_DIR. In our cmake file, DATA_INSTALL_DIR is set to ${CMAKE_INSTALL_PREFIX}/${DATADIR}.

Collaborator

dorkster commented Mar 13, 2018

If you're building with cmake you may need to add -DDATADIR=Resources. If you're not using cmake, you'll need to define DATA_INSTALL_DIR. In our cmake file, DATA_INSTALL_DIR is set to ${CMAKE_INSTALL_PREFIX}/${DATADIR}.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 13, 2018

Here's Wesnoth's info on how to compile with XCode. They also use SDL.

https://wiki.wesnoth.org/CompilingWesnothOnMacOSX#Build_using_XCode

tvleavitt commented Mar 13, 2018

Here's Wesnoth's info on how to compile with XCode. They also use SDL.

https://wiki.wesnoth.org/CompilingWesnothOnMacOSX#Build_using_XCode

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 13, 2018

Collaborator

In regards to the cmake version, I just wanted to make sure all of us could make the official binaries that we provide. Other users wanting to compile from source isn't much of a concern for us. Especially on Mac OS where the number of users self-compiling is likely much less than Windows/Linux.

Do you have any examples of Mac programs that are distributed as a "pkg"? I presume that would just be an archive with the executable and game data in it. That would be similar to Flare's Windows zip bundle, which I think is acceptable. Might be weird for pre-1.0 Mac users to no longer have a fancy .app, though.

Collaborator

dorkster commented Mar 13, 2018

In regards to the cmake version, I just wanted to make sure all of us could make the official binaries that we provide. Other users wanting to compile from source isn't much of a concern for us. Especially on Mac OS where the number of users self-compiling is likely much less than Windows/Linux.

Do you have any examples of Mac programs that are distributed as a "pkg"? I presume that would just be an archive with the executable and game data in it. That would be similar to Flare's Windows zip bundle, which I think is acceptable. Might be weird for pre-1.0 Mac users to no longer have a fancy .app, though.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 13, 2018

Adobe Digital Editions, for example (their DRM manager for eLibrary checkouts) comes as a pkg, and that's definitely consumer facing. This isn't super unusual, in my opinion. Now, they do use a formal "installer" package (common with this method of software distribution), but their app still requires the CMD key to be held down and "Open With" installer to get around Apple's default installation security.

screen shot 2018-03-13 at 2 57 31 pm

https://www.adobe.com/solutions/ebook/digital-editions/download.html

Also, I haven't set up the DMG with any fancy background, etc. I can look at that later on, too.

tvleavitt commented Mar 13, 2018

Adobe Digital Editions, for example (their DRM manager for eLibrary checkouts) comes as a pkg, and that's definitely consumer facing. This isn't super unusual, in my opinion. Now, they do use a formal "installer" package (common with this method of software distribution), but their app still requires the CMD key to be held down and "Open With" installer to get around Apple's default installation security.

screen shot 2018-03-13 at 2 57 31 pm

https://www.adobe.com/solutions/ebook/digital-editions/download.html

Also, I haven't set up the DMG with any fancy background, etc. I can look at that later on, too.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 14, 2018

O.K. DMGs created, uploaded to Google Drive, link shared.

tvleavitt commented Mar 14, 2018

O.K. DMGs created, uploaded to Google Drive, link shared.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 14, 2018

I think you're misinterpreting the example included in the link to the cmake documentation above; I'm pretty sure that items placed in Resources retain their directory structure, that's defined by Apple for MacOS apps, not cmake. I think the example just doesn't include a Resource contained in a directory.

Why would including the game mods via cmake be a big deal? You can do this differently, depending on whether you're building Flare or just the Engine.

tvleavitt commented Mar 14, 2018

I think you're misinterpreting the example included in the link to the cmake documentation above; I'm pretty sure that items placed in Resources retain their directory structure, that's defined by Apple for MacOS apps, not cmake. I think the example just doesn't include a Resource contained in a directory.

Why would including the game mods via cmake be a big deal? You can do this differently, depending on whether you're building Flare or just the Engine.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 14, 2018

Collaborator

I think you're misinterpreting the example included in the link to the cmake documentation above; I'm pretty sure that items placed in Resources retain their directory structure, that's defined by Apple for MacOS apps, not cmake. I think the example just doesn't include a Resource contained in a directory.

I'd be glad if I was misinterpreting this, but the example has a file that's in a directory, appresourcedir/appres.txt. Included as such, the output shows that this file gets placed at Resources/appres.txt, when we would expect it to be at Resources/appresourcedir/appres.txt.

Why would including the game mods via cmake be a big deal? You can do this differently, depending on whether you're building Flare or just the Engine.

You're right. As long as looking for and including the game data is done in a way that won't affect building the engine alone, there is no issue there.

Collaborator

dorkster commented Mar 14, 2018

I think you're misinterpreting the example included in the link to the cmake documentation above; I'm pretty sure that items placed in Resources retain their directory structure, that's defined by Apple for MacOS apps, not cmake. I think the example just doesn't include a Resource contained in a directory.

I'd be glad if I was misinterpreting this, but the example has a file that's in a directory, appresourcedir/appres.txt. Included as such, the output shows that this file gets placed at Resources/appres.txt, when we would expect it to be at Resources/appresourcedir/appres.txt.

Why would including the game mods via cmake be a big deal? You can do this differently, depending on whether you're building Flare or just the Engine.

You're right. As long as looking for and including the game data is done in a way that won't affect building the engine alone, there is no issue there.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 14, 2018

Collaborator

Nonetheless, the Mac version is now up on the Flare site. Thanks again for working on this.

Collaborator

dorkster commented Mar 14, 2018

Nonetheless, the Mac version is now up on the Flare site. Thanks again for working on this.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 16, 2018

I wrote up detailed documentation, and uploaded all the files and images used to build the DMGs and the apps to the shared folder where I originally uploaded the DMGs themselves. I suggest pulling these down and dropping them into GitHub somewhere. I documented and included the scripts used to build the DMG, along with links to the create-dmg software (FLOSS), but I did not write up a script to automatically build the .app folders themselves, as it seems like we should be doing this via cmake or XCode due to the icns display issue.

tvleavitt commented Mar 16, 2018

I wrote up detailed documentation, and uploaded all the files and images used to build the DMGs and the apps to the shared folder where I originally uploaded the DMGs themselves. I suggest pulling these down and dropping them into GitHub somewhere. I documented and included the scripts used to build the DMG, along with links to the create-dmg software (FLOSS), but I did not write up a script to automatically build the .app folders themselves, as it seems like we should be doing this via cmake or XCode due to the icns display issue.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 16, 2018

Collaborator

I've added your docs (and the .app background image) to distribution/macos/.

Last night, I made an itch.io page for Flare and included, among others, the Mac OS build. At least on Linux, the itch app is a nice way to download, install and run the binary version. But I'm not sure if it works with the DMG file. Could you test? If not, maybe we should have a plain ZIP file for itch. In fact, maybe installing through the itch app becomes the "user friendly" distribution method, while the ZIP itself is there for more advanced users (or users that don't like itch).

Collaborator

dorkster commented Mar 16, 2018

I've added your docs (and the .app background image) to distribution/macos/.

Last night, I made an itch.io page for Flare and included, among others, the Mac OS build. At least on Linux, the itch app is a nice way to download, install and run the binary version. But I'm not sure if it works with the DMG file. Could you test? If not, maybe we should have a plain ZIP file for itch. In fact, maybe installing through the itch app becomes the "user friendly" distribution method, while the ZIP itself is there for more advanced users (or users that don't like itch).

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 17, 2018

Installed the Itch app, installed Flare through it. Worked fine. It installs the contents of the DMG to ~/Library/Application Support/itch/apps/Flare Empyrean Campaign, which is honestly kind of weird to me as a location where potentially a significant number of binary files and associated data could wind up.

tvleavitt commented Mar 17, 2018

Installed the Itch app, installed Flare through it. Worked fine. It installs the contents of the DMG to ~/Library/Application Support/itch/apps/Flare Empyrean Campaign, which is honestly kind of weird to me as a location where potentially a significant number of binary files and associated data could wind up.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 17, 2018

Collaborator

Cool that it works with DMGs.

It installs the contents of the DMG to ~/Library/Application Support/itch/apps/Flare Empyrean Campaign, which is honestly kind of weird to me as a location where potentially a significant number of binary files and associated data could wind up.

Yeah, that's pretty much how the itch app does things. On Linux, it uses ~/.config/itch/apps/

Collaborator

dorkster commented Mar 17, 2018

Cool that it works with DMGs.

It installs the contents of the DMG to ~/Library/Application Support/itch/apps/Flare Empyrean Campaign, which is honestly kind of weird to me as a location where potentially a significant number of binary files and associated data could wind up.

Yeah, that's pretty much how the itch app does things. On Linux, it uses ~/.config/itch/apps/

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 19, 2018

FYI, the binary is built following the instructions in INSTALL.engine.md, specifically, installation of the dependencies.

OS X

Installing dependencies using [Homebrew]:

brew install cmake libvorbis sdl2 sdl2_image sdl2_mixer sdl2_ttf

I'm testing the install on my laptop, which doesn't have these installed. I don't think...

tvleavitt commented Mar 19, 2018

FYI, the binary is built following the instructions in INSTALL.engine.md, specifically, installation of the dependencies.

OS X

Installing dependencies using [Homebrew]:

brew install cmake libvorbis sdl2 sdl2_image sdl2_mixer sdl2_ttf

I'm testing the install on my laptop, which doesn't have these installed. I don't think...

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 19, 2018

This is what attempting to lauch via itch.io spits out on start on my laptop. Crash. Lots of noise.

[2018-03-19 @ 13:09:00.463] [configure] configuring /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign
[2018-03-19 @ 13:09:00.831] [configure/osx] path elements: ["Applications","Adobe Acrobat Reader DC.app",""]
[...skip evaluation of every app directory in Applications as above...]
[2018-03-19 @ 13:09:01.097] [configure/osx] path elements: ["Flare.app",""]
[2018-03-19 @ 13:09:01.100] [configure/osx] Flare.app/: Looks like the real thing!
[2018-03-19 @ 13:09:02.129] [configure/common] Contents/Resources/mods/fantasycore/languages/xgettext.py: is macExecutable, already executable
[2018-03-19 @ 13:09:02.133] [configure/common] Contents/Resources/mods/fantasycore/languages/regenerate_po.sh: is macExecutable, already executable
[2018-03-19 @ 13:09:02.137] [configure/common] Contents/Resources/mods/fantasycore/languages/readme.txt: is macExecutable, already executable
[2018-03-19 @ 13:09:04.887] [configure/common] Contents/Resources/mods/empyrean_campaign/languages/xgettext.py: is macExecutable, already executable
[2018-03-19 @ 13:09:04.888] [configure/common] Contents/Resources/mods/empyrean_campaign/languages/regenerate_po.sh: is macExecutable, already executable
[2018-03-19 @ 13:09:04.892] [configure/common] Contents/Resources/mods/empyrean_campaign/languages/readme.txt: is macExecutable, chmod +x
[2018-03-19 @ 13:09:05.580] [configure/common] Contents/Resources/mods/default/languages/regenerate_po.sh: is macExecutable, already executable
[2018-03-19 @ 13:09:05.580] [configure/common] Contents/Resources/mods/default/languages/xgettext.py: is macExecutable, already executable
[2018-03-19 @ 13:09:05.788] [configure/common] Contents/MacOS/Flare: is macExecutable, already executable
[2018-03-19 @ 13:09:05.795] [configure/common] Contents/Frameworks/SDL2.framework/Versions/A/SDL2: is macExecutable, chmod +x
[2018-03-19 @ 13:09:05.968] [configure/common] Contents/Frameworks/SDL2_ttf.framework/Versions/A/SDL2_ttf: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.121] [configure/common] Contents/Frameworks/SDL2_ttf.framework/Versions/A/Frameworks/FreeType.framework/Versions/A/FreeType: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.158] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/SDL2_mixer: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.173] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/Vorbis.framework/Versions/A/Vorbis: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.214] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/Ogg.framework/Versions/A/Ogg: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.238] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/mpg123.framework/Versions/A/mpg123: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.266] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/modplug.framework/Versions/A/modplug: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.318] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/FLAC.framework/Versions/A/FLAC: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.355] [configure/common] Contents/Frameworks/SDL2_image.framework/Versions/A/SDL2_image: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.370] [configure/common] Contents/Frameworks/SDL2_image.framework/Versions/A/Frameworks/webp.framework/Versions/A/webp: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.404] [configure/common] 12 executables/libraries were missing the executable bit
[2018-03-19 @ 13:09:06.407] [configure] native-configure yielded execs: [
"Flare.app//"
]
[2018-03-19 @ 13:09:06.410] [configure/compute-size] computing size of /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign
[2018-03-19 @ 13:09:06.479] [configure] total size of /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign: 153.92 MB (161394032 bytes)
[2018-03-19 @ 13:09:21.581] [launch] itch 23.6.1 launching game 235218: Flare: Empyrean Campaign
[2018-03-19 @ 13:09:21.581] [launch] looking for manifest @ "/Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/.itch.toml"
[2018-03-19 @ 13:09:21.582] [launch] No manifest found (no '.itch.toml' file in top-level directory). Proceeding with heuristics.
[2018-03-19 @ 13:09:21.582] [launch] launching prepare for native
[2018-03-19 @ 13:09:21.583] [prepare/native] not on windows, nothing to do
[2018-03-19 @ 13:09:21.587] [launch/native] cave location: "appdata/Flare Empyrean Campaign"
[2018-03-19 @ 13:09:21.589] [launch/native] no manifest action picked
[2018-03-19 @ 13:09:21.592] [launch/poker] initial candidate set: [
{
"path": "Flare.app//",
"weight": 0,
"depth": 0,
"score": 0
}
]
[2018-03-19 @ 13:09:21.606] [launch/poker] candidates after poking: [
{
"path": "Flare.app//",
"weight": 96,
"depth": 2,
"score": 100
}
]
[2018-03-19 @ 13:09:21.606] [launch/poker] candidates after sorting: [
{
"path": "Flare.app//",
"weight": 96,
"depth": 2,
"score": 100
}
]
[2018-03-19 @ 13:09:21.606] [launch/native] executing '/Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/' on 'osx' with args ''
[2018-03-19 @ 13:09:21.607] [spawn] spawning activate with args --print-bundle-executable-path /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/
[2018-03-19 @ 13:09:21.659] [launch/native] no app isolation
[2018-03-19 @ 13:09:21.661] [launch/native] spawn command: open -W "/Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/" --args
[2018-03-19 @ 13:09:21.661] [launch/native] working directory: /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/Contents/MacOS
[2018-03-19 @ 13:09:21.663] [launch/native] command: open
[2018-03-19 @ 13:09:21.663] [launch/native] args: [
"-W",
"/Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/",
"--args"
]
[2018-03-19 @ 13:09:21.663] [launch/native] env keys: [
"TMP",
"TEMP"
]
[2018-03-19 @ 13:09:21.960] [launch/native] err: LSOpenURLsWithRole() failed with error -10810 for the file /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app.
[2018-03-19 @ 13:09:22.011] [launch] error while launching 2954af2a-d64d-445f-99d4-31d144511bb2: application crashed. process exited with code 1
[2018-03-19 @ 13:09:22.014] [launch] crashed with
[2018-03-19 @ 13:09:22.014] [launch] application crashed. process exited with code 1
[2018-03-19 @ 13:09:22.015] [diego] diego here, looking around
Darwin 880-IT-MBA.private 17.4.0 Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64 x86_64
ProductName: Mac OS X
ProductVersion: 10.13.3
BuildVersion: 17D102
Hardware:

Hardware Overview:

  Model Name: MacBook Air
  Model Identifier: MacBookAir7,2
  Processor Name: Intel Core i7
  Processor Speed: 2.2 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 4 MB
  Memory: 8 GB
  Boot ROM Version: MBA71.0171.B00
  SMC Version (system): 2.27f2
  Serial Number (system): C1MQN7HFG944
  Hardware UUID: 7B27242D-6D28-59A8-91DB-E3E53D323325

Graphics/Displays:

Intel HD Graphics 6000:

  Chipset Model: Intel HD Graphics 6000
  Type: GPU
  Bus: Built-In
  VRAM (Dynamic, Max): 1536 MB
  Vendor: Intel
  Device ID: 0x1626
  Revision ID: 0x0009
  Metal: Supported, feature set macOS GPUFamily1 v3
  Displays:
    Color LCD:
      Display Type: LCD
      Resolution: 1440 x 900
      Framebuffer Depth: 24-Bit Color (ARGB8888)
      Main Display: Yes
      Mirror: Off
      Online: Yes
      Rotation: Supported
      Automatically Adjust Brightness: No
      Connection Type: DisplayPort

diego out

tvleavitt commented Mar 19, 2018

This is what attempting to lauch via itch.io spits out on start on my laptop. Crash. Lots of noise.

[2018-03-19 @ 13:09:00.463] [configure] configuring /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign
[2018-03-19 @ 13:09:00.831] [configure/osx] path elements: ["Applications","Adobe Acrobat Reader DC.app",""]
[...skip evaluation of every app directory in Applications as above...]
[2018-03-19 @ 13:09:01.097] [configure/osx] path elements: ["Flare.app",""]
[2018-03-19 @ 13:09:01.100] [configure/osx] Flare.app/: Looks like the real thing!
[2018-03-19 @ 13:09:02.129] [configure/common] Contents/Resources/mods/fantasycore/languages/xgettext.py: is macExecutable, already executable
[2018-03-19 @ 13:09:02.133] [configure/common] Contents/Resources/mods/fantasycore/languages/regenerate_po.sh: is macExecutable, already executable
[2018-03-19 @ 13:09:02.137] [configure/common] Contents/Resources/mods/fantasycore/languages/readme.txt: is macExecutable, already executable
[2018-03-19 @ 13:09:04.887] [configure/common] Contents/Resources/mods/empyrean_campaign/languages/xgettext.py: is macExecutable, already executable
[2018-03-19 @ 13:09:04.888] [configure/common] Contents/Resources/mods/empyrean_campaign/languages/regenerate_po.sh: is macExecutable, already executable
[2018-03-19 @ 13:09:04.892] [configure/common] Contents/Resources/mods/empyrean_campaign/languages/readme.txt: is macExecutable, chmod +x
[2018-03-19 @ 13:09:05.580] [configure/common] Contents/Resources/mods/default/languages/regenerate_po.sh: is macExecutable, already executable
[2018-03-19 @ 13:09:05.580] [configure/common] Contents/Resources/mods/default/languages/xgettext.py: is macExecutable, already executable
[2018-03-19 @ 13:09:05.788] [configure/common] Contents/MacOS/Flare: is macExecutable, already executable
[2018-03-19 @ 13:09:05.795] [configure/common] Contents/Frameworks/SDL2.framework/Versions/A/SDL2: is macExecutable, chmod +x
[2018-03-19 @ 13:09:05.968] [configure/common] Contents/Frameworks/SDL2_ttf.framework/Versions/A/SDL2_ttf: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.121] [configure/common] Contents/Frameworks/SDL2_ttf.framework/Versions/A/Frameworks/FreeType.framework/Versions/A/FreeType: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.158] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/SDL2_mixer: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.173] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/Vorbis.framework/Versions/A/Vorbis: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.214] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/Ogg.framework/Versions/A/Ogg: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.238] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/mpg123.framework/Versions/A/mpg123: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.266] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/modplug.framework/Versions/A/modplug: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.318] [configure/common] Contents/Frameworks/SDL2_mixer.framework/Versions/A/Frameworks/FLAC.framework/Versions/A/FLAC: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.355] [configure/common] Contents/Frameworks/SDL2_image.framework/Versions/A/SDL2_image: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.370] [configure/common] Contents/Frameworks/SDL2_image.framework/Versions/A/Frameworks/webp.framework/Versions/A/webp: is macExecutable, chmod +x
[2018-03-19 @ 13:09:06.404] [configure/common] 12 executables/libraries were missing the executable bit
[2018-03-19 @ 13:09:06.407] [configure] native-configure yielded execs: [
"Flare.app//"
]
[2018-03-19 @ 13:09:06.410] [configure/compute-size] computing size of /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign
[2018-03-19 @ 13:09:06.479] [configure] total size of /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign: 153.92 MB (161394032 bytes)
[2018-03-19 @ 13:09:21.581] [launch] itch 23.6.1 launching game 235218: Flare: Empyrean Campaign
[2018-03-19 @ 13:09:21.581] [launch] looking for manifest @ "/Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/.itch.toml"
[2018-03-19 @ 13:09:21.582] [launch] No manifest found (no '.itch.toml' file in top-level directory). Proceeding with heuristics.
[2018-03-19 @ 13:09:21.582] [launch] launching prepare for native
[2018-03-19 @ 13:09:21.583] [prepare/native] not on windows, nothing to do
[2018-03-19 @ 13:09:21.587] [launch/native] cave location: "appdata/Flare Empyrean Campaign"
[2018-03-19 @ 13:09:21.589] [launch/native] no manifest action picked
[2018-03-19 @ 13:09:21.592] [launch/poker] initial candidate set: [
{
"path": "Flare.app//",
"weight": 0,
"depth": 0,
"score": 0
}
]
[2018-03-19 @ 13:09:21.606] [launch/poker] candidates after poking: [
{
"path": "Flare.app//",
"weight": 96,
"depth": 2,
"score": 100
}
]
[2018-03-19 @ 13:09:21.606] [launch/poker] candidates after sorting: [
{
"path": "Flare.app//",
"weight": 96,
"depth": 2,
"score": 100
}
]
[2018-03-19 @ 13:09:21.606] [launch/native] executing '/Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/' on 'osx' with args ''
[2018-03-19 @ 13:09:21.607] [spawn] spawning activate with args --print-bundle-executable-path /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/
[2018-03-19 @ 13:09:21.659] [launch/native] no app isolation
[2018-03-19 @ 13:09:21.661] [launch/native] spawn command: open -W "/Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/" --args
[2018-03-19 @ 13:09:21.661] [launch/native] working directory: /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/Contents/MacOS
[2018-03-19 @ 13:09:21.663] [launch/native] command: open
[2018-03-19 @ 13:09:21.663] [launch/native] args: [
"-W",
"/Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app/",
"--args"
]
[2018-03-19 @ 13:09:21.663] [launch/native] env keys: [
"TMP",
"TEMP"
]
[2018-03-19 @ 13:09:21.960] [launch/native] err: LSOpenURLsWithRole() failed with error -10810 for the file /Users/thomasleavitt/Library/Application Support/itch/apps/Flare Empyrean Campaign/Flare.app.
[2018-03-19 @ 13:09:22.011] [launch] error while launching 2954af2a-d64d-445f-99d4-31d144511bb2: application crashed. process exited with code 1
[2018-03-19 @ 13:09:22.014] [launch] crashed with
[2018-03-19 @ 13:09:22.014] [launch] application crashed. process exited with code 1
[2018-03-19 @ 13:09:22.015] [diego] diego here, looking around
Darwin 880-IT-MBA.private 17.4.0 Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64 x86_64
ProductName: Mac OS X
ProductVersion: 10.13.3
BuildVersion: 17D102
Hardware:

Hardware Overview:

  Model Name: MacBook Air
  Model Identifier: MacBookAir7,2
  Processor Name: Intel Core i7
  Processor Speed: 2.2 GHz
  Number of Processors: 1
  Total Number of Cores: 2
  L2 Cache (per Core): 256 KB
  L3 Cache: 4 MB
  Memory: 8 GB
  Boot ROM Version: MBA71.0171.B00
  SMC Version (system): 2.27f2
  Serial Number (system): C1MQN7HFG944
  Hardware UUID: 7B27242D-6D28-59A8-91DB-E3E53D323325

Graphics/Displays:

Intel HD Graphics 6000:

  Chipset Model: Intel HD Graphics 6000
  Type: GPU
  Bus: Built-In
  VRAM (Dynamic, Max): 1536 MB
  Vendor: Intel
  Device ID: 0x1626
  Revision ID: 0x0009
  Metal: Supported, feature set macOS GPUFamily1 v3
  Displays:
    Color LCD:
      Display Type: LCD
      Resolution: 1440 x 900
      Framebuffer Depth: 24-Bit Color (ARGB8888)
      Main Display: Yes
      Mirror: Off
      Online: Yes
      Rotation: Supported
      Automatically Adjust Brightness: No
      Connection Type: DisplayPort

diego out

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 19, 2018

OS X produces something more useful:

Process: Flare [9661]
Path: /Users/USER/Library/Application Support/itch/*/Flare.app/Contents/MacOS/Flare
Identifier: com.flarerpg.Flare
Version: Flare version 1.0 (1.0)
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Flare [9661]
User ID: 503

Date/Time: 2018-03-19 13:09:22.211 -0700
OS Version: Mac OS X 10.13.3 (17D102)
Report Version: 12
Anonymous UUID: F3B1D815-C1D4-913F-4DB4-40E7470FD004

Sleep/Wake UUID: 993B1500-A62C-4970-B71B-E0EF4AEB884E

Time Awake Since Boot: 13000 seconds
Time Since Wake: 550 seconds

System Integrity Protection: enabled

Crashed Thread: 0

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

Termination Reason: DYLD, [0x1] Library missing

Application Specific Information:
dyld: launch, loading dependent libraries

Dyld Error Message:
Library not loaded: /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib
Referenced from: /Users/USER/Library/Application Support/itch/*/Flare.app/Contents/MacOS/Flare
Reason: image not found

Binary Images:
0x10ac59000 - 0x10b033ff7 +com.flarerpg.Flare (Flare version 1.0 - 1.0) /Users/USER/Library/Application Support/itch/*/Flare.app/Contents/MacOS/Flare
0x114bd8000 - 0x114c2298f dyld (519.2.2) <6695F30B-4E88-3C0B-9867-7D738C44A3E6> /usr/lib/dyld

Model: MacBookAir7,2, BootROM MBA71.0171.B00, 2 processors, Intel Core i7, 2.2 GHz, 8 GB, SMC 2.27f2
Graphics: Intel HD Graphics 6000, Intel HD Graphics 6000, Built-In
Memory Module: BANK 0/DIMM0, 4 GB, DDR3, 1600 MHz, 0x02FE, -
Memory Module: BANK 1/DIMM0, 4 GB, DDR3, 1600 MHz, 0x02FE, -
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x117), Broadcom BCM43xx 1.0 (7.77.37.5.1a3)
Bluetooth: Version 6.0.2f2, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM0512G, 500.28 GB
USB Device: USB 3.0 Bus
USB Device: BRCM20702 Hub
USB Device: Bluetooth USB Host Controller
Thunderbolt Bus: MacBook Air, Apple Inc., 27.2

Looks like I have to figure out how to tell it to link against the frameworks in the .app folder? Suggestions?

Note to self: don't "test" on dev machine. Doh.

tvleavitt commented Mar 19, 2018

OS X produces something more useful:

Process: Flare [9661]
Path: /Users/USER/Library/Application Support/itch/*/Flare.app/Contents/MacOS/Flare
Identifier: com.flarerpg.Flare
Version: Flare version 1.0 (1.0)
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Flare [9661]
User ID: 503

Date/Time: 2018-03-19 13:09:22.211 -0700
OS Version: Mac OS X 10.13.3 (17D102)
Report Version: 12
Anonymous UUID: F3B1D815-C1D4-913F-4DB4-40E7470FD004

Sleep/Wake UUID: 993B1500-A62C-4970-B71B-E0EF4AEB884E

Time Awake Since Boot: 13000 seconds
Time Since Wake: 550 seconds

System Integrity Protection: enabled

Crashed Thread: 0

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

Termination Reason: DYLD, [0x1] Library missing

Application Specific Information:
dyld: launch, loading dependent libraries

Dyld Error Message:
Library not loaded: /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib
Referenced from: /Users/USER/Library/Application Support/itch/*/Flare.app/Contents/MacOS/Flare
Reason: image not found

Binary Images:
0x10ac59000 - 0x10b033ff7 +com.flarerpg.Flare (Flare version 1.0 - 1.0) /Users/USER/Library/Application Support/itch/*/Flare.app/Contents/MacOS/Flare
0x114bd8000 - 0x114c2298f dyld (519.2.2) <6695F30B-4E88-3C0B-9867-7D738C44A3E6> /usr/lib/dyld

Model: MacBookAir7,2, BootROM MBA71.0171.B00, 2 processors, Intel Core i7, 2.2 GHz, 8 GB, SMC 2.27f2
Graphics: Intel HD Graphics 6000, Intel HD Graphics 6000, Built-In
Memory Module: BANK 0/DIMM0, 4 GB, DDR3, 1600 MHz, 0x02FE, -
Memory Module: BANK 1/DIMM0, 4 GB, DDR3, 1600 MHz, 0x02FE, -
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x117), Broadcom BCM43xx 1.0 (7.77.37.5.1a3)
Bluetooth: Version 6.0.2f2, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM0512G, 500.28 GB
USB Device: USB 3.0 Bus
USB Device: BRCM20702 Hub
USB Device: Bluetooth USB Host Controller
Thunderbolt Bus: MacBook Air, Apple Inc., 27.2

Looks like I have to figure out how to tell it to link against the frameworks in the .app folder? Suggestions?

Note to self: don't "test" on dev machine. Doh.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 19, 2018

I think what we need to do is "embed" the frameworks (as they're packaged with the app)... I think this needs to be done in CMAKE? But, the cmake wiki has references that imply this was last looked at in 2006(!). Looking at this further, it looks like CMAKE needs to be told to use XCode, and then the project has to actually be built with XCode? Thoughts?

https://cmake.org/Wiki/CMake:Bundles_And_Frameworks

Chromium uses cmake and embeds frameworks, but it appears to be dependent on XCode to do so:

https://github.com/svn2github/chromium-embedded-framework/blob/master/cef3/CMakeLists.txt.in

OGRE3d also uses cmake, and also has an XCode dependency:

https://wiki.ogre3d.org/CMake+Quick+Start+Guide?tikiversion=Mac+OS+X

Trigger cmake, specify Xcode generation and pass path to Ogre source directory:

cmake -GXcode ..
See the Extensive CMake page for a list of compilation options which can be passed to CMake at this stage, and Getting Started With CMake for even more background material.
Build via Xcode

xcodebuild -configuration RelWithDebInfo
(or open OGRE.xcodeproj and build within Xcode)

But, Apple says here:

Note: If you are not using Xcode to build your project, you must use the -framework option of GCC and ld to build and link against the specified framework. See the gcc and ld man pages for more information.

https://developer.apple.com/library/content/technotes/tn2435/_index.html#//apple_ref/doc/uid/DTS40017543-CH1-EMBED_IN_APP_SECTION

tvleavitt commented Mar 19, 2018

I think what we need to do is "embed" the frameworks (as they're packaged with the app)... I think this needs to be done in CMAKE? But, the cmake wiki has references that imply this was last looked at in 2006(!). Looking at this further, it looks like CMAKE needs to be told to use XCode, and then the project has to actually be built with XCode? Thoughts?

https://cmake.org/Wiki/CMake:Bundles_And_Frameworks

Chromium uses cmake and embeds frameworks, but it appears to be dependent on XCode to do so:

https://github.com/svn2github/chromium-embedded-framework/blob/master/cef3/CMakeLists.txt.in

OGRE3d also uses cmake, and also has an XCode dependency:

https://wiki.ogre3d.org/CMake+Quick+Start+Guide?tikiversion=Mac+OS+X

Trigger cmake, specify Xcode generation and pass path to Ogre source directory:

cmake -GXcode ..
See the Extensive CMake page for a list of compilation options which can be passed to CMake at this stage, and Getting Started With CMake for even more background material.
Build via Xcode

xcodebuild -configuration RelWithDebInfo
(or open OGRE.xcodeproj and build within Xcode)

But, Apple says here:

Note: If you are not using Xcode to build your project, you must use the -framework option of GCC and ld to build and link against the specified framework. See the gcc and ld man pages for more information.

https://developer.apple.com/library/content/technotes/tn2435/_index.html#//apple_ref/doc/uid/DTS40017543-CH1-EMBED_IN_APP_SECTION

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 21, 2018

Would this be useful to help alleviate the build issues with cmake (like the ones encountered here)?

This is what the freeablo guy says:

"Hunter is a cmake library that acts as a package manager for c/c++. This is amazing because the most awkward thing about working with these languages is the immense pain involved in getting your code to build and link (especially getting it to build and link on other people’s computers). Hunter solves this problem by downloading the source of the library, building it as a static library and linking it in, all from within a few lines of CMake."

https://github.com/ruslo/hunter

tvleavitt commented Mar 21, 2018

Would this be useful to help alleviate the build issues with cmake (like the ones encountered here)?

This is what the freeablo guy says:

"Hunter is a cmake library that acts as a package manager for c/c++. This is amazing because the most awkward thing about working with these languages is the immense pain involved in getting your code to build and link (especially getting it to build and link on other people’s computers). Hunter solves this problem by downloading the source of the library, building it as a static library and linking it in, all from within a few lines of CMake."

https://github.com/ruslo/hunter

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 26, 2018

Collaborator

Just a heads-up: We're planning on releasing 1.01 this weekend. I'll tag 1.01 Friday night, so will you be good to get the Mac version done by Sunday night? You can package it however you feel is appropriate (I'm assuming DMG again, as the work was already done for that).

Also, LICENSE.txt from the flare-game repo should be included now as well.

Collaborator

dorkster commented Mar 26, 2018

Just a heads-up: We're planning on releasing 1.01 this weekend. I'll tag 1.01 Friday night, so will you be good to get the Mac version done by Sunday night? You can package it however you feel is appropriate (I'm assuming DMG again, as the work was already done for that).

Also, LICENSE.txt from the flare-game repo should be included now as well.

@tvleavitt

This comment has been minimized.

Show comment
Hide comment
@tvleavitt

tvleavitt Mar 27, 2018

@dorkster My apologies if it was not clear from my last sequence of postings, but the OS X build is broken at this point, because the cmake script compiles against the homebrew version of the binaries (unless you've installed them).

I'm not familiar enough with cmake to determine how to modify it appropriately to change what it builds against, and I'm not entirely clear that this doesn't need to be a source level modification (or a modification to both cmake and the source) to get the application binary itself to look for the framework files in the app package. I'm more than willing to try and work through this, but doing so is going to take substantial time if I have to do it entirely on my own. If someone more familiar with cmake could look through the comments I posted and provide feedback, that would be helpful. In particular the second to last comment, that begins with: I think what we need to do is "embed" the frameworks...

tvleavitt commented Mar 27, 2018

@dorkster My apologies if it was not clear from my last sequence of postings, but the OS X build is broken at this point, because the cmake script compiles against the homebrew version of the binaries (unless you've installed them).

I'm not familiar enough with cmake to determine how to modify it appropriately to change what it builds against, and I'm not entirely clear that this doesn't need to be a source level modification (or a modification to both cmake and the source) to get the application binary itself to look for the framework files in the app package. I'm more than willing to try and work through this, but doing so is going to take substantial time if I have to do it entirely on my own. If someone more familiar with cmake could look through the comments I posted and provide feedback, that would be helpful. In particular the second to last comment, that begins with: I think what we need to do is "embed" the frameworks...

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 27, 2018

Collaborator

Sorry, I hadn't been following this issue too closely.

Would it make sense to do something similar to the Linux binary release where we ship the libraries (like libSDL2-2.0.0.dylib) and use a wrapper script to set the library path and launch the executable? I think several Mac games were shipped with that script, so that seems like a way things could be done.

You could also try static-linking SDL, as that's allowed with SDL2.

Collaborator

dorkster commented Mar 27, 2018

Sorry, I hadn't been following this issue too closely.

Would it make sense to do something similar to the Linux binary release where we ship the libraries (like libSDL2-2.0.0.dylib) and use a wrapper script to set the library path and launch the executable? I think several Mac games were shipped with that script, so that seems like a way things could be done.

You could also try static-linking SDL, as that's allowed with SDL2.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 27, 2018

Collaborator

From the SDL wiki:

The SDL-devel package contains the SDL libraries in the form of a Framework. That is perfectly fine as long as you want to develop using Xcode. However, applications which use a configure script almost always require SDL to be installed Unix-style.

I suspect that we shouldn't be using the frameworks to begin with.

Collaborator

dorkster commented Mar 27, 2018

From the SDL wiki:

The SDL-devel package contains the SDL libraries in the form of a Framework. That is perfectly fine as long as you want to develop using Xcode. However, applications which use a configure script almost always require SDL to be installed Unix-style.

I suspect that we shouldn't be using the frameworks to begin with.

@elosha

This comment has been minimized.

Show comment
Hide comment
@elosha

elosha Mar 28, 2018

How did you package during the beta phase (release 0.18 for example)? Because that worked very well for users :)

elosha commented Mar 28, 2018

How did you package during the beta phase (release 0.18 for example)? Because that worked very well for users :)

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Mar 28, 2018

Collaborator

@elosha The pre-1.0 versions were built with Xcode. We're trying to get a non-Xcode solution working. This would be easier to put into a script for use by future Mac packagers.

Collaborator

dorkster commented Mar 28, 2018

@elosha The pre-1.0 versions were built with Xcode. We're trying to get a non-Xcode solution working. This would be easier to put into a script for use by future Mac packagers.

@apocarteres

This comment has been minimized.

Show comment
Hide comment
@apocarteres

apocarteres May 8, 2018

btw why you want to build DMG? I created in the past for some guy tar.gz file with working flare for OSX with no issues.

apocarteres commented May 8, 2018

btw why you want to build DMG? I created in the past for some guy tar.gz file with working flare for OSX with no issues.

@apocarteres

This comment has been minimized.

Show comment
Hide comment
@apocarteres

apocarteres May 8, 2018

fresh build in case someone interested in: http://files.ruads.org/flare-osx-09.05.2018.tar.gz

use run-osx.sh script to start

apocarteres commented May 8, 2018

fresh build in case someone interested in: http://files.ruads.org/flare-osx-09.05.2018.tar.gz

use run-osx.sh script to start

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster May 31, 2018

Collaborator

Sorry for being late on the response. I would be fine at this point with shipping a tarball with libs like we do on Linux. @apocarteres, yours looks good. Would you be willing to make tarballs for Flare releases going forward? I've restored the Darwin branch to the *nix launcher script (which is symlinked in distribution/macos/), so you can copy that file instead of making run-osx.sh.

Collaborator

dorkster commented May 31, 2018

Sorry for being late on the response. I would be fine at this point with shipping a tarball with libs like we do on Linux. @apocarteres, yours looks good. Would you be willing to make tarballs for Flare releases going forward? I've restored the Darwin branch to the *nix launcher script (which is symlinked in distribution/macos/), so you can copy that file instead of making run-osx.sh.

@apocarteres

This comment has been minimized.

Show comment
Hide comment
@apocarteres

apocarteres Oct 20, 2018

@dorkster is it still relevant? i can take look in a while

for now just please feel free to use fresh flare build: http://files.ruads.org/flare-osx-20.10.2018.tar.gz

apocarteres commented Oct 20, 2018

@dorkster is it still relevant? i can take look in a while

for now just please feel free to use fresh flare build: http://files.ruads.org/flare-osx-20.10.2018.tar.gz

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Oct 20, 2018

Collaborator

@apocarteres Yes, it's still relevant. We want to have two tarballs, one engine+game and one engine-only. Ideally, we'd have scripts to create these so that any Mac contributor can replicate them for us.

Your tarball looks good, but like the other platforms, it should contain:

(from flare-engine)
RELEASE_NOTES.txt
README.engine.md
CREDITS.engine.txt
COPYING

(from flare-game, not required for the engine-only tarball)
CREDITS.txt
LICENSE.txt
Collaborator

dorkster commented Oct 20, 2018

@apocarteres Yes, it's still relevant. We want to have two tarballs, one engine+game and one engine-only. Ideally, we'd have scripts to create these so that any Mac contributor can replicate them for us.

Your tarball looks good, but like the other platforms, it should contain:

(from flare-engine)
RELEASE_NOTES.txt
README.engine.md
CREDITS.engine.txt
COPYING

(from flare-game, not required for the engine-only tarball)
CREDITS.txt
LICENSE.txt
@igorko

This comment has been minimized.

Show comment
Hide comment
@igorko

igorko Oct 22, 2018

Collaborator

Hello. @dorkster when do you plan to release 1.09? I am currently working on translations update, it would be nice to include updated version into release.

Collaborator

igorko commented Oct 22, 2018

Hello. @dorkster when do you plan to release 1.09? I am currently working on translations update, it would be nice to include updated version into release.

@dorkster

This comment has been minimized.

Show comment
Hide comment
@dorkster

dorkster Oct 22, 2018

Collaborator

@igorko There's no set date for 1.09, so don't worry about having to rush.

Collaborator

dorkster commented Oct 22, 2018

@igorko There's no set date for 1.09, so don't worry about having to rush.

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