Commit graph

959 commits

Author SHA1 Message Date
alalazo
ac762e95a6 modules : removed dead code 2016-03-16 16:23:02 +01:00
alalazo
597727f8be tclmodules : added hooks to process EnvironmentModifications objects 2016-03-16 15:19:13 +01:00
alalazo
b45ec3f04e environment : simplified modification of the environment 2016-03-16 10:55:28 +01:00
alalazo
b2c98feea4 Merge branch 'develop' of https://github.com/LLNL/spack into features/env_objects_flying_around 2016-03-16 09:02:35 +01:00
Todd Gamblin
7eca383b10 Add sanity check paths to packages; fix #505 2016-03-15 17:16:04 -07:00
Matthew LeGendre
108ea1522a Merge pull request #549 from LLNL/bugfix/gh538-less-greedy-concretize
Bugfix/gh538 less greedy concretize
2016-03-15 16:18:54 -07:00
Todd Gamblin
15bbd088e6 Fix #551: version bug in spack create
- `spack create` now sets a proper version in generated file, based on
  the filename, even if it can't find any tarballs for the package.
2016-03-15 14:38:06 -07:00
alalazo
c8cc6f4fc1 test : fix for python 2.6 2016-03-15 16:59:29 +01:00
alalazo
ccced9f290 package : optimized imports 2016-03-15 15:12:39 +01:00
alalazo
cc3d9f4eb7 environment : added test, modified docs 2016-03-15 15:09:35 +01:00
alalazo
572cb93bf8 package : renamed setup_dependent_environment to module_modifications 2016-03-15 14:05:30 +01:00
alalazo
c85888eb57 package : added environment_modifications 2016-03-15 13:36:41 +01:00
alalazo
bcea1df01c environment : refactoreded set_build_environment_variables 2016-03-15 10:49:33 +01:00
alalazo
f20247ae55 environment : refactoreded set_compiler_environment_variables 2016-03-15 10:08:54 +01:00
alalazo
f9923452b3 environment : added machinery to collect modifications to the environment and apply them later 2016-03-14 14:35:48 +01:00
Todd Gamblin
f2761270f3 Make concretization less greedy: add backtracking for virtuals.
- `_expand_virtual_packages` now gets a candidate list and will try
  all the candidates.

  - Good news: If the first virtual in the list conflicts with something else in
               the spec, we'll keep trying until we find a good one.

  - Bad news: Only looks as far as the next normalize(); can't see
              conflicts further ahead than that if they're inevitable
              some other virtual expansion.

- Refactor `concretize.py` to keep all the nasty spec graph stitching in
  `spec.py`. This is more similar to before externals support.

  - `concretize.py` now just returns a list of candidates sorted by
    ABI compatibility to `_expand_virtual_packages`, and `spec.py`
    handles testing the candidates.

- Refactor the way external paths are handled in `config.py` and `concretize.py`:

  - previously, `spec_externals` returned spec/path pairs.  Now it
    returns specs with `external` set. Makes code in `concretize.py`
    more natural.
2016-03-14 05:04:01 -07:00
Todd Gamblin
f45b8b1083 Add some tests for packages with multiple virtual dependencies.
- Added mock `hypre` package, depends on `lapack` and `blas`.

- test cases where some packages provide both `lapack` and `blas`, but
  others do not.
2016-03-14 05:02:50 -07:00
Todd Gamblin
05c761dee9 Add package_class method to spec.
- Shouldn't call .package from within things like normalize() and
  concretize() beacuse spec may be inconsistent.

- Add `.package_class` property so that we can get at package metadata
  without constructing a Package with a Spec.

