mirror of
https://github.com/status-im/nim-codex.git
synced 2025-02-01 05:27:18 +00:00
d114e6e942
Using nimbus build system since the codex now uses version of Nim >2. Tested with nim versions(>2) in nixpkgs but none of them work thus the removal of USE_SYSTEM_NIM and its logic. Signed-off-by: markoburcul <marko@status.im>
96 lines
2.7 KiB
Nix
96 lines
2.7 KiB
Nix
{
|
|
pkgs ? import <nixpkgs> { },
|
|
src ? ../.,
|
|
targets ? ["all"],
|
|
# Options: 0,1,2
|
|
verbosity ? 1,
|
|
commit ? builtins.substring 0 7 (src.rev or "dirty"),
|
|
# These are the only platforms tested in CI and considered stable.
|
|
stableSystems ? [
|
|
"x86_64-linux" "aarch64-linux"
|
|
"x86_64-darwin" "aarch64-darwin"
|
|
],
|
|
# Perform 2-stage bootstrap instead of 3-stage to save time.
|
|
quickAndDirty ? true,
|
|
circomCompatPkg ? (
|
|
builtins.getFlake "github:codex-storage/circom-compat-ffi"
|
|
).packages.${builtins.currentSystem}.default
|
|
}:
|
|
|
|
assert pkgs.lib.assertMsg ((src.submodules or true) == true)
|
|
"Unable to build without submodules. Append '?submodules=1#' to the URI.";
|
|
|
|
let
|
|
inherit (pkgs) stdenv lib writeScriptBin callPackage;
|
|
|
|
revision = lib.substring 0 8 (src.rev or "dirty");
|
|
|
|
tools = callPackage ./tools.nix {};
|
|
in pkgs.gcc13Stdenv.mkDerivation rec {
|
|
|
|
pname = "codex";
|
|
|
|
version = "${tools.findKeyValue "version = \"([0-9]+\.[0-9]+\.[0-9]+)\"" ../codex.nimble}-${revision}";
|
|
|
|
inherit src;
|
|
|
|
# Dependencies that should exist in the runtime environment.
|
|
buildInputs = with pkgs; [
|
|
openssl
|
|
gmp
|
|
];
|
|
|
|
# Dependencies that should only exist in the build environment.
|
|
nativeBuildInputs = let
|
|
# Fix for Nim compiler calling 'git rev-parse' and 'lsb_release'.
|
|
fakeGit = writeScriptBin "git" "echo ${version}";
|
|
# Fix for the nim-circom-compat-ffi package that is built with cargo.
|
|
fakeCargo = writeScriptBin "cargo" "echo ${version}";
|
|
in
|
|
with pkgs; [
|
|
cmake
|
|
which
|
|
lsb-release
|
|
circomCompatPkg
|
|
fakeGit
|
|
fakeCargo
|
|
];
|
|
|
|
# Disable CPU optmizations that make binary not portable.
|
|
NIMFLAGS = "-d:disableMarchNative -d:git_revision_override=${revision}";
|
|
# Avoid Nim cache permission errors.
|
|
XDG_CACHE_HOME = "/tmp";
|
|
|
|
makeFlags = targets ++ [
|
|
"V=${toString verbosity}"
|
|
"QUICK_AND_DIRTY_COMPILER=${if quickAndDirty then "1" else "0"}"
|
|
"QUICK_AND_DIRTY_NIMBLE=${if quickAndDirty then "1" else "0"}"
|
|
];
|
|
|
|
configurePhase = ''
|
|
patchShebangs . vendor/nimbus-build-system > /dev/null
|
|
make nimbus-build-system-paths
|
|
'';
|
|
|
|
preBuild = ''
|
|
pushd vendor/nimbus-build-system/vendor/Nim
|
|
mkdir dist
|
|
cp -r ${callPackage ./nimble.nix {}} dist/nimble
|
|
cp -r ${callPackage ./checksums.nix {}} dist/checksums
|
|
cp -r ${callPackage ./csources.nix {}} csources_v2
|
|
chmod 777 -R dist/nimble csources_v2
|
|
popd
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp build/codex $out/bin/
|
|
'';
|
|
|
|
meta = with pkgs.lib; {
|
|
description = "Nim Codex storage system";
|
|
homepage = "https://github.com/codex-storage/nim-codex";
|
|
license = licenses.mit;
|
|
platforms = stableSystems;
|
|
};
|
|
} |