This file contains instructions to build and install Clevis from source

# Dependencies
To build and install the Clevis software the following software packages
are required. In many cases dependencies are platform specific and so the
following sections describe them for the supported platforms.

## Linux:
* Meson
* Ninja
* C compiler
* C Library Development Libraries and Header Files
* [jose](https://github.com/latchset/jose)
* [luksmeta](https://github.com/latchset/luksmeta)
* [audit-libs](https://github.com/linux-audit/audit-userspace)
* [udisks2](https://github.com/storaged-project/udisks)
* [OpenSSL](https://github.com/openssl/openssl)
* [desktop-file-utils](https://cgit.freedesktop.org/xdg/desktop-file-utils)
* [pkg-config](https://cgit.freedesktop.org/pkg-config)
* [systemd](https://github.com/systemd)
* [dracut](https://github.com/dracutdevs/dracut)
* [tang](https://github.com/latchset/tang)
* [curl](https://github.com/curl/curl)
* [tpm2-tools](https://github.com/tpm2-software/tpm2-tools)

### Fedora

There is a package already, so the package build dependencies information can be
used to make sure that the needed packages to compile from source are installed:

```
$ sudo dnf builddep clevis
```

# Building From Source

## Configuring the Build
To configure Clevis, run `meson` which generates the build files:

```
$ meson build
```

## Compiling
Then compile the code using `ninja`:

```
$ ninja -C build -j$(nproc)
```

## Installing
Once you've built the Clevis software it can be installed with:

```
$ sudo ninja -C build install
```

This will install Clevis to a location determined at configure time.

See the output of `meson --help` for the available options. Typically,
much won't be needed besides providing an alternative --prefix option at
configure time, and maybe DESTDIR at install time if you're packaging for
a distro.

After is installed, the dracut and systemd hooks can be added to the
initramfs with:

```
$ sudo dracut -f
```