- should be faster than `.package` was, anyway. Use where possible.
2016-03-14 04:59:29 -07:00
Todd Gamblin
003fd4d834 Optimize __eq__ and __ne__ in key_ordering
- use `is` when possible before calling `_cmp_key()`
2016-03-14 04:55:30 -07:00
Elizabeth F
5c865b9b70 Fixed typo in typo fix. 2016-03-13 19:44:04 -04:00
Elizabeth F
6f26c45143 Fixed typo bug. Made error comment more explicit 2016-03-13 19:41:09 -04:00
Elizabeth F
3383486adc Fixed typo bug. Made error comment more explicit 2016-03-13 19:39:45 -04:00
Elizabeth F
0426796d9f Fixed typo 2016-03-13 18:14:38 -04:00
Elizabeth F
030e8dd1ac Removed Python 2.7-style string formatting 2016-03-13 18:04:23 -04:00
Elizabeth F
4c9a52044a Fixed CMakePackage import 2016-03-13 15:18:24 -04:00
citibeth
857f791286 Add missing import. 2016-03-13 00:40:50 -05:00
citibeth
9885f1a19e Fix for Python 2.6 2016-03-13 00:34:46 -05:00
Elizabeth F
c1a8574d8f Fixed for Python 2.6 2016-03-13 00:29:40 -05:00
citibeth
4236157823 (1) Added "spack spconfig" command.
(2) Neatened up the spconfig.py auto-generated file.
2016-03-13 00:13:00 -05:00
Elizabeth F
90bb855ffa A new subclass StagedPackage(Package) is introduced. This PR should
not change the behavior for existing packages that subclass from
spack.Package.

If a package subclasses spack.StagedPackage instead of spack.Package,
the install() phase (run inside a forked process) is now separated
into sub-stages:

    a) spconfig: Generate a script spconfig.py that will configure the
       package (eg by running CMake or ./configure) This is for use if
       the user wishes to build externally from Spack.  Therefore, the
       Spack compiler wrappers are NOT used here.  Currently, that
       means that RPATH support is up to the user.

    b) configure: Configure the project (eg: runs configure, CMake,
       etc).  This will configure it for use within Spack, using the
       Spack wrapper.

    c) build: eg: "make"

    d) install: eg: "install"

If one chooses to use StagedPackage instead of Package, then one must
implement each of the install sub-stages as a separate method.
StagedPackage.install() then calls each of the sub-stages as
appropriate.

StagedPackage can be configured to only run certain sub-stages.  This
is done by setting the optional kwarg install_phases when calling
do_install().  Setting install_phases() ONLY has an effect on
StagedPackage, not on any existing packages.  By default,
install_phases is set to make StagedPackage run the same stages that
are normally run for any package: configure, build, install (and NOT
spconfig).

The ability for Spack to run stages selectively for StagedPackage
instances will enable new functionality.  For example, explicit
CMake/Autotools helpers that allow Spack to help configure a user's
project without fetching, building or installing it.

-------------

One implementation of StagedPackage is provided, CMakePackage.  This
has the following advantage for CMake-based projects over using the
standard Package class:

  a) By separating out the phases, it enables future new functionality
     for packages that use it.

  b) It provides an implementation of intall_spconfig(), which will
     help users configure their CMake-based projects.

CMakePackage expects users to implement configure_args() and
configure_env().  These methods provide the package-specific arguments
and environment needed to properly configure the package.  They are
placed in separated functions because they are used in both the
spconfig and configure stages.

TODO:

1. Generate spconfig.py scripts that are more readable.  This allows
   the users to understand how their project is configured.

2. Provide a practical way for the user to ACCESS the spconfig stage
   without building the project through Spack.

3. The CMAKE_TRANSITIVE_INCLUDE_PATH stuff needs to be reworked; it
   should be considered provisional for now.

4. User of Autotools might wish to make a similar ConfigurePackage
   subclass of StagedPackage.

---------------

