MacOS build fails on case sensitive file systems

Bug #1911064 reported by David Baker
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
High
David Baker

Bug Description

The build fails on MacOS on case-sensitive file systems because the target in cmake is called 'mixxx', so creates an app called 'mixxx.app' with the binary and Info.plist in, then all the other resources (libraries, etc) go to 'Mixxx.app'.

I was still unable to produce a build after changing the target from 'mixxx' to 'Mixxx' as cpack was unable to find libsqlite3.0.dylib, but I couldn't figure out why this was so not certain if this is another case sensitivity issue or some other problem.

Be (be.ing)
Changed in mixxx:
importance: Undecided → Critical
milestone: none → 2.3.0
Revision history for this message
ronso0 (ronso0) wrote :
Changed in mixxx:
status: New → In Progress
assignee: nobody → David Baker (dbkr)
Revision history for this message
Be (be.ing) wrote :

Reducing from Critical to High because GitHub Actions is now building packages which work on case sensitive filesystems. Nevertheless, building on a case sensitive filesystem should work.

Changed in mixxx:
importance: Critical → High
Revision history for this message
David Baker (dbkr) wrote :

So my problem was that in order for the packaging to work, CMAKE_PREFIX_PATH needs to be propagated from the environment to a CMake variable (ie. https://github.com/mixxxdj/mixxx/blob/main/.github/workflows/build.yml#L199 in the autobuilder) - without this, fixup_bundle can't find the libraries and so can't copy them into the bundle / fix up the rpaths. I'm not sure if CMake could be made to always take this variable from the environment, or otherwise it could just be added to the wiki build instructions perhaps.

Either way, it means changing the case of the 'mixxx' target works fine to fix the build on case sensitive filesystems, so I've PRed this fix as https://github.com/mixxxdj/mixxx/pull/3555.

Revision history for this message
Be (be.ing) wrote :

CMAKE_PREFIX_PATH is set by the tools/macos_buildenv.sh script as documented on the wiki.

Revision history for this message
David Baker (dbkr) wrote :

That script sets in the shell environment but that doesn't automatically get translated into a CMake variable, so needs -DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH adding as a CMake option somewhere.

Revision history for this message
Be (be.ing) wrote :
Changed in mixxx:
status: In Progress → Fix Committed
Revision history for this message
Be (be.ing) wrote :

> That script sets in the shell environment but that doesn't automatically get translated into a CMake variable, so needs -DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH adding as a CMake option somewhere.

Are you sure? If that's true then it should fail to find libraries at the configure step far before running cpack.

Revision history for this message
David Baker (dbkr) wrote :

Hmm - the CMake docs do say it should take its value from the environment. Maybe the main build is picking it up but somewhere in the fixup_build stuff it's failing to be propagated through. It definitely didn't work without passing it through explicitly though, which is presumably why the github action is set up like that.

Changed in mixxx:
status: Fix Committed → Fix Released
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/10284

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.