executable-hash-0.1.1.1: Provides the SHA1 hash of the program executable

Safe HaskellNone
LanguageHaskell2010

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)

Synopsis

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.