One package using CMakePackage is introduced.  See ibmisc/package.py.
2016-03-11 23:30:38 -05:00
becker33
3060f27909 Merge pull request #536 from adamjstewart/fixes/doc_typos
Documentation typo fixes
2016-03-11 10:53:57 -08:00
Adam J. Stewart
bae03404f4 Documentation typo fixes 2016-03-11 12:51:45 -06:00
Matthew LeGendre
1c7f754e5b Invert and rename the nobuild option in package.yaml configs to buildable. 2016-03-11 10:04:08 -08:00
alalazo
1d70b590fc build_environment : fixed minor spelling errors and a few style issues 2016-03-11 13:20:57 +01:00
Todd Gamblin
f40c78a064 Merge pull request #532 from mplegendre/bugfix/ordering_satisfies
Fix issue with preferred satisfies not being respected
2016-03-10 21:50:40 -08:00
Matthew LeGendre
ac88cab68f Fix issue with preferred satisfies not being respected 2016-03-10 17:00:27 -08:00
Todd Gamblin
30df1c838d Merge pull request #531 from mplegendre/bugfix/github-530
Fix type error that was causing mis-ordering of compiler versions
2016-03-10 16:31:52 -08:00
Matthew LeGendre
4693af0736 Fix type error that was causing mis-ordering of compiler versions 2016-03-10 16:23:35 -08:00
Todd Gamblin
2bbf42b49d Indentation change. 2016-03-10 16:18:11 -08:00
Todd Gamblin
670024cf77 Merge branch 'mplegendre-features/external-packages' into develop 2016-03-10 10:07:08 -08:00
alalazo
30adc4c9b8 cc : handle spaces in folders? 2016-03-10 14:59:31 +01:00
alalazo
78ef0618bc cc : converted indents to spaces 2016-03-10 14:35:09 +01:00
Massimiliano Culpo
7ae6c62ddb Fixed shell quoting error 2016-03-10 14:08:43 +01:00
Massimiliano Culpo
835b47c196 Merge branch 'develop' of https://github.com/LLNL/spack into fixes/intel_openmpi 2016-03-10 13:18:03 +01:00
Todd Gamblin
c4fddcc6e9 Add 'provders' back into packages.yaml schema 2016-03-10 03:15:49 -08:00
Todd Gamblin
b637f75164 Merge branch 'mplegendre-features/external-packages' into develop 2016-03-10 02:04:44 -08:00
Todd Gamblin
82b7067fdf Refactored external packages slightly.
- Move `Spec.__cmp__` out of spec, into concretize as `cmp_specs`.
  - `Spec.__cmp__` was never called (except explicitly) due to rich
    comparison operators from `key_ordering`

- Refactor `_find_other_spec` to free function `find_spec`. Add a test
  for it to make sure it works.
2016-03-10 01:29:55 -08:00
Todd Gamblin
1fe196f95c whitespace and formatting 2016-03-10 01:29:55 -08:00
Todd Gamblin
048c406f49 Remove vestigial variants in directory name. 2016-03-10 01:29:54 -08:00
Todd Gamblin
b0572a5462 Minor tweaks to abi code. 2016-03-10 01:29:54 -08:00
Todd Gamblin
0244d794cd remove unnecessary import 2016-03-10 01:29:54 -08:00
Todd Gamblin
b0377da771 update mirror config documentation.
- mirrors.yaml uses Spack's OrderedDict rather than lists.
2016-03-10 01:29:53 -08:00
Todd Gamblin
52cdcdde76 Fix #525: sbang handles symlinks & directories properly. 2016-03-09 17:15:10 -08:00
Todd Gamblin
f56939c16c Add unit test for sbang patching. 2016-03-09 17:13:41 -08:00
Matthew LeGendre
dd0ae255ad Merge branch 'features/external-packages' of github.com:mplegendre/spack into features/external-packages
Conflicts:
	lib/spack/docs/site_configuration.rst
2016-03-09 16:18:37 -08:00
Matthew LeGendre
1f06dd40f7 Update documentation for new packages.yaml config format. 2016-03-09 16:11:53 -08:00
Matthew LeGendre
a384ad5b12 Fix problem with pure integer arguments in preferred versions list (e.g, 2 instead of 2.7.3) 2016-03-09 16:11:33 -08:00
Todd Gamblin
ca10229565 Fixes #524
- Had attempted to add more functionality by assigning different
  meanign None, True, and False values "keep_stage" (where False was
  "always delete").

- Turns out that's not really worth the complexity.  Having the third
  "always delete" sense is hardly ever useful but makes the code hard
  to understand.
