2021-01-15 22:18:51 +00:00
|
|
|
{lib, stdenv, fetchurl, zlib, ocaml, findlib}:
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
let
|
2022-12-17 10:02:37 +00:00
|
|
|
common = {
|
2020-04-24 23:36:52 +00:00
|
|
|
patches = [];
|
2020-12-29 15:07:52 +00:00
|
|
|
postPatchInit = ''
|
|
|
|
cp META-zip META-camlzip
|
|
|
|
echo 'directory="../zip"' >> META-camlzip
|
|
|
|
'';
|
2022-12-17 10:02:37 +00:00
|
|
|
};
|
|
|
|
param =
|
|
|
|
if lib.versionAtLeast ocaml.version "4.07"
|
|
|
|
then common // {
|
|
|
|
version = "1.11";
|
|
|
|
url = "https://github.com/xavierleroy/camlzip/archive/rel111.tar.gz";
|
|
|
|
sha256 = "sha256-/7vF3j4cE9wOWScjdtIy0u3pGzJ1UQY9R/3bdPHV7Tc=";
|
|
|
|
} else if lib.versionAtLeast ocaml.version "4.02"
|
|
|
|
then common // {
|
|
|
|
version = "1.10";
|
|
|
|
url = "https://github.com/xavierleroy/camlzip/archive/rel110.tar.gz";
|
|
|
|
sha256 = "X0YcczaQ3lFeJEiTIgjSSZ1zi32KFMtmZsP0FFpyfbI=";
|
2020-04-24 23:36:52 +00:00
|
|
|
} else {
|
|
|
|
version = "1.05";
|
|
|
|
download_id = "1037";
|
|
|
|
url = "http://forge.ocamlcore.org/frs/download.php/${param.download_id}/camlzip-${param.version}.tar.gz";
|
|
|
|
sha256 = "930b70c736ab5a7ed1b05220102310a0a2241564786657abe418e834a538d06b";
|
|
|
|
patches = [./makefile_1_05.patch];
|
2020-12-29 15:07:52 +00:00
|
|
|
postPatchInit = ''
|
|
|
|
substitute ${./META} META --subst-var-by VERSION "${param.version}"
|
|
|
|
'';
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
in
|
|
|
|
|
|
|
|
stdenv.mkDerivation {
|
2022-12-17 10:02:37 +00:00
|
|
|
pname = "ocaml${ocaml.version}-camlzip";
|
2020-12-29 15:07:52 +00:00
|
|
|
version = param.version;
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
src = fetchurl {
|
|
|
|
inherit (param) url;
|
|
|
|
inherit (param) sha256;
|
|
|
|
};
|
|
|
|
|
2022-03-05 16:20:37 +00:00
|
|
|
nativeBuildInputs = [ ocaml findlib ];
|
2020-04-24 23:36:52 +00:00
|
|
|
|
|
|
|
propagatedBuildInputs = [zlib];
|
|
|
|
|
2022-03-05 16:20:37 +00:00
|
|
|
strictDeps = true;
|
|
|
|
|
2020-04-24 23:36:52 +00:00
|
|
|
inherit (param) patches;
|
|
|
|
|
|
|
|
createFindlibDestdir = true;
|
|
|
|
|
2020-12-29 15:07:52 +00:00
|
|
|
postPatch = param.postPatchInit + ''
|
2020-04-24 23:36:52 +00:00
|
|
|
substituteInPlace Makefile \
|
|
|
|
--subst-var-by ZLIB_LIBDIR "${zlib.out}/lib" \
|
|
|
|
--subst-var-by ZLIB_INCLUDE "${zlib.dev}/include"
|
|
|
|
'';
|
|
|
|
|
|
|
|
buildFlags = [ "all" "allopt" ];
|
|
|
|
|
|
|
|
postInstall = ''
|
|
|
|
ln -s $out/lib/ocaml/${ocaml.version}/site-lib/{,caml}zip
|
|
|
|
'';
|
|
|
|
|
2021-01-15 22:18:51 +00:00
|
|
|
meta = with lib; {
|
2020-04-24 23:36:52 +00:00
|
|
|
homepage = "http://cristal.inria.fr/~xleroy/software.html#camlzip";
|
2024-06-20 14:57:18 +00:00
|
|
|
description = "Library for handling ZIP and GZIP files in OCaml";
|
2020-04-24 23:36:52 +00:00
|
|
|
longDescription = ''
|
|
|
|
This Objective Caml library provides easy access to compressed files in
|
|
|
|
ZIP and GZIP format, as well as to Java JAR files. It provides functions
|
|
|
|
for reading from and writing to compressed files in these formats.
|
|
|
|
'';
|
|
|
|
license = "LGPL+linking exceptions";
|
2022-05-18 14:49:53 +00:00
|
|
|
inherit (ocaml.meta) platforms;
|
2020-12-29 15:07:52 +00:00
|
|
|
maintainers = with maintainers; [ maggesi ];
|
2020-04-24 23:36:52 +00:00
|
|
|
};
|
|
|
|
}
|