Changed some paths in the macOS Bundle, and added Readme

This commit is contained in:
2026-03-19 11:24:38 +10:00
parent cdad7be12e
commit 6729b8db3b
2 changed files with 27 additions and 4 deletions
+23
View File
@@ -0,0 +1,23 @@
# OSSP macOS Packaging Utilities
## What is ```launcher```
Launcher is simply a tool that launches OSSP with the correct environment variables when inside a macOS bundle.<br>
OSSP packages it's own runtime dependency tree with itself as to avoid dependency issues for the
end user. To achieve this though, some hacks have to be made.
OSSP needs some environment arguments to launch, such as ```DYLD_LIBRARY_PATH``` and ```LV2_PATH```
to use the correct sysroot, and for the equalizer functionality respectively.<br>
Normally, macOS sanitizes ```DYLD_*``` environment variables when launching a new program, so
```launcher``` was made to create an entirely new environment pointer for execve() to use.
## Notice
NOTE: This does NOT bypass and/or exploit any security features of macOS / Darwin. This is an intentional
feature, as when running 'protected' binaries (such as the ones found in ```/usr/bin```),
macOS goes even further to sanitize the ```DYLD_*``` environment variables even when utilizing this method.<br>
In saying that, there is ABSOLUTELY NO WAY this would EVER pass App Store verification.
## How to use this?
Firstly, build the launcher.<br>
Then, build OSSP.<br>
Then, copy the actual OSSP binary into the newly created bundle (Bundle/Contents/MacOS/).<br>
Then, copy the sysroot from /opt/ossp into the bundle (Bundle/Contents/Sysroot).<br>
Finally, make the .icns file for the app icon, and copy it into the bundle (Bundle/Contents/Resources).
+4 -4
View File
@@ -39,15 +39,15 @@ int main(int argc, char** argv) {
removePath(bundle_path); removePath(bundle_path);
printf("[OSSPL] Bundle Path: %s\n", bundle_path.c_str()); printf("[OSSPL] Bundle Path: %s\n", bundle_path.c_str());
// Create DYLD_LIBRARY_PATH - 'Bundle/sysroot/lib' // Create DYLD_LIBRARY_PATH - 'Bundle/Contents/Sysroot/lib'
std::string dyld_library_path = bundle_path; std::string dyld_library_path = bundle_path;
dyld_library_path += "/sysroot/lib"; dyld_library_path += "/Contents/Sysroot/lib";
dyld_library_path = "DYLD_LIBRARY_PATH=" + dyld_library_path; dyld_library_path = "DYLD_LIBRARY_PATH=" + dyld_library_path;
char* c_dyld_library_path = strdup(dyld_library_path.c_str()); char* c_dyld_library_path = strdup(dyld_library_path.c_str());
// Create LV2_PATH - 'Bundle/sysroot/lib/lv2' // Create LV2_PATH - 'Bundle/Contents/Sysroot/lib/lv2'
std::string lv2_path = bundle_path; std::string lv2_path = bundle_path;
lv2_path += "/sysroot/lib/lv2"; lv2_path += "/Contents/Sysroot/lib/lv2";
lv2_path = "LV2_PATH=" + lv2_path; lv2_path = "LV2_PATH=" + lv2_path;
char* c_lv2_path = strdup(lv2_path.c_str()); char* c_lv2_path = strdup(lv2_path.c_str());