diff --git a/pkgs/development/tools/parsing/antlr/4.8.nix b/pkgs/development/tools/parsing/antlr/4.8.nix deleted file mode 100644 index 5d35af921ec2..000000000000 --- a/pkgs/development/tools/parsing/antlr/4.8.nix +++ /dev/null @@ -1,89 +0,0 @@ -{ lib, stdenv, fetchurl, jre -, fetchFromGitHub, cmake, ninja, pkg-config, libuuid, darwin }: - -let - version = "4.8"; - source = fetchFromGitHub { - owner = "antlr"; - repo = "antlr4"; - rev = version; - sha256 = "1qal3add26qxskm85nk7r758arladn5rcyjinmhlhznmpbbv9j8m"; - }; - - runtime = { - cpp = stdenv.mkDerivation { - pname = "antlr-runtime-cpp"; - inherit version; - src = source; - - outputs = [ "out" "dev" "doc" ]; - - nativeBuildInputs = [ cmake ninja pkg-config ]; - buildInputs = lib.optional stdenv.isLinux libuuid - ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.CoreFoundation; - - # Install CMake config files, used to locate the runtime from another - # CMake project, using the find_package function. - cmakeFlags = [ "-DANTLR4_INSTALL=ON" ]; - - postUnpack = '' - export sourceRoot=$sourceRoot/runtime/Cpp - ''; - - meta = with lib; { - description = "C++ target for ANTLR 4"; - homepage = "https://www.antlr.org/"; - license = licenses.bsd3; - platforms = platforms.unix; - }; - }; - }; - - antlr = stdenv.mkDerivation { - pname = "antlr"; - inherit version; - - src = fetchurl { - url ="https://www.antlr.org/download/antlr-${version}-complete.jar"; - sha256 = "0nms976cnqyr1ndng3haxkmknpdq6xli4cpf4x4al0yr21l9v93k"; - }; - - dontUnpack = true; - - installPhase = '' - mkdir -p "$out"/{share/java,bin} - cp "$src" "$out/share/java/antlr-${version}-complete.jar" - - echo "#! ${stdenv.shell}" >> "$out/bin/antlr" - echo "'${jre}/bin/java' -cp '$out/share/java/antlr-${version}-complete.jar:$CLASSPATH' -Xmx500M org.antlr.v4.Tool \"\$@\"" >> "$out/bin/antlr" - - echo "#! ${stdenv.shell}" >> "$out/bin/grun" - echo "'${jre}/bin/java' -cp '$out/share/java/antlr-${version}-complete.jar:$CLASSPATH' org.antlr.v4.gui.TestRig \"\$@\"" >> "$out/bin/grun" - - chmod a+x "$out/bin/antlr" "$out/bin/grun" - ln -s "$out/bin/antlr"{,4} - ''; - - inherit jre; - - passthru = { - inherit runtime; - jarLocation = "${antlr}/share/java/antlr-${version}-complete.jar"; - }; - - meta = with lib; { - description = "Powerful parser generator"; - longDescription = '' - ANTLR (ANother Tool for Language Recognition) is a powerful parser - generator for reading, processing, executing, or translating structured - text or binary files. It's widely used to build languages, tools, and - frameworks. From a grammar, ANTLR generates a parser that can build and - walk parse trees. - ''; - homepage = "https://www.antlr.org/"; - sourceProvenance = with sourceTypes; [ binaryBytecode ]; - license = licenses.bsd3; - platforms = platforms.unix; - }; - }; -in antlr diff --git a/pkgs/development/tools/parsing/antlr/4.9.nix b/pkgs/development/tools/parsing/antlr/4.9.nix deleted file mode 100644 index 3046f3e17caa..000000000000 --- a/pkgs/development/tools/parsing/antlr/4.9.nix +++ /dev/null @@ -1,88 +0,0 @@ -{ lib, stdenv, fetchurl, jre -, fetchpatch, fetchFromGitHub, cmake, ninja, pkg-config, libuuid, utf8cpp, darwin }: - -let - version = "4.9.3"; - source = fetchFromGitHub { - owner = "antlr"; - repo = "antlr4"; - rev = version; - sha256 = "1af3cfqwk7lq1b5qsh1am0922fyhy7wmlpnrqdnvch3zzza9n1qm"; - }; - - runtime = { - cpp = stdenv.mkDerivation { - pname = "antlr-runtime-cpp"; - inherit version; - src = source; - - outputs = [ "out" "dev" "doc" ]; - - patchFlags = [ "-p3" ]; - - nativeBuildInputs = [ cmake ninja pkg-config ]; - buildInputs = [ utf8cpp ] - ++ lib.optional stdenv.isLinux libuuid - ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.CoreFoundation; - - postUnpack = '' - export sourceRoot=$sourceRoot/runtime/Cpp - ''; - - meta = with lib; { - description = "C++ target for ANTLR 4"; - homepage = "https://www.antlr.org/"; - license = licenses.bsd3; - platforms = platforms.unix; - }; - }; - }; - - antlr = stdenv.mkDerivation { - pname = "antlr"; - inherit version; - - src = fetchurl { - url = "https://www.antlr.org/download/antlr-${version}-complete.jar"; - sha256 = "0dnz2x54kigc58bxnynjhmr5iq49f938vj6p50gdir1xdna41kdg"; - }; - - dontUnpack = true; - - installPhase = '' - mkdir -p "$out"/{share/java,bin} - cp "$src" "$out/share/java/antlr-${version}-complete.jar" - - echo "#! ${stdenv.shell}" >> "$out/bin/antlr" - echo "'${jre}/bin/java' -cp '$out/share/java/antlr-${version}-complete.jar:$CLASSPATH' -Xmx500M org.antlr.v4.Tool \"\$@\"" >> "$out/bin/antlr" - - echo "#! ${stdenv.shell}" >> "$out/bin/grun" - echo "'${jre}/bin/java' -cp '$out/share/java/antlr-${version}-complete.jar:$CLASSPATH' org.antlr.v4.gui.TestRig \"\$@\"" >> "$out/bin/grun" - - chmod a+x "$out/bin/antlr" "$out/bin/grun" - ln -s "$out/bin/antlr"{,4} - ''; - - inherit jre; - - passthru = { - inherit runtime; - jarLocation = "${antlr}/share/java/antlr-${version}-complete.jar"; - }; - - meta = with lib; { - description = "Powerful parser generator"; - longDescription = '' - ANTLR (ANother Tool for Language Recognition) is a powerful parser - generator for reading, processing, executing, or translating structured - text or binary files. It's widely used to build languages, tools, and - frameworks. From a grammar, ANTLR generates a parser that can build and - walk parse trees. - ''; - homepage = "https://www.antlr.org/"; - sourceProvenance = with sourceTypes; [ binaryBytecode ]; - license = licenses.bsd3; - platforms = platforms.unix; - }; - }; -in antlr diff --git a/pkgs/development/tools/parsing/antlr/4.nix b/pkgs/development/tools/parsing/antlr/4.nix new file mode 100644 index 000000000000..85938153862c --- /dev/null +++ b/pkgs/development/tools/parsing/antlr/4.nix @@ -0,0 +1,142 @@ +{ lib, stdenv, fetchurl, jre +, fetchFromGitHub, cmake, ninja, pkg-config + +# darwin only +, CoreFoundation ? null + +# ANTLR 4.8 & 4.9 +, libuuid + +# ANTLR 4.9 +, utf8cpp }: + +let + + mkAntlr = { + version, sourceSha256, jarSha256, + extraCppBuildInputs ? [], + extraCppCmakeFlags ? [] + }: rec { + source = fetchFromGitHub { + owner = "antlr"; + repo = "antlr4"; + rev = version; + sha256 = sourceSha256; + }; + + antlr = stdenv.mkDerivation { + pname = "antlr"; + inherit version; + + src = fetchurl { + url = "https://www.antlr.org/download/antlr-${version}-complete.jar"; + sha256 = jarSha256; + }; + + dontUnpack = true; + + installPhase = '' + mkdir -p "$out"/{share/java,bin} + cp "$src" "$out/share/java/antlr-${version}-complete.jar" + + echo "#! ${stdenv.shell}" >> "$out/bin/antlr" + echo "'${jre}/bin/java' -cp '$out/share/java/antlr-${version}-complete.jar:$CLASSPATH' -Xmx500M org.antlr.v4.Tool \"\$@\"" >> "$out/bin/antlr" + + echo "#! ${stdenv.shell}" >> "$out/bin/grun" + echo "'${jre}/bin/java' -cp '$out/share/java/antlr-${version}-complete.jar:$CLASSPATH' org.antlr.v4.gui.TestRig \"\$@\"" >> "$out/bin/grun" + + chmod a+x "$out/bin/antlr" "$out/bin/grun" + ln -s "$out/bin/antlr"{,4} + ''; + + inherit jre; + + passthru = { + inherit runtime; + jarLocation = "${antlr}/share/java/antlr-${version}-complete.jar"; + }; + + meta = with lib; { + description = "Powerful parser generator"; + longDescription = '' + ANTLR (ANother Tool for Language Recognition) is a powerful parser + generator for reading, processing, executing, or translating structured + text or binary files. It's widely used to build languages, tools, and + frameworks. From a grammar, ANTLR generates a parser that can build and + walk parse trees. + ''; + homepage = "https://www.antlr.org/"; + sourceProvenance = with sourceTypes; [ binaryBytecode ]; + license = licenses.bsd3; + platforms = platforms.unix; + }; + }; + + runtime = { + cpp = stdenv.mkDerivation { + pname = "antlr-runtime-cpp"; + inherit version; + src = source; + sourceRoot = "runtime/Cpp"; + + outputs = [ "out" "dev" "doc" ]; + + nativeBuildInputs = [ cmake ninja pkg-config ]; + buildInputs = + lib.optional stdenv.isDarwin CoreFoundation ++ + extraCppBuildInputs; + + cmakeFlags = extraCppCmakeFlags; + + meta = with lib; { + description = "C++ target for ANTLR 4"; + homepage = "https://www.antlr.org/"; + license = licenses.bsd3; + platforms = platforms.unix; + }; + }; + }; + }; + +in { + antlr4_11 = (mkAntlr { + version = "4.11.1"; + sourceSha256 = "sha256-SUeDgfqLjYQorC8r/CKlwbYooTThMOILkizwQV8pocc="; + jarSha256 = "sha256-YpdeGStK8mIrcrXwExVT7jy86X923CpBYy3MVeJUc+E="; + extraCppCmakeFlags = [ + # Generate CMake config files, which are not installed by default. + "-DANTLR4_INSTALL=ON" + + # Disable tests, since they require downloading googletest, which is + # not available in a sandboxed build. + "-DANTLR_BUILD_CPP_TESTS=OFF" + ]; + }).antlr; + + antlr4_10 = (mkAntlr { + version = "4.10.1"; + sourceSha256 = "sha256-Z1P81L0aPbimitzrHH/9rxsMCA6Qn3i42jFbUmVqu1E="; + jarSha256 = "sha256-QZSdQfINMdW4J3GHc13XVRCN9Ss422yGUQjTOCBA+Rg="; + extraCppBuildInputs = lib.optional stdenv.isLinux libuuid; + extraCppCmakeFlags = [ + "-DANTLR4_INSTALL=ON" + "-DANTLR_BUILD_CPP_TESTS=OFF" + ]; + }).antlr; + + antlr4_9 = (mkAntlr { + version = "4.9.3"; + sourceSha256 = "1af3cfqwk7lq1b5qsh1am0922fyhy7wmlpnrqdnvch3zzza9n1qm"; + jarSha256 = "0dnz2x54kigc58bxnynjhmr5iq49f938vj6p50gdir1xdna41kdg"; + extraCppBuildInputs = [ utf8cpp ] + ++ lib.optional stdenv.isLinux libuuid; + }).antlr; + + antlr4_8 = (mkAntlr { + version = "4.8"; + sourceSha256 = "1qal3add26qxskm85nk7r758arladn5rcyjinmhlhznmpbbv9j8m"; + jarSha256 = "0nms976cnqyr1ndng3haxkmknpdq6xli4cpf4x4al0yr21l9v93k"; + extraCppBuildInputs = lib.optional stdenv.isLinux libuuid; + extraCppCmakeFlags = [ "-DANTLR4_INSTALL=ON" ]; + }).antlr; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c84e9a98cfb8..3f5585321866 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16087,11 +16087,13 @@ with pkgs; }; antlr3 = antlr3_5; - antlr4_8 = callPackage ../development/tools/parsing/antlr/4.8.nix { + inherit (callPackages ../development/tools/parsing/antlr/4.nix { jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731 - }; + }) antlr4_8; - antlr4_9 = callPackage ../development/tools/parsing/antlr/4.9.nix { }; + inherit (callPackages ../development/tools/parsing/antlr/4.nix { }) + antlr4_9 + antlr4_11; antlr4 = antlr4_8;