libarchive: rewriting

This commit is contained in:
AndersonTorres
2022-04-14 01:50:44 -03:00
parent a1f6164c1d
commit 46fe96c68d
@@ -1,14 +1,27 @@
{
fetchFromGitHub, lib, stdenv, pkg-config, autoreconfHook,
acl, attr, bzip2, e2fsprogs, libxml2, lzo, openssl, sharutils, xz, zlib, zstd,
{ lib
, stdenv
, fetchFromGitHub
, acl
, attr
, autoreconfHook
, bzip2
, e2fsprogs
, lzo
, openssl
, pkg-config
, sharutils
, xz
, zlib
, zstd
# Optional but increases closure only negligibly. Also, while libxml2 builds
# fine on windows, libarchive has trouble linking windows things it depends on
# for some reason.
, xarSupport ? stdenv.hostPlatform.isUnix, libxml2
# Optional but increases closure only negligibly. Also, while libxml2
# builds fine on windows, but libarchive has trouble linking windows
# things it depends on for some reason.
xarSupport ? stdenv.hostPlatform.isUnix,
# for passthru.tests
cmake, nix, samba
# for passthru.tests
, cmake
, nix
, samba
}:
assert xarSupport -> libxml2 != null;
@@ -26,11 +39,20 @@ stdenv.mkDerivation rec {
outputs = [ "out" "lib" "dev" ];
nativeBuildInputs = [ pkg-config autoreconfHook ];
buildInputs =
lib.optional stdenv.hostPlatform.isUnix sharutils
++ [ zlib bzip2 openssl xz lzo zstd ]
++ lib.optionals stdenv.isLinux [ e2fsprogs attr acl ]
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
bzip2
lzo
openssl
xz
zlib
zstd
] ++ lib.optional stdenv.hostPlatform.isUnix sharutils
++ lib.optionals stdenv.isLinux [ acl attr e2fsprogs ]
++ lib.optional xarSupport libxml2;
# Without this, pkg-config-based dependencies are unhappy
@@ -38,11 +60,17 @@ stdenv.mkDerivation rec {
configureFlags = lib.optional (!xarSupport) "--without-xml2";
preBuild = if stdenv.isCygwin then ''
echo "#include <windows.h>" >> config.h
'' else null;
postPatch = ''
substituteInPlace Makefile.am --replace '/bin/pwd' 'pwd'
'';
doCheck = false; # fails
preBuild = lib.optionalString stdenv.isCygwin ''
echo "#include <windows.h>" >> config.h
'';
# 484: test_write_disk_perms FAIL
# TODO: how to disable it? Should it be reported upstream?
doCheck = false;
preFixup = ''
sed -i $lib/lib/libarchive.la \
@@ -52,21 +80,22 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
meta = with lib; {
homepage = "http://libarchive.org";
description = "Multi-format archive and compression library";
longDescription = ''
The libarchive project develops a portable, efficient C library that can
read and write streaming archives in a variety of formats. It also
includes implementations of the common tar, cpio, and zcat command-line
tools that use the libarchive library.
'';
changelog = "https://github.com/libarchive/libarchive/releases/tag/v${version}";
license = licenses.bsd3;
maintainers = with maintainers; [ jcumming AndersonTorres ];
platforms = platforms.all;
};
passthru.tests = {
inherit cmake nix samba;
};
meta = {
description = "Multi-format archive and compression library";
longDescription = ''
This library has code for detecting and reading many archive formats and
compressions formats including (but not limited to) tar, shar, cpio, zip, and
compressed with gzip, bzip2, lzma, xz, ...
'';
homepage = "http://libarchive.org";
changelog = "https://github.com/libarchive/libarchive/releases/tag/v${version}";
license = lib.licenses.bsd3;
platforms = with lib.platforms; all;
maintainers = with lib.maintainers; [ jcumming ];
};
}