Safe Haskell | None |
---|---|
Language | Haskell2010 |
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
.