2016-03-09 14:56:21 -08:00
Matthew LeGendre
87db69478d Merge branch 'develop' into features/external-packages
Conflicts:
	lib/spack/spack/package.py
2016-03-09 11:09:37 -08:00
Luigi Calori
bf4d51ea0b fix error exit when doing spack patch without parameters, same as spack stage 2016-03-09 09:27:53 -08:00
Todd Gamblin
9c61843737 Fix bugs in DIYStage: fetch & context handling.
- DIYStage needs to be a context handler
- DIYStage.fetch needs to take 2 args.
2016-03-08 13:58:41 -08:00
Todd Gamblin
df84677d16 Make diy generate verbose build output by default.
- added -q option to shut it up
2016-03-08 13:57:13 -08:00
Todd Gamblin
a1be45d0e7 Fix bug with setting module-scope vars in derived package classes. 2016-03-08 13:56:44 -08:00
Todd Gamblin
a4861a3072 Minor changes/bugfixes on md5/checksum PR 2016-03-08 10:39:46 -08:00
Todd Gamblin
747855b960 Merge branch 'fixes/md5' of git://github.com/epfl-scitas/spack into epfl-scitas-fixes/md5 2016-03-08 09:12:57 -08:00
Todd Gamblin
31cebb969a Merge pull request #504 from LLNL/bugfix/github-502
Bugfix/GitHub 502: Error: No spec file found at path
2016-03-08 03:43:52 -08:00
Todd Gamblin
214deeda54 Merge branch 'features/noexpand' into develop
Conflicts:
	lib/spack/llnl/util/filesystem.py
2016-03-08 03:29:57 -08:00
Todd Gamblin
5aadb6df19 Fixes #502. Create install prefix before build, clean up do_install.
- Fix bug introduced during merge of stage refactor.
  - install prefix was not created before build_environment.fork()
    - build_environment.fork() calls setup_dependent_environment
    - python's setup_dependent_environment can inadvertently create
      the install prefix before directory_layout expects it.

- Clean up Package.do_install:
  - simplify control flow: parent process now entirely responsible for
    creating/destroying the install prefix. cleanup is now in one place.
  - Hoisting cleanup out of the child improves nesting of try/catch in
    `real_work`.
  - `real_work` renamed to `build_process`
2016-03-08 02:50:26 -08:00
alalazo
77ec27c730 fixed bug : similar issues in checksum and md5 as were solved in ad103dcafa 2016-03-08 11:09:41 +01:00
Todd Gamblin
96e1b2d25c Merge pull request #486 from RemoteConnectionManager/paraview_fix
Paraview new version
2016-03-07 02:48:12 -08:00
Todd Gamblin
4d1703fc06 Merge branch 'features/repos-doc-fix' into develop 2016-03-07 02:40:59 -08:00
Todd Gamblin
12ddf241a5 Fix code block in docs. 2016-03-07 02:39:14 -08:00
Todd Gamblin
547933e7e4 Fix bug in -Xlinker argument handling
- also update test to match.
2016-03-07 01:48:26 -08:00
Todd Gamblin
f2bcc6cc35 Merge branch 'eschnett/rpath-comma' of git://github.com/eschnett/spack into eschnett-eschnett/rpath-comma 2016-03-06 23:50:14 -08:00
Erik Schnetter
265ef337a8 Don't quote -rpath literal 2016-03-06 23:27:30 -05:00
Todd Gamblin
108277fb5d Fix docs that have gone stale since repos were added. 2016-03-06 19:32:00 -08:00
Todd Gamblin
ada675dea2 Merge branch 'features/sbang' into develop
Conflicts:
	lib/spack/llnl/util/filesystem.py
2016-03-06 19:30:19 -08:00
Todd Gamblin
1ee90a6fe7 Make spack_cc, spack_cxx, spack_f77, spack_fc available in build env.
- Add for convenience for packages that need to refer to these.
- Added an example in the documentation.
2016-03-06 16:57:30 -08:00
Todd Gamblin
240ada5775 Add expand=False option for URL downloads.
- Allows skipping the expand step for downloads.
  - Fixed stage so that it knows expansion didn't fail when there is a
    no-expand URLFetchStrategy.

