Merge master into staging-next
This commit is contained in:
@@ -1,53 +1,109 @@
|
||||
{ stdenv, lib, crystal, linkFarm, fetchFromGitHub }:
|
||||
{ # Generate shards.nix with `nix-shell -p crystal2nix --run crystal2nix` in the projects root
|
||||
shardsFile ? null
|
||||
{ stdenv, lib, crystal, shards, git, pkgconfig, which, linkFarm, fetchFromGitHub, installShellFiles }:
|
||||
|
||||
{ # Some projects do not include a lock file, so you can pass one
|
||||
lockFile ? null
|
||||
# Generate shards.nix with `nix-shell -p crystal2nix --run crystal2nix` in the projects root
|
||||
, shardsFile ? null
|
||||
# We support different builders. To make things more straight forward, make it
|
||||
# user selectable instead of trying to autodetect
|
||||
, format ? "make"
|
||||
, installManPages ? true
|
||||
# Specify binaries to build in the form { foo.src = "src/foo.cr"; }
|
||||
# The default `crystal build` options can be overridden with { foo.options = [ "--no-debug" ]; }
|
||||
, crystalBinaries ? {}
|
||||
, ...
|
||||
}@args:
|
||||
, crystalBinaries ? { }, ... }@args:
|
||||
|
||||
assert (builtins.elem format [ "make" "crystal" "shards" ]);
|
||||
|
||||
let
|
||||
mkDerivationArgs = builtins.removeAttrs args [ "shardsFile" "crystalBinaries" ];
|
||||
mkDerivationArgs = builtins.removeAttrs args [
|
||||
"format"
|
||||
"installManPages"
|
||||
"lockFile"
|
||||
"shardsFile"
|
||||
"crystalBinaries"
|
||||
];
|
||||
|
||||
crystalLib = linkFarm "crystal-lib" (lib.mapAttrsToList (name: value: {
|
||||
inherit name;
|
||||
path = fetchFromGitHub value;
|
||||
}) (import shardsFile));
|
||||
|
||||
defaultOptions = [ "--release" "--progress" "--no-debug" "--verbose" ];
|
||||
# we previously had --no-debug here but that is not recommended by upstream
|
||||
defaultOptions = [ "--release" "--progress" "--verbose" ];
|
||||
|
||||
buildDirectly = shardsFile == null || crystalBinaries != { };
|
||||
in stdenv.mkDerivation (mkDerivationArgs // {
|
||||
|
||||
configurePhase = args.configurePhase or ''
|
||||
runHook preConfigure
|
||||
${lib.optionalString (shardsFile != null) "ln -s ${crystalLib} lib"}
|
||||
runHook postConfigure
|
||||
configurePhase = args.configurePhase or lib.concatStringsSep "\n" ([
|
||||
"runHook preConfigure"
|
||||
] ++ lib.optional (lockFile != null) "ln -s ${lockFile} ./shard.lock"
|
||||
++ lib.optional (shardsFile != null) "ln -s ${crystalLib} lib"
|
||||
++ [ "runHook postConfigure "]);
|
||||
|
||||
CRFLAGS = lib.concatStringsSep " " defaultOptions;
|
||||
|
||||
PREFIX = placeholder "out";
|
||||
|
||||
buildInputs = args.buildInputs or [ ] ++ [ crystal ]
|
||||
++ lib.optional (format != "crystal") shards;
|
||||
|
||||
nativeBuildInputs = args.nativeBuildInputs or [ ] ++ [ git installShellFiles pkgconfig which ];
|
||||
|
||||
buildPhase = args.buildPhase or (lib.concatStringsSep "\n" ([
|
||||
"runHook preBuild"
|
||||
] ++ lib.optional (format == "make")
|
||||
''make ''${buildTargets:-build} $makeFlags''
|
||||
++ lib.optionals (format == "crystal") (lib.mapAttrsToList (bin: attrs: ''
|
||||
crystal ${lib.escapeShellArgs (["build" "-o" bin
|
||||
(attrs.src or (throw "No source file for crystal binary ${bin} provided"))
|
||||
] ++ (attrs.options or defaultOptions))}
|
||||
'') crystalBinaries)
|
||||
++ lib.optional (format == "shards")
|
||||
"shards build --local --production ${lib.concatStringsSep " " defaultOptions}"
|
||||
++ [ "runHook postBuild" ]));
|
||||
|
||||
installPhase = args.installPhase or (lib.concatStringsSep "\n" ([
|
||||
"runHook preInstall"
|
||||
] ++ lib.optional (format == "make")
|
||||
''make ''${installTargets:-install} $installFlags''
|
||||
++ lib.optionals (format == "crystal") (map (bin: ''
|
||||
install -Dm555 ${lib.escapeShellArgs [ bin "${placeholder "out"}/bin/${bin}" ]}
|
||||
'') (lib.attrNames crystalBinaries))
|
||||
++ lib.optional (format == "shards")
|
||||
''install -Dm555 bin/* -t $out/bin''
|
||||
++ [
|
||||
''
|
||||
for f in README* *.md LICENSE; do
|
||||
test -f $f && install -Dm444 $f -t $out/share/doc/${args.pname}
|
||||
done
|
||||
''
|
||||
] ++ (lib.optional installManPages ''
|
||||
if [ -d man ]; then
|
||||
installManPage man/*.?
|
||||
fi
|
||||
'') ++ [
|
||||
"runHook postInstall"
|
||||
]));
|
||||
|
||||
doCheck = args.doCheck or true;
|
||||
|
||||
checkPhase = args.checkPhase or (lib.concatStringsSep "\n" ([
|
||||
"runHook preCheck"
|
||||
] ++ lib.optional (format == "make")
|
||||
''make ''${checkTarget:-test} $checkFlags''
|
||||
++ lib.optional (format != "make")
|
||||
''crystal ''${checkTarget:-spec} $checkFlags''
|
||||
++ [ "runHook postCheck" ]));
|
||||
|
||||
doInstallCheck = args.doInstallCheck or true;
|
||||
|
||||
installCheckPhase = args.installCheckPhase or ''
|
||||
for f in $out/bin/*; do
|
||||
$f --help
|
||||
done
|
||||
'';
|
||||
|
||||
buildInputs = args.buildInputs or [] ++ [ crystal ];
|
||||
|
||||
buildPhase = args.buildPhase or ''
|
||||
runHook preBuild
|
||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList (bin: attrs: ''
|
||||
crystal ${lib.escapeShellArgs ([
|
||||
"build"
|
||||
"-o" bin
|
||||
(attrs.src or (throw "No source file for crystal binary ${bin} provided"))
|
||||
] ++ attrs.options or defaultOptions)}
|
||||
'') crystalBinaries)}
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = args.installPhase or ''
|
||||
runHook preInstall
|
||||
mkdir -p "$out/bin"
|
||||
${lib.concatMapStringsSep "\n" (bin: ''
|
||||
mv ${lib.escapeShellArgs [ bin "${placeholder "out"}/bin/${bin}" ]}
|
||||
'') (lib.attrNames crystalBinaries)}
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = args.meta or {} // {
|
||||
meta = args.meta or { } // {
|
||||
platforms = args.meta.platforms or crystal.meta.platforms;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{ lib, crystal, nix-prefetch-git }:
|
||||
|
||||
crystal.buildCrystalPackage {
|
||||
pname = "crystal2nix";
|
||||
version = "unstable-2018-07-31";
|
||||
@@ -6,11 +7,16 @@ crystal.buildCrystalPackage {
|
||||
nixPrefetchGit = "${lib.getBin nix-prefetch-git}/bin/nix-prefetch-git";
|
||||
unpackPhase = "substituteAll ${./crystal2nix.cr} crystal2nix.cr";
|
||||
|
||||
format = "crystal";
|
||||
|
||||
crystalBinaries.crystal2nix.src = "crystal2nix.cr";
|
||||
|
||||
# it will blow up without a shard.yml file
|
||||
doInstallCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Utility to convert Crystal's shard.lock files to a Nix file";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.manveru ];
|
||||
maintainers = with maintainers; [ manveru ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
{ stdenv, fetchurl, curl, tzdata, autoPatchelfHook, fixDarwinDylibNames, libxml2
|
||||
, version, hashes }:
|
||||
with stdenv;
|
||||
let
|
||||
OS = if hostPlatform.isDarwin then "osx" else hostPlatform.parsed.kernel.name;
|
||||
ARCH = toString hostPlatform.parsed.cpu.name;
|
||||
in mkDerivation {
|
||||
pname = "ldc-bootstrap";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl rec {
|
||||
name = "ldc2-${version}-${OS}-${ARCH}.tar.xz";
|
||||
url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/${name}";
|
||||
sha256 = hashes."${OS}-${ARCH}" or (throw "missing bootstrap sha256 for ${OS}-${ARCH}");
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
nativeBuildInputs = [ fixDarwinDylibNames autoPatchelfHook ];
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxml2 stdenv.cc.cc ];
|
||||
|
||||
propagatedBuildInputs = [ curl tzdata ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
|
||||
mv bin etc import lib LICENSE README $out/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
inherit version;
|
||||
description = "The LLVM-based D Compiler";
|
||||
homepage = "https://github.com/ldc-developers/ldc";
|
||||
# from https://github.com/ldc-developers/ldc/blob/master/LICENSE
|
||||
license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ];
|
||||
maintainers = with maintainers; [ ThomasMader lionello ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ];
|
||||
};
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{ callPackage }:
|
||||
callPackage ./binary.nix {
|
||||
version = "1.19.0";
|
||||
hashes = {
|
||||
# Get these from `nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.19.0/ldc2-1.19.0-osx-x86_64.tar.xz` etc..
|
||||
osx-x86_64 = "1bp3xkh9zp64dzq8isanib1gacb3nfbl70qv15qygwk1zan6zgy7";
|
||||
linux-x86_64 = "146grr2lwarfk13wgkpyb77xb6b3as1is2rf4s2hipqjmc8biy1h";
|
||||
linux-aarch64 = "1fv6jshfvi15m7masgxq1hgp216qjd5amizrqdf26vhrq3a08li3";
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,173 @@
|
||||
import ./generic.nix {
|
||||
version = "1.20.1";
|
||||
ldcSha256 = "1bqsgab22v02pc3c9gcyf15y7aimadv24d68icaw5lpgnvzxy89b";
|
||||
{ stdenv, fetchurl, cmake, ninja, llvm_5, llvm_8, curl, tzdata
|
||||
, libconfig, lit, gdb, unzip, darwin, bash
|
||||
, callPackage, makeWrapper, runCommand, targetPackages
|
||||
, bootstrapVersion ? false
|
||||
, version ? "1.17.0"
|
||||
, ldcSha256 ? "1aag5jfrng6p4ms0fs90hjbv9bcj3hj8h52r68c3cm6racdajbva"
|
||||
}:
|
||||
|
||||
let
|
||||
bootstrapLdc = if !bootstrapVersion then
|
||||
# LDC 0.17.x is the last version which doesn't need a working D compiler to
|
||||
# build so we use that version to bootstrap the actual build.
|
||||
callPackage ./default.nix {
|
||||
bootstrapVersion = true;
|
||||
version = "0.17.6";
|
||||
ldcSha256 = "0qf5kbxddgmg3kqzi0kf4bgv8vdrnv16y07hcpm0cwv9mc3qr2w6";
|
||||
}
|
||||
else
|
||||
"";
|
||||
|
||||
pathConfig = runCommand "ldc-lib-paths" {} ''
|
||||
mkdir $out
|
||||
echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile
|
||||
echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile
|
||||
'';
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ldc";
|
||||
inherit version;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz";
|
||||
sha256 = ldcSha256;
|
||||
};
|
||||
|
||||
# https://issues.dlang.org/show_bug.cgi?id=19553
|
||||
hardeningDisable = [ "fortify" ];
|
||||
|
||||
postUnpack = ''
|
||||
patchShebangs .
|
||||
''
|
||||
|
||||
+ stdenv.lib.optionalString (!bootstrapVersion) ''
|
||||
rm ldc-${version}-src/tests/d2/dmd-testsuite/fail_compilation/mixin_gc.d
|
||||
rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/xtest46_gc.d
|
||||
rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/testptrref_gc.d
|
||||
|
||||
# test depends on current year
|
||||
rm ldc-${version}-src/tests/d2/dmd-testsuite/compilable/ddocYear.d
|
||||
''
|
||||
|
||||
+ stdenv.lib.optionalString (!bootstrapVersion && stdenv.hostPlatform.isDarwin) ''
|
||||
# https://github.com/NixOS/nixpkgs/issues/34817
|
||||
rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
# Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow
|
||||
substituteInPlace tests/d2/dmd-testsuite/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash"
|
||||
''
|
||||
|
||||
+ stdenv.lib.optionalString (!bootstrapVersion && stdenv.hostPlatform.isLinux) ''
|
||||
substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" ""
|
||||
''
|
||||
|
||||
+ stdenv.lib.optionalString (!bootstrapVersion && stdenv.hostPlatform.isDarwin) ''
|
||||
substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)"
|
||||
''
|
||||
|
||||
+ stdenv.lib.optionalString (bootstrapVersion && stdenv.hostPlatform.isDarwin) ''
|
||||
# Was not able to compile on darwin due to "__inline_isnanl"
|
||||
# being undefined.
|
||||
# TODO Remove with version > 0.17.6
|
||||
substituteInPlace dmd2/root/port.c --replace __inline_isnanl __inline_isnan
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ninja makeWrapper unzip ]
|
||||
++ stdenv.lib.optionals (!bootstrapVersion) [
|
||||
bootstrapLdc lit lit.python
|
||||
]
|
||||
++ stdenv.lib.optional (!bootstrapVersion && stdenv.hostPlatform.isDarwin)
|
||||
# https://github.com/NixOS/nixpkgs/issues/57120
|
||||
# https://github.com/NixOS/nixpkgs/pull/59197#issuecomment-481972515
|
||||
llvm_5
|
||||
++ stdenv.lib.optional (!bootstrapVersion && !stdenv.hostPlatform.isDarwin)
|
||||
llvm_8
|
||||
++ stdenv.lib.optional (!bootstrapVersion && !stdenv.hostPlatform.isDarwin)
|
||||
# https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818
|
||||
gdb
|
||||
++ stdenv.lib.optionals (bootstrapVersion) [
|
||||
libconfig llvm_5
|
||||
]
|
||||
++ stdenv.lib.optional stdenv.hostPlatform.isDarwin
|
||||
darwin.apple_sdk.frameworks.Foundation;
|
||||
|
||||
|
||||
buildInputs = [ curl tzdata ];
|
||||
|
||||
cmakeFlags = stdenv.lib.optionals (!bootstrapVersion) [
|
||||
"-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}"
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
];
|
||||
|
||||
postConfigure = ''
|
||||
export DMD=$PWD/bin/ldmd2
|
||||
'';
|
||||
|
||||
makeFlags = [ "DMD=$DMD" ];
|
||||
|
||||
fixNames = stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
fixDarwinDylibNames() {
|
||||
local flags=()
|
||||
|
||||
for fn in "$@"; do
|
||||
flags+=(-change "$(basename "$fn")" "$fn")
|
||||
done
|
||||
|
||||
for fn in "$@"; do
|
||||
if [ -L "$fn" ]; then continue; fi
|
||||
echo "$fn: fixing dylib"
|
||||
install_name_tool -id "$fn" "''${flags[@]}" "$fn"
|
||||
done
|
||||
}
|
||||
|
||||
fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib")
|
||||
export DYLD_LIBRARY_PATH=$(pwd)/lib
|
||||
'';
|
||||
|
||||
# https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746
|
||||
additionalExceptions = stdenv.lib.optionalString stdenv.hostPlatform.isDarwin
|
||||
"|druntime-test-shared";
|
||||
|
||||
doCheck = !bootstrapVersion;
|
||||
|
||||
checkPhase = stdenv.lib.optionalString doCheck ''
|
||||
# Build default lib test runners
|
||||
ninja -j$NIX_BUILD_CORES all-test-runners
|
||||
|
||||
${fixNames}
|
||||
|
||||
# Run dmd testsuite
|
||||
export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD CC=$CXX"
|
||||
ctest -V -R "dmd-testsuite"
|
||||
|
||||
# Build and run LDC D unittests.
|
||||
ctest --output-on-failure -R "ldc2-unittest"
|
||||
|
||||
# Run LIT testsuite.
|
||||
ctest -V -R "lit-tests"
|
||||
|
||||
# Run default lib unittests
|
||||
ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/ldc2 \
|
||||
--prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \
|
||||
--set-default CC "${targetPackages.stdenv.cc}/bin/cc"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "The LLVM-based D compiler";
|
||||
homepage = "https://github.com/ldc-developers/ldc";
|
||||
# from https://github.com/ldc-developers/ldc/blob/master/LICENSE
|
||||
license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ];
|
||||
maintainers = with maintainers; [ ThomasMader ];
|
||||
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,143 +0,0 @@
|
||||
{ version, ldcSha256 }:
|
||||
{ stdenv, fetchurl, cmake, ninja, llvm_5, llvm_8, curl, tzdata
|
||||
, libconfig, lit, gdb, unzip, darwin, bash
|
||||
, callPackage, makeWrapper, runCommand, targetPackages
|
||||
, ldcBootstrap ? callPackage ./bootstrap.nix { }
|
||||
}:
|
||||
|
||||
let
|
||||
pathConfig = runCommand "ldc-lib-paths" {} ''
|
||||
mkdir $out
|
||||
echo ${tzdata}/share/zoneinfo/ > $out/TZDatabaseDirFile
|
||||
echo ${curl.out}/lib/libcurl${stdenv.hostPlatform.extensions.sharedLibrary} > $out/LibcurlPathFile
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ldc";
|
||||
inherit version;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz";
|
||||
sha256 = ldcSha256;
|
||||
};
|
||||
|
||||
# https://issues.dlang.org/show_bug.cgi?id=19553
|
||||
hardeningDisable = [ "fortify" ];
|
||||
|
||||
postUnpack = ''
|
||||
patchShebangs .
|
||||
''
|
||||
+ ''
|
||||
rm ldc-${version}-src/tests/d2/dmd-testsuite/fail_compilation/mixin_gc.d
|
||||
rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/xtest46_gc.d
|
||||
rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/testptrref_gc.d
|
||||
|
||||
# test depends on current year
|
||||
rm ldc-${version}-src/tests/d2/dmd-testsuite/compilable/ddocYear.d
|
||||
''
|
||||
+ stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
# https://github.com/NixOS/nixpkgs/issues/34817
|
||||
rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
# Setting SHELL=$SHELL when dmd testsuite is run doesn't work on Linux somehow
|
||||
substituteInPlace tests/d2/dmd-testsuite/Makefile --replace "SHELL=/bin/bash" "SHELL=${bash}/bin/bash"
|
||||
''
|
||||
+ stdenv.lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
substituteInPlace runtime/phobos/std/socket.d --replace "assert(ih.addrList[0] == 0x7F_00_00_01);" ""
|
||||
''
|
||||
+ stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
substituteInPlace runtime/phobos/std/socket.d --replace "foreach (name; names)" "names = []; foreach (name; names)"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake ninja makeWrapper unzip ldcBootstrap lit lit.python
|
||||
]
|
||||
++ stdenv.lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
darwin.apple_sdk.frameworks.Foundation
|
||||
# https://github.com/NixOS/nixpkgs/issues/57120
|
||||
# https://github.com/NixOS/nixpkgs/pull/59197#issuecomment-481972515
|
||||
llvm_5
|
||||
]
|
||||
++ stdenv.lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
||||
llvm_8
|
||||
# https://github.com/NixOS/nixpkgs/pull/36378#issuecomment-385034818
|
||||
gdb
|
||||
];
|
||||
|
||||
buildInputs = [ curl tzdata ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DD_FLAGS=-d-version=TZDatabaseDir;-d-version=LibcurlPath;-J${pathConfig}"
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
];
|
||||
|
||||
postConfigure = ''
|
||||
export DMD=$PWD/bin/ldmd2
|
||||
'';
|
||||
|
||||
makeFlags = [ "DMD=$DMD" ];
|
||||
|
||||
fixNames = stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
fixDarwinDylibNames() {
|
||||
local flags=()
|
||||
|
||||
for fn in "$@"; do
|
||||
flags+=(-change "$(basename "$fn")" "$fn")
|
||||
done
|
||||
|
||||
for fn in "$@"; do
|
||||
if [ -L "$fn" ]; then continue; fi
|
||||
echo "$fn: fixing dylib"
|
||||
install_name_tool -id "$fn" "''${flags[@]}" "$fn"
|
||||
done
|
||||
}
|
||||
|
||||
fixDarwinDylibNames $(find "$(pwd)/lib" -name "*.dylib")
|
||||
export DYLD_LIBRARY_PATH=$(pwd)/lib
|
||||
'';
|
||||
|
||||
# https://github.com/ldc-developers/ldc/issues/2497#issuecomment-459633746
|
||||
additionalExceptions = stdenv.lib.optionalString stdenv.hostPlatform.isDarwin
|
||||
"|druntime-test-shared";
|
||||
|
||||
checkPhase = ''
|
||||
# Build default lib test runners
|
||||
ninja -j$NIX_BUILD_CORES all-test-runners
|
||||
|
||||
${fixNames}
|
||||
|
||||
# Run dmd testsuite
|
||||
export DMD_TESTSUITE_MAKE_ARGS="-j$NIX_BUILD_CORES DMD=$DMD"
|
||||
ctest -V -R "dmd-testsuite"
|
||||
|
||||
# Build and run LDC D unittests.
|
||||
ctest --output-on-failure -R "ldc2-unittest"
|
||||
|
||||
# Run LIT testsuite.
|
||||
ctest -V -R "lit-tests"
|
||||
|
||||
# Run default lib unittests
|
||||
ctest -j$NIX_BUILD_CORES --output-on-failure -E "ldc2-unittest|lit-tests|dmd-testsuite${additionalExceptions}"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/ldc2 \
|
||||
--prefix PATH ":" "${targetPackages.stdenv.cc}/bin" \
|
||||
--set-default CC "${targetPackages.stdenv.cc}/bin/cc"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "The LLVM-based D compiler";
|
||||
homepage = "https://github.com/ldc-developers/ldc";
|
||||
# from https://github.com/ldc-developers/ldc/blob/master/LICENSE
|
||||
license = with licenses; [ bsd3 boost mit ncsa gpl2Plus ];
|
||||
maintainers = with maintainers; [ ThomasMader lionello ];
|
||||
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
|
||||
};
|
||||
}
|
||||
@@ -1,27 +1,36 @@
|
||||
{ lib, fetchFromGitHub, crystal, zlib, openssl, duktape, which, libyaml }:
|
||||
crystal.buildCrystalPackage rec {
|
||||
version = "0.7.1";
|
||||
{ lib, fetchFromGitHub, crystal_0_33, openssl }:
|
||||
|
||||
let crystal = crystal_0_33;
|
||||
in crystal.buildCrystalPackage rec {
|
||||
version = "0.9.0";
|
||||
pname = "mint";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mint-lang";
|
||||
repo = "mint";
|
||||
rev = version;
|
||||
sha256 = "18cg96kl4dn89bj6fm3080zzyd1r7rsfi17agdjjayd2v9fgs95l";
|
||||
sha256 = "0y1qr616x7s0pjgih6s1n4wiwb8kn8l1knnzmib6j4jmqax0jhz0";
|
||||
};
|
||||
|
||||
buildInputs = [ openssl ];
|
||||
postPatch = ''
|
||||
export HOME=$TMP
|
||||
'';
|
||||
|
||||
format = "shards";
|
||||
|
||||
# Update with
|
||||
# nix-shell -p crystal2nix --run crystal2nix
|
||||
# with mint's shard.lock file in the current directory
|
||||
shardsFile = ./shards.nix;
|
||||
crystalBinaries.mint.src = "src/mint.cr";
|
||||
|
||||
meta = {
|
||||
buildInputs = [ openssl ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A refreshing language for the front-end web";
|
||||
homepage = "https://mint-lang.com/";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = with lib.maintainers; [ manveru ];
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ manveru ];
|
||||
platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
|
||||
broken = lib.versionOlder crystal.version "0.33";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,26 +2,26 @@
|
||||
admiral = {
|
||||
owner = "jwaldrip";
|
||||
repo = "admiral.cr";
|
||||
rev = "v1.7.3";
|
||||
sha256 = "0b98qjy43wsrc08am7lkhcdsxc7gplf9hcmbvd4p3dw4g107rk91";
|
||||
rev = "v1.9.0";
|
||||
sha256 = "0y8gsh1qz42bc9jawcrn0i49mzzfvf8znmivd8lybapf0f53fblz";
|
||||
};
|
||||
ameba = {
|
||||
owner = "veelenga";
|
||||
owner = "crystal-ameba";
|
||||
repo = "ameba";
|
||||
rev = "v0.10.1";
|
||||
sha256 = "0dcw7px7g0c5pxpdlirhirqzhcc7gdwdfiwb9kgm4x1k74ghjgxq";
|
||||
rev = "v0.12.0";
|
||||
sha256 = "0g68yijbm2j4ig536fwq49d1z7x2iv9kp4g3gjklf5zn1sbqhm12";
|
||||
};
|
||||
baked_file_system = {
|
||||
owner = "schovi";
|
||||
repo = "baked_file_system";
|
||||
rev = "v0.9.7";
|
||||
sha256 = "1fi6zag1a6h4xwrfizy01dls3hhraqw0cmpwj7rjv1qcddjgig5z";
|
||||
rev = "v0.9.8";
|
||||
sha256 = "12l375jllg1lxvfh610dz0a39p803xw6q9fxlmnc6hy55i0gm0y3";
|
||||
};
|
||||
diff = {
|
||||
owner = "MakeNowJust";
|
||||
repo = "crystal-diff";
|
||||
rev = "51962dc36f9bbb1b926d557f7cb8993a6c73cc63";
|
||||
sha256 = "1nwnsxm8srfw8jg0yfi2v19x6j3dadx62hq0xpxra40qcqz9dbnp";
|
||||
rev = "v1.1.0";
|
||||
sha256 = "1q5q2d5mp1r8c6k5v4755sb3b6awiz85d1j280djzhbd0pggk3z7";
|
||||
};
|
||||
dotenv = {
|
||||
owner = "gdotdesign";
|
||||
@@ -32,14 +32,14 @@
|
||||
exception_page = {
|
||||
owner = "crystal-loot";
|
||||
repo = "exception_page";
|
||||
rev = "v0.1.2";
|
||||
sha256 = "0j5ishhyriq9p339yaawrmawl9wgmp1paniq30a8d6a0568h3avq";
|
||||
rev = "v0.1.4";
|
||||
sha256 = "0bsp2m89sl0bg9d5szbs1nxyk7yk58rkk24aibr39hhb5zi70pqi";
|
||||
};
|
||||
kemal = {
|
||||
owner = "kemalcr";
|
||||
repo = "kemal";
|
||||
rev = "v0.25.1";
|
||||
sha256 = "1334i905xj6vlmp8acyybwwlaxsgmf90b59da7brzpnf28wci782";
|
||||
rev = "v0.26.1";
|
||||
sha256 = "169pwkjmk7x6j8i0rf5rpyk1y0hl7jaf9h6yrq4ha2ag9yq9i8fr";
|
||||
};
|
||||
kilt = {
|
||||
owner = "jeromegn";
|
||||
|
||||
Reference in New Issue
Block a user