diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/jq/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/jq/default.nix | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/jq/default.nix b/nixpkgs/pkgs/development/tools/jq/default.nix new file mode 100644 index 000000000000..3c6d85e8ddcc --- /dev/null +++ b/nixpkgs/pkgs/development/tools/jq/default.nix @@ -0,0 +1,81 @@ +{ lib +, stdenv +, fetchurl +, autoreconfHook +, bison +, onigurumaSupport ? true +, oniguruma +}: + +stdenv.mkDerivation rec { + pname = "jq"; + version = "1.6"; + + # Note: do not use fetchpatch or fetchFromGitHub to keep this package available in __bootPackages + src = fetchurl { + url = "https://github.com/stedolan/jq/releases/download/jq-${version}/jq-${version}.tar.gz"; + sha256 = "sha256-XejI4pqqP7nMa0e7JymfJxNU67clFOOsytx9OLW7qnI="; + }; + + patches = [ + ./fix-tests-when-building-without-regex-supports.patch + ]; + + outputs = [ "bin" "doc" "man" "dev" "lib" "out" ]; + + # Upstream script that writes the version that's eventually compiled + # and printed in `jq --help` relies on a .git directory which our src + # doesn't keep. + preConfigure = '' + echo "#!/bin/sh" > scripts/version + echo "echo ${version}" >> scripts/version + patchShebangs scripts/version + ''; + + # paranoid mode: make sure we never use vendored version of oniguruma + # Note: it must be run after automake, or automake will complain + preBuild = '' + rm -r ./modules/oniguruma + ''; + + buildInputs = lib.optionals onigurumaSupport [ oniguruma ]; + nativeBuildInputs = [ autoreconfHook bison ]; + + # Darwin requires _REENTRANT be defined to use functions like `lgamma_r`. + # Otherwise, configure will detect that they’re in libm, but the build will fail + # with clang 16+ due to calls to undeclared functions. + # This is fixed upstream and can be removed once jq is updated (to 1.7 or an unstable release). + env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin (toString [ + "-D_REENTRANT=1" + "-D_DARWIN_C_SOURCE=1" + ]); + + configureFlags = [ + "--bindir=\${bin}/bin" + "--sbindir=\${bin}/bin" + "--datadir=\${doc}/share" + "--mandir=\${man}/share/man" + ] ++ lib.optional (!onigurumaSupport) "--with-oniguruma=no" + # jq is linked to libjq: + ++ lib.optional (!stdenv.isDarwin) "LDFLAGS=-Wl,-rpath,\\\${libdir}"; + + doInstallCheck = true; + installCheckTarget = "check"; + + postInstallCheck = '' + $bin/bin/jq --help >/dev/null + $bin/bin/jq -r '.values[1]' <<< '{"values":["hello","world"]}' | grep '^world$' > /dev/null + ''; + + passthru = { inherit onigurumaSupport; }; + + meta = with lib; { + description = "A lightweight and flexible command-line JSON processor"; + homepage = "https://stedolan.github.io/jq/"; + license = licenses.mit; + maintainers = with maintainers; [ raskin globin artturin ]; + platforms = platforms.unix; + downloadPage = "https://stedolan.github.io/jq/download/"; + mainProgram = "jq"; + }; +} |