From 0e4e7d05e4f93fa46df2b6b7d1958cbef624706b Mon Sep 17 00:00:00 2001
From: Geoffrey Oxberry <goxberry@gmail.com>
Date: Thu, 12 Apr 2018 07:14:38 -0700
Subject: opengl: make error throw on install, not fetch (#7063)

* opengl: make error throw on install, not fetch

* opengl: add configuration advice for darwin

* opengl: add more versions of GL/OpenGL

* opengl: improve documentation in comments

* [OpenGL] Fix formatting
---
 var/spack/repos/builtin/packages/opengl/package.py | 38 ++++++++++++++++++++--
 1 file changed, 35 insertions(+), 3 deletions(-)

(limited to 'var')

diff --git a/var/spack/repos/builtin/packages/opengl/package.py b/var/spack/repos/builtin/packages/opengl/package.py
index b2c234ee6f..2859cf9138 100644
--- a/var/spack/repos/builtin/packages/opengl/package.py
+++ b/var/spack/repos/builtin/packages/opengl/package.py
@@ -31,13 +31,23 @@ class Opengl(Package):
     homepage = "https://www.opengl.org/"
     url      = "https://www.opengl.org/"
 
-    version('3.2', 'N/A')
+    # A second argument (usually the hash) must be supplied to the
+    # version directive, but 'n/a' is used here because this package
+    # is a placeholder for a system/vendor installation of OpenGL
+    version('3.2', 'n/a')
 
     provides('gl@:4.5', when='@4.5:')
     provides('gl@:4.4', when='@4.4:')
     provides('gl@:4.3', when='@4.3:')
+    provides('gl@:4.2', when='@4.2:')
+    provides('gl@:4.1', when='@4.1:')
+    provides('gl@:3.3', when='@3.3:')
 
-    def install(self, spec, prefix):
+    # Override the fetcher method to throw a useful error message;
+    # fixes GitHub issue (#7061) in which this package threw a
+    # generic, uninformative error during the `fetch` step,
+    @property
+    def fetcher(self):
         msg = """This package is intended to be a placeholder for
         system-provided OpenGL libraries from hardware vendors.  Please
         download and install OpenGL drivers/libraries for your graphics
@@ -53,6 +63,28 @@ class Opengl(Package):
         In that case, /opt/opengl/ should contain these two folders:
 
         include/GL/       (opengl headers, including "gl.h")
-        lib               (opengl libraries, including "libGL.so")"""
+        lib               (opengl libraries, including "libGL.so")
+
+        On Apple Darwin (e.g., OS X, macOS) systems, this package is
+        normally installed as part of the XCode Command Line Tools in
+        /usr/X11R6, so a working packages.yaml would be
 
+        packages:
+          opengl:
+            paths:
+              opengl@4.1: /usr/X11R6
+            buildable: False
+
+        In that case, /usr/X11R6 should contain
+
+        include/GL/      (OpenGL headers, including "gl.h")
+        lib              (OpenGL libraries, including "libGL.dylib")
+
+        On OS X/macOS, note that the version of OpenGL provided
+        depends on your hardware. Look at
+        https://support.apple.com/en-us/HT202823 to see what version
+        of OpenGL your Mac uses."""
         raise InstallError(msg)
+
+    def install(self, spec, prefix):
+        pass
-- 
cgit v1.2.3-70-g09d2