diff --git a/pkgs/development/tools/abuild/default.nix b/pkgs/development/tools/abuild/default.nix index 144ec8be9d4..a597213b866 100644 --- a/pkgs/development/tools/abuild/default.nix +++ b/pkgs/development/tools/abuild/default.nix @@ -1,32 +1,48 @@ { lib , stdenv , fetchFromGitLab +, makeWrapper , pkg-config +, file +, scdoc , openssl , zlib , busybox +, apk-tools +, perl }: stdenv.mkDerivation rec { pname = "abuild"; - version = "3.7.0"; + version = "3.9.0"; src = fetchFromGitLab { domain = "gitlab.alpinelinux.org"; owner = "alpine"; repo = pname; - rev = "v${version}"; - sha256 = "1xsik9hyzzq861bi922sb5r8c6r4wpnpxz5kd30i9f20vvfpp5jx"; + rev = version; + sha256 = "1zs8slaqiv8q8bim8mwfy08ymar78rqpkgqksw8y1lsjrj49fqy4"; }; buildInputs = [ openssl zlib busybox + # for $out/bin/apkbuild-cpan and $out/bin/apkbuild-pypi + (perl.withPackages (ps: with ps; [ + LWP + JSON + ModuleBuildTiny + LWPProtocolHttps + IPCSystemSimple + ])) ]; nativeBuildInputs = [ pkg-config + scdoc + makeWrapper + file ]; patchPhase = '' @@ -43,6 +59,24 @@ stdenv.mkDerivation rec { "sysconfdir=${placeholder "out"}/etc" ]; + postInstall = '' + # this script requires unpackaged 'augeas' rubygem, no reason + # to ship it if we can't provide the dependencies for it + rm -f ${placeholder "out"}/bin/apkbuild-gem-resolver + + # Find all executables that are not compiled binaries and wrap + # them, make `apk-tools` available in their PATH and also the + # $out directory since many of the binaries provided call into + # other binaries + for prog in \ + $(find ${placeholder "out"}/bin -type f -exec ${file}/bin/file -i '{}' + \ + | grep -v x-executable | cut -d : -f1); do + wrapProgram $prog \ + --prefix PATH : "${lib.makeBinPath [ apk-tools ]}" \ + --prefix PATH : "${placeholder "out"}/bin" + done + ''; + meta = with lib; { description = "Alpine Linux build tools"; homepage = "https://gitlab.alpinelinux.org/alpine/abuild";