add USE_SYSTEM_LIBS=1 for osxapp build

This commit is contained in:
Joey Hess 2020-12-14 15:34:27 -04:00
parent 9da06e1f75
commit fac5ccb2e2
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 31 additions and 1 deletions

View file

@ -9,6 +9,7 @@ module Build.OSXMkLibs (mklibs) where
import Data.Maybe
import System.FilePath
import System.IO
import Control.Monad
import Control.Monad.IfElse
import Data.List
@ -33,7 +34,10 @@ type LibMap = M.Map FilePath String
mklibs :: FilePath -> M.Map FilePath FilePath -> IO Bool
mklibs appbase installedbins = do
mklibs' appbase installedbins [] [] M.empty
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)"
return True
{- Recursively find and install libs, until nothing new to install is found. -}

View file

@ -205,6 +205,7 @@ 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:

View file

@ -0,0 +1,25 @@
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2020-12-14T19:08:40Z"
content="""
install_name_tool: warning: changes being made to the file will invalidate the code signature in: tmp/build-dmg/git-annex.app/Contents/MacOS/bundle/R
This makes me doubtful that, even if the `@loader_path` problem gets resolved
and it builds, it will actually work. It seems likely that if a library is
signed, modifying it to have an invalid signature would make the OS refuse to
use it.
The OSX build used for releases is still using an older OSX and does not have
either problem. I do notice there is a similar workaround in Build/OSXMkLibs.h
for `@executable_path`; it skips such libraries. So skipping `@loader_path`
in the same place would probably build, but would it work?
Since git-annex can be installed from homebrew, I don't know if it's worth
trying to keep the standalone app working in the face of such problems.
Is there a use case for the .dmg file that this failing build is producing?
One approach would be to stop bundling system libraries, so the .dmg
perhaps is tied to a specific version of OSX. I've added a way to build
the dmg that way, make osxapp USE_SYSTEM_LIBS=1
"""]]