From ece5ec8aded86b6bcb4036c2cd35bdb8b05c5e76 Mon Sep 17 00:00:00 2001
From: Anthony Scemama <scemama@irsamc.ups-tlse.fr>
Date: Sat, 29 Feb 2020 14:47:44 +0100
Subject: [PATCH] opam: added versions up to v2.0.6 (#15178)

---
 .../repos/builtin/packages/opam/package.py    | 26 +++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/var/spack/repos/builtin/packages/opam/package.py b/var/spack/repos/builtin/packages/opam/package.py
index 179fad0bd9..d25999f89e 100644
--- a/var/spack/repos/builtin/packages/opam/package.py
+++ b/var/spack/repos/builtin/packages/opam/package.py
@@ -16,14 +16,35 @@ class Opam(AutotoolsPackage):
     homepage = "https://opam.ocaml.org/"
     url      = "https://github.com/ocaml/opam/releases/download/1.2.2/opam-full-1.2.2.tar.gz"
 
+    maintainers = ['scemama']
+
+    version('2.0.6', sha256='7c4bff5e5f3628ad00c53ee1b044ced8128ffdcfbb7582f8773fb433e12e07f4')
+    version('2.0.5', sha256='776c7e64d6e24c2ef1efd1e6a71d36e007645efae94eaf860c05c1929effc76f')
+    version('2.0.4', sha256='debfb828b400fb511ca290f1bfc928db91cad74ec1ccbddcfdbfeff26f7099e5')
+    version('2.0.3', sha256='0589da4da184584a5445d59385009536534f60bc0e27772245b2f49e5fa8f0e2')
+    version('2.0.2', sha256='eeb99fdda4b10ad3467a700fa4d1dfedb30714837d18d2faf1ef9c87d94cf0bc')
+    version('2.0.1', sha256='81f7f1b661a0c1e04642fe02d0bea5524b32aa2cbed0ecf9b18d7145324ed97c')
+    version('2.0.0', sha256='9dad4fcb4f53878c9daa6285d8456ccc671e21bfa71544d1f926fb8a63bfed25')
     version('1.2.2', sha256='15e617179251041f4bf3910257bbb8398db987d863dd3cfc288bdd958de58f00')
     version('1.2.1', sha256='f210ece7a2def34b486c9ccfb75de8febd64487b2ea4a14a7fa0358f37eacc3b')
 
-    depends_on('ocaml')  # Not a strict dependency, but recommended
+    # OCaml 4.10.0 has removed the -safe-string flag, which is necessary
+    # for OPAM 1i (see docstring of setup_build_environment).
+    depends_on('ocaml@:4.09.0', type='build', when='@:1.2.2')
+    depends_on('ocaml', type='build', when='@2.0.0:')
 
     parallel = False
 
+    sanity_check_is_file = ['bin/opam']
+
+    @when('@:1.2.2')
     def setup_build_environment(self, env):
+        ''' In OCaml <4.06.1, the default was -safe-string=0, and this has
+        changed in OCaml >=4.06.1. OPAM version 1 was written before 4.06.1
+        was released, so OPAM <2.0 assumes mutable strings and requires the
+        safe-string=0 flag. This is not true with OPAM >=2.0, so the flag
+        should not be set.'''
+
         # Environment variable setting taken from
         # https://github.com/Homebrew/homebrew-core/blob/master/Formula/opam.rb
         env.set('OCAMLPARAM', 'safe-string=0,_')  # OCaml 4.06.0 compat
@@ -31,4 +52,5 @@ def setup_build_environment(self, env):
     def build(self, spec, prefix):
         make('lib-ext')
         make()
-        make('man')
+        if spec.satisfies('@:1.2.2'):
+            make('man')
-- 
GitLab