Strange… I checked and when my Rack (Pro, 2.1.2, standalone) is running (macOS 10.12.6) there’s no Rack2 symlink in /tmp/ or anything of the sort pointing to Rack. So it doesn’t seem to be ubiquitous. All my other modules (all the free ones plus some commercial) work just fine.
Ah, just checked your link again and some contex was missing. The /tmp/Rack2 symlink only exists on Linux
ifdef ARCH_LIN
TARGET := plugin.so
# This prevents static variables in the DSO (dynamic shared object) from being preserved after dlclose().
FLAGS += -fno-gnu-unique
# When Rack loads a plugin, it symlinks /tmp/Rack2 to its system dir, so the plugin can link to libRack.
LDFLAGS += -Wl,-rpath=/tmp/Rack2
# Since the plugin's compiler could be a different version than Rack's compiler, link libstdc++ and libgcc statically to avoid ABI issues.
LDFLAGS += -static-libstdc++ -static-libgcc
RACK_USER_DIR ?= $(HOME)/.Rack2
endif
What I can’t explain though is that further down in plugin.mk it presumes the link exists on macOS:
ifdef ARCH_MAC
$(STRIP) -S dist/$(SLUG)/$(TARGET)
$(INSTALL_NAME_TOOL) -change libRack.dylib /tmp/Rack2/libRack.dylib dist/$(SLUG)/$(TARGET)
$(OTOOL) -L dist/$(SLUG)/$(TARGET)
else
Also plugin.cpp seems to say that this symlink exists on both Linux and macOS:
#if defined ARCH_WIN
stuff
#else
// Since Rack 2, plugins on Linux/Mac link to the absolute path /tmp/Rack2/libRack.<ext>
// Create a symlink at /tmp/Rack2 to the system dir containting libRack.
std::string systemDir = system::getAbsolute(asset::systemDir);
std::string linkPath = "/tmp/Rack2";
But at least on my macOS system (10.12.6) that link doesn’t exist. Could be a bug in either file + few/none other plugins using that link for anything. No idea, bigger brains needed… @cschol ?
Folks - If you’re experiencing this problem, or if it works for you with no hacks, it might be very helpful if you can indicate: OS (Mac, Windows, Linux) and OS version, thanks!
Interesting! What version of macOS and Rack2 edition and run-mode are you on? Seems there might be a macOS version issue here, with regard to the existence of the /tmp/Rack2 symlink, the plugin linking, or both.