ngx-export-distribution 0.5.1.0 → 0.5.1.1
raw patch · 4 files changed
+15/−26 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Changelog.md +4/−0
- NgxExport/Distribution.hs +7/−16
- ngx-export-distribution.cabal +1/−1
- nhm-tool.hs +3/−9
Changelog.md view
@@ -1,3 +1,7 @@+### 0.5.1.1++- Collect *libffi* library unconditionally.+ ### 0.5.1.0 - Collect *libffi* library if it was shipped with GHC.
NgxExport/Distribution.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TupleSections, TypeApplications #-}+{-# LANGUAGE TupleSections #-} ----------------------------------------------------------------------------- -- |@@ -307,15 +307,13 @@ -- With all the building approaches shown above, the following list of drawbacks -- must be taken into account. ----- - Utility /nhm-tool/ collects only libraries prefixed with /libHS/ (and--- /libffi/ if it was shipped with GHC),+-- - Utility /nhm-tool/ collects only libraries prefixed with /libHS/ and+-- /libffi.so/, -- - clean commands such as /cabal v1-clean/ do not delete build artifacts in -- the current working directory, -- - behavior of Cabal commands other than /configure/, /build/ and /clean/ is -- not well defined. -type GhcInfo = [(String, String)]- nhmTool :: Program nhmTool = simpleProgram "nhm-tool" @@ -393,8 +391,8 @@ -- libraries in a /tar.gz/ file. -- -- All steps are performed by utility /nhm-tool/. It collects all libraries--- with prefix /libHS/ (and /libffi/ if it was shipped with GHC) from the list--- returned by command /ldd/ applied to the shared library.+-- with prefix /libHS/ and /libffi.so/ from the list returned by command /ldd/+-- applied to the shared library. patchAndCollectDependentLibs :: Verbosity -- ^ Verbosity level -> FilePath -- ^ Path to the library -> PackageDescription -- ^ Package description@@ -407,16 +405,9 @@ rpathArg = maybe [] (("-t" :) . pure . (</> dir) . fromPathTemplate) $ flagToMaybe $ prefix $ configInstallDirs $ configFlags lbi archiveArg = "-a" : [prettyShow $ package desc]- ghcP <- fst <$> requireProgram verbosity ghcProgram (withPrograms lbi)- let ghcR = programInvocation ghcP ["--info"]- useLibFFI <- (Just "YES" ==) . lookup "Use LibFFI" . read @GhcInfo <$>- getProgramInvocationOutput verbosity ghcR nhmToolP <- fst <$> requireProgram verbosity nhmTool (withPrograms lbi)- let nhmToolArgs = rpathArg ++ dirArg ++ archiveArg- nhmToolR = programInvocation nhmToolP $- "dist" : lib : "-v" : if useLibFFI- then "-ffi" : nhmToolArgs- else nhmToolArgs+ let nhmToolR = programInvocation nhmToolP $+ "dist" : lib : "-v" : rpathArg ++ dirArg ++ archiveArg runProgramInvocation verbosity nhmToolR -- | Build hooks.
ngx-export-distribution.cabal view
@@ -1,5 +1,5 @@ name: ngx-export-distribution-version: 0.5.1.0+version: 0.5.1.1 synopsis: Build custom libraries for Nginx haskell module description: Build custom libraries for <https://github.com/lyokha/nginx-haskell-module Nginx haskell module>.
nhm-tool.hs view
@@ -27,7 +27,6 @@ data DistData = DistData { distDataDir :: String , distDataArchive :: String , distDataTargetDir :: String- , distDataCollectLibFFI :: Bool , distDataPatchOnly :: Bool , distDataTargetLib :: String , distDataWait :: Maybe ArgWait@@ -73,7 +72,7 @@ putStrLn "Usage:" when (isNothing section || section == Just HelpDist) $ T.putStrLn $ T.concat ["\n\- \ * nhm-tool dist [-d dir -a ar -ffi | -p] [-t target_dir] [-v | -vv] \+ \ * nhm-tool dist [-d dir -a ar | -p] [-t target_dir] [-v | -vv] \ \lib\n\n\ \ collect Haskell libraries on which 'lib' depends,\n\ \ patch 'lib' to enable loading dependent libraries from \@@ -86,7 +85,6 @@ \ 'dir' (no default, the archive will not be created if omitted)\n\ \ if '-p' (patch-only) is specified then dependent libraries will\n\ \ neither be collected nor archived\n\- \ if '-ffi' is specified then libffi will also be collected\n\ \ use options '-v' and '-vv' to increase verbosity level\n\ \ special value '-' for 'dir', 'target_dir', and 'ar' resets them\n\ \ (with -d- being equivalent to -p)"@@ -123,7 +121,7 @@ case head args of "dist" -> do let distData = foldl parseDistArgs (Just defaultArgs) $ tail args- defaultArgs = DistData defaultDistDataDir "" "" False False ""+ defaultArgs = DistData defaultDistDataDir "" "" False "" Nothing normal normal False case distData of Nothing -> usage (Just HelpDist) False@@ -193,8 +191,6 @@ if optLong then Just dist' { distDataArchive = optValue } else Just dist { distDataWait = Just ArgWaitA }- | "-ffi" == arg ->- Just dist' { distDataCollectLibFFI = True } | "-p" == arg -> Just dist' { distDataPatchOnly = True } | "-v" == arg ->@@ -306,9 +302,7 @@ let recsLibHS = M.fromList $ mapMaybe (\case LibHS name path -> Just (name, path)- LibFFI name path- | distDataCollectLibFFI ->- Just (name, path)+ LibFFI name path -> Just (name, path) _ -> Nothing ) recs if M.null recsLibHS