| 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
import System.Executable.Hash.Internal (maybeInjectExecutableHash)
main :: IO ()
main = defaultMainWithHooks $ simpleUserHooks
{ postBuild = _ _ _ _ ->
maybeInjectExecutableHash "dist/build/path-to/your-executable"
}
(Note: you'll need to change the executable path)
Documentation
executableHash :: IO (Maybe ByteString) Source
If a SHA1 hash of the executable has been injected into it, then
it's directly yielded by this function. 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.