Merge pull request #225504 from huantianad/dpkg-unpackCmdHook

This commit is contained in:
Artturi 2023-05-13 19:52:27 +03:00 committed by GitHub
commit 3a49233b91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 1 deletions

View File

@ -21,7 +21,6 @@ stdenv.mkDerivation rec {
dontBuild = true;
nativeBuildInputs = [ dpkg makeWrapper ];
unpackCmd = "dpkg-deb -x $src debcontents";
installPhase = ''
runHook preInstall

View File

@ -71,6 +71,8 @@ stdenv.mkDerivation rec {
cp -r scripts/t/origins $out/etc/dpkg
'';
setupHook = ./setup-hook.sh;
meta = with lib; {
description = "The Debian package manager";
homepage = "https://wiki.debian.org/Teams/Dpkg";

View File

@ -0,0 +1,12 @@
unpackCmdHooks+=(_tryDpkgDeb)
_tryDpkgDeb() {
if ! [[ "$curSrc" =~ \.deb$ ]]; then return 1; fi
# Don't use dpkg-deb -x as that will error if the archive contains a file
# or directory with a setuid bit in its permissions. This is because dpkg
# calls tar internally with the -p flag, preserving file permissions.
#
# We instead only use dpkg-deb to extract the tarfile containing the files
# we want from the .deb, then finish extracting with tar directly.
mkdir root
dpkg-deb --fsys-tarfile "$curSrc" | tar --extract --directory=root
}