Skip to content

Commit

Permalink
Use port compiler rebar3 plugin for two packages
Browse files Browse the repository at this point in the history
snappyer and crc32cer need port compiler to be installed in order to
build. These are dependencies of the 'brod' kafka client.

Co-authored-by: Manmohan Krishna <[email protected]>
Co-authored-by: Nikhil Belchada <[email protected]>
Co-authored-by: Sarah Stoltze <[email protected]>
  • Loading branch information
4 people committed Jan 16, 2025
1 parent 0827c2d commit 97118d5
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 0 deletions.
87 changes: 87 additions & 0 deletions fixtures/example/deps.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ let
buildRebar3 = lib.makeOverridable beamPackages.buildRebar3;

workarounds = {
portCompiler = _unusedArgs: old: {
buildPlugins = [ pkgs.beamPackages.pc ];
};

rustlerPrecompiled =
{
toolchain ? null,
Expand Down Expand Up @@ -94,6 +98,11 @@ let

let
apps = {
crc32cer = [
{
name = "portCompiler";
}
];
explorer = [
{
name = "rustlerPrecompiled";
Expand All @@ -103,6 +112,11 @@ let
};
}
];
snappyer = [
{
name = "portCompiler";
}
];
};

applyOverrides =
Expand Down Expand Up @@ -184,6 +198,27 @@ let
in
drv;

brod =
let
version = "3.19.1";
drv = buildRebar3 {
inherit version;
name = "brod";

src = fetchHex {
inherit version;
pkg = "brod";
sha256 = "241899cff62e175cd60de4acd4b72f40edb3529b18853f8b22a8a35e4c76d71d";
};

beamDeps = [
kafka_protocol
snappyer
];
};
in
drv;

castore =
let
version = "1.0.11";
Expand Down Expand Up @@ -243,6 +278,22 @@ let
in
drv;

crc32cer =
let
version = "0.1.8";
drv = buildRebar3 {
inherit version;
name = "crc32cer";

src = fetchHex {
inherit version;
pkg = "crc32cer";
sha256 = "251499085482920deb6c9b7aadabf9fb4c432f96add97ab42aee4501e5b6f591";
};
};
in
drv;

ctx =
let
version = "0.6.0";
Expand Down Expand Up @@ -716,6 +767,26 @@ let
in
drv;

kafka_protocol =
let
version = "4.1.5";
drv = buildRebar3 {
inherit version;
name = "kafka_protocol";

src = fetchHex {
inherit version;
pkg = "kafka_protocol";
sha256 = "c956c9357fef493b7072a35d0c3e2be02aa5186c804a412d29e62423bb15e5d9";
};

beamDeps = [
crc32cer
];
};
in
drv;

mime =
let
version = "2.0.6";
Expand Down Expand Up @@ -998,6 +1069,22 @@ let
in
drv;

snappyer =
let
version = "1.2.9";
drv = buildRebar3 {
inherit version;
name = "snappyer";

src = fetchHex {
inherit version;
pkg = "snappyer";
sha256 = "18d00ca218ae613416e6eecafe1078db86342a66f86277bd45c95f05bf1c8b29";
};
};
in
drv;

ssl_verify_fun =
let
version = "1.1.7";
Expand Down
1 change: 1 addition & 0 deletions fixtures/example/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ defmodule Example.MixProject do
defp deps do
[
{:bandit, github: "mtrudel/bandit", ref: "1.4.2"},
{:brod, "~> 3.16"},
{:deps_nix, path: "../..", only: [:dev]},
{:eventstore, "~> 1.4"},
{:ex_secp256k1, "~> 0.7.3"},
Expand Down
4 changes: 4 additions & 0 deletions fixtures/example/mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
"acceptor_pool": {:hex, :acceptor_pool, "1.0.0", "43c20d2acae35f0c2bcd64f9d2bde267e459f0f3fd23dab26485bf518c281b21", [:rebar3], [], "hexpm", "0cbcd83fdc8b9ad2eee2067ef8b91a14858a5883cb7cd800e6fcd5803e158788"},
"aws_signature": {:hex, :aws_signature, "0.3.3", "5844bee0d3cc42eefd21d236bbfaa8aa9b16e2f2b7ee79edaecb321db3fb6adf", [:rebar3], [], "hexpm", "87e8f42b8e49002aa8d0350a71d13d69ea91b9afb4ca9b526ae36db1d585c924"},
"bandit": {:git, "https://github.com/mtrudel/bandit.git", "4f15f029e7aa17f8e7f98d55b0e94c684dee0971", [ref: "1.4.2"]},
"brod": {:hex, :brod, "3.19.1", "6e42e0b495108f8c691717654c6efef7a02f69d1eaaf885bb8d0f7aa8c04b9c7", [:rebar3], [{:kafka_protocol, "4.1.5", [hex: :kafka_protocol, repo: "hexpm", optional: false]}, {:snappyer, "1.2.9", [hex: :snappyer, repo: "hexpm", optional: false]}], "hexpm", "241899cff62e175cd60de4acd4b72f40edb3529b18853f8b22a8a35e4c76d71d"},
"castore": {:hex, :castore, "1.0.11", "4bbd584741601eb658007339ea730b082cc61f3554cf2e8f39bf693a11b49073", [:mix], [], "hexpm", "e03990b4db988df56262852f20de0f659871c35154691427a5047f4967a16a62"},
"chatterbox": {:hex, :ts_chatterbox, "0.15.1", "5cac4d15dd7ad61fc3c4415ce4826fc563d4643dee897a558ec4ea0b1c835c9c", [:rebar3], [{:hpack, "~> 0.3.0", [hex: :hpack_erl, repo: "hexpm", optional: false]}], "hexpm", "4f75b91451338bc0da5f52f3480fa6ef6e3a2aeecfc33686d6b3d0a0948f31aa"},
"cldr_utils": {:hex, :cldr_utils, "2.28.2", "f500667164a9043369071e4f9dcef31f88b8589b2e2c07a1eb9f9fa53cb1dce9", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "c506eb1a170ba7cdca59b304ba02a56795ed119856662f6b1a420af80ec42551"},
"crc32cer": {:hex, :crc32cer, "0.1.8", "c6c2275c5fb60a95f4935d414f30b50ee9cfed494081c9b36ebb02edfc2f48db", [:rebar3], [], "hexpm", "251499085482920deb6c9b7aadabf9fb4c432f96add97ab42aee4501e5b6f591"},
"ctx": {:hex, :ctx, "0.6.0", "8ff88b70e6400c4df90142e7f130625b82086077a45364a78d208ed3ed53c7fe", [:rebar3], [], "hexpm", "a14ed2d1b67723dbebbe423b28d7615eb0bdcba6ff28f2d1f1b0a7e1d4aa5fc2"},
"db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"},
"decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"},
Expand All @@ -30,6 +32,7 @@
"hpack": {:hex, :hpack_erl, "0.3.0", "2461899cc4ab6a0ef8e970c1661c5fc6a52d3c25580bc6dd204f84ce94669926", [:rebar3], [], "hexpm", "d6137d7079169d8c485c6962dfe261af5b9ef60fbc557344511c1e65e3d95fb0"},
"hpax": {:hex, :hpax, "0.1.2", "09a75600d9d8bbd064cdd741f21fc06fc1f4cf3d0fcc335e5aa19be1a7235c84", [:mix], [], "hexpm", "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"kafka_protocol": {:hex, :kafka_protocol, "4.1.5", "d15e64994a8ca99716ab47db4132614359ac1bfa56d6c5b4341fdc1aa4041518", [:rebar3], [{:crc32cer, "0.1.8", [hex: :crc32cer, repo: "hexpm", optional: false]}], "hexpm", "c956c9357fef493b7072a35d0c3e2be02aa5186c804a412d29e62423bb15e5d9"},
"mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"},
"mint": {:hex, :mint, "1.6.2", "af6d97a4051eee4f05b5500671d47c3a67dac7386045d87a904126fd4bbcea2e", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "5ee441dffc1892f1ae59127f74afe8fd82fda6587794278d924e4d90ea3d63f9"},
"nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"},
Expand All @@ -45,6 +48,7 @@
"req": {:hex, :req, "0.5.8", "50d8d65279d6e343a5e46980ac2a70e97136182950833a1968b371e753f6a662", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "d7fc5898a566477e174f26887821a3c5082b243885520ee4b45555f5d53f40ef"},
"rustler": {:hex, :rustler, "0.34.0", "e9a73ee419fc296a10e49b415a2eb87a88c9217aa0275ec9f383d37eed290c1c", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:toml, "~> 0.6", [hex: :toml, repo: "hexpm", optional: false]}], "hexpm", "1d0c7449482b459513003230c0e2422b0252245776fe6fd6e41cb2b11bd8e628"},
"rustler_precompiled": {:hex, :rustler_precompiled, "0.8.2", "5f25cbe220a8fac3e7ad62e6f950fcdca5a5a5f8501835d2823e8c74bf4268d5", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:rustler, "~> 0.23", [hex: :rustler, repo: "hexpm", optional: true]}], "hexpm", "63d1bd5f8e23096d1ff851839923162096364bac8656a4a3c00d1fff8e83ee0a"},
"snappyer": {:hex, :snappyer, "1.2.9", "9cc58470798648ce34c662ca0aa6daae31367667714c9a543384430a3586e5d3", [:rebar3], [], "hexpm", "18d00ca218ae613416e6eecafe1078db86342a66f86277bd45c95f05bf1c8b29"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"},
"table": {:hex, :table, "0.1.2", "87ad1125f5b70c5dea0307aa633194083eb5182ec537efc94e96af08937e14a8", [:mix], [], "hexpm", "7e99bc7efef806315c7e65640724bf165c3061cdc5d854060f74468367065029"},
"table_rex": {:hex, :table_rex, "4.0.0", "3c613a68ebdc6d4d1e731bc973c233500974ec3993c99fcdabb210407b90959b", [:mix], [], "hexpm", "c35c4d5612ca49ebb0344ea10387da4d2afe278387d4019e4d8111e815df8f55"},
Expand Down
14 changes: 14 additions & 0 deletions lib/deps_nix.ex
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,10 @@ defmodule DepsNix do
buildRebar3 = lib.makeOverridable beamPackages.buildRebar3;
workarounds = {
portCompiler = _unusedArgs: old: {
buildPlugins = [ pkgs.beamPackages.pc ];
};
rustlerPrecompiled =
{
toolchain ? null,
Expand Down Expand Up @@ -279,6 +283,11 @@ defmodule DepsNix do
let
apps = {
crc32cer = [
{
name = "portCompiler";
}
];
explorer = [
{
name = "rustlerPrecompiled";
Expand All @@ -288,6 +297,11 @@ defmodule DepsNix do
};
}
];
snappyer = [
{
name = "portCompiler";
}
];
};
applyOverrides =
Expand Down

0 comments on commit 97118d5

Please sign in to comment.