Closed tstenner closed 4 years ago
All three platforms are built, but the MacOS artifacts are huge (~90MB). Are there any switches to macdeployqt to leave out parts we don't need @cboulay?
A couple points:
If I use my local up-to-date branch of liblsl, build that anew, and use it for my -DLSL_INSTALL_ROOT
, then macdeployqt is never run, and my .app file is missing the required libraries.
If I download liblsl from its release page and use that, then macdeployqt is run, and I end up with an app that is 39.5 MB. Not great but not as bad as what the GitHub CI generates.
If I add -no-plugins
to the macdeployqt command, the resulting file is still 39.5 MB.
Here is the macdeployqt help text:
bin $./macdeployqt
Usage: macdeployqt app-bundle [options]
Options:
-verbose=<0-3> : 0 = no output, 1 = error/warning (default), 2 = normal, 3 = debug
-no-plugins : Skip plugin deployment
-dmg : Create a .dmg disk image
-no-strip : Don't run 'strip' on the binaries
-use-debug-libs : Deploy with debug versions of frameworks and plugins (implies -no-strip)
-executable=<path> : Let the given executable use the deployed frameworks too
-qmldir=<path> : Scan for QML imports in the given path
-qmlimport=<path> : Add the given path to the QML module search locations
-always-overwrite : Copy files even if the target file exists
-codesign=<ident> : Run codesign with the given identity on all executables
-appstore-compliant: Skip deployment of components that use private API
-libpath=<path> : Add the given path to the library search path
-fs=<filesystem> : Set the filesystem used for the .dmg disk image (defaults to HFS+)
macdeployqt takes an application bundle as input and makes it
self-contained by copying in the Qt frameworks and plugins that
the application uses.
Plugins related to a framework are copied in with the
framework. The accessibility, image formats, and text codec
plugins are always copied, unless "-no-plugins" is specified.
Qt plugins may use private API and will cause the app to be
rejected from the Mac App store. MacDeployQt will print a warning
when known incompatible plugins are deployed. Use -appstore-compliant
to skip these plugins. Currently two SQL plugins are known to
be incompatible: qsqlodbc and qsqlpsql.
The install code in LSLCMake.cmake
isn't quite right for MacOS, but our department Mac is currently in use.
The CI code here works, and as soon as I've fixed the MacOS install logic in liblsl it will include the bundled Qt libs.
The current CI landscape looks as follows:
I've grown a bit attached to Azure Pipelines and its 10 free concurrent CI jobs, but I wouldn't want to explain anyone how to use it. Despite the shortcomings, most labs still use Windows and OSX so that rules out Appveyor and Travis and only github actions is left.