add USE_SYSTEM_LIBS=1 for osxapp build
authorJoey Hess <joeyh@joeyh.name>
Mon, 14 Dec 2020 19:34:27 +0000 (15:34 -0400)
committerJoey Hess <joeyh@joeyh.name>
Mon, 14 Dec 2020 19:34:27 +0000 (15:34 -0400)
Build/OSXMkLibs.hs
Makefile
doc/bugs/Build__47__OSXMkLibs.hs_does_not_resolve___64__loader__95__path/comment_2_4f68ed79045c93831cb8b41888057f29._comment [new file with mode: 0644]

index b79cfa84d00e84567751322624b211d9b0b41c6d..196650bae11a75ebba8746df9d168fd199aca284 100644 (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. -}
index dce3173a47a88c93f7164c1ec681099eea3c2305..5b6754cfaef66c2a2ead6215a2ead3686cb30d9e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -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:
diff --git a/doc/bugs/Build__47__OSXMkLibs.hs_does_not_resolve___64__loader__95__path/comment_2_4f68ed79045c93831cb8b41888057f29._comment b/doc/bugs/Build__47__OSXMkLibs.hs_does_not_resolve___64__loader__95__path/comment_2_4f68ed79045c93831cb8b41888057f29._comment
new file mode 100644 (file)
index 0000000..9b5cbf5
--- /dev/null
@@ -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
+"""]]