Packages

Eventually consistent durable KV store for Elixir with zero runtime dependencies. Data survives node restarts, node death, and network partitions. Direct member replication across Erlang nodes with delta sync.

Current section

Files

Jump to
ekv mix.exs
Raw

mix.exs

defmodule EKV.MixProject do
use Mix.Project
@version "0.1.0"
def project do
[
app: :ekv,
version: @version,
elixir: "~> 1.19",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
compilers: [:elixir_make] ++ Mix.compilers(),
make_targets: ["all"],
make_clean: ["clean"],
make_precompiler: {:nif, CCPrecompiler},
make_precompiler_url:
"https://github.com/chrismccord/ekv/releases/download/v#{@version}/@{artefact_filename}",
make_precompiler_filename: "ekv_sqlite3_nif",
make_precompiler_nif_versions: ["2.16", "2.17"],
make_precompiler_priv_paths: ["ekv_sqlite3_nif.*"],
make_force_build: System.get_env("EKV_BUILD") in ["1", "true"] or Mix.env() in [:dev, :test],
cc_precompiler: [cleanup: "make clean"],
description: description(),
package: package(),
deps: deps()
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
def application do
[
extra_applications: [:logger],
mod: {EKV.Application, []}
]
end
defp description do
"""
Eventually consistent durable KV store backed by SQLite.
Data survives node restarts, node death, and network partitions.
Peer-to-peer replication across Erlang nodes with delta sync.
"""
end
defp package do
[
name: "ekv",
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/chrismccord/ekv"},
files: [
# "lib",
# "c_src/ekv_sqlite3_nif.c",
# "c_src/sqlite3.c",
# "c_src/sqlite3.h",
# "Makefile",
"mix.exs",
# "README.md",
# "LICENSE",
# "checksum-ekv.exs"
]
]
end
defp deps do
[
{:elixir_make, "~> 0.9", runtime: false},
{:cc_precompiler, "~> 0.1", runtime: false}
]
end
end