diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2023-06-04 18:18:21 -0400 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2023-06-04 19:21:34 -0400 | 
| commit | 446c0feadf7ca4a3289a5a0c9e0bbe0e74801f12 (patch) | |
| tree | 50ce50da1ed20937182fe82fd7b27ff680648dae /nix-overlays/dmd/binary.nix | |
| parent | dub nix (diff) | |
nix use overlays when convenient
Diffstat (limited to 'nix-overlays/dmd/binary.nix')
| -rw-r--r-- | nix-overlays/dmd/binary.nix | 72 | 
1 files changed, 72 insertions, 0 deletions
| diff --git a/nix-overlays/dmd/binary.nix b/nix-overlays/dmd/binary.nix new file mode 100644 index 0000000..6a99d42 --- /dev/null +++ b/nix-overlays/dmd/binary.nix @@ -0,0 +1,72 @@ +{ lib, stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, glibc +, version, hashes }: + +let +  inherit (stdenv) hostPlatform; +  OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name; +  MODEL = toString hostPlatform.parsed.cpu.bits; +in stdenv.mkDerivation { +  pname = "dmd-bootstrap"; +  inherit version; + +  src = fetchurl rec { +    name = "dmd.${version}.${OS}.tar.xz"; +    url = "http://downloads.dlang.org/releases/2.x/${version}/${name}"; +    sha256 = hashes.${OS} or (throw "missing bootstrap sha256 for OS ${OS}"); +  }; + +  dontConfigure = true; +  dontBuild = true; + +  nativeBuildInputs = lib.optionals hostPlatform.isLinux [ +    autoPatchelfHook +  ] ++ lib.optionals hostPlatform.isDarwin [ +    fixDarwinDylibNames +  ]; +  propagatedBuildInputs = [ +    curl +    tzdata +  ] ++ lib.optionals hostPlatform.isLinux [ +    glibc +    stdenv.cc.cc.libgcc +  ]; + +  installPhase = '' +    runHook preInstall + +    mkdir -p $out + +    # try to copy model-specific binaries into bin first +    mv ${OS}/bin${MODEL} $out/bin || true + +    mv src license.txt ${OS}/* $out/ + +    # move man into place +    mkdir -p $out/share +    mv man $out/share/ + +    # move docs into place +    mkdir -p $out/share/doc +    mv html/d $out/share/doc/ + +    # fix paths in dmd.conf (one level less) +    substituteInPlace $out/bin/dmd.conf --replace "/../../" "/../" + +    runHook postInstall +  ''; + +  # Stripping on Darwin started to break libphobos2.a +  # Undefined symbols for architecture x86_64: +  #   "_rt_envvars_enabled", referenced from: +  #       __D2rt6config16rt_envvarsOptionFNbNiAyaMDFNbNiQkZQnZQq in libphobos2.a(config_99a_6c3.o) +  dontStrip = hostPlatform.isDarwin; + +  meta = with lib; { +    description = "Digital Mars D Compiler Package"; +    # As of 2.075 all sources and binaries use the boost license +    license = licenses.boost; +    maintainers = [ maintainers.lionello ]; +    homepage = "https://dlang.org/"; +    platforms = [ "x86_64-darwin" "i686-linux" "x86_64-linux" ]; +  }; +} | 
