libarchive: rewriting
This commit is contained in:
@@ -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 ];
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user