Unverified Commit e1d420ff authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

jerryscript: init at 3.0.0 (#428456)

parents aca2e34d e2ce8a39
Loading
Loading
Loading
Loading
+97 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromGitHub,
  cmake,
  ninja,
  python3,
  validatePkgConfig,
  versionCheckHook,
  testers,
  nix-update-script,

  enableCmdline ? !stdenv.hostPlatform.isNone,
  enableMath ? false,
}:
stdenv.mkDerivation (finalAttrs: {
  pname = "jerryscript";
  version = "3.0.0";

  outputs = [
    "out"
    "lib"
    "dev"
  ];

  src = fetchFromGitHub {
    owner = "jerryscript-project";
    repo = "jerryscript";
    tag = "v${finalAttrs.version}";
    hash = "sha256-Evu4qLlwg3Sf9w/ojtZMNxGJEtopHgKnwqlpf115zD4=";
  };

  nativeBuildInputs = [
    cmake
    ninja
  ];

  cmakeFlags = [
    (lib.cmakeBool "JERRY_CMDLINE" enableCmdline)
    (lib.cmakeBool "JERRY_MATH" enableMath)
    (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
  ];

  nativeCheckInputs = [
    python3
  ];
  doCheck = true;
  checkPhase = ''
    runHook preCheck

    pushd ../
    python3 tools/run-tests.py --unittests
    popd

    runHook postCheck
  '';

  # Uses a custom lib variable that ignores what nixpkgs's cmake setupHook specifies.
  postInstall = ''
    mkdir -p "$lib/lib"
    mv "$out/lib/"*.so "$lib/lib"
  '';

  nativeInstallCheckInputs = [
    validatePkgConfig
    versionCheckHook
  ];
  doInstallCheck = true;
  postInstallCheck = ''
    echo 'print("Hello" + " " + "World!")' | \
    "$out/bin/jerry" - | \
    cmp - <(echo "Hello World!")
  '';

  passthru = {
    tests.pkg-config = testers.hasPkgConfigModules {
      package = finalAttrs.finalPackage;
      versionCheck = true;
    };
    updateScript = nix-update-script { };
  };

  meta = {
    description = "Lightweight JavaScript engine for resource-constrained devices";
    homepage = "https://jerryscript.net/";
    downloadPage = "https://github.com/jerryscript-project/jerryscript/";
    changelog = "https://github.com/jerryscript-project/jerryscript/releases/tag/v${finalAttrs.version}";
    license = lib.licenses.asl20;
    mainProgram = "jerry";
    pkgConfigModules = [
      "libjerry-core"
      "libjerry-ext"
      "libjerry-port"
    ];
    maintainers = with lib.maintainers; [ RossSmyth ];
  };
})