summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-10-04 12:52:36 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-10-04 12:53:09 -0400
commit0a03ba76be8a59a6869dc4cd573c0760fa765a10 (patch)
treebd6ca4e99629d339fce86e07c6c27a819194ad84 /Build
parent5d91a09bb3b61e0cff3dca1f0f9168803c01ea76 (diff)
Linux standalone: Add back the LOCPATH=/dev/null hack to avoid the system locale-archive being read.
Version mismatches between the system locale-archive and the glibc in the bundle have been observed to cause git crashes. Unfortunately, this causes locales to not be used in the linux standalone bundle, as was the case until version 6.20160419. glibc hardcodes the path to /usr/lib/locale/locale-archive and does not let an environment variable cause a different locale-archive file to be used. The only other option to include locales in the bundle would be to include exploded locale definition directories in the bundle for a number of locales, generated by localedef. But these take at least 300 kb per locale, and there are a great many locales; it would be hundreds of megabytes to include them all. (Hmm, we could include localdef in the bundle, and check LANG in runshell and compile the locale directories on the fly. This would need /usr/share/i18n/ and /usr/lib/locale-archive to be included in the bundle. It's.. doable.) I know this is going to once again cause users of the bundle to complain that eg, ls doesn't show their unicode filenames right. Better than strange crashes though.
Diffstat (limited to 'Build')
-rw-r--r--Build/LinuxMkLibs.hs16
1 files changed, 2 insertions, 14 deletions
diff --git a/Build/LinuxMkLibs.hs b/Build/LinuxMkLibs.hs
index 3bc79fed4..780cdea25 100644
--- a/Build/LinuxMkLibs.hs
+++ b/Build/LinuxMkLibs.hs
@@ -5,8 +5,6 @@
- Licensed under the GNU GPL version 3 or higher.
-}
-{-# LANGUAGE CPP #-}
-
module Main where
import System.Environment
@@ -48,6 +46,8 @@ mklibs top = do
writeFile (top </> "libdirs") (unlines libdirs)
writeFile (top </> "gconvdir")
(parentDir $ Prelude.head $ filter ("/gconv/" `isInfixOf`) glibclibs)
+ writeFile (top </> "localedir")
+ (parentDir $ Prelude.head $ filter ("/locale/" `isInfixOf`) glibclibs)
let linker = Prelude.head $ filter ("ld-linux" `isInfixOf`) libs'
mapM_ (installLinkerShim top linker) exes
@@ -73,18 +73,6 @@ installLinkerShim top linker exe = do
[ "#!/bin/sh"
, "GIT_ANNEX_PROGRAMPATH=\"$0\""
, "export GIT_ANNEX_PROGRAMPATH"
-#ifdef MIN_VERSION_GLASGOW_HASKELL
-#if ! MIN_VERSION_GLASGOW_HASKELL(7,10,0,0)
-#define NEED_LOCPATH_WORKAROUND
-#endif
-#else
-#define NEED_LOCPATH_WORKAROUND
-#endif
-#ifdef NEED_LOCPATH_WORKAROUND
- -- workaround for https://ghc.haskell.org/trac/ghc/ticket/7695
- , "LOCPATH=/dev/null"
- , "export LOCPATH"
-#endif
, "exec \"$GIT_ANNEX_DIR/" ++ exelink ++ "\" --library-path \"$GIT_ANNEX_LD_LIBRARY_PATH\" \"$GIT_ANNEX_DIR/shimmed/" ++ base ++ "/" ++ base ++ "\" \"$@\""
]
modifyFileMode exe $ addModes executeModes