Added libgcc_s.so.1 to the linux standalone build so pthread_cancel will work
In Makefile, listed additional deps of Build/Standalone. Without that, it does not get updated for the change to Utility/LinuxMkLibs.hs when compiling incrementally. Sponsored-by: Dartmouth College's DANDI project
This commit is contained in:
parent
bda406ff90
commit
d475f82c62
5 changed files with 35 additions and 4 deletions
|
@ -11,6 +11,8 @@ git-annex (10.20221213) UNRELEASED; urgency=medium
|
||||||
This is slightly faster and clearer than --include=* or --exclude=*
|
This is slightly faster and clearer than --include=* or --exclude=*
|
||||||
* Speed up git-annex upgrade (from v5) and init in a repository that has
|
* Speed up git-annex upgrade (from v5) and init in a repository that has
|
||||||
submodules.
|
submodules.
|
||||||
|
* Added libgcc_s.so.1 to the linux standalone build so pthread_cancel
|
||||||
|
will work.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Mon, 12 Dec 2022 13:04:54 -0400
|
-- Joey Hess <id@joeyh.name> Mon, 12 Dec 2022 13:04:54 -0400
|
||||||
|
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -146,7 +146,7 @@ clean:
|
||||||
|
|
||||||
Build/InstallDesktopFile: Build/InstallDesktopFile.hs
|
Build/InstallDesktopFile: Build/InstallDesktopFile.hs
|
||||||
$(GHC) --make $@ -Wall -fno-warn-tabs
|
$(GHC) --make $@ -Wall -fno-warn-tabs
|
||||||
Build/Standalone: Build/Standalone.hs tmp/configure-stamp
|
Build/Standalone: Build/Standalone.hs Build/LinuxMkLibs.hs Utility/LinuxMkLibs.hs tmp/configure-stamp
|
||||||
$(GHC) --make $@ -Wall -fno-warn-tabs
|
$(GHC) --make $@ -Wall -fno-warn-tabs
|
||||||
Build/BuildVersion: Build/BuildVersion.hs
|
Build/BuildVersion: Build/BuildVersion.hs
|
||||||
$(GHC) --make $@ -Wall -fno-warn-tabs
|
$(GHC) --make $@ -Wall -fno-warn-tabs
|
||||||
|
|
|
@ -64,12 +64,16 @@ parseLdd = mapMaybe (getlib . dropWhile isSpace) . lines
|
||||||
where
|
where
|
||||||
getlib l = headMaybe . words =<< lastMaybe (split " => " l)
|
getlib l = headMaybe . words =<< lastMaybe (split " => " l)
|
||||||
|
|
||||||
{- Get all glibc libs.
|
{- Get all glibc libs, and also libgcc_s
|
||||||
-
|
-
|
||||||
- XXX Debian specific. -}
|
- XXX Debian specific. -}
|
||||||
glibcLibs :: IO [FilePath]
|
glibcLibs :: IO [FilePath]
|
||||||
glibcLibs = lines <$> readProcess "sh"
|
glibcLibs = do
|
||||||
["-c", "dpkg -L libc6:$(dpkg --print-architecture) | egrep '\\.so' | grep -v /gconv/ | grep -v ld.so.conf | grep -v sotruss-lib"]
|
ls <- lines <$> readProcess "sh"
|
||||||
|
["-c", "dpkg -L libc6:$(dpkg --print-architecture) | egrep '\\.so' | grep -v /gconv/ | grep -v ld.so.conf | grep -v sotruss-lib"]
|
||||||
|
ls2 <- lines <$> readProcess "sh"
|
||||||
|
["-c", "dpkg -L libgcc-s1:$(dpkg --print-architecture) | egrep '\\.so'"]
|
||||||
|
return (ls++ls2)
|
||||||
|
|
||||||
{- Get gblibc's gconv libs, which are handled specially.. -}
|
{- Get gblibc's gconv libs, which are handled specially.. -}
|
||||||
gconvLibs :: IO [FilePath]
|
gconvLibs :: IO [FilePath]
|
||||||
|
|
|
@ -68,3 +68,5 @@ Any ideas Joey?
|
||||||
|
|
||||||
[[!meta author=yoh]]
|
[[!meta author=yoh]]
|
||||||
[[!tag projects/dandi]]
|
[[!tag projects/dandi]]
|
||||||
|
|
||||||
|
> [[fixed|done]] --[[Joey]]
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 1"""
|
||||||
|
date="2022-12-22T18:38:32Z"
|
||||||
|
content="""
|
||||||
|
I'm a bit surprised git-annex is using `pthread_cancel`, since `strings`
|
||||||
|
does not show it contains that symbol. Perhaps one of the other pthread
|
||||||
|
symbols it uses ends up calling that.
|
||||||
|
|
||||||
|
It does seem though from the message that it's git-annex and not a program
|
||||||
|
it runs that is core dumping on this. Also I checked, and the rclone you
|
||||||
|
installed is a statically linked binary so I would not expect it to use
|
||||||
|
`libgcc_s.so`. And And git-annex-remote-rclone is a bash script, and bash
|
||||||
|
doesn't use pthreads.
|
||||||
|
|
||||||
|
(I do think that, in general, using the git-annex standalone tarball and
|
||||||
|
then trying to run additional programs besides git-annex inside it is not
|
||||||
|
going to always work well. Standalone interposes its own versions of libraries,
|
||||||
|
which may not work with the other programs. There is already a todo about that,
|
||||||
|
[[todo/restore_original_environment_when_running_external_special_remotes_from_standalone_git-annex__63__]].)
|
||||||
|
|
||||||
|
I've added `libgcc_s.so.1` to the standalone build.
|
||||||
|
"""]]
|
Loading…
Reference in a new issue