diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2024-12-04 23:26:20 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2024-12-05 21:50:12 -0500 | 
| commit | e3624e86aeda7eaf4f16560f50602639ea60fffe (patch) | |
| tree | e95d58a9cb42c665932d1caec2d037a164f61cc9 /org | |
| parent | ldc2 overlay default set: ldc2-1.40.0-beta5 (diff) | |
nix build, dub, take account of nixpkgs build changes
Diffstat (limited to 'org')
| -rw-r--r-- | org/dlang-nix-flakes.org | 95 | 
1 files changed, 57 insertions, 38 deletions
| diff --git a/org/dlang-nix-flakes.org b/org/dlang-nix-flakes.org index 9e12692..7211649 100644 --- a/org/dlang-nix-flakes.org +++ b/org/dlang-nix-flakes.org @@ -464,17 +464,16 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix            inherit shell;            inherit devEnv;            buildInputs = [sqlite]; -          nativeBuildInputs = [dub ldc gnumake]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; +          nativeBuildInputs = [gnumake dub ldc]; +          preBuild = '' +            export DCn=ldmd2 +            export DC=$(type -P $DCn || echo "") +            if [ "$DC" == "" ]; then exit "Error: could not find D compiler"; fi +          '';            buildPhase = ''              runHook preBuild -            for DC_ in dmd ldmd2 ldc2 gdc gdmd; do -              echo "- check for D compiler $DC_" -              DC=$(type -P $DC_ || echo "") -              if [ ! "$DC" == "" ]; then break; fi -            done -            if [ "$DC" == "" ]; then exit "Error: could not find D compiler"; fi -            echo "$DC_ used as D compiler to build $pname" -            dub build --cache=local --compiler=$DC --build=$DC_ --combined --skip-registry=all +            echo "$DCn used as D compiler to build $pname" +            dub build --cache=local --compiler=$DC --build=$DCn --combined --skip-registry=all              runHook postBuild            '';            inherit checkPhase; @@ -580,7 +579,6 @@ direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${Nix  #+HEADER: :tangle "../shell.nix"  #+HEADER: :tangle-mode (identity #o755)  #+HEADER: :shebang "#!/usr/bin/env -S nix-shell --pure\n#!nix-shell -i bash" -#+HEADER: :noweb yes  #+BEGIN_SRC nix  {pkgs-nix ? import <nixpkgs> {}}:  with pkgs-nix; @@ -1596,11 +1594,24 @@ sha256-kTHRaAKG7cAGb4IE/NGHWaZ8t7ZceKj03l6E8wLzJzs=  #+HEADER: :tangle "../nix-overlays/dub/default.nix"  #+BEGIN_SRC nix -{ lib, stdenv, fetchFromGitHub, curl, libevent, rsync, ldc, dcompiler ? ldc }: +import ./package.nix +#+END_SRC + +#+HEADER: :tangle "../nix-overlays/dub/package.nix" +#+BEGIN_SRC nix +{ lib +, stdenv +, fetchFromGitHub +, curl +, <<dcompiler>> +, dcompiler ? <<dcompiler>> +, libevent +, rsync +}:  assert dcompiler != null; -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: {    pname = "dub";    version = "<<dub_version>>"; @@ -1609,30 +1620,21 @@ stdenv.mkDerivation rec {    src = fetchFromGitHub {      owner = "dlang";      repo = "dub"; -    rev = "v${version}"; -    sha256 = "<<dub_hash>>"; +    rev = "v${finalAttrs.version}"; +    hash = "<<dub_hash>>";    }; -  #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 "") +  preBuild = '' +    for DCn in dmd ldmd2 gdmd; do +      echo "... check for D compiler $DCn ..." +      export DC=$(type -P $DCn || echo "")        if [ ! "$DC" == "" ]; then          break        fi @@ -1640,17 +1642,21 @@ stdenv.mkDerivation rec {      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 +    echo "$DCn found and used as D compiler in buildPhase for $pname"    ''; -  doCheck = !stdenv.isDarwin; +  buildPhase = '' +    runHook preBuild +    $DC -run ./build.d +    runHook postBuild +  ''; + +  doCheck = !stdenv.hostPlatform.isDarwin;    checkPhase = '' +    runHook preCheck      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 @@ -1658,8 +1664,7 @@ stdenv.mkDerivation rec {      export HOME=$TMP      rm -rf test/issue502-root-import -    rm -rf test/dpath-variable -    #rm test/dpath-variable.sh +    rm -r test/dpath-variable # requires execution of dpath-variable.sh      rm -rf test/git-dependency      rm -rf test/use-c-sources # added to build v1.33.0      rm -rf test/pr2642-cache-db # added to build v1.34.0 @@ -1667,21 +1672,35 @@ stdenv.mkDerivation rec {      rm -rf test/pr2647-build-deep # added to build v1.36.0      ./test/run-unittest.sh +    runHook postCheck    '';    installPhase = '' -    mkdir -p $out/bin -    cp bin/dub $out/bin +    runHook preInstall +    install -Dm755 bin/dub $out/bin/dub +    runHook postInstall    '';    meta = with lib; { -    description = "Package and build manager for D applications and libraries"; +    description = "Package and build manager for D programs and libraries";      homepage = "https://code.dlang.org/";      license = licenses.mit; +    mainProgram = "dub";      maintainers = with maintainers; [ jtbx ];      platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];    }; -} +}) +#+END_SRC + +*** dcompiler SET + +#+NAME: dcompiler +#+BEGIN_SRC nix +ldc +#+END_SRC + +#+BEGIN_SRC nix +dmd  #+END_SRC  *** versions SET | 
