OSX link libs into git-core directory

So that binaries in that directory can find the library next to them,
where they get modified to look.

This is a hack; it would be better for OSXMkLibs to build a list of what
libraries are needed where.

Unsure if this is needed due to a recent reversion, or is an older
problem, so updated changelog accordingly.
This commit is contained in:
Joey Hess 2019-11-14 18:31:58 -04:00
parent 5cc8cfe57b
commit b321526473
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 24 additions and 6 deletions

View file

@ -50,8 +50,12 @@ installLibs appbase replacement_libs libmap = do
let symdest = appbase </> shortlib let symdest = appbase </> shortlib
-- This is a hack; libraries need to be in the same -- This is a hack; libraries need to be in the same
-- directory as the program, so also link them into the -- directory as the program, so also link them into the
-- extra directory. -- extra and git-core directories so programs in those will
let symdestextra = appbase </> "extra" </> shortlib -- find them.
let symdestextra =
[ appbase </> "extra" </> shortlib
, appbase </> "git-core" </> shortlib
]
ifM (doesFileExist dest) ifM (doesFileExist dest)
( return Nothing ( return Nothing
, do , do
@ -59,9 +63,11 @@ installLibs appbase replacement_libs libmap = do
putStrLn $ "installing " ++ pathlib ++ " as " ++ shortlib putStrLn $ "installing " ++ pathlib ++ " as " ++ shortlib
unlessM (boolSystem "cp" [File pathlib, File dest] unlessM (boolSystem "cp" [File pathlib, File dest]
<&&> boolSystem "chmod" [Param "644", File dest] <&&> boolSystem "chmod" [Param "644", File dest]
<&&> boolSystem "ln" [Param "-s", File fulllib, File symdest] <&&> boolSystem "ln" [Param "-s", File fulllib, File symdest]) $
<&&> boolSystem "ln" [Param "-s", File (".." </> fulllib), File symdestextra]) $
error "library install failed" error "library install failed"
forM_ symdestextra $ \d ->
unlessM (boolSystem "ln" [Param "-s", File (".." </> fulllib), File d]) $
error "library linking failed"
return $ Just appbase return $ Just appbase
) )
return (catMaybes libs, replacement_libs', libmap') return (catMaybes libs, replacement_libs', libmap')

View file

@ -6,8 +6,8 @@ git-annex (7.20191107) UNRELEASED; urgency=medium
* Fix a crash (STM deadlock) when -J is used with multiple files * Fix a crash (STM deadlock) when -J is used with multiple files
that point to the same key. that point to the same key.
* linuxstandalone: Fix a regression that broke git-remote-https. * linuxstandalone: Fix a regression that broke git-remote-https.
* OSX git-annex.app: Fix a regression that broke git-remote-https, * OSX git-annex.app: Fix a problem that prevented using the bundled
git-remote-http, and git-shell. git-remote-https, git-remote-http, and git-shell.
-- Joey Hess <id@joeyh.name> Mon, 11 Nov 2019 15:59:47 -0400 -- Joey Hess <id@joeyh.name> Mon, 11 Nov 2019 15:59:47 -0400

View file

@ -0,0 +1,12 @@
The OSX .dmg contains a few binaries in git-core like git-remote-http.
They have been adjusted by otool to link to libraries in the same directory
as the binary. However, the libraries are not located in the git-core
directory, but in its parent directory, and so the git-core binaries don't
link.
I don't think this is a new regression, but not entirely sure.
Seems that OSXMkLibs could symlink ../lib into git-core.
--[[Joey]]
> [[fixed|done]] --[[Joey]]