the packaging situation has slightly changed since writing the documentation, so it was out of date.
78 lines
2.3 KiB
Markdown
78 lines
2.3 KiB
Markdown
# Packaging
|
|
Sorry packagers, I have committed two ultimate sins.
|
|
1. I checked in some generated code into my repository.
|
|
2. I have copied others' code into my repository, also known as "vendoring" code.
|
|
|
|
Debian packaging is at https://git.sr.ht/~technomancy/fennel-ls/log/debian/latest
|
|
|
|
## Generated Code
|
|
The files inside `src/fennel-ls/docs/generated/` are not hand-written, they are
|
|
generated. The documentation embedded into `fennel-ls` needs to come from
|
|
various documentation websites on the internet, such as
|
|
[the Lua Manual](https://www.lua.org/manual/5.1/manual.html), and I use
|
|
scripts to download and parse these sites into these generated files.
|
|
|
|
The content of these websites is available under the MIT license, so there isn't
|
|
any licensing issue.
|
|
|
|
I understand if you want to build from source instead of relying on the output.
|
|
You can rebuild these by removing the generated docs and regenerating them.
|
|
However, this requires internet access.
|
|
```sh
|
|
$ rm -rf src/fennel-ls/docs/generated/
|
|
$ make docs
|
|
```
|
|
|
|
## Vendored Dependencies
|
|
The vendored dependencies are very easy to solve:
|
|
|
|
When the `VENDOR` flag is set to `false`, the build process will use
|
|
system-installed versions of fennel to build, and the built program will
|
|
search for its dependencies dynamically using lua's path system,
|
|
instead of statically including the vendored dependencies.
|
|
|
|
```sh
|
|
# Install system dependencies first
|
|
# You need: fennel, lua, lua-dkjson, make
|
|
|
|
# Optional: remove the vendored code from the repo
|
|
rm fennel deps/ -r
|
|
|
|
# Build with system dependencies
|
|
make VENDOR=false
|
|
|
|
# Testing with system dependencies (also requires faith and penlight)
|
|
make test VENDOR=false
|
|
```
|
|
|
|
# Dependencies Overview
|
|
Things marked with (vendored) are vendored unless `VENDOR=false` is set.
|
|
|
|
* Runtime Dependencies:
|
|
* Lua
|
|
* Fennel (vendored)
|
|
* dkjson (vendored)
|
|
* Build Dependencies:
|
|
* Make
|
|
* Lua
|
|
* Fennel (vendored)
|
|
* Test Dependencies:
|
|
* Faith (vendored)
|
|
* Penlight (vendored)
|
|
|
|
The specific versions of vendored dependencies can be found in the
|
|
[vendoring script](../tools/get-deps.fnl).
|
|
|
|
## Verifying Reproducibility
|
|
|
|
The Makefile provides targets to verify that the vendored dependencies and
|
|
generated docs match what the build scripts produce:
|
|
|
|
```sh
|
|
# Check that deps are reproducible
|
|
make check-deps
|
|
|
|
# Check that generated docs are reproducible
|
|
make check-docs
|
|
```
|