Current section
Files
Jump to
Current section
Files
gorilla_stream
mix.exs
mix.exs
defmodule GorillaStream.MixProject do
use Mix.Project
@version "3.0.3"
def project do
[
app: :gorilla_stream,
version: @version,
elixir: "~> 1.18",
start_permanent: Mix.env() == :prod,
compilers: [:elixir_make] ++ Mix.compilers(),
make_env: fn ->
erts_include_dir =
Path.join([
to_string(:code.root_dir()),
"erts-#{:erlang.system_info(:version)}",
"include"
])
%{
"FINE_INCLUDE_DIR" => Fine.include_dir(),
"ERTS_INCLUDE_DIR" => erts_include_dir
}
end,
make_clean: ["clean"],
make_precompiler: {:nif, CCPrecompiler},
make_precompiler_url:
"https://github.com/awksedgreep/gorilla_stream/releases/download/v#{@version}/@{artefact_filename}",
make_precompiler_filename: "gorilla_nif",
make_precompiler_priv_paths: ["gorilla_nif.*"],
make_precompiler_nif_versions: [versions: ["2.16", "2.17"]],
deps: deps(),
dialyzer: dialyzer(),
aliases: aliases(),
description:
"A high-performance, lossless compression library for time series data implementing Facebook's Gorilla compression algorithm.",
package: package(),
source_url: "https://github.com/awksedgreep/gorilla_stream",
docs: docs()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
# Run "mix help deps" to learn about dependencies.
def deps do
[
# No zlib dependency needed as it's built into Erlang standard library
{:dialyxir, "~> 1.4", only: [:dev], runtime: false},
{:ex_doc, "~> 0.35", only: :dev, runtime: false},
# Optional zstd compression - provides better compression than zlib
{:ezstd, "~> 1.2", optional: true},
# Optional OpenZL compression - format-aware compression extending zstd
{:ex_openzl, "~> 0.4", optional: true},
# NIF build support
{:fine, "~> 0.1.4"},
{:elixir_make, "~> 0.9", runtime: false},
{:cc_precompiler, "~> 0.1", runtime: false}
]
end
defp package do
[
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/awksedgreep/gorilla_stream"},
files: ~w(lib c_src Makefile .formatter.exs mix.exs checksum.exs README.md LICENSE)
]
end
defp docs do
[
main: "GorillaStream",
extras: [
"docs/user_guide.md",
"docs/performance_guide.md",
"docs/troubleshooting.md"
]
]
end
defp dialyzer do
[
plt_file: {:no_warn, "priv/plts/dialyzer.plt"},
plt_add_apps: [:mix],
ignore_warnings: ".dialyzer_ignore.exs"
]
end
defp aliases do
[
"check.format": ["format --check-formatted"],
ci: ["check.format", "test"]
]
end
end