executable-hash alternatives and similar packages
Based on the "System" category.
Alternatively, view executable-hash alternatives based on common mentions on social networks and blogs.
-
taffybar
A gtk based status bar for tiling window managers such as XMonad -
optparse-generic
Auto-generate a command-line parser for your datatype -
hapistrano
Deploy tool for Haskell applications, like Capistrano for Rails -
nix-deploy
Deploy software or an entire NixOS system configuration to another NixOS system -
ghc-hotswap
Example code for how we swap compiled code within a running Haskell process. -
directory
Platform-independent library for basic file system operations -
typed-process
Alternative API for processes, featuring more type safety -
pid1
Do signal handling and orphan reaping for Unix PID1 init processes -
openssh-github-keys
Control SSH access to your servers via GitHub teams -
hnix-store-core
Haskell implementation of the nix store API -
clock
High-resolution clock functions: monotonic, realtime, cputime. -
atomic-write
Writes files atomically in Haskell while preserving permissions -
system-fileio
Contains the system-filepath and system-fileio packages -
language-puppet
A library to work with Puppet manifests, test them and eventually replace everything ruby. -
plugins
Dynamic linking and runtime evaluation of Haskell, and C, including dependency chasing and package resolution. -
ascii-progress
A simple Haskell progress bar for the console. Heavily borrows from TJ Holowaychuk's Node.JS project -
optparse-declarative
Declarative command-line option parser -
halfs
The Haskell File System: A file system implementation in Haskell -
directory-contents
Recursively build a tree of directory contents, avoiding symlink cycles
Updating dependencies is time-consuming.
Do you think we are missing an alternative of executable-hash or a related project?
README
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
:
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)