OSXMkLibs: skip @loader_path

This may or may not make the OSX build work on a newer version of OSX
than the one that's currently being used for release builds. I have not
been able to find good docs about how exactly to get back from such a
value to the actual path to the library that the linker would use.
This commit is contained in:
Joey Hess 2020-12-15 12:47:24 -04:00
parent 5ae0e07ad0
commit 72ec7da41b
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 7 additions and 6 deletions

View file

@ -34,10 +34,7 @@ type LibMap = M.Map FilePath String
mklibs :: FilePath -> M.Map FilePath FilePath -> IO Bool
mklibs appbase installedbins = do
usl <- getEnv "USE_SYSTEM_LIBS"
case usl of
Nothing -> mklibs' appbase installedbins [] [] M.empty
Just _ -> hPutStrLn stderr "dmg will use system libraries (USE_SYSTEM_LIBS)"
mklibs' appbase installedbins [] [] M.empty
return True
{- Recursively find and install libs, until nothing new to install is found. -}
@ -92,7 +89,12 @@ otool appbase installedbins replacement_libs libmap = do
files <- filterM doesFileExist =<< dirContentsRecursive appbase
process [] files replacement_libs libmap
where
want s = not ("@executable_path" `isInfixOf` s)
want s =
-- This seems to be about finding libraries next
-- to executables or something. May need further resolving
-- to find real path to library, but for now, skip it.
not ("@executable_path" `isInfixOf` s)
&& not ("@loader_path" `isInfixOf` s)
-- OSX framekworks such as Cocoa are too tightly tied to
-- a specific OSX version, so don't bundle.
&& not (".framework" `isInfixOf` s)

View file

@ -205,7 +205,6 @@ dpkg-buildpackage%: prep-standalone
umask 022; dpkg-buildpackage -rfakeroot $*
$(MAKE) undo-standalone
# Run this with USE_SYSTEM_LIBS=1 to build without bundling system libraries.
OSXAPP_DEST=tmp/build-dmg/git-annex.app
OSXAPP_TOP=$(OSXAPP_DEST)/Contents/MacOS/bundle
osxapp: