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.
- This version provides updates to provided cmake scripts that are required
for building cmake-gui.
+ Provide download/build instructions for version 3.5.0.
- When building the +qt variant, add a validate function to ensure that
qt-5.4.0 is not used (this version of qt has errors related to cmake).
1. --with-lapack-lib was wrong.
2. --with-MPI was wrong; set env vars for MPI wrappers instead.
3. Added version 2.10.1
4. Added shared library variant (True by default). Hypre can build shared or static libraries, but not both in the same build.
2. Removed Fortran bootstrap variant from netcdf. Users who need NetCDF Fortran interface should install netcdf-fortran.
3. Added result of ./configure --help on the netcdf-fortran. Verified the package has no additional options that should be exposed through Spack.
1) +qt - build the cmake-gui Qt application.
- adds a dependency on Qt.
2) +sphinxbuild - build the html CMake documentation.
- adds a dependency on python and py-sphinx
Adding a trunk version to the llvm package. This has all the features
and requirements of the others, with the additional caveat that the llvm
project makes no guarantee that trunk on all repositories together will
necessarily make a working compiler. It has been tested, and worked
with a version today, but not yesterday, so if you test keep that in
mind.
- Add a variant specifying whether to build with binutils, defaulting to true
- Auto-detect whether this is Darwin; if so, set binutils and gold defaults to false, as they don't work on Darwin
- Disable Go, which doesn't build on Darwin
- Clean up handling configure options
This flag can end up being required if a dependency tree ends up needing
hdf5+cxx+parallel, but nothing turns it on. Since the core spack code
puts this together, it ends up that the end user needs to specify it
manually. Instead, just assume an unsupported configuration (since these
*are* useful setups) and if anyone wants to seek upstream support,
masking the flag can be done.
2. clarify comment for default_noinstall_libs
3. renamed regex_icu variant to icu_support (both the locale and regex libs can
use it)
4. explicitly set b2 install ICU_PATH when regex_icu is activated
- simplify output, error, and input redirection
- `return_output=True` is now `output=str`
- `return_output=True` will still work for the time being but is
deprecated.
- previously you could say `return_output=True` and `output=<stream>`,
which wouldn't actually write to the stream. Now you actually can't
specify erroneous cases since there is only one parameter with
mutually exclusive options..
* develop: (85 commits)
Make libxcb compile with gcc 4.9.
disable parallel install for glib (found races)
disable cairo-trace, which is incompatible with older libiberty.h.
Fix LaunchMon on newer gcc versions.
Simplify output redirection in spack.util.executable
Allow completely empty config files.
Update cmake package to use http in all URLs.
Fix create, diy, edit, and repo commands to use multiple repos.
Add namespace option to find command.
Temporary fix: Clang is the default compiler on Mac OS X.
Netcdf requires cmake >=2.8.12
Mbedtls depends on cmake
Update libtool to 2.4.6
Update Julia to 0.4.3
Make binutils build on OS X
Add verbs and psm variants
py-matplotlib: depend on freetype
py-numpy: make blas/lapack optional dependencies
qhull: apply patch to work with libc++'s standard library
New package GNU tar
...
* develop: (85 commits)
Make libxcb compile with gcc 4.9.
disable parallel install for glib (found races)
disable cairo-trace, which is incompatible with older libiberty.h.
Fix LaunchMon on newer gcc versions.
Simplify output redirection in spack.util.executable
Allow completely empty config files.
Update cmake package to use http in all URLs.
Fix create, diy, edit, and repo commands to use multiple repos.
Add namespace option to find command.
Temporary fix: Clang is the default compiler on Mac OS X.
Netcdf requires cmake >=2.8.12
Mbedtls depends on cmake
Update libtool to 2.4.6
Update Julia to 0.4.3
Make binutils build on OS X
Add verbs and psm variants
py-matplotlib: depend on freetype
py-numpy: make blas/lapack optional dependencies
qhull: apply patch to work with libc++'s standard library
New package GNU tar
...
* develop: (85 commits)
Make libxcb compile with gcc 4.9.
disable parallel install for glib (found races)
disable cairo-trace, which is incompatible with older libiberty.h.
Fix LaunchMon on newer gcc versions.
Simplify output redirection in spack.util.executable
Allow completely empty config files.
Update cmake package to use http in all URLs.
Fix create, diy, edit, and repo commands to use multiple repos.
Add namespace option to find command.
Temporary fix: Clang is the default compiler on Mac OS X.
Netcdf requires cmake >=2.8.12
Mbedtls depends on cmake
Update libtool to 2.4.6
Update Julia to 0.4.3
Make binutils build on OS X
Add verbs and psm variants
py-matplotlib: depend on freetype
py-numpy: make blas/lapack optional dependencies
qhull: apply patch to work with libc++'s standard library
New package GNU tar
...
* develop: (43 commits)
Make libxcb compile with gcc 4.9.
disable parallel install for glib (found races)
disable cairo-trace, which is incompatible with older libiberty.h.
Fix LaunchMon on newer gcc versions.
Simplify output redirection in spack.util.executable
Allow completely empty config files.
Fix create, diy, edit, and repo commands to use multiple repos.
Add namespace option to find command.
Temporary fix: Clang is the default compiler on Mac OS X.
update compiler config test.
add sanity check on config write as well as validation on read.
Add jsonschema validation for config files.
Make text wrapping off by default in tty, add a kwarg for it.
add/remove/list working for new config format.
Add Python 3 aliases to our argparse backport.
All tests that call concretize() need to be MockPackagesTests.
Fix bug in tests.
Rework mirror configuration.
Rework compiler configuration and simplify config.py logic.
Remove mock_configs; tests no longer modify spack home directory.
...
- This moves var/spack/packages to var/spack/repos/builtin/packages.
- Packages that did not exist in the source branch, or were changed in
develop, were moved into var/spack/repos/builtin/packages as part of
the integration.
Conflicts:
lib/spack/spack/test/unit_install.py
var/spack/repos/builtin/packages/clang/package.py
Package repositories now look like this:
top-level-dir/
repo.yaml
packages/
libelf/
package.py
mpich/
package.py
...
This leaves room at the top level for additional metadata, source,
per-repo configs, indexes, etc., and it makes it easy to see that
something is a spack repo (just look for repo.yaml and packages).