68 lines
2.1 KiB
Nix
68 lines
2.1 KiB
Nix
|
{ lib, stdenv, fetchFromGitHub, capnproto }:
|
||
|
|
||
|
stdenv.mkDerivation {
|
||
|
pname = "ekam";
|
||
|
version = "unstable-2021-09-18";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "capnproto";
|
||
|
repo = "ekam";
|
||
|
rev = "77c338f8bd8f4a2ce1e6199b2a52363f1fccf388";
|
||
|
sha256 = "0q4bizlb1ykzdp4ca0kld6xm5ml9q866xrj3ijffcnyiyqr51qr8";
|
||
|
};
|
||
|
|
||
|
# The capnproto *source* is required to build ekam.
|
||
|
# https://github.com/capnproto/ekam/issues/5
|
||
|
#
|
||
|
# Specifically, the git version of the source is required, as
|
||
|
# capnproto release tarballs do not include ekam rule files.
|
||
|
postUnpack = ''
|
||
|
mkdir -p $sourceRoot/deps
|
||
|
cp -r ${capnproto.src} $sourceRoot/deps/capnproto
|
||
|
'';
|
||
|
|
||
|
postPatch = ''
|
||
|
# A single capnproto test file expects to be able to write to
|
||
|
# /var/tmp. We change it to use /tmp because /var is not available
|
||
|
# under nix-build.
|
||
|
substituteInPlace deps/capnproto/c++/src/kj/filesystem-disk-test.c++ \
|
||
|
--replace "/var/tmp" "/tmp"
|
||
|
'';
|
||
|
|
||
|
# NIX_ENFORCE_PURITY prevents ld from linking against anything outside
|
||
|
# of the nix store -- but ekam builds capnp locally and links against it,
|
||
|
# so that causes the build to fail. So, we turn this off.
|
||
|
#
|
||
|
# See: https://nixos.wiki/wiki/Development_environment_with_nix-shell#Troubleshooting
|
||
|
preBuild = ''
|
||
|
unset NIX_ENFORCE_PURITY
|
||
|
'';
|
||
|
|
||
|
makeFlags = [
|
||
|
"PARALLEL=$(NIX_BUILD_CORES)"
|
||
|
];
|
||
|
|
||
|
installPhase = ''
|
||
|
mkdir $out
|
||
|
cp -r bin $out
|
||
|
|
||
|
# Remove capnproto tools; there's a separate nix package for that.
|
||
|
rm $out/bin/capnp*
|
||
|
# Don't distribute ekam-bootstrap, which is not needed outside this build.
|
||
|
rm $out/bin/ekam-bootstrap
|
||
|
'';
|
||
|
|
||
|
meta = with lib; {
|
||
|
description = ''Build system ("make" in reverse)'';
|
||
|
longDescription = ''
|
||
|
Ekam ("make" spelled backwards) is a build system which automatically
|
||
|
figures out what to build and how to build it purely based on the
|
||
|
source code. No separate "makefile" is needed.
|
||
|
'';
|
||
|
homepage = "https://github.com/capnproto/ekam";
|
||
|
license = licenses.asl20;
|
||
|
platforms = platforms.linux;
|
||
|
maintainers = [ maintainers.garrison ];
|
||
|
};
|
||
|
}
|