fdb820602b
To reproduce:
$ nix run nixpkgs/3b32825de172d0bc85664f495edb096b10862524#ast-grep \
-- scan --update-all --inline-rules '
id: nix-x86_64-darwin
language: nix
rule:
any:
- pattern: "\"x86_64-darwin\""
kind: list_expression > string_expression
- pattern:
context: "{ \"x86_64-darwin\" = $EXPR; }"
selector: binding
- pattern:
context: "{ x86_64-darwin = $EXPR; }"
selector: binding
fix:
template: ""
' pkgs
$ nix run nixpkgs/3b32825de172d0bc85664f495edb096b10862524#ast-grep \
-- scan --update-all --inline-rules '
id: json-first-x86_64-darwin
language: json
rule:
kind: object > pair:nth-child(1)
has:
pattern: "\"x86_64-darwin\""
field: key
fix:
template: ""
expandEnd: { regex: "," }
' pkgs
$ nix run nixpkgs/3b32825de172d0bc85664f495edb096b10862524#ast-grep \
-- scan --update-all --inline-rules '
id: json-x86_64-darwin
language: json
rule:
kind: object > pair
has:
pattern: "\"x86_64-darwin\""
field: key
fix:
template: ""
expandStart: { regex: "," }
' pkgs
$ git restore pkgs/by-name/om/omnix/package.nix
$ git diff --name-only -z \
| nix shell nixpkgs/3b32825de172d0bc85664f495edb096b10862524#gnused \
-c xargs -0 sed -i '/^$/N; /^\n\? \+$/d'
$ treefmt
94 lines
2.1 KiB
Nix
94 lines
2.1 KiB
Nix
{
|
|
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
|
|
|
|
# On linux pargets like `pkgsLLVM.dmd` `cc` does not expose `libgcc`
|
|
# and can't build `dmd`.
|
|
assert hostPlatform.isLinux -> (stdenv.cc.cc ? libgcc);
|
|
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 = {
|
|
description = "Digital Mars D Compiler Package";
|
|
# As of 2.075 all sources and binaries use the boost license
|
|
license = lib.licenses.boost;
|
|
maintainers = [ lib.maintainers.lionello ];
|
|
homepage = "https://dlang.org/";
|
|
platforms = [
|
|
"i686-linux"
|
|
"x86_64-linux"
|
|
];
|
|
};
|
|
}
|