Commit graph

2054 commits

Author SHA1 Message Date
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
Adam J. Stewart
0d9a6d3c25 Updates to qrupdate 2016-03-14 14:19:30 -05: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
Todd Gamblin
ec42db62a3 Merge pull request #547 from eschnett/eschnett/tmux
Update tmux
2016-03-13 20:39:15 -07:00
Erik Schnetter
8b715d9c3f Update tmux 2016-03-13 21:31:48 -04: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
citibeth
003957a689 Reverted bad change 2016-03-13 00:33:13 -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
Todd Gamblin
a6389eb7de Merge pull request #542 from citibeth/efischer/160311-MiscUpdates
Misc. Updates
2016-03-12 14:51:05 -08: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
Elizabeth F
7cd478418d New version of LAPACK 2016-03-11 23:28:36 -05:00
Elizabeth F
90f2e40ff9 Added comment to Emacs. 2016-03-11 23:28:16 -05:00
Adam J. Stewart
145390c7f3 Add gl2ps and qrupdate packages 2016-03-11 16:57:37 -06:00
Todd Gamblin
1179217334 Add compiler info and a simple libdwarf build to the checks. 2016-03-11 13:33:56 -08:00
Todd Gamblin
081bdd0828 Merge pull request #528 from citibeth/efischer/160309-Emacs
Added Emacs package
2016-03-11 13:31:58 -08:00
Adam J. Stewart
6ec65cd4ca Add GNU Octave package 2016-03-11 15:03:37 -06: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
Todd Gamblin
4574f768ef Merge pull request #526 from KineticTheory/develop
Provide instructions for cmake/3.5.0 (plus 2 new variants) and qt/5.4.2
2016-03-11 09:20:47 -08:00
Kelly (KT) Thompson
f5e8857c5e + Rename variant 'sphinxbuild' to 'doc' as recommended in the discussion of
PR#526. Also, remove a debug print statement that was accidentally committed.
2016-03-11 09:51:12 -07: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
Todd Gamblin
caf6dc0f05 Merge pull request #451 from epfl-scitas/fixes/intel_openmpi
Fix : OpenMPI with Intel compiler (and similar issues)
2016-03-10 09:47:59 -08:00
Kelly (KT) Thompson
280384fce3 Merge remote-tracking branch 'upstream/develop' into develop 2016-03-10 09:09:16 -07: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
b9fcae8da6 Merge branch 'fixes/intel_openmpi' of github.com:epfl-scitas/spack into fixes/intel_openmpi 2016-03-10 14:11:14 +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