<commit_before>{ stdenv, fetchFromGitHub
, makeWrapper, unzip, which
, curl, tzdata
}:

stdenv.mkDerivation rec {
  name = "dmd-${version}";
  # This is the last version of dmd which is buildable without a D compiler.
  # So we use this as a bootstrap version.
  # The DMD frontend has been ported to D in 2.069.0 but idgen was already
  # ported in 2.068.0.
  version = "2.067.1";

  srcs = [
  (fetchFromGitHub {
    owner = "dlang";
    repo = "dmd";
    rev = "v${version}";
    sha256 = "0fm29lg8axfmzdaj0y6vg70lhwb5d9rv4aavnvdd15xjschinlcz";
  })
  (fetchFromGitHub {
    owner = "dlang";
    repo = "druntime";
    rev = "v${version}";
    sha256 = "1n2qfw9kmnql0fk2nxikispqs7vh85nhvyyr00fk227n9lgnqf02";
  })
  (fetchFromGitHub {
    owner = "dlang";
    repo = "phobos";
    rev = "v${version}";
    sha256 = "0fywgds9xvjcgnqxmpwr67p3wi2m535619pvj159cgwv5y0nr3p1";
  })
  ];

  sourceRoot = ".";

  postUnpack = ''
      mv dmd-v${version}-src dmd
      mv druntime-v${version}-src druntime
      mv phobos-v${version}-src phobos
  '';

  # Compile with PIC to prevent colliding modules with binutils 2.28.
  # https://issues.dlang.org/show_bug.cgi?id=17375
  usePIC = "-fPIC";

  postPatch = ''
      # Ugly hack so the dlopen call has a chance to succeed.
      # https://issues.dlang.org/show_bug.cgi?id=15391
      substituteInPlace phobos/std/net/curl.d \
          --replace libcurl.so ${curl.out}/lib/libcurl.so

      # Ugly hack to fix the hardcoded path to zoneinfo in the source file.
      # https://issues.dlang.org/show_bug.cgi?id=15391
      substituteInPlace phobos/std/datetime.d \
          --replace /usr/share/zoneinfo/ ${tzdata}/share/zoneinfo/

      substituteInPlace druntime/test/shared/Makefile \
          --replace "DFLAGS:=" "DFLAGS:=${usePIC} "

      # phobos uses curl, so we need to patch the path to the lib.
      substituteInPlace phobos/posix.mak \
          --replace "-soname=libcurl.so.4" "-soname=${curl.out}/lib/libcurl.so.4"

      # Use proper C++ compiler
      substituteInPlace dmd/src/posix.mak \
          --replace g++ $CXX
  ''

    + stdenv.lib.optionalString stdenv.hostPlatform.isLinux ''
        substituteInPlace dmd/src/root/port.c \
          --replace "#include <bits/mathdef.h>" "#include <complex.h>"
    ''

    + stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
        substituteInPlace dmd/src/posix.mak \
            --replace MACOSX_DEPLOYMENT_TARGET MACOSX_DEPLOYMENT_TARGET_

        # Was not able to compile on darwin due to "__inline_isnanl"
        # being undefined.
        substituteInPlace dmd/src/root/port.c --replace __inline_isnanl __inline_isnan
    '';

  nativeBuildInputs = [ makeWrapper unzip which ];
  buildInputs = [ curl tzdata ];

  # Buid and install are based on http://wiki.dlang.org/Building_DMD
  buildPhase = ''
      cd dmd
      make -f posix.mak INSTALL_DIR=$out
      export DMD=$PWD/src/dmd
      cd ../druntime
      make -f posix.mak PIC=${usePIC} INSTALL_DIR=$out DMD=$DMD
      cd ../phobos
      make -f posix.mak PIC=${usePIC} INSTALL_DIR=$out DMD=$DMD
      cd ..
  '';

  doCheck = true;

  checkPhase = ''
      cd dmd
      export DMD=$PWD/src/dmd
      cd ../druntime
      make -f posix.mak unittest PIC=${usePIC} DMD=$DMD BUILD=release
      cd ../phobos
      make -f posix.mak unittest PIC=${usePIC} DMD=$DMD BUILD=release
      cd ..
  '';<commit_msg>dmd: Fix bootstrap dmd to build with sandboxing of nixUnstable<commit_after>{ stdenv, fetchFromGitHub
, makeWrapper, unzip, which
, curl, tzdata
}:

stdenv.mkDerivation rec {
  name = "dmd-${version}";
  # This is the last version of dmd which is buildable without a D compiler.
  # So we use this as a bootstrap version.
  # The DMD frontend has been ported to D in 2.069.0 but idgen was already
  # ported in 2.068.0.
  version = "2.067.1";

  srcs = [
  (fetchFromGitHub {
    owner = "dlang";
    repo = "dmd";
    rev = "v${version}";
    sha256 = "0fm29lg8axfmzdaj0y6vg70lhwb5d9rv4aavnvdd15xjschinlcz";
  })
  (fetchFromGitHub {
    owner = "dlang";
    repo = "druntime";
    rev = "v${version}";
    sha256 = "1n2qfw9kmnql0fk2nxikispqs7vh85nhvyyr00fk227n9lgnqf02";
  })
  (fetchFromGitHub {
    owner = "dlang";
    repo = "phobos";
    rev = "v${version}";
    sha256 = "0fywgds9xvjcgnqxmpwr67p3wi2m535619pvj159cgwv5y0nr3p1";
  })
  ];

  sourceRoot = ".";

  postUnpack = ''
      mv dmd-v${version}-src dmd
      mv druntime-v${version}-src druntime
      mv phobos-v${version}-src phobos
  '';

  # Compile with PIC to prevent colliding modules with binutils 2.28.
  # https://issues.dlang.org/show_bug.cgi?id=17375
  usePIC = "-fPIC";
  ROOT_HOME_DIR = "$(echo ~root)";

  postPatch = ''
      # Ugly hack so the dlopen call has a chance to succeed.
      # https://issues.dlang.org/show_bug.cgi?id=15391
      substituteInPlace phobos/std/net/curl.d \
          --replace libcurl.so ${curl.out}/lib/libcurl.so

      # Ugly hack to fix the hardcoded path to zoneinfo in the source file.
      # https://issues.dlang.org/show_bug.cgi?id=15391
      substituteInPlace phobos/std/datetime.d \
          --replace /usr/share/zoneinfo/ ${tzdata}/share/zoneinfo/

      substituteInPlace druntime/test/shared/Makefile \
          --replace "DFLAGS:=" "DFLAGS:=${usePIC} "

      # phobos uses curl, so we need to patch the path to the lib.
      substituteInPlace phobos/posix.mak \
          --replace "-soname=libcurl.so.4" "-soname=${curl.out}/lib/libcurl.so.4"

      # Use proper C++ compiler
      substituteInPlace dmd/src/posix.mak \
          --replace g++ $CXX
  ''

  + stdenv.lib.optionalString stdenv.hostPlatform.isLinux ''
      substituteInPlace dmd/src/root/port.c \
        --replace "#include <bits/mathdef.h>" "#include <complex.h>"

      # See https://github.com/NixOS/nixpkgs/issues/29443
      substituteInPlace phobos/std/path.d \
          --replace "\"/root" "\"${ROOT_HOME_DIR}"
  ''

  + stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
      substituteInPlace dmd/src/posix.mak \
          --replace MACOSX_DEPLOYMENT_TARGET MACOSX_DEPLOYMENT_TARGET_

      # Was not able to compile on darwin due to "__inline_isnanl"
      # being undefined.
      substituteInPlace dmd/src/root/port.c --replace __inline_isnanl __inline_isnan
  '';

  nativeBuildInputs = [ makeWrapper unzip which ];
  buildInputs = [ curl tzdata ];

  # Buid and install are based on http://wiki.dlang.org/Building_DMD
  buildPhase = ''
      cd dmd
      make -f posix.mak INSTALL_DIR=$out
      export DMD=$PWD/src/dmd
      cd ../druntime
      make -f posix.mak PIC=${usePIC} INSTALL_DIR=$out DMD=$DMD
      cd ../phobos
      make -f posix.mak PIC=${usePIC} INSTALL_DIR=$out DMD=$DMD
      cd ..
  '';

  doCheck = true;

  checkPhase = ''
      cd dmd
      export DMD=$PWD/src/dmd
      cd ../druntime
      make -f posix.mak unittest PIC=${usePIC} DMD=$DMD BUILD=release
      cd ../phobos
      make -f posix.mak unittest PIC=${usePIC} DMD=$DMD BUILD=release
      cd ..
  '';
{'fraction_non_alphanumeric': 0.12589413447782546, 'fraction_numerical': 0.02703862660944206, 'mean_word_length': 2.644942648592284, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 7, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1875504', 'n_tokens_mistral': 2767, 'n_tokens_neox': 2576, 'n_words': 565}