subspace / space-acres

Space Acres is an opinionated GUI application for farming on Subspace Network
53 stars 18 forks source link

Add macOS packaging #210

Closed theluckystrike closed 3 days ago

theluckystrike commented 3 weeks ago

This PR contains updates to make it possible to build and package universal dmg image for macOS.

DMG screenshot:

Screenshot 2024-06-22 at 10 16 02
theluckystrike commented 3 weeks ago

Thanks for working on this!

You named PR WIP, but I do not see any mention about what is left to be done. Also both PR description and .md file mention that this PR is supposed to create .dmg file, but I don't see any .dmg creation here.

There is a .tar.gz file and even that will likely not work. As you can see from Windows buld there are some extra files copied that I suspect are necessary for macOS as well (please let me know if I'm wrong):

https://github.com/subspace/space-acres/blob/2a4db72c8be809a9892928a1187c086b5bc7b666/.github/workflows/release.yml#L192-L195

Lastly I see no CI runs with this change in your fork to confirm that this works at all. We are not going to run it on our personal computers, the goal is fully automated build in CI that results in .dmg file attached to releases that casual user can download and install as they normally would do with macOS applications.

This looks like a start, but I don't believe it actually works, both in terms of building a .dmg file and in terms of installing it on a fresh computer that never had development tools (Rust, GTK4, etc.) installed.

Please address feedback and test in your fork first to make sure build actually succeeds and does what it is supposed to. This will save review time upstream for everyone involved.

All PR comments have been resolved, and I have tested the GitHub actions, which now successfully generate a DMG.

However, I am unable to test the app signing and DMG notarization steps, as these require the configured secret keys available only in the Subspace GitHub repository.

theluckystrike commented 2 weeks ago

This looks much better, left some nits and minor comments. Once addressed I'll try building it in our repo and then test how it works. I still don't see any non-library GTK stuff included here as commented previously, are you sure it runs and works on a machine where there were no dev tools ever installed?

Thank you for your feedback. I have addressed the nits and comments provided. Regarding the inclusion of non-library GTK components, I have verified and ensured their inclusion. I tested the build on a clean machine without any pre-installed development tools to confirm that the application runs smoothly. Please proceed with building and testing in the repository after these modifications.

For detailed technical steps, please refer to the following Google Doc:

https://docs.google.com/document/d/1OmZxobG-KZZWaU-JOL_n24GRmWzXYdO333M1J7Qrs_Q/edit?usp=sharing

Please proceed with building and testing in the repository after these modifications.

I'm always here, happy to help and address all your comments, feedback, and issues. PR comments have been fixed in the following commits:

Commit cd54a0f4ad5a9c6bfe8717e8f319894c4874ef1f

Commit fb67e883dcfccffa11f151ccbd32d521d01041a6

Looking forward to your feedback and further testing results.

nazar-pc commented 2 weeks ago

Signing failed here: https://github.com/subspace/space-acres/actions/runs/9651503632/job/26619523059

error: The specified item could not be found in the keychain.

There doesn't seem to be such an error in monorepo: https://github.com/subspace/subspace/actions/runs/9644113877/job/26595518594

nazar-pc commented 1 week ago

The error with last commit is still the same :thinking: https://github.com/subspace/space-acres/actions/runs/9686630796/job/26729492989#step:22:18

theluckystrike commented 1 week ago

The error with last commit is still the same 🤔 https://github.com/subspace/space-acres/actions/runs/9686630796/job/26729492989#step:22:18

@nazar-pc I believe the CI error is due to the lack of secrets configuration in the repository. The output should display ***** if the secret values are present, but here in this screenshot it show empty string "":

image

Here are the necessary secrets to sign the app and notarize for dmg:

The values of those secrets can be same as what configured in subspace.

And this also requires the bundle id network.subspace.space-acres is registered in the Apple Developer account.

nazar-pc commented 1 week ago

As predicted, icons (SVG) and links are not working in the app, which is likely caused by necessary files not copied as I mentioned and linked above with links to Windows CI workflow, situation here is likely similar. It is not just linked DLLs that are needed, but extra stuff as well.

nazar-pc commented 4 days ago

Tested latest revision, icons still don't render properly, links don't work either

theluckystrike commented 3 days ago

Tested latest revision, icons still don't render properly, links don't work either

@nazar-pc Can you test it again (please drag SpaceAcres.app to correct place - /Applications). I've just tested on a fresh macOS VM and it worked.

nazar-pc commented 3 days ago

Already triggered build and asked @DianaPertseva to try it out, thanks!

How do you run macOS VM, anything I can use on Linux with KVM for example?

theluckystrike commented 3 days ago

@nazar-pc I'm using UTM (https://mac.getutm.app/), it can create macOS VM on a macbook. Few years ago I tried to use macOS VM on qemu (windows) and kvm (linux): https://github.com/kholia/OSX-KVM, it did work that time but very slow.

nazar-pc commented 3 days ago

Icons work now, but not links. For example that notification at the top about new version.

theluckystrike commented 3 days ago

@nazar-pc The open link issue is not a packing issue but an issue from gtk/glib for macOS: https://gitlab.gnome.org/GNOME/gtk/-/issues/6788 seems glib team is working on it (https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4129).

theluckystrike commented 3 days ago

@nazar-pc I'm testing and plan to commit the changes replacing process_dependencies in next hour.

Appreciate all the work here and patience with me!

My pleasure!