| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
System.Executable.Hash
Description
This module provides functions for accessing or computing a SHA1
hash of the program's executable. Most users are expected to use
the executableHash function.
To inject the hash into the executable, you can use the
inject-executable-hash program installed along with this package.
Alternatively, to do this automatically with cabal, place this in
your Setup.hs:
import Distribution.Simple (defaultMainWithHooks, simpleUserHooks, postBuild)
import Distribution.Simple.LocalBuildInfo (buildDir)
import System.Executable.Hash.Internal (maybeInjectExecutableHash)
import System.FilePath ((</>))
main :: IO ()
main = defaultMainWithHooks $ simpleUserHooks
{ postBuild = _ _ _ buildInfo ->
maybeInjectExecutableHash (buildDir buildInfo </> "exeName/exeName")
}
(Note: you'll need to change the executable path)
Documentation
executableHash :: Q Exp Source #
This generates an expression which yields a SHA1 hash. The
generated expression has the type IO (Maybe ByteString), just
like computeExecutableHash.
If a SHA1 hash of the executable has been injected into it, then
it's directly yielded by this expression. Otherwise, a hash is
computed with computeExecutableHash.
Note that you shouldn't rely on the result being the actual SHA1
hash of the executable, because injecting the hash modifies the
binary, and so changes the result of computeExecutableHash.
Instead, this should only be used as a way to uniquely identify the
contents of the executable.
This yields Nothing when run with runhaskell or ghci.
computeExecutableHash :: IO (Maybe ByteString) Source #
Computes the SHA1 hash of the program executable.
This yields Nothing when run with runhaskell or ghci.