mirror of https://github.com/Wilfred/difftastic/
parent
7a3c91dbd6
commit
76e9eae32e
@ -0,0 +1,78 @@
|
||||
# Packaging Difftastic
|
||||
|
||||
This page contains recommendations for people creating a difftastic
|
||||
package.
|
||||
|
||||
Note that the difftastic author only provides the source code and
|
||||
prebuilt binaries on GitHub. Packages have been created by other
|
||||
people -- thank you!
|
||||
|
||||
## Packaging The Binary
|
||||
|
||||
Difftastic can be built with `cargo`. The compiled binary will be at
|
||||
`target/release/difft` when using the following command.
|
||||
|
||||
```
|
||||
$ cargo build --release
|
||||
```
|
||||
|
||||
C library dependencies are built with the `cc` crate, which [exposes
|
||||
various environment
|
||||
variables](https://docs.rs/cc/1.1.30/cc/index.html#external-configuration-via-environment-variables)
|
||||
to configure the C toolchain (e.g. `CFLAGS`).
|
||||
|
||||
### Reproducible Builds
|
||||
|
||||
Difftastic's build script (the `build.rs` file) uses Rayon to build C
|
||||
libraries in parallel, which can lead to minor ordering changes in the
|
||||
final binary.
|
||||
|
||||
You can avoid this by disabling Rayon parallelism.
|
||||
|
||||
```bash
|
||||
$ RAYON_NUM_THREADS=1 cargo build --release
|
||||
```
|
||||
|
||||
### MIME Database
|
||||
|
||||
Difftastic depends on
|
||||
[tree_magic_mini](https://docs.rs/tree_magic_mini/latest/tree_magic_mini/),
|
||||
which access the MIME database on the current system. The MIME database is
|
||||
used to recognise file types, to ensure that binary files are not
|
||||
compared as text.
|
||||
|
||||
This means that the difftastic package should depend on a MIME
|
||||
database package, if available.
|
||||
|
||||
Difftastic respects the [XDG base
|
||||
specification](https://specifications.freedesktop.org/basedir-spec/latest/index.html#basics)
|
||||
to find the MIME database files. These files are typically at
|
||||
`/usr/share/mime`, `/usr/local/share/mime` or
|
||||
`/opt/homebrew/share/mime`.
|
||||
|
||||
## Man Page
|
||||
|
||||
As of difftastic 0.58, a man page is available. See the file
|
||||
`difft.1`.
|
||||
|
||||
This file is generated from `difft.1.md`, but the generated `difft.1`
|
||||
is included in the repository for convenience.
|
||||
|
||||
## The Manual
|
||||
|
||||
Please consider including the difftastic manual with your
|
||||
package. These are HTML files that can be generated with `mdbook`.
|
||||
|
||||
## Testing
|
||||
|
||||
If your packaging tool supports testing, consider running the
|
||||
difftastic unit tests.
|
||||
|
||||
```bash
|
||||
# Run the normal tests.
|
||||
$ cargo test
|
||||
|
||||
# Run the tests that depend on the
|
||||
# MIME database being present.
|
||||
$ cargo test -- --ignored
|
||||
```
|
||||
Loading…
Reference in New Issue