aboutsummaryrefslogtreecommitdiffhomepage
path: root/nix-overlays/dub/default.nix
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2023-06-04 18:18:21 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2023-06-04 19:21:34 -0400
commit446c0feadf7ca4a3289a5a0c9e0bbe0e74801f12 (patch)
tree50ce50da1ed20937182fe82fd7b27ff680648dae /nix-overlays/dub/default.nix
parentdub nix (diff)
nix use overlays when convenient
Diffstat (limited to 'nix-overlays/dub/default.nix')
-rw-r--r--nix-overlays/dub/default.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/nix-overlays/dub/default.nix b/nix-overlays/dub/default.nix
new file mode 100644
index 0000000..0ebc576
--- /dev/null
+++ b/nix-overlays/dub/default.nix
@@ -0,0 +1,83 @@
+{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }:
+
+assert dcompiler != null;
+
+stdenv.mkDerivation rec {
+ pname = "dub";
+ version = "1.30.0";
+
+ enableParallelBuilding = true;
+
+ src = fetchFromGitHub {
+ owner = "dlang";
+ repo = "dub";
+ rev = "v${version}";
+ sha256 = "sha256-iVl7bjblvIxvrUX7Phq6h4AIAmZjNVkGYYFA1hhsE7c=";
+ };
+
+ #postUnpack = ''
+ # patchShebangs .
+ #'';
+
+ dubvar = "\\$DUB";
+ postPatch = ''
+ patchShebangs test
+
+ # Can be removed with https://github.com/dlang/dub/pull/1368
+ substituteInPlace test/fetchzip.sh \
+ --replace "dub remove" "\"${dubvar}\" remove"
+ '';
+
+ nativeBuildInputs = [ dcompiler libevent rsync ];
+ buildInputs = [ curl ];
+
+ buildPhase = ''
+ for DC_ in dmd ldmd2 gdmd; do
+ echo "... check for D compiler $DC_ ..."
+ export DC=$(type -P $DC_ || echo "")
+ if [ ! "$DC" == "" ]; then
+ break
+ fi
+ done
+ if [ "$DC" == "" ]; then
+ exit "Error: could not find D compiler"
+ fi
+ echo "$DC_ found and used as D compiler in buildPhase for $pname"
+ $DC ./build.d
+ ./build
+ '';
+
+ doCheck = !stdenv.isDarwin;
+
+ checkPhase = ''
+ export DUB=$NIX_BUILD_TOP/source/bin/dub
+ export PATH=$PATH:$NIX_BUILD_TOP/source/bin/
+ #export DC=${dcompiler.out}/bin/${if dcompiler.pname=="ldc" then "ldc2" else dcompiler.pname}
+ if [ "$DC" == "" ]; then
+ exit "Error: could not find D compiler"
+ fi
+ echo "DC out --> $DC"
+ export HOME=$TMP
+
+ rm -rf test/issue502-root-import
+ rm -rf test/dpath-variable
+ rm test/dpath-variable.sh
+ rm -rf test/git-dependency
+ rm -rf test/use-c-sources # added to build v1.33.0
+
+ ./test/run-unittest.sh
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+ cp bin/dub $out/bin
+ '';
+
+ meta = with lib; {
+ description = "Package and build manager for D applications and libraries";
+ homepage = "https://code.dlang.org/";
+ license = licenses.mit;
+ maintainers = with maintainers; [ ThomasMader ];
+ platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
+ };
+}