{"action":"created","comment":{"url":"https://api.github.com/repos/spack/spack/pulls/comments/202529598","pull_request_review_id":137253060,"id":202529598,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMjUyOTU5OA==","diff_hunk":"@@ -0,0 +1,299 @@\n+.. _makefilepackage:\n+\n+---------------\n+MakefilePackage\n+---------------\n+\n+The most primitive build system a package can use is a plain Makefile.\n+Makefiles are simple to write for small projects, but they usually\n+require you to edit the Makefile to set platform and compiler-specific\n+variables.\n+\n+^^^^^^\n+Phases\n+^^^^^^\n+\n+The ``MakefilePackage`` base class comes with 3 phases:\n+\n+#. ``edit`` - edit the Makefile\n+#. ``build`` - build the project\n+#. ``install`` - install the project\n+\n+By default, ``edit`` does nothing, but you can override it to replace\n+hard-coded Makefile variables. The ``build`` and ``install`` phases\n+run:\n+\n+.. code-block:: console\n+\n+   $ make\n+   $ make install\n+\n+\n+^^^^^^^^^^^^^^^\n+Important files\n+^^^^^^^^^^^^^^^\n+\n+The main file that matters for a ``MakefilePackage`` is the Makefile.\n+This file will be named one of the following ways:\n+\n+* GNUmakefile (only works with GNU Make)\n+* Makefile (most common)\n+* makefile\n+\n+Some Makefiles also *include* other configuration files. Check for an\n+``include`` directive in the Makefile.\n+\n+^^^^^^^^^^^^^^^^^^^^^^^^^\n+Build system dependencies\n+^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+Spack assumes that the operating system will have a valid ``make`` utility\n+installed already, so you don't need to add a dependency on ``make``.\n+However, if the package uses a ``GNUmakefile`` or the developers recommend\n+using GNU Make, you should add a dependency on ``gmake``:\n+\n+.. code-block:: python\n+\n+   depends_on('gmake', type='build')\n+\n+\n+^^^^^^^^^^^^^^^^^^^^^^^^^^\n+Types of Makefile packages\n+^^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+Most of the work involved in packaging software that uses Makefiles\n+involves overriding or replacing hard-coded variables. Many packages\n+make the mistake of hard-coding compilers, usually for GCC or Intel.\n+This is fine if you happen to be using that particular compiler, but\n+Spack is designed to work with *any* compiler, and you need to ensure\n+that this is the case.\n+\n+Depending on how the Makefile is designed, there are 4 common strategies\n+that can be used to set or override the appropriate variables:\n+\n+\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n+Environment variables\n+\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n+\n+Make has multiple types of assignment operators. Some Makefiles\n+use ``=`` to assign variables. The only way to override these\n+variables is to edit the Makefile or override them on the command-line.\n+However, Makefiles that use ``?=`` for assignment honor environment\n+variables. Since Spack already sets ``CC``, ``CXX``, ``F77``, and ``FC``,\n+you won't need to worry about setting these variables. If there are\n+any other variables you need to set, you can do this in the ``edit``\n+method:\n+\n+.. code-block:: python\n+\n+   def edit(self, spec, prefix):\n+       env['PREFIX'] = prefix\n+       env['BLASLIB'] = spec['blas'].libs.ld_flags\n+\n+\n+`cbench <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/cbench/package.py>`_\n+is a good example of a simple package that does this, while\n+`esmf <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/esmf/package.py>`_\n+is a good example of a more complex package.\n+\n+\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n+Command-line arguments\n+\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n+\n+If the Makefile ignores environment variables, the next thing to try\n+is command-line arguments. You can do this by overriding the\n+``build_targets`` attribute. If you don't need access to the spec,\n+you can do this like so:\n+\n+.. code-block:: python\n+\n+   build_targets = ['CC=cc']\n+\n+\n+If you do need access to the spec, you can create a property like so:\n+\n+.. code-block:: python\n+\n+   @property\n+   def build_targets(self):\n+       spec = self.spec\n+\n+       return [\n+           'CC=cc',\n+           'BLASLIB={0}'.format(spec['blas'].libs.ld_flags),\n+       ]\n+\n+\n+`cloverleaf <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/cloverleaf/package.py>`_\n+is a good example of a package that uses this strategy.\n+\n+\"\"\"\"\"\"\"\"\"\"\"\"\"\n+Edit Makefile\n+\"\"\"\"\"\"\"\"\"\"\"\"\"\n+\n+Some Makefiles are just plain stubborn and will ignore command-line\n+variables. The only way to ensure that these packages build correctly\n+is to directly edit the Makefile. Spack provides a ``FileFilter`` class\n+and a ``filter_file`` method to help with this. For example:\n+\n+.. code-block:: python\n+\n+   def edit(self, spec, prefix):\n+       makefile = FileFilter('Makefile')\n+\n+       makefile.filter('CC = gcc',  'CC = cc')\n+       makefile.filter('CXX = g++', 'CC = c++')\n+\n+\n+`stream <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/stream/package.py>`_\n+is a good example of a package that involves editing a Makefile to set\n+the appropriate variables.\n+\n+\"\"\"\"\"\"\"\"\"\"\"\n+Config file\n+\"\"\"\"\"\"\"\"\"\"\"\n+\n+More complex packages often involve Makefiles that *include* a\n+configuration file. These configuration files are primarily composed\n+of variables relating to the compiler, platform, and the location of\n+dependencies or names of libraries. Since these config files are\n+dependent on the compiler and platform, you will often see entire\n+directories of examples for common compilers and architectures. Use\n+these examples to help determine what possible values to use.\n+\n+If the config file is long and only contains one or two variables\n+that need to be modified, you can use the technique above to edit\n+the config file. However, if you end up needing to modify most of\n+the variables, it may be easier to write a new file from scratch.\n+\n+If each variable is independent of each other, a dictionary works\n+well for storing variables:\n+\n+.. code-block:: python\n+\n+   def edit(self, spec, prefix):\n+       config = {\n+           'CC': 'cc',\n+           'MAKE': 'make',\n+       }\n+\n+       if '+blas' in spec:\n+           config['BLAS_LIBS'] = spec['blas'].libs.joined()\n+\n+       with open('make.inc', 'w') as inc:\n+           for key in config:\n+               inc.write('{0} = {1}\\n'.format(key, config[key]))\n+\n+\n+`elk <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/elk/package.py>`_\n+is a good example of a package that uses a dictionary to store\n+configuration variables.\n+\n+If the order of variables is important, it may be easier to store\n+them in a list:\n+\n+.. code-block:: python\n+\n+   def edit(self, spec, prefix):\n+       config = [\n+           'INSTALL_DIR = {0}'.format(prefix),\n+           'INCLUDE_DIR = $(INSTALL_DIR)/include',\n+           'LIBRARY_DIR = $(INSTALL_DIR)/lib',\n+       ]\n+\n+       with open('make.inc', 'w') as inc:\n+           for var in config:\n+               inc.write('{0}\\n'.format(var))\n+\n+\n+`hpl <https://github.com/spack/spack/blob/develop/var/spack/repos/builtin/packages/hpl/package.py>`_\n+is a good example of a package that uses a list to store\n+configuration variables.\n+\n+^^^^^^^^^^^^^^^^^^^^^^^^^^\n+Variables to watch out for\n+^^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+The following is a list of common variables to watch out for:","path":"lib/spack/docs/build_systems/makefilepackage.rst","position":217,"original_position":217,"commit_id":"f363fd448501044aef366efc70c874bc650ccab2","original_commit_id":"f363fd448501044aef366efc70c874bc650ccab2","user":{"login":"tgamblin","id":299842,"node_id":"MDQ6VXNlcjI5OTg0Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/299842?v=4","gravatar_id":"","url":"https://api.github.com/users/tgamblin","html_url":"https://github.com/tgamblin","followers_url":"https://api.github.com/users/tgamblin/followers","following_url":"https://api.github.com/users/tgamblin/following{/other_user}","gists_url":"https://api.github.com/users/tgamblin/gists{/gist_id}","starred_url":"https://api.github.com/users/tgamblin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tgamblin/subscriptions","organizations_url":"https://api.github.com/users/tgamblin/orgs","repos_url":"https://api.github.com/users/tgamblin/repos","events_url":"https://api.github.com/users/tgamblin/events{/privacy}","received_events_url":"https://api.github.com/users/tgamblin/received_events","type":"User","site_admin":false},"body":"Is it worth adding a link to https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html in here somewhere?","created_at":"2018-07-15T02:18:27Z","updated_at":"2018-07-15T02:18:28Z","html_url":"https://github.com/spack/spack/pull/5015#discussion_r202529598","pull_request_url":"https://api.github.com/repos/spack/spack/pulls/5015","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/spack/spack/pulls/comments/202529598"},"html":{"href":"https://github.com/spack/spack/pull/5015#discussion_r202529598"},"pull_request":{"href":"https://api.github.com/repos/spack/spack/pulls/5015"}}},"pull_request":{"url":"https://api.github.com/repos/spack/spack/pulls/5015","id":134540374,"node_id":"MDExOlB1bGxSZXF1ZXN0MTM0NTQwMzc0","html_url":"https://github.com/spack/spack/pull/5015","diff_url":"https://github.com/spack/spack/pull/5015.diff","patch_url":"https://github.com/spack/spack/pull/5015.patch","issue_url":"https://api.github.com/repos/spack/spack/issues/5015","number":5015,"state":"open","locked":false,"title":"Add documentation on build systems","user":{"login":"adamjstewart","id":12021217,"node_id":"MDQ6VXNlcjEyMDIxMjE3","avatar_url":"https://avatars2.githubusercontent.com/u/12021217?v=4","gravatar_id":"","url":"https://api.github.com/users/adamjstewart","html_url":"https://github.com/adamjstewart","followers_url":"https://api.github.com/users/adamjstewart/followers","following_url":"https://api.github.com/users/adamjstewart/following{/other_user}","gists_url":"https://api.github.com/users/adamjstewart/gists{/gist_id}","starred_url":"https://api.github.com/users/adamjstewart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamjstewart/subscriptions","organizations_url":"https://api.github.com/users/adamjstewart/orgs","repos_url":"https://api.github.com/users/adamjstewart/repos","events_url":"https://api.github.com/users/adamjstewart/events{/privacy}","received_events_url":"https://api.github.com/users/adamjstewart/received_events","type":"User","site_admin":false},"body":"Adds documentation for the following [build systems](https://en.wikipedia.org/wiki/List_of_build_automation_software):\r\n\r\n### Make-based\r\n\r\n- [x] `MakefilePackage`\r\n\r\n### Make-incompatible\r\n\r\n- [x] `SConsPackage`\r\n- [x] `WafPackage`\r\n\r\n### Build-script generation\r\n\r\n- [x] `AutotoolsPackage`\r\n- [x] `CMakePackage`\r\n- [x] `QMakePackage`\r\n\r\n### Language-specific\r\n\r\n- [x] `OctavePackage`\r\n- [x] `PerlPackage`\r\n- [x] `PythonPackage`\r\n- [x] `RPackage`\r\n- [ ] `RubyPackage` - waiting on #3127\r\n\r\n### Other\r\n\r\n- [ ] `AspellDictPackage` - not really a build system?\r\n- [x] `CudaPackage` - not really a build system?\r\n- [x] Custom build systems\r\n- [ ] `IntelPackage` - waiting on #7469\r\n\r\nWe never really got around to documenting how to use each build system when we introduced separate base classes. This PR is an attempt to solve this. It is also an attempt to pass on knowledge of each build system to new package developers who may not be familiar with SCons or QMake or Waf. If there's anything you think I'm missing, let me know!\r\n\r\nCloses #3228\r\nCloses #2951\r\nCloses #2222","created_at":"2017-08-07T22:31:35Z","updated_at":"2018-07-15T02:18:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3ddbbd12f86b26978c0cf3e7aff64f959a72d824","assignee":{"login":"scheibelp","id":1659704,"node_id":"MDQ6VXNlcjE2NTk3MDQ=","avatar_url":"https://avatars2.githubusercontent.com/u/1659704?v=4","gravatar_id":"","url":"https://api.github.com/users/scheibelp","html_url":"https://github.com/scheibelp","followers_url":"https://api.github.com/users/scheibelp/followers","following_url":"https://api.github.com/users/scheibelp/following{/other_user}","gists_url":"https://api.github.com/users/scheibelp/gists{/gist_id}","starred_url":"https://api.github.com/users/scheibelp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scheibelp/subscriptions","organizations_url":"https://api.github.com/users/scheibelp/orgs","repos_url":"https://api.github.com/users/scheibelp/repos","events_url":"https://api.github.com/users/scheibelp/events{/privacy}","received_events_url":"https://api.github.com/users/scheibelp/received_events","type":"User","site_admin":false},"assignees":[{"login":"scheibelp","id":1659704,"node_id":"MDQ6VXNlcjE2NTk3MDQ=","avatar_url":"https://avatars2.githubusercontent.com/u/1659704?v=4","gravatar_id":"","url":"https://api.github.com/users/scheibelp","html_url":"https://github.com/scheibelp","followers_url":"https://api.github.com/users/scheibelp/followers","following_url":"https://api.github.com/users/scheibelp/following{/other_user}","gists_url":"https://api.github.com/users/scheibelp/gists{/gist_id}","starred_url":"https://api.github.com/users/scheibelp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scheibelp/subscriptions","organizations_url":"https://api.github.com/users/scheibelp/orgs","repos_url":"https://api.github.com/users/scheibelp/repos","events_url":"https://api.github.com/users/scheibelp/events{/privacy}","received_events_url":"https://api.github.com/users/scheibelp/received_events","type":"User","site_admin":false},{"login":"alalazo","id":4199709,"node_id":"MDQ6VXNlcjQxOTk3MDk=","avatar_url":"https://avatars0.githubusercontent.com/u/4199709?v=4","gravatar_id":"","url":"https://api.github.com/users/alalazo","html_url":"https://github.com/alalazo","followers_url":"https://api.github.com/users/alalazo/followers","following_url":"https://api.github.com/users/alalazo/following{/other_user}","gists_url":"https://api.github.com/users/alalazo/gists{/gist_id}","starred_url":"https://api.github.com/users/alalazo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alalazo/subscriptions","organizations_url":"https://api.github.com/users/alalazo/orgs","repos_url":"https://api.github.com/users/alalazo/repos","events_url":"https://api.github.com/users/alalazo/events{/privacy}","received_events_url":"https://api.github.com/users/alalazo/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"alalazo","id":4199709,"node_id":"MDQ6VXNlcjQxOTk3MDk=","avatar_url":"https://avatars0.githubusercontent.com/u/4199709?v=4","gravatar_id":"","url":"https://api.github.com/users/alalazo","html_url":"https://github.com/alalazo","followers_url":"https://api.github.com/users/alalazo/followers","following_url":"https://api.github.com/users/alalazo/following{/other_user}","gists_url":"https://api.github.com/users/alalazo/gists{/gist_id}","starred_url":"https://api.github.com/users/alalazo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alalazo/subscriptions","organizations_url":"https://api.github.com/users/alalazo/orgs","repos_url":"https://api.github.com/users/alalazo/repos","events_url":"https://api.github.com/users/alalazo/events{/privacy}","received_events_url":"https://api.github.com/users/alalazo/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":446619830,"node_id":"MDU6TGFiZWw0NDY2MTk4MzA=","url":"https://api.github.com/repos/spack/spack/labels/R","name":"R","color":"d93f0b","default":false},{"id":475441813,"node_id":"MDU6TGFiZWw0NzU0NDE4MTM=","url":"https://api.github.com/repos/spack/spack/labels/autotools","name":"autotools","color":"d93f0b","default":false},{"id":508566016,"node_id":"MDU6TGFiZWw1MDg1NjYwMTY=","url":"https://api.github.com/repos/spack/spack/labels/cmake","name":"cmake","color":"c2e0c6","default":false},{"id":446625544,"node_id":"MDU6TGFiZWw0NDY2MjU1NDQ=","url":"https://api.github.com/repos/spack/spack/labels/documentation","name":"documentation","color":"2e81b7","default":false},{"id":477156668,"node_id":"MDU6TGFiZWw0NzcxNTY2Njg=","url":"https://api.github.com/repos/spack/spack/labels/intel","name":"intel","color":"127cc1","default":false},{"id":624275116,"node_id":"MDU6TGFiZWw2MjQyNzUxMTY=","url":"https://api.github.com/repos/spack/spack/labels/makefile","name":"makefile","color":"b60205","default":false},{"id":571584920,"node_id":"MDU6TGFiZWw1NzE1ODQ5MjA=","url":"https://api.github.com/repos/spack/spack/labels/perl","name":"perl","color":"fbca04","default":false},{"id":446619758,"node_id":"MDU6TGFiZWw0NDY2MTk3NTg=","url":"https://api.github.com/repos/spack/spack/labels/python","name":"python","color":"c2e0c6","default":false},{"id":657167326,"node_id":"MDU6TGFiZWw2NTcxNjczMjY=","url":"https://api.github.com/repos/spack/spack/labels/qmake","name":"qmake","color":"bfdadc","default":false},{"id":663894889,"node_id":"MDU6TGFiZWw2NjM4OTQ4ODk=","url":"https://api.github.com/repos/spack/spack/labels/ruby","name":"ruby","color":"e99695","default":false},{"id":657852675,"node_id":"MDU6TGFiZWw2NTc4NTI2NzU=","url":"https://api.github.com/repos/spack/spack/labels/scons","name":"scons","color":"5319e7","default":false},{"id":663892928,"node_id":"MDU6TGFiZWw2NjM4OTI5Mjg=","url":"https://api.github.com/repos/spack/spack/labels/waf","name":"waf","color":"d93f0b","default":false}],"milestone":{"url":"https://api.github.com/repos/spack/spack/milestones/4","html_url":"https://github.com/spack/spack/milestone/4","labels_url":"https://api.github.com/repos/spack/spack/milestones/4/labels","id":3074660,"node_id":"MDk6TWlsZXN0b25lMzA3NDY2MA==","number":4,"title":"v0.13.0","description":"","creator":{"login":"tgamblin","id":299842,"node_id":"MDQ6VXNlcjI5OTg0Mg==","avatar_url":"https://avatars3.githubusercontent.com/u/299842?v=4","gravatar_id":"","url":"https://api.github.com/users/tgamblin","html_url":"https://github.com/tgamblin","followers_url":"https://api.github.com/users/tgamblin/followers","following_url":"https://api.github.com/users/tgamblin/following{/other_user}","gists_url":"https://api.github.com/users/tgamblin/gists{/gist_id}","starred_url":"https://api.github.com/users/tgamblin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tgamblin/subscriptions","organizations_url":"https://api.github.com/users/tgamblin/orgs","repos_url":"https://api.github.com/users/tgamblin/repos","events_url":"https://api.github.com/users/tgamblin/events{/privacy}","received_events_url":"https://api.github.com/users/tgamblin/received_events","type":"User","site_admin":false},"open_issues":12,"closed_issues":2,"state":"open","created_at":"2018-01-30T11:57:14Z","updated_at":"2018-05-05T00:01:37Z","due_on":"2018-03-15T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/spack/spack/pulls/5015/commits","review_comments_url":"https://api.github.com/repos/spack/spack/pulls/5015/comments","review_comment_url":"https://api.github.com/repos/spack/spack/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spack/spack/issues/5015/comments","statuses_url":"https://api.github.com/repos/spack/spack/statuses/f363fd448501044aef366efc70c874bc650ccab2","head":{"label":"adamjstewart:docs/build-systems","ref":"docs/build-systems","sha":"f363fd448501044aef366efc70c874bc650ccab2","user":{"login":"adamjstewart","id":12021217,"node_id":"MDQ6VXNlcjEyMDIxMjE3","avatar_url":"https://avatars2.githubusercontent.com/u/12021217?v=4","gravatar_id":"","url":"https://api.github.com/users/adamjstewart","html_url":"https://github.com/adamjstewart","followers_url":"https://api.github.com/users/adamjstewart/followers","following_url":"https://api.github.com/users/adamjstewart/following{/other_user}","gists_url":"https://api.github.com/users/adamjstewart/gists{/gist_id}","starred_url":"https://api.github.com/users/adamjstewart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamjstewart/subscriptions","organizations_url":"https://api.github.com/users/adamjstewart/orgs","repos_url":"https://api.github.com/users/adamjstewart/repos","events_url":"https://api.github.com/users/adamjstewart/events{/privacy}","received_events_url":"https://api.github.com/users/adamjstewart/received_events","type":"User","site_admin":false},"repo":{"id":49444175,"node_id":"MDEwOlJlcG9zaXRvcnk0OTQ0NDE3NQ==","name":"spack","full_name":"adamjstewart/spack","owner":{"login":"adamjstewart","id":12021217,"node_id":"MDQ6VXNlcjEyMDIxMjE3","avatar_url":"https://avatars2.githubusercontent.com/u/12021217?v=4","gravatar_id":"","url":"https://api.github.com/users/adamjstewart","html_url":"https://github.com/adamjstewart","followers_url":"https://api.github.com/users/adamjstewart/followers","following_url":"https://api.github.com/users/adamjstewart/following{/other_user}","gists_url":"https://api.github.com/users/adamjstewart/gists{/gist_id}","starred_url":"https://api.github.com/users/adamjstewart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamjstewart/subscriptions","organizations_url":"https://api.github.com/users/adamjstewart/orgs","repos_url":"https://api.github.com/users/adamjstewart/repos","events_url":"https://api.github.com/users/adamjstewart/events{/privacy}","received_events_url":"https://api.github.com/users/adamjstewart/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/adamjstewart/spack","description":"A flexible package manager that supports multiple versions, configurations, platforms, and compilers.","fork":true,"url":"https://api.github.com/repos/adamjstewart/spack","forks_url":"https://api.github.com/repos/adamjstewart/spack/forks","keys_url":"https://api.github.com/repos/adamjstewart/spack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/adamjstewart/spack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/adamjstewart/spack/teams","hooks_url":"https://api.github.com/repos/adamjstewart/spack/hooks","issue_events_url":"https://api.github.com/repos/adamjstewart/spack/issues/events{/number}","events_url":"https://api.github.com/repos/adamjstewart/spack/events","assignees_url":"https://api.github.com/repos/adamjstewart/spack/assignees{/user}","branches_url":"https://api.github.com/repos/adamjstewart/spack/branches{/branch}","tags_url":"https://api.github.com/repos/adamjstewart/spack/tags","blobs_url":"https://api.github.com/repos/adamjstewart/spack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/adamjstewart/spack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/adamjstewart/spack/git/refs{/sha}","trees_url":"https://api.github.com/repos/adamjstewart/spack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/adamjstewart/spack/statuses/{sha}","languages_url":"https://api.github.com/repos/adamjstewart/spack/languages","stargazers_url":"https://api.github.com/repos/adamjstewart/spack/stargazers","contributors_url":"https://api.github.com/repos/adamjstewart/spack/contributors","subscribers_url":"https://api.github.com/repos/adamjstewart/spack/subscribers","subscription_url":"https://api.github.com/repos/adamjstewart/spack/subscription","commits_url":"https://api.github.com/repos/adamjstewart/spack/commits{/sha}","git_commits_url":"https://api.github.com/repos/adamjstewart/spack/git/commits{/sha}","comments_url":"https://api.github.com/repos/adamjstewart/spack/comments{/number}","issue_comment_url":"https://api.github.com/repos/adamjstewart/spack/issues/comments{/number}","contents_url":"https://api.github.com/repos/adamjstewart/spack/contents/{+path}","compare_url":"https://api.github.com/repos/adamjstewart/spack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/adamjstewart/spack/merges","archive_url":"https://api.github.com/repos/adamjstewart/spack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/adamjstewart/spack/downloads","issues_url":"https://api.github.com/repos/adamjstewart/spack/issues{/number}","pulls_url":"https://api.github.com/repos/adamjstewart/spack/pulls{/number}","milestones_url":"https://api.github.com/repos/adamjstewart/spack/milestones{/number}","notifications_url":"https://api.github.com/repos/adamjstewart/spack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/adamjstewart/spack/labels{/name}","releases_url":"https://api.github.com/repos/adamjstewart/spack/releases{/id}","deployments_url":"https://api.github.com/repos/adamjstewart/spack/deployments","created_at":"2016-01-11T18:04:18Z","updated_at":"2018-07-14T16:09:42Z","pushed_at":"2018-07-14T16:29:46Z","git_url":"git://github.com/adamjstewart/spack.git","ssh_url":"git@github.com:adamjstewart/spack.git","clone_url":"https://github.com/adamjstewart/spack.git","svn_url":"https://github.com/adamjstewart/spack","homepage":"https://spack.io/","size":39228,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"spack:develop","ref":"develop","sha":"34a2d35e50f88679f8c98285c1a4c4d2391c6311","user":{"login":"spack","id":25539161,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1NTM5MTYx","avatar_url":"https://avatars2.githubusercontent.com/u/25539161?v=4","gravatar_id":"","url":"https://api.github.com/users/spack","html_url":"https://github.com/spack","followers_url":"https://api.github.com/users/spack/followers","following_url":"https://api.github.com/users/spack/following{/other_user}","gists_url":"https://api.github.com/users/spack/gists{/gist_id}","starred_url":"https://api.github.com/users/spack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spack/subscriptions","organizations_url":"https://api.github.com/users/spack/orgs","repos_url":"https://api.github.com/users/spack/repos","events_url":"https://api.github.com/users/spack/events{/privacy}","received_events_url":"https://api.github.com/users/spack/received_events","type":"Organization","site_admin":false},"repo":{"id":15730865,"node_id":"MDEwOlJlcG9zaXRvcnkxNTczMDg2NQ==","name":"spack","full_name":"spack/spack","owner":{"login":"spack","id":25539161,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1NTM5MTYx","avatar_url":"https://avatars2.githubusercontent.com/u/25539161?v=4","gravatar_id":"","url":"https://api.github.com/users/spack","html_url":"https://github.com/spack","followers_url":"https://api.github.com/users/spack/followers","following_url":"https://api.github.com/users/spack/following{/other_user}","gists_url":"https://api.github.com/users/spack/gists{/gist_id}","starred_url":"https://api.github.com/users/spack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spack/subscriptions","organizations_url":"https://api.github.com/users/spack/orgs","repos_url":"https://api.github.com/users/spack/repos","events_url":"https://api.github.com/users/spack/events{/privacy}","received_events_url":"https://api.github.com/users/spack/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spack/spack","description":"A flexible package manager that supports multiple versions, configurations, platforms, and compilers.","fork":false,"url":"https://api.github.com/repos/spack/spack","forks_url":"https://api.github.com/repos/spack/spack/forks","keys_url":"https://api.github.com/repos/spack/spack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spack/spack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spack/spack/teams","hooks_url":"https://api.github.com/repos/spack/spack/hooks","issue_events_url":"https://api.github.com/repos/spack/spack/issues/events{/number}","events_url":"https://api.github.com/repos/spack/spack/events","assignees_url":"https://api.github.com/repos/spack/spack/assignees{/user}","branches_url":"https://api.github.com/repos/spack/spack/branches{/branch}","tags_url":"https://api.github.com/repos/spack/spack/tags","blobs_url":"https://api.github.com/repos/spack/spack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spack/spack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spack/spack/git/refs{/sha}","trees_url":"https://api.github.com/repos/spack/spack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spack/spack/statuses/{sha}","languages_url":"https://api.github.com/repos/spack/spack/languages","stargazers_url":"https://api.github.com/repos/spack/spack/stargazers","contributors_url":"https://api.github.com/repos/spack/spack/contributors","subscribers_url":"https://api.github.com/repos/spack/spack/subscribers","subscription_url":"https://api.github.com/repos/spack/spack/subscription","commits_url":"https://api.github.com/repos/spack/spack/commits{/sha}","git_commits_url":"https://api.github.com/repos/spack/spack/git/commits{/sha}","comments_url":"https://api.github.com/repos/spack/spack/comments{/number}","issue_comment_url":"https://api.github.com/repos/spack/spack/issues/comments{/number}","contents_url":"https://api.github.com/repos/spack/spack/contents/{+path}","compare_url":"https://api.github.com/repos/spack/spack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spack/spack/merges","archive_url":"https://api.github.com/repos/spack/spack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spack/spack/downloads","issues_url":"https://api.github.com/repos/spack/spack/issues{/number}","pulls_url":"https://api.github.com/repos/spack/spack/pulls{/number}","milestones_url":"https://api.github.com/repos/spack/spack/milestones{/number}","notifications_url":"https://api.github.com/repos/spack/spack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spack/spack/labels{/name}","releases_url":"https://api.github.com/repos/spack/spack/releases{/id}","deployments_url":"https://api.github.com/repos/spack/spack/deployments","created_at":"2014-01-08T09:22:12Z","updated_at":"2018-07-15T00:21:49Z","pushed_at":"2018-07-15T00:20:51Z","git_url":"git://github.com/spack/spack.git","ssh_url":"git@github.com:spack/spack.git","clone_url":"https://github.com/spack/spack.git","svn_url":"https://github.com/spack/spack","homepage":"https://spack.io","size":40774,"stargazers_count":598,"watchers_count":598,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":458,"mirror_url":null,"archived":false,"open_issues_count":995,"license":{"key":"lgpl-2.1","name":"GNU Lesser General Public License v2.1","spdx_id":"LGPL-2.1","url":"https://api.github.com/licenses/lgpl-2.1","node_id":"MDc6TGljZW5zZTEx"},"forks":458,"open_issues":995,"watchers":598,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/spack/spack/pulls/5015"},"html":{"href":"https://github.com/spack/spack/pull/5015"},"issue":{"href":"https://api.github.com/repos/spack/spack/issues/5015"},"comments":{"href":"https://api.github.com/repos/spack/spack/issues/5015/comments"},"review_comments":{"href":"https://api.github.com/repos/spack/spack/pulls/5015/comments"},"review_comment":{"href":"https://api.github.com/repos/spack/spack/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spack/spack/pulls/5015/commits"},"statuses":{"href":"https://api.github.com/repos/spack/spack/statuses/f363fd448501044aef366efc70c874bc650ccab2"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"tgamblin"}}