Module documentation for 0.2.0.4

executable-hash

Provides the SHA1 hash of the executable. This hash can either be
injected into the executable as a step after compilation, or
calculated at runtime.

Usage

The main function expected to be used by the user is
System.Executable.Hash.executableHash. When used in a TH splice,
like $(executableHash), the resulting expression yields a SHA1 hash
determined by the contents of the executable. However, note that this
may not be the actual SHA1 of the executable, since the hash can be
injected into the executable (which changes its “actual” hash).

Installing this package will also install the inject-executable-hash
executable. Running this program on a binary, like
inject-executable-hash <binary-name> will replace a dummy
ByteString (via the file-embed package) in the binary with its
hash.

Alternatively, you can put this in a Setup.hs file, and set
build-type: Custom in your .cabal:

Changes

0.2.0.4

Added custom-setup to .cabal file

0.2.0.3

Add a PackageImport to avoid conflicting module names for Crypto.Hash.SHA1
introduced by the cryptohash-sha1 package.

0.2.0.0

In order to support dynamic linking, executableHash and
injectedExecutableHash now need to be run in TH splices. Before
this change, the library was assuming that it would be statically
linked, such that the file-embed dummy bytestring would be present in
the executable.