From ae660ed77ef846d7b1b5b6a158d184ad993e5af9 Mon Sep 17 00:00:00 2001 From: gilice <104317939+gilice@users.noreply.github.com> Date: Thu, 16 Mar 2023 13:25:34 +0100 Subject: [PATCH] dart: 2.18.4 -> 2.19.3, refactor, and add tests (#219875) * dart: 2.18.4 -> 2.19.3 https://dart.dev/guides/whats-new#january-25-2023-219--30-alpha-releases * dart: move interpreters -> compilers Dart is not an interpreted language by default. It can JIT compile, but ultimately runs on a VM. Languages which are similar in this regard, like Java and Go also are sorted into interpreters. * dart: add primitive tests * dart: remove version override in sources * dart: make codesign available in tests * dart: format --------- Co-authored-by: Weijia Wang <9713184+wegank@users.noreply.github.com> Co-authored-by: Sandro --- .../dart/default.nix | 39 +++++++++++++++---- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 32 insertions(+), 9 deletions(-) rename pkgs/development/{interpreters => compilers}/dart/default.nix (73%) diff --git a/pkgs/development/interpreters/dart/default.nix b/pkgs/development/compilers/dart/default.nix similarity index 73% rename from pkgs/development/interpreters/dart/default.nix rename to pkgs/development/compilers/dart/default.nix index d01a0d1aac53..461e359d3711 100644 --- a/pkgs/development/interpreters/dart/default.nix +++ b/pkgs/development/compilers/dart/default.nix @@ -2,16 +2,18 @@ , lib , fetchurl , unzip -, version ? "2.18.0" +, runCommand +, darwin +# we need a way to build other dart versions +# than the latest, because flutter might want +# another version +, version ? "2.19.3" , sources ? let base = "https://storage.googleapis.com/dart-archive/channels"; x86_64 = "x64"; i686 = "ia32"; aarch64 = "arm64"; - # Make sure that if the user overrides version parameter they're - # also need to override sources, to avoid mistakes - version = "2.18.0"; - in +in { "${version}-aarch64-darwin" = fetchurl { url = "${base}/stable/release/${version}/sdk/dartsdk-macos-${aarch64}-release.zip"; @@ -39,7 +41,7 @@ assert version != null && version != ""; assert sources != null && (builtins.isAttrs sources); -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "dart"; inherit version; @@ -56,9 +58,30 @@ stdenv.mkDerivation { ''; libPath = lib.makeLibraryPath [ stdenv.cc.cc ]; - dontStrip = true; + passthru.tests = { + testCreate = runCommand "dart-test-create" { nativeBuildInputs = [ finalAttrs.finalPackage ]; } '' + PROJECTNAME="dart_test_project" + dart create --no-pub $PROJECTNAME + [[ -d $PROJECTNAME ]] + [[ -f $PROJECTNAME/bin/$PROJECTNAME.dart ]] + touch $out + ''; + + testCompile = runCommand "dart-test-compile" { + nativeBuildInputs = [ finalAttrs.finalPackage ] + ++ lib.optionals stdenv.isDarwin [ darwin.cctools darwin.sigtool ]; + } '' + HELLO_MESSAGE="Hello, world!" + echo "void main() => print('$HELLO_MESSAGE');" > hello.dart + dart compile exe hello.dart + PROGRAM_OUT=$(./hello.exe) + + [[ "$PROGRAM_OUT" == "$HELLO_MESSAGE" ]] + touch $out + ''; + }; meta = with lib; { homepage = "https://www.dartlang.org/"; maintainers = with maintainers; [ grburst ]; @@ -72,4 +95,4 @@ stdenv.mkDerivation { sourceProvenance = with sourceTypes; [ binaryNativeCode ]; license = licenses.bsd3; }; -} +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 415aa2ae3317..cfdabd7f9045 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -39153,7 +39153,7 @@ with pkgs; spdlog = spdlog_1; - dart = callPackage ../development/interpreters/dart { }; + dart = callPackage ../development/compilers/dart { }; httrack = callPackage ../tools/backup/httrack { };