Skip to content
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

macOS support #21

Open
zanchey opened this issue Apr 27, 2022 · 3 comments
Open

macOS support #21

zanchey opened this issue Apr 27, 2022 · 3 comments
Labels
documentation Improvements or additions to documentation

Comments

@zanchey
Copy link

zanchey commented Apr 27, 2022

Rather than a trail of comments across Facebook, I thought I'd keep track of the macOS status here.

The good news is that, as of 1.7.35, Topo starts and runs on macOS, and all the reports seem to work.

The bad news is that there are a lot of steps to jump through.

Here is a basic set of commands that have to be run at terminal level, assuming Homebrew is already installed.

brew install mono-libgdiplus wget
mkdir topo-v1.XXX.YYY
cd topo-v1.XXX.YYY
wget https://github.com/NomisNostab/Topo/releases/download/v1.XXX.YYY/topo-osx.zip 
unzip topo-osx.zip
./Topo

The main issues are:

  1. You need to have mono-libgdiplus installed - this is easy if you have Homebrew installed, just brew install mono-libgdiplus, but most people won't have Homebrew.
  2. Because the executable isn't signed and notarised, Gatekeeper won't allow the executable to run; if you bypass this by holding down Alt when launching Topo, it still hits Gatekeeper when the SQLite module gets loaded and the only way around that is to dig through System Preferences. You can bypass Gatekeeper by downloading the zip with wget from Homebrew as above, or wipe the quarantine flag with xattr -d com.apple.quarantine Topo, but again this adds a lot of difficulty for inexpert users.

To fix the first, it might be possible to bundle mono-libgdiplus, using something like macdylibbundler, or to migrate to something which doesn't depend on GDI+.

To fix the second is easier (sign and notarise the package) but costs money - a certificate requires Apple Developer Program membership which costs A$149/year. Savvy users can wipe the quarantine flag or download the zip using wget, but getting the average user to do so is challenging.

I don't know whether macOS support is something you want to definitely consider - I have stopped doing Mac distribution for business-focused projects, but a lot of volunteers use Macs.

Also, ideally the build process needs to generate an app bundle. The current profile generates a single executable, but all the resources in wwwroot and Reports aren't included. Something like https://github.com/egramtel/dotnet-bundle might help.

I haven't played around with many of the things listed above, and building .NET 6 applications on macOS currently requires a pre-release version of Visual Studio.

@NomisNostab
Copy link
Owner

Hi David,
Thank you for putting in that effort to get Topo going on a Mac.
I agree that it is not for the faint hearted and it is not really something that I want to spend much time on.
This really needs to be in a hosted web site so there is no installation and people just use the site, but that has its issues as well.
Still it's nice to know that it will work.
Simon.

@NomisNostab NomisNostab added the documentation Improvements or additions to documentation label Apr 27, 2022
@KaHooli
Copy link

KaHooli commented Aug 3, 2022

Hi, I have an Apple Developer Program membership, can I assist?

@NomisNostab
Copy link
Owner

Hi ,

Please feel free to do whatever you can to get this working on a Mac.

I suspect the Syncfusion library will be the main pain point.

Simon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

3 participants