- Updated docs to reflect new option, and provided an example.
2016-03-06 16:51:09 -08:00
Todd Gamblin
e515042a36 Fix stage creation bug, simplify do_install code. 2016-03-06 01:41:48 -08:00
Todd Gamblin
ad103dcafa Small refactor: add keep parameter to stage, get rid of stage.destroy call.
- package.py uses context manager more effectively.

- Stage.__init__ has easier to understand method signature now.
  - keep can be used to override the default behavior either to keep
    the stage ALL the time or to delete the stage ALL the time.
2016-03-05 20:00:30 -08:00
Todd Gamblin
14d48eba46 Revert c5d9ee8924 for bug fixes.
- This reverts commit c5d9ee8924.

- merged too soon before
- reverting and fixing bugs now.

Conflicts:
	lib/spack/spack/mirror.py
	lib/spack/spack/package.py
2016-03-05 18:40:28 -08:00
Todd Gamblin
097df180e2 Merge pull request #493 from adamjstewart/features/pgi
Modifications to get PGI working
2016-03-05 14:19:15 -08:00
Todd Gamblin
bfce2c7508 Fix bug in hook: ensure bin directory exists before listing. 2016-03-05 04:42:52 -08:00
Todd Gamblin
fc6aa7374a Fix #104, #54: issues with overlong shebang in deep directories.
This does several things:

- Add `sbang`: a script to run scripts with long shebang lines.
  - Documentation for `sbang` is in `bin/sbang`.

- Add an `sbang` hook that filters the `bin` directory after install
  and modifies any scripts wtih shebangs that are too long to use
  `sbang` instead.

- `sbang` is at the top level, so it should be runnable (not much we
  can do if spack itself is too deep for shebang)
  - `sbang`, when used as the interpreter, runs the *second* shebang
    line it finds in a script.
  - shoud fix issues with too long shebang paths.
2016-03-05 04:18:48 -08:00
becker33
6449e8b1b9 Merge pull request #492 from adamjstewart/typos/compiler
Typo fix in compiler docstring
2016-03-04 14:25:56 -08:00
Adam J. Stewart
5db9673904 Typo fix in compiler docstring 2016-03-04 10:51:41 -06:00
citibeth
202fbc6812 Rmoved periods. Should help use of cut'n'paste from console windows. 2016-03-03 23:40:29 -05:00
Adam J. Stewart
311d71ec86 Modifications to get PGI working 2016-03-03 16:50:51 -06:00
Todd Gamblin
c5d9ee8924 Revert "refactoring proposal : turn Stage into a context manager" 2016-03-03 14:41:20 -08:00
Luigi Calori
a531a4f5e3 help spack versions paraview to get versions without v 2016-03-03 18:00:50 +01:00
alalazo
db92699c02 test : fixed tests that were broken by import optimization 2016-03-03 11:05:36 +01:00
alalazo
7f4a69319a Merge branch 'develop' of https://github.com/LLNL/spack into refactoring/stage
Conflicts:
	lib/spack/spack/package.py
2016-03-03 10:19:45 +01:00
alalazo
5ef3621556 stage : minor syntax fix 2016-03-03 10:10:30 +01:00
Todd Gamblin
6701977f1a Merge pull request #475 from LLNL/features/env-and-package-provenance
Features/env and package provenance
2016-03-03 00:42:40 -08:00
alalazo
353d12d2e6 stage : added create function as decided in #477 comments 2016-03-03 09:18:47 +01:00
alalazo
717bcb8624 test : optimized import statements 2016-03-03 09:17:49 +01:00
Glenn Johnson
6bbadbfaac Add CPATH pointing to include directories. 2016-03-02 13:18:43 -06:00
Todd Gamblin
9f6ebd7c6e Merge pull request #465 from citibeth/efischer/160229-RemoteRootBugfix
Bug Fix: When Spack create roots around for other versions, it someti…
2016-03-02 10:24:17 -08:00
alalazo
21cd05aad5 package : updated doc 2016-03-02 17:28:21 +01:00