Merge branch 'develop' of https://github.com/LLNL/spack into features/custom_modulefile_from_config
Conflicts: lib/spack/spack/config.py
This commit is contained in:
		
							
								
								
									
										20
									
								
								.flake8
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.flake8
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | # -*- conf -*- | ||||||
|  | # flake8 settings for Spack. | ||||||
|  | # | ||||||
|  | # Below we describe which flake8 checks Spack ignores and what the | ||||||
|  | # rationale is. | ||||||
|  | # | ||||||
|  | # Let people line things up nicely: | ||||||
|  | # - E221: multiple spaces before operator | ||||||
|  | # - E241: multiple spaces after ‘,’ | ||||||
|  | # | ||||||
|  | # Spack allows wildcard imports: | ||||||
|  | # - F403: disable wildcard import | ||||||
|  | # | ||||||
|  | # These are required to get the package.py files to test clean. | ||||||
|  | # - F821: undefined name (needed for cmake, configure, etc.) | ||||||
|  | # - F999: name name be undefined or undefined from star imports. | ||||||
|  | # | ||||||
|  | [flake8] | ||||||
|  | ignore = E221,E241,F403,F821,F999 | ||||||
|  | max-line-length = 79 | ||||||
| @@ -1,3 +0,0 @@ | |||||||
| [style] |  | ||||||
| based_on_style = pep8 |  | ||||||
| column_limit = 79 |  | ||||||
| @@ -15,20 +15,22 @@ before_install: | |||||||
|   # Need this for the git tests to succeed. |   # Need this for the git tests to succeed. | ||||||
|   - git config --global user.email "spack@example.com" |   - git config --global user.email "spack@example.com" | ||||||
|   - git config --global user.name "Test User" |   - git config --global user.name "Test User" | ||||||
|  |  | ||||||
|   # Need this to be able to compute the list of changed files |   # Need this to be able to compute the list of changed files | ||||||
|   - git fetch origin develop:develop |   - git fetch origin develop:develop | ||||||
|  |  | ||||||
| script: | script: | ||||||
|  |   # Regular spack setup and tests | ||||||
|   - . share/spack/setup-env.sh |   - . share/spack/setup-env.sh | ||||||
|   - spack compilers |   - spack compilers | ||||||
|   - spack config get compilers |   - spack config get compilers | ||||||
|   - spack install -v libdwarf |   - spack install -v libdwarf | ||||||
|  |  | ||||||
|   # Run unit tests with code coverage |   # Run unit tests with code coverage | ||||||
|   - coverage run bin/spack test |   - coverage run bin/spack test | ||||||
|   # Checks if the file that have been changed are flake8 conformant |  | ||||||
|   - CHANGED_PYTHON_FILES=`git diff develop... --name-only | perl -ne 'print if /\.py$/'` |  | ||||||
|   - if [[ ${CHANGED_PYTHON_FILES} ]] ; then flake8 --format pylint --config flake8.ini ${CHANGED_PYTHON_FILES} ; fi |  | ||||||
|  |  | ||||||
|  |   # Run flake8 code style checks. | ||||||
|  |   - share/spack/qa/run-flake8 | ||||||
|  |  | ||||||
| after_success: | after_success: | ||||||
|   - coveralls |   - coveralls | ||||||
|   | |||||||
| @@ -63,6 +63,11 @@ a [pull request](https://help.github.com/articles/using-pull-requests/). | |||||||
| When you send your request, make ``develop`` the destination branch on the | When you send your request, make ``develop`` the destination branch on the | ||||||
| [Spack repository](https://github.com/LLNL/spack). | [Spack repository](https://github.com/LLNL/spack). | ||||||
|  |  | ||||||
|  | Your contribution will need to pass all the tests run by the `spack test` | ||||||
|  | command, as well as the formatting checks in `share/spack/qa/run-flake8`. | ||||||
|  | You should run both of these before submitting your pull request, to | ||||||
|  | ensure that the online checks succeed. | ||||||
|  |  | ||||||
| Spack is using a rough approximation of the [Git | Spack is using a rough approximation of the [Git | ||||||
| Flow](http://nvie.com/posts/a-successful-git-branching-model/) | Flow](http://nvie.com/posts/a-successful-git-branching-model/) | ||||||
| branching model.  The ``develop`` branch contains the latest | branching model.  The ``develop`` branch contains the latest | ||||||
|   | |||||||
| @@ -1,3 +0,0 @@ | |||||||
| [flake8] |  | ||||||
| ignore = W391,F403,E221,F821 |  | ||||||
| max-line-length = 79 |  | ||||||
| @@ -1456,6 +1456,51 @@ several variants: | |||||||
|  |  | ||||||
|        spack deactivate -a python |        spack deactivate -a python | ||||||
|  |  | ||||||
|  | Filesystem requirements | ||||||
|  | -------------------------- | ||||||
|  |  | ||||||
|  | Spack currently needs to be run from a filesystem that supports | ||||||
|  | ``flock`` locking semantics.  Nearly all local filesystems and recent | ||||||
|  | versions of NFS support this, but parallel filesystems may be mounted | ||||||
|  | without ``flock`` support enabled.  You can determine how your | ||||||
|  | filesystems are mounted with ``mount -p``.  The output for a Lustre | ||||||
|  | filesystem might look like this: | ||||||
|  |  | ||||||
|  | .. code-block:: sh | ||||||
|  |  | ||||||
|  |    $ mount -l | grep lscratch | ||||||
|  |    pilsner-mds1-lnet0@o2ib100:/lsd on /p/lscratchd type lustre (rw,nosuid,noauto,_netdev,lazystatfs,flock) | ||||||
|  |    porter-mds1-lnet0@o2ib100:/lse on /p/lscratche type lustre (rw,nosuid,noauto,_netdev,lazystatfs,flock) | ||||||
|  |  | ||||||
|  | Note the ``flock`` option on both Lustre mounts.  If you do not see | ||||||
|  | this or a similar option for your filesystem, you may need ot ask your | ||||||
|  | system administrator to enable ``flock``. | ||||||
|  |  | ||||||
|  | This issue typically manifests with the error below: | ||||||
|  |  | ||||||
|  | .. code-block:: sh | ||||||
|  |  | ||||||
|  |    $ ./spack find | ||||||
|  |    Traceback (most recent call last): | ||||||
|  |    File "./spack", line 176, in <module> | ||||||
|  |      main() | ||||||
|  |    File "./spack", line 154, in main | ||||||
|  |      return_val = command(parser, args) | ||||||
|  |    File "./spack/lib/spack/spack/cmd/find.py", line 170, in find | ||||||
|  |      specs = set(spack.installed_db.query(**q_args)) | ||||||
|  |    File "./spack/lib/spack/spack/database.py", line 551, in query | ||||||
|  |      with self.read_transaction(): | ||||||
|  |    File "./spack/lib/spack/spack/database.py", line 598, in __enter__ | ||||||
|  |      if self._enter() and self._acquire_fn: | ||||||
|  |    File "./spack/lib/spack/spack/database.py", line 608, in _enter | ||||||
|  |      return self._db.lock.acquire_read(self._timeout) | ||||||
|  |    File "./spack/lib/spack/llnl/util/lock.py", line 103, in acquire_read | ||||||
|  |      self._lock(fcntl.LOCK_SH, timeout)   # can raise LockError. | ||||||
|  |    File "./spack/lib/spack/llnl/util/lock.py", line 64, in _lock | ||||||
|  |      fcntl.lockf(self._fd, op | fcntl.LOCK_NB) | ||||||
|  |    IOError: [Errno 38] Function not implemented | ||||||
|  |  | ||||||
|  | A nicer error message is TBD in future versions of Spack. | ||||||
|  |  | ||||||
| Getting Help | Getting Help | ||||||
| ----------------------- | ----------------------- | ||||||
|   | |||||||
| @@ -34,14 +34,14 @@ | |||||||
|  |  | ||||||
| class InvalidSysTypeError(serr.SpackError): | class InvalidSysTypeError(serr.SpackError): | ||||||
|     def __init__(self, sys_type): |     def __init__(self, sys_type): | ||||||
|         super(InvalidSysTypeError, self).__init__( |         super(InvalidSysTypeError, | ||||||
|             "Invalid sys_type value for Spack: " + sys_type) |               self).__init__("Invalid sys_type value for Spack: " + sys_type) | ||||||
|  |  | ||||||
|  |  | ||||||
| class NoSysTypeError(serr.SpackError): | class NoSysTypeError(serr.SpackError): | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|         super(NoSysTypeError, self).__init__( |         super(NoSysTypeError, | ||||||
|             "Could not determine sys_type for this machine.") |               self).__init__("Could not determine sys_type for this machine.") | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_sys_type_from_spack_globals(): | def get_sys_type_from_spack_globals(): | ||||||
| @@ -69,15 +69,15 @@ def get_sys_type_from_platform(): | |||||||
| @memoized | @memoized | ||||||
| def sys_type(): | def sys_type(): | ||||||
|     """Returns a SysType for the current machine.""" |     """Returns a SysType for the current machine.""" | ||||||
|     methods = [get_sys_type_from_spack_globals, |     methods = [get_sys_type_from_spack_globals, get_sys_type_from_environment, | ||||||
|                get_sys_type_from_environment, |  | ||||||
|                get_sys_type_from_platform] |                get_sys_type_from_platform] | ||||||
|  |  | ||||||
|     # search for a method that doesn't return None |     # search for a method that doesn't return None | ||||||
|     sys_type = None |     sys_type = None | ||||||
|     for method in methods: |     for method in methods: | ||||||
|         sys_type = method() |         sys_type = method() | ||||||
|         if sys_type: break |         if sys_type: | ||||||
|  |             break | ||||||
|  |  | ||||||
|     # Couldn't determine the sys_type for this machine. |     # Couldn't determine the sys_type for this machine. | ||||||
|     if sys_type is None: |     if sys_type is None: | ||||||
|   | |||||||
| @@ -1,3 +1,4 @@ | |||||||
|  | # flake8: noqa | ||||||
| ############################################################################## | ############################################################################## | ||||||
| # Copyright (c) 2013-2015, Lawrence Livermore National Security, LLC. | # Copyright (c) 2013-2015, Lawrence Livermore National Security, LLC. | ||||||
| # Produced at the Lawrence Livermore National Laboratory. | # Produced at the Lawrence Livermore National Laboratory. | ||||||
| @@ -401,13 +402,14 @@ def set_pp_defaults(validator, properties, instance, schema): | |||||||
|             yield err |             yield err | ||||||
|  |  | ||||||
|     return validators.extend(validator_class, { |     return validators.extend(validator_class, { | ||||||
|         "properties" : set_defaults, |         "properties": set_defaults, | ||||||
|         "patternProperties" : set_pp_defaults |         "patternProperties": set_pp_defaults | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|  |  | ||||||
| DefaultSettingValidator = extend_with_default(Draft4Validator) | DefaultSettingValidator = extend_with_default(Draft4Validator) | ||||||
|  |  | ||||||
|  |  | ||||||
| def validate_section(data, schema): | def validate_section(data, schema): | ||||||
|     """Validate data read in from a Spack YAML file. |     """Validate data read in from a Spack YAML file. | ||||||
|  |  | ||||||
| @@ -442,16 +444,14 @@ def get_section_filename(self, section): | |||||||
|         validate_section_name(section) |         validate_section_name(section) | ||||||
|         return os.path.join(self.path, "%s.yaml" % section) |         return os.path.join(self.path, "%s.yaml" % section) | ||||||
|  |  | ||||||
|  |  | ||||||
|     def get_section(self, section): |     def get_section(self, section): | ||||||
|         if not section in self.sections: |         if section not in self.sections: | ||||||
|             path   = self.get_section_filename(section) |             path   = self.get_section_filename(section) | ||||||
|             schema = section_schemas[section] |             schema = section_schemas[section] | ||||||
|             data   = _read_config_file(path, schema) |             data   = _read_config_file(path, schema) | ||||||
|             self.sections[section] = data |             self.sections[section] = data | ||||||
|         return self.sections[section] |         return self.sections[section] | ||||||
|  |  | ||||||
|  |  | ||||||
|     def write_section(self, section): |     def write_section(self, section): | ||||||
|         filename = self.get_section_filename(section) |         filename = self.get_section_filename(section) | ||||||
|         data = self.get_section(section) |         data = self.get_section(section) | ||||||
| @@ -465,7 +465,6 @@ def write_section(self, section): | |||||||
|         except (yaml.YAMLError, IOError) as e: |         except (yaml.YAMLError, IOError) as e: | ||||||
|             raise ConfigFileError("Error writing to config file: '%s'" % str(e)) |             raise ConfigFileError("Error writing to config file: '%s'" % str(e)) | ||||||
|  |  | ||||||
|  |  | ||||||
|     def clear(self): |     def clear(self): | ||||||
|         """Empty cached config information.""" |         """Empty cached config information.""" | ||||||
|         self.sections = {} |         self.sections = {} | ||||||
| @@ -571,7 +570,7 @@ def they_are(t): | |||||||
|     # Source dict is merged into dest. |     # Source dict is merged into dest. | ||||||
|     elif they_are(dict): |     elif they_are(dict): | ||||||
|         for sk, sv in source.iteritems(): |         for sk, sv in source.iteritems(): | ||||||
|             if not sk in dest: |             if sk not in dest: | ||||||
|                 dest[sk] = copy.copy(sv) |                 dest[sk] = copy.copy(sv) | ||||||
|             else: |             else: | ||||||
|                 dest[sk] = _merge_yaml(dest[sk], source[sk]) |                 dest[sk] = _merge_yaml(dest[sk], source[sk]) | ||||||
| @@ -640,7 +639,10 @@ def update_config(section, update_data, scope=None): | |||||||
|     # read in the config to ensure we've got current data |     # read in the config to ensure we've got current data | ||||||
|     configuration = get_config(section) |     configuration = get_config(section) | ||||||
|  |  | ||||||
|     configuration.update(update_data) |     if isinstance(update_data, list): | ||||||
|  |         configuration = update_data | ||||||
|  |     else: | ||||||
|  |         configuration.update(update_data) | ||||||
|  |  | ||||||
|     # read only the requested section's data. |     # read only the requested section's data. | ||||||
|     scope.sections[section] = {section: configuration} |     scope.sections[section] = {section: configuration} | ||||||
| @@ -682,16 +684,20 @@ def spec_externals(spec): | |||||||
| def is_spec_buildable(spec): | def is_spec_buildable(spec): | ||||||
|     """Return true if the spec pkgspec is configured as buildable""" |     """Return true if the spec pkgspec is configured as buildable""" | ||||||
|     allpkgs = get_config('packages') |     allpkgs = get_config('packages') | ||||||
|     name = spec.name |     if spec.name not in allpkgs: | ||||||
|     if not spec.name in allpkgs: |  | ||||||
|         return True |         return True | ||||||
|     if not 'buildable' in allpkgs[spec.name]: |     if 'buildable' not in allpkgs[spec.name]: | ||||||
|         return True |         return True | ||||||
|     return allpkgs[spec.name]['buildable'] |     return allpkgs[spec.name]['buildable'] | ||||||
|  |  | ||||||
|  |  | ||||||
| class ConfigError(SpackError): pass | class ConfigError(SpackError): | ||||||
| class ConfigFileError(ConfigError): pass |     pass | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ConfigFileError(ConfigError): | ||||||
|  |     pass | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_path(path, data): | def get_path(path, data): | ||||||
|     if path: |     if path: | ||||||
| @@ -699,6 +705,7 @@ def get_path(path, data): | |||||||
|     else: |     else: | ||||||
|         return data |         return data | ||||||
|  |  | ||||||
|  |  | ||||||
| class ConfigFormatError(ConfigError): | class ConfigFormatError(ConfigError): | ||||||
|     """Raised when a configuration format does not match its schema.""" |     """Raised when a configuration format does not match its schema.""" | ||||||
|     def __init__(self, validation_error, data): |     def __init__(self, validation_error, data): | ||||||
| @@ -733,5 +740,6 @@ def __init__(self, validation_error, data): | |||||||
|         message = '%s: %s' % (location, validation_error.message) |         message = '%s: %s' % (location, validation_error.message) | ||||||
|         super(ConfigError, self).__init__(message) |         super(ConfigError, self).__init__(message) | ||||||
|  |  | ||||||
|  |  | ||||||
| class ConfigSanityError(ConfigFormatError): | class ConfigSanityError(ConfigFormatError): | ||||||
|     """Same as ConfigFormatError, raised when config is written by Spack.""" |     """Same as ConfigFormatError, raised when config is written by Spack.""" | ||||||
|   | |||||||
| @@ -72,6 +72,10 @@ | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | # Some Sample repo data | ||||||
|  | repos_low = [ "/some/path" ] | ||||||
|  | repos_high = [ "/some/other/path" ] | ||||||
|  |  | ||||||
| class ConfigTest(MockPackagesTest): | class ConfigTest(MockPackagesTest): | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
| @@ -95,6 +99,12 @@ def check_config(self, comps, arch, *compiler_names): | |||||||
|                 actual = config[arch][key][c] |                 actual = config[arch][key][c] | ||||||
|                 self.assertEqual(expected, actual) |                 self.assertEqual(expected, actual) | ||||||
|  |  | ||||||
|  |     def test_write_list_in_memory(self): | ||||||
|  |         spack.config.update_config('repos', repos_low, 'test_low_priority') | ||||||
|  |         spack.config.update_config('repos', repos_high, 'test_high_priority') | ||||||
|  |         config = spack.config.get_config('repos') | ||||||
|  |         self.assertEqual(config, repos_high+repos_low) | ||||||
|  |  | ||||||
|     def test_write_key_in_memory(self): |     def test_write_key_in_memory(self): | ||||||
|         # Write b_comps "on top of" a_comps. |         # Write b_comps "on top of" a_comps. | ||||||
|         spack.config.update_config('compilers', a_comps, 'test_low_priority') |         spack.config.update_config('compilers', a_comps, 'test_low_priority') | ||||||
|   | |||||||
							
								
								
									
										55
									
								
								share/spack/qa/run-flake8
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										55
									
								
								share/spack/qa/run-flake8
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # | ||||||
|  | # This script runs source code style checks on Spack. | ||||||
|  | # | ||||||
|  | # It should be executed from the top-level directory of the repo, | ||||||
|  | # e.g.: | ||||||
|  | # | ||||||
|  | #    share/spack/qa/run-flake8 | ||||||
|  | # | ||||||
|  | # To run it, you'll need to have the Python flake8 installed locally. | ||||||
|  | # | ||||||
|  | PYTHONPATH=./lib/spack:$PYTHONPATH | ||||||
|  |  | ||||||
|  | flake8="$(which flake8)" | ||||||
|  | if [[ ! $flake8 ]]; then | ||||||
|  |     echo "ERROR: flake8 is required to run this script." | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Check if changed files are flake8 conformant [framework] | ||||||
|  | changed=$(git diff --name-only develop... | grep '.py$') | ||||||
|  |  | ||||||
|  | # Exempt url lines in changed packages from overlong line errors. | ||||||
|  | for file in $changed; do | ||||||
|  |     if [[ $file = *package.py ]]; then | ||||||
|  |         perl -i~ -pe 's/^(\s*url\s*=.*)$/\1  # NOQA: ignore=E501/' $file; | ||||||
|  |     fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | return_code=0 | ||||||
|  | if [[ $changed ]]; then | ||||||
|  |     echo ======================================================= | ||||||
|  |     echo  flake8: running flake8 code checks on spack. | ||||||
|  |     echo | ||||||
|  |     echo  Modified files: | ||||||
|  |     echo  $changed | perl -pe 's/^/  /;s/ +/\n  /g' | ||||||
|  |     echo ======================================================= | ||||||
|  |     if flake8 --format pylint $changed; then | ||||||
|  |         echo "Flake8 checks were clean." | ||||||
|  |     else | ||||||
|  |         echo "Flake8 found errors." | ||||||
|  |         return_code=1 | ||||||
|  |     fi | ||||||
|  | else | ||||||
|  |     echo No core framework files modified. | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Restore original package files after modifying them. | ||||||
|  | for file in $changed; do | ||||||
|  |     if [[ $file = *package.py ]]; then | ||||||
|  |         mv "${file}~" "${file}" | ||||||
|  |     fi | ||||||
|  | done | ||||||
|  |  | ||||||
|  | exit $return_code | ||||||
| @@ -1,10 +1,11 @@ | |||||||
| from spack import * | from spack import * | ||||||
|  |  | ||||||
|  |  | ||||||
| class Imagemagick(Package): | class Imagemagick(Package): | ||||||
|     """ImageMagick is a image processing library""" |     """ImageMagick is a image processing library""" | ||||||
|     homepage = "http://www.imagemagic.org" |     homepage = "http://www.imagemagic.org" | ||||||
|  |  | ||||||
|     #------------------------------------------------------------------------- |     # ------------------------------------------------------------------------- | ||||||
|     # ImageMagick does not keep around anything but *-10 versions, so |     # ImageMagick does not keep around anything but *-10 versions, so | ||||||
|     # this URL may change.  If you want the bleeding edge, you can |     # this URL may change.  If you want the bleeding edge, you can | ||||||
|     # uncomment it and see if it works but you may need to try to |     # uncomment it and see if it works but you may need to try to | ||||||
| @@ -17,14 +18,16 @@ class Imagemagick(Package): | |||||||
|     # version('6.9.0-6', 'c1bce7396c22995b8bdb56b7797b4a1b', |     # version('6.9.0-6', 'c1bce7396c22995b8bdb56b7797b4a1b', | ||||||
|     # url="http://www.imagemagick.org/download/ImageMagick-6.9.0-6.tar.bz2") |     # url="http://www.imagemagick.org/download/ImageMagick-6.9.0-6.tar.bz2") | ||||||
|  |  | ||||||
|     #------------------------------------------------------------------------- |     # ------------------------------------------------------------------------- | ||||||
|     # *-10 versions are archived, so these versions should fetch reliably. |     # *-10 versions are archived, so these versions should fetch reliably. | ||||||
|     # ------------------------------------------------------------------------- |     # ------------------------------------------------------------------------- | ||||||
|     version('6.8.9-10', 'aa050bf9785e571c956c111377bbf57c', |     version( | ||||||
|             url="http://sourceforge.net/projects/imagemagick/files/old-sources/6.x/6.8/ImageMagick-6.8.9-10.tar.gz/download") |         '6.8.9-10', | ||||||
|  |         'aa050bf9785e571c956c111377bbf57c', | ||||||
|  |         url="http://sourceforge.net/projects/imagemagick/files/old-sources/6.x/6.8/ImageMagick-6.8.9-10.tar.gz/download") | ||||||
|  |  | ||||||
|     depends_on('libtool') |  | ||||||
|     depends_on('jpeg') |     depends_on('jpeg') | ||||||
|  |     depends_on('libtool') | ||||||
|     depends_on('libpng') |     depends_on('libpng') | ||||||
|     depends_on('freetype') |     depends_on('freetype') | ||||||
|     depends_on('fontconfig') |     depends_on('fontconfig') | ||||||
| @@ -32,6 +35,5 @@ class Imagemagick(Package): | |||||||
|  |  | ||||||
|     def install(self, spec, prefix): |     def install(self, spec, prefix): | ||||||
|         configure("--prefix=%s" % prefix) |         configure("--prefix=%s" % prefix) | ||||||
|  |  | ||||||
|         make() |         make() | ||||||
|         make("install") |         make("install") | ||||||
|   | |||||||
| @@ -1,19 +1,18 @@ | |||||||
| from spack import * | from spack import * | ||||||
|  |  | ||||||
|  |  | ||||||
| class Mitos(Package): | class Mitos(Package): | ||||||
|     """Mitos is a library and a tool for collecting sampled memory |     """Mitos is a library and a tool for collecting sampled memory | ||||||
|     performance data to view with MemAxes""" |     performance data to view with MemAxes""" | ||||||
|  |  | ||||||
|     homepage = "https://github.com/llnl/Mitos" |     homepage = "https://github.com/llnl/Mitos" | ||||||
|     url      = "https://github.com/llnl/Mitos" |     url = "https://github.com/llnl/Mitos" | ||||||
|  |  | ||||||
|     version('0.9.2', |     version('0.9.2', | ||||||
|             git='https://github.com/llnl/Mitos.git', |             git='https://github.com/llnl/Mitos.git', | ||||||
|             commit='8cb143a2e8c00353ff531a781a9ca0992b0aaa3d') |             commit='8cb143a2e8c00353ff531a781a9ca0992b0aaa3d') | ||||||
|  |  | ||||||
|     version('0.9.1', |     version('0.9.1', git='https://github.com/llnl/Mitos.git', tag='v0.9.1') | ||||||
|             git='https://github.com/llnl/Mitos.git', |  | ||||||
|             tag='v0.9.1') |  | ||||||
|  |  | ||||||
|     depends_on('dyninst@8.2.1:') |     depends_on('dyninst@8.2.1:') | ||||||
|     depends_on('hwloc') |     depends_on('hwloc') | ||||||
|   | |||||||
| @@ -1,8 +1,11 @@ | |||||||
| from spack import * | from spack import * | ||||||
| import os |  | ||||||
|  |  | ||||||
| class Astyle(Package): | class Astyle(Package): | ||||||
|     """A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, Objective-C, C#, and Java Source Code.""" |     """ | ||||||
|  |     A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, | ||||||
|  |     Objective-C, C#, and Java Source Code. | ||||||
|  |     """ | ||||||
|     homepage = "http://astyle.sourceforge.net/" |     homepage = "http://astyle.sourceforge.net/" | ||||||
|     url      = "http://downloads.sourceforge.net/project/astyle/astyle/astyle%202.04/astyle_2.04_linux.tar.gz" |     url      = "http://downloads.sourceforge.net/project/astyle/astyle/astyle%202.04/astyle_2.04_linux.tar.gz" | ||||||
|  |  | ||||||
| @@ -11,8 +14,15 @@ class Astyle(Package): | |||||||
|     def install(self, spec, prefix): |     def install(self, spec, prefix): | ||||||
|  |  | ||||||
|         with working_dir('src'): |         with working_dir('src'): | ||||||
|  |             # we need to edit the makefile in place to set compiler: | ||||||
|  |             make_file = join_path(self.stage.source_path, | ||||||
|  |                                   'build', 'gcc', 'Makefile') | ||||||
|  |             filter_file(r'^CXX\s*=.*', 'CXX=%s'.format(spack_cxx), make_file) | ||||||
|  |  | ||||||
|             make('-f', |             make('-f', | ||||||
|                 join_path(self.stage.source_path,'build','clang','Makefile'), |                  make_file, | ||||||
|                 parallel=False) |                  parallel=False) | ||||||
|  |  | ||||||
|             mkdirp(self.prefix.bin) |             mkdirp(self.prefix.bin) | ||||||
|             install(join_path(self.stage.source_path, 'src','bin','astyle'), self.prefix.bin) |             install(join_path(self.stage.source_path, 'src', 'bin', 'astyle'), | ||||||
|  |                     self.prefix.bin) | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								var/spack/repos/builtin/packages/py-astroid/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								var/spack/repos/builtin/packages/py-astroid/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | from spack import depends_on, extends, version | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyAstroid(Package): | ||||||
|  |     homepage = "https://www.astroid.org/" | ||||||
|  |     url      = "https://github.com/PyCQA/astroid/archive/astroid-1.4.5.tar.gz" | ||||||
|  |  | ||||||
|  |     version('1.4.5', '7adfc55809908297ef430efe4ea20ac3') | ||||||
|  |     version('1.4.4', '8ae6f63f6a2b260bb7f647dafccbc796') | ||||||
|  |     version('1.4.3', '4647159de7d4d0c4b1de23ecbfb8e246') | ||||||
|  |     version('1.4.2', '677f7965840f375af51b0e86403bee6a') | ||||||
|  |     version('1.4.1', 'ed70bfed5e4b25be4292e7fe72da2c02') | ||||||
|  |  | ||||||
|  |     extends('python') | ||||||
|  |     depends_on('py-logilab-common') | ||||||
|  |     depends_on('py-setuptools') | ||||||
|  |     depends_on('py-six') | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
|  |  | ||||||
							
								
								
									
										18
									
								
								var/spack/repos/builtin/packages/py-genshi/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								var/spack/repos/builtin/packages/py-genshi/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | from spack import version, extends, depends_on | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyGenshi(Package): | ||||||
|  |     """Python toolkit for generation of output for the web""" | ||||||
|  |     homepage = "https://genshi.edgewall.org/" | ||||||
|  |     url      = "http://ftp.edgewall.com/pub/genshi/Genshi-0.7.tar.gz" | ||||||
|  |  | ||||||
|  |     version('0.7', '54e64dd69da3ec961f86e686e0848a82') | ||||||
|  |     version('0.6.1', '372c368c8931110b0a521fa6091742d7') | ||||||
|  |     version('0.6', '604e8b23b4697655d36a69c2d8ef7187') | ||||||
|  |  | ||||||
|  |     extends("python") | ||||||
|  |     depends_on("py-setuptools") | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
							
								
								
									
										27
									
								
								var/spack/repos/builtin/packages/py-jinja2/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								var/spack/repos/builtin/packages/py-jinja2/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | from spack import depends_on, extends, version | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyJinja2(Package): | ||||||
|  |     """ | ||||||
|  |     Jinja2 is a template engine written in pure Python. It provides | ||||||
|  |     a Django inspired non-XML syntax but supports inline expressions | ||||||
|  |     and an optional sandboxed environment. | ||||||
|  |     """ | ||||||
|  |  | ||||||
|  |     homepage = "http://jinja.pocoo.org/" | ||||||
|  |     url      = "https://github.com/pallets/jinja/archive/2.8.tar.gz" | ||||||
|  |  | ||||||
|  |     version('2.8', '4114200650d7630594e3bc70af23f59e') | ||||||
|  |     version('2.7.3', '55b87bdc8e585b8b5b86734eefce2621') | ||||||
|  |     version('2.7.2', '8e8f226809ae6363009b9296e30adf30') | ||||||
|  |     version('2.7.1', '69b6675553c81b1087f95cae7f2179bb') | ||||||
|  |     version('2.7', 'ec70433f325051dcedacbb2465028a35') | ||||||
|  |  | ||||||
|  |     extends("python") | ||||||
|  |     depends_on("py-setuptools") | ||||||
|  |     depends_on("py-markupsafe") | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
|  |  | ||||||
| @@ -0,0 +1,18 @@ | |||||||
|  | from spack import depends_on, extends, version | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyLogilabCommon(Package): | ||||||
|  |     """Common modules used by Logilab projects""" | ||||||
|  |     homepage = "https://www.logilab.org/project/logilab-common" | ||||||
|  |     url      = "https://pypi.python.org/packages/a7/31/1650d23e44794d46935d82b86e73454cc83b814cbe1365260ccce8a2f4c6/logilab-common-1.2.0.tar.gz" | ||||||
|  |  | ||||||
|  |     version('1.2.0', 'f7b51351b7bfe052746fa04c03253c0b') | ||||||
|  |  | ||||||
|  |     extends("python") | ||||||
|  |     depends_on("py-setuptools") | ||||||
|  |     depends_on("py-six") | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
|  |  | ||||||
							
								
								
									
										27
									
								
								var/spack/repos/builtin/packages/py-markupsafe/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								var/spack/repos/builtin/packages/py-markupsafe/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | from spack import depends_on, extends, version | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyMarkupsafe(Package): | ||||||
|  |     """ | ||||||
|  |     MarkupSafe is a library for Python that implements a unicode | ||||||
|  |     string that is aware of HTML escaping rules and can be used | ||||||
|  |     to implement automatic string escaping. It is used by Jinja 2, | ||||||
|  |     the Mako templating engine, the Pylons web framework and many more. | ||||||
|  |     """ | ||||||
|  |  | ||||||
|  |     homepage = "http://www.pocoo.org/projects/markupsafe/" | ||||||
|  |     url      = "https://github.com/pallets/markupsafe/archive/0.23.tar.gz" | ||||||
|  |  | ||||||
|  |     version('0.23', '1a0dadc95169832367c9dcf142155cde') | ||||||
|  |     version('0.22', '7a2ac7427b58def567628d06dc328396') | ||||||
|  |     version('0.21', 'aebcd93ee05269773c8b80bb6c86fc2f') | ||||||
|  |     version('0.20', '0c1fef97c8fd6a986d708f08d7f84a02') | ||||||
|  |     version('0.19', '64b05361adb92c11839fc470e308c593') | ||||||
|  |  | ||||||
|  |     extends("python") | ||||||
|  |     depends_on("py-setuptools") | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
|  |  | ||||||
							
								
								
									
										22
									
								
								var/spack/repos/builtin/packages/py-mistune/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								var/spack/repos/builtin/packages/py-mistune/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | from spack import depends_on, extends, version | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyMistune(Package): | ||||||
|  |     """ | ||||||
|  |     Python markdown parser | ||||||
|  |     """ | ||||||
|  |     homepage = "http://mistune.readthedocs.org/en/latest/" | ||||||
|  |     url      = "https://github.com/lepture/mistune/archive/v0.7.1.tar.gz" | ||||||
|  |  | ||||||
|  |     version('0.7.1', '0d9c29700c670790c5b2471070d32ec2') | ||||||
|  |     version('0.7', '77750ae8b8d0d584894224a7e0c0523a') | ||||||
|  |     version('0.6', 'd4f3d4f28a69e715f82b591d5dacf9a6') | ||||||
|  |     version('0.5.1', '1c6cfce28a4aa90cf125217cd6c6fe6c') | ||||||
|  |     version('0.5', '997736554f1f95eea78c66ae339b5722') | ||||||
|  |  | ||||||
|  |     extends('python') | ||||||
|  |     depends_on('py-setuptools') | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
							
								
								
									
										20
									
								
								var/spack/repos/builtin/packages/py-prettytable/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								var/spack/repos/builtin/packages/py-prettytable/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | from spack import depends_on, extends, version | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyPrettytable(Package): | ||||||
|  |     """ | ||||||
|  |     PrettyTable is a simple Python library designed to make | ||||||
|  |     it quick and easy to represent tabular data in visually | ||||||
|  |     appealing ASCII tables | ||||||
|  |     """ | ||||||
|  |     homepage = "https://code.google.com/archive/p/prettytable/" | ||||||
|  |     url      = "https://pypi.python.org/packages/e0/a1/36203205f77ccf98f3c6cf17cf068c972e6458d7e58509ca66da949ca347/prettytable-0.7.2.tar.gz" | ||||||
|  |  | ||||||
|  |     version('0.7.2', 'a6b80afeef286ce66733d54a0296b13b') | ||||||
|  |  | ||||||
|  |     extends("python") | ||||||
|  |     depends_on("py-setuptools") | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
							
								
								
									
										22
									
								
								var/spack/repos/builtin/packages/py-py2neo/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								var/spack/repos/builtin/packages/py-py2neo/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | from spack import depends_on, extends, version | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyPy2neo(Package): | ||||||
|  |     """FIXME: put a proper description of your package here.""" | ||||||
|  |     # FIXME: add a proper url for your package's homepage here. | ||||||
|  |     homepage = "http://www.example.com" | ||||||
|  |     url      = "https://github.com/nigelsmall/py2neo/archive/py2neo-2.0.8.tar.gz" | ||||||
|  |  | ||||||
|  |     version('2.0.8', 'e3ec5172a9e006515ef4155688a05a55') | ||||||
|  |     version('2.0.7', '4cfbc5b7dfd7757f3d2e324805faa639') | ||||||
|  |     version('2.0.6', '53e4cdb1a95fbae501c66e541d5f4929') | ||||||
|  |     version('2.0.5', '143b1f9c0aa22faf170c1b9f84c7343b') | ||||||
|  |     version('2.0.4', 'b3f7efd3344dc3f66db4eda11e5899f7') | ||||||
|  |  | ||||||
|  |     depends_on("py-setuptools") | ||||||
|  |     extends("python") | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
|  |  | ||||||
							
								
								
									
										16
									
								
								var/spack/repos/builtin/packages/py-storm/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								var/spack/repos/builtin/packages/py-storm/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | from spack import depends_on, extends, version | ||||||
|  | from spack import Package | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PyStorm(Package): | ||||||
|  |     """Storm is an object-relational mapper (ORM) for Python""" | ||||||
|  |     homepage = "https://storm.canonical.com/" | ||||||
|  |     url      = "https://launchpad.net/storm/trunk/0.20/+download/storm-0.20.tar.gz" | ||||||
|  |  | ||||||
|  |     version('0.20', '8628503141f0f06c0749d607ac09b9c7') | ||||||
|  |  | ||||||
|  |     extends('python') | ||||||
|  |     depends_on('py-setuptools') | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         python('setup.py', 'install', '--prefix=%s' % prefix) | ||||||
		Reference in New Issue
	
	Block a user
	 alalazo
					alalazo