aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/ocaml-modules/opam-repository
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/ocaml-modules/opam-repository')
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/opam-repository/default.nix24
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/opam-repository/download-tool.patch29
2 files changed, 53 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/ocaml-modules/opam-repository/default.nix b/nixpkgs/pkgs/development/ocaml-modules/opam-repository/default.nix
new file mode 100644
index 00000000000..1801a9e1c86
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/opam-repository/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildDunePackage, unzip, opam-format, curl }:
+
+buildDunePackage rec {
+ pname = "opam-repository";
+
+ minimumOCamlVersion = "4.02";
+
+ inherit (opam-format) src version;
+
+ patches = [ ./download-tool.patch ];
+ postPatch = ''
+ substituteInPlace src/repository/opamRepositoryConfig.ml \
+ --replace "SUBSTITUTE_NIXOS_CURL_PATH" "\"${curl}/bin/curl\""
+ '';
+
+ nativeBuildInputs = [ unzip ];
+ buildInputs = [ curl ];
+ propagatedBuildInputs = [ opam-format ];
+
+ meta = opam-format.meta // {
+ description = "OPAM repository and remote sources handling, including curl/wget, rsync, git, mercurial, darcs backends";
+ maintainers = with lib.maintainers; [ sternenseemann ];
+ };
+}
diff --git a/nixpkgs/pkgs/development/ocaml-modules/opam-repository/download-tool.patch b/nixpkgs/pkgs/development/ocaml-modules/opam-repository/download-tool.patch
new file mode 100644
index 00000000000..5af720adca9
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/opam-repository/download-tool.patch
@@ -0,0 +1,29 @@
+diff --git a/src/repository/opamRepositoryConfig.ml b/src/repository/opamRepositoryConfig.ml
+index c2954c1d..528fc621 100644
+--- a/src/repository/opamRepositoryConfig.ml
++++ b/src/repository/opamRepositoryConfig.ml
+@@ -27,23 +27,7 @@ type 'a options_fun =
+ 'a
+
+ let default = {
+- download_tool = lazy (
+- try
+- let tools =
+- if OpamStd.Sys.(os () = Darwin)
+- then ["wget", `Default; "curl", `Curl]
+- else ["curl", `Curl; "wget", `Default]
+- in
+- let cmd, kind =
+- List.find (fun (c,_) -> OpamSystem.resolve_command c <> None) tools
+- in
+- [ CIdent cmd, None ], kind
+- with Not_found ->
+- OpamConsole.error_and_exit `Configuration_error
+- "Could not find a suitable download command. Please make sure you \
+- have either \"curl\" or \"wget\" installed, or specify a custom \
+- command through variable OPAMFETCH."
+- );
++ download_tool = lazy ([ CIdent SUBSTITUTE_NIXOS_CURL_PATH, None ], `Curl);
+ validation_hook = None;
+ retries = 3;
+ force_checksums = None;