mirror of
https://github.com/NixOS/nixpkgs
synced 2024-10-19 03:47:13 -04:00
ff1a94e523
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
78 lines
1.6 KiB
Nix
78 lines
1.6 KiB
Nix
{ lib
|
|
, stdenv
|
|
, autoPatchelfHook
|
|
, darwin
|
|
, graalvm-ce
|
|
, makeWrapper
|
|
, zlib
|
|
, libxcrypt-legacy
|
|
# extra params
|
|
, product
|
|
, extraBuildInputs ? [ ]
|
|
, extraNativeBuildInputs ? [ ]
|
|
, ...
|
|
} @ args:
|
|
|
|
let
|
|
extraArgs = builtins.removeAttrs args [
|
|
"lib"
|
|
"stdenv"
|
|
"autoPatchelfHook"
|
|
"darwin"
|
|
"graalvm-ce"
|
|
"libxcrypt-legacy"
|
|
"makeWrapper"
|
|
"zlib"
|
|
"product"
|
|
"extraBuildInputs"
|
|
"extraNativeBuildInputs"
|
|
"meta"
|
|
];
|
|
in
|
|
stdenv.mkDerivation ({
|
|
pname = product;
|
|
|
|
nativeBuildInputs = [ makeWrapper ]
|
|
++ lib.optional stdenv.isLinux autoPatchelfHook
|
|
++ extraNativeBuildInputs;
|
|
|
|
buildInputs = [
|
|
stdenv.cc.cc.lib # libstdc++.so.6
|
|
zlib
|
|
libxcrypt-legacy # libcrypt.so.1 (default is .2 now)
|
|
]
|
|
++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Foundation
|
|
++ extraBuildInputs;
|
|
|
|
unpackPhase = ''
|
|
runHook preUnpack
|
|
|
|
mkdir -p "$out"
|
|
|
|
tar xf "$src" -C "$out" --strip-components=1
|
|
|
|
# Sanity check
|
|
if [ ! -d "$out/bin" ]; then
|
|
echo "The `bin` is directory missing after extracting the graalvm"
|
|
echo "tarball, please compare the directory structure of the"
|
|
echo "tarball with what happens in the unpackPhase (in particular"
|
|
echo "with regards to the `--strip-components` flag)."
|
|
exit 1
|
|
fi
|
|
|
|
runHook postUnpack
|
|
'';
|
|
|
|
dontStrip = true;
|
|
|
|
passthru = {
|
|
updateScript = [ ./update.sh product ];
|
|
} // (args.passhtru or { });
|
|
|
|
meta = ({
|
|
inherit (graalvm-ce.meta) homepage license sourceProvenance maintainers platforms;
|
|
description = "High-Performance Polyglot VM (Product: ${product})";
|
|
mainProgram = "js";
|
|
} // (args.meta or { }));
|
|
} // extraArgs)
|