Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perl - allow package activation without PERL5LIB variable #4540

Merged
merged 9 commits into from
Jul 23, 2017

Conversation

mjwoods
Copy link
Contributor

@mjwoods mjwoods commented Jun 19, 2017

Issue #4423 describes a problem where perl packages installed by spack are not found by perl after being activated.

When perl packages are installed using Makefile.PL, we use the configure option INSTALL_BASE as recommended by http://search.cpan.org/~bingos/ExtUtils-MakeMaker-7.30/lib/ExtUtils/MakeMaker.pm. Similarly, for packages installed using Build.PL, we use the option --install_base. These options provide a consistent and predictable directory structure for all packages.

When perl packages are activated by spack, the result is equivalent to setting INSTALL_BASE or --install_base to the base directory of the perl installation. But for reasons known only to perl experts, the packages are not installed in a location that perl searches by default.

As a workaround, I have modified the configure options used to install perl so that an extra directory is prepended to the package search path. With this change, packages can be used after activation without needing to define PERL5LIB.

@@ -90,9 +90,13 @@ def configure_args(self):
'-des',
'-Dprefix={0}'.format(prefix),
'-Dlocincpth=' + self.spec['gdbm'].prefix.include,
'-Dloclibpth=' + self.spec['gdbm'].prefix.lib,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please leave the comma at the end of the line, it's a convenience that minimizes diffs if anyone ever adds another line to the list and helps avoid the "oops I forgot to add a comma to the previous line" error.

Copy link
Contributor

@hartzell hartzell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like about as tidy a solution as I can think of.

The way that perl handles @INC is magical and mysterious (and backward compatible and platform flexible and yeeesh).

This might be a fragile point as we move onto other platforms, but probably not.

It would be interesting to get someone who builds spack things on a mac to see if it works there.

]

# Prepend default perl @INC path to allow package activation:
Copy link
Contributor

@hartzell hartzell Jun 20, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is too brief for such a magical operation.

Perhaps:

# Extensions are installed into their private tree via
# `INSTALL_BASE`/`--install_base` (see [1]) which results in a
# "predictable" installation tree that sadly does not match the
# Perl core's @INC structure.  This means that when activation
# merges the extension into the extendee[2], the directory tree
# containing the extensions is not on @INC and the extensions can
# not be found.
#
# This bit prepends @INC with the directory that is used when
# extensions are activated [3].
#
# [1] https://metacpan.org/pod/ExtUtils::MakeMaker#INSTALL_BASE
# [2] via the activate method in the PackageBase class
# [3] https://metacpan.org/pod/distribution/perl/INSTALL#APPLLIB_EXP

]

# Prepend default perl @INC path to allow package activation:
config_args.append('-Accflags=-DAPPLLIB_EXP=\\"' + join_path(
self.spec.prefix, 'lib', 'perl5') + '\\"')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would self.spec.prefix.lib be cleaner than joining spec.prefix and lib?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Even cleaner would be self.prefix.lib. That's what I prefer.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no objection about making things cleaner, but the search path must literally be .../lib/perl5. Are you sure that self.prefix.lib is always .../lib and never something like .../lib64?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found the answer to my own question at http://spack.readthedocs.io/en/latest/packaging_guide.html#prefix-objects . There are separate prefix.lib and prefix.lib64 attributes. It should be safe to assume they will never change, but we can expect trouble if they do.

@hartzell
Copy link
Contributor

Look like somewhere in the process of including my comment about @INC you got a mix of spaces and tabs that flake8 doesn't like, so the flake8 test failed. Not sure if that was in my bit in the comment stream, if so I apologize.

@mjwoods
Copy link
Contributor Author

mjwoods commented Jun 22, 2017

It's my fault entirely, @hartzell. My editor was trying to be helpful by indenting with tabs.

@hartzell
Copy link
Contributor

@adamjstewart -- ping

# Extensions are installed into their private tree via
# `INSTALL_BASE`/`--install_base` (see [1]) which results in a
# "predictable" installation tree that sadly does not match the
# Perl core's @INC structure. This means that when activation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does Perl's core @INC structure look like? Perhaps we should be installing PerlPackage's differently? Another possibility is to override activate and deactivate to copy the files to a differently directory. Just alternatives to this technique, not saying one would be better than the other.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As a side effect of being able to support many old releases and many OS's and, well, just being Perl I guess..., the things in the core are complicated.

The structure of additional packages, even added by the standard tool chains, is also complicated.

I think that this is a reasonably simple solution that deals with the problem without adding too much complexity.

We could install into either the site or vendor subtrees, (search here for "make install" for a bit of background) but other people sometimes have designs on them. Carving out our own little slice of heaven seems reasonable.

@@ -130,10 +147,6 @@ def install_cpanm(self):
make()
make('install')

def setup_environment(self, spack_env, run_env):
"""Set PERL5LIB to support activation of Perl packages"""
run_env.set('PERL5LIB', join_path(self.prefix, 'lib', 'perl5'))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to keep this around to allow people to use Perl packages without using spack activate?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so.

Perl-extending packages that are not activated need to add their prefix to PERL5LIB, e.g. in their modulefile, if people want to use them. That task lives in those packages, not the Perl package itself.

This was here because we were linking the activated packages into a directory that's wasn't normally part of @INC. This fix arranges for our directory to be on @INC so we no longer depend on the environment variable (less opportunity for foot shooting).

@@ -143,8 +156,8 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
for d in dependent_spec.traverse(
deptype=('build', 'run'), deptype_query='run'):
if d.package.extends(self.spec):
perl_lib_dirs.append(join_path(d.prefix, 'lib', 'perl5'))
perl_bin_dirs.append(join_path(d.prefix, 'bin'))
perl_lib_dirs.append(join_path(d.prefix.lib, 'perl5'))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can actually use perl_lib_dirs.append(d.prefix.lib.perl5) now.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How cool is that? 👍

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have updated to the new path syntax in 12e02ec. This also required a rebase onto a recent develop branch.

# [2] via the activate method in the PackageBase class
# [3] https://metacpan.org/pod/distribution/perl/INSTALL#APPLLIB_EXP
config_args.append('-Accflags=-DAPPLLIB_EXP=\\"' + join_path(
self.prefix.lib, 'perl5') + '\\"')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need to use quotes here as the string is already quoted when it gets passed to the subprocess.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @adamjstewart , the quoting is quite fiddly here, because the library path is inserted into C code as a quoted string by the preprocessor. I tried a few different expressions, and this is what eventually worked. If you can suggest something better though, I'd be happy to use it.

Copy link
Member

@adamjstewart adamjstewart left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple minor formatting changes that could be done, but otherwise looks good!

@@ -159,10 +172,10 @@ def setup_dependent_package(self, module, dependent_spec):
"""

# perl extension builds can have a global perl executable function
module.perl = Executable(join_path(self.spec.prefix.bin, 'perl'))
module.perl = Executable(join_path(self.prefix.bin, 'perl'))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might be able to use module.perl = self.spec.command here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It didn't work, even after rebasing onto the latest develop branch.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, what about self.command?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sadly, no.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, last try. I think the correct syntax is self.spec['perl'].command.

# [2] via the activate method in the PackageBase class
# [3] https://metacpan.org/pod/distribution/perl/INSTALL#APPLLIB_EXP
config_args.append('-Accflags=-DAPPLLIB_EXP=\\"'
+ self.prefix.lib.perl5 + '\\"')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flake8 doesn't like this line:

var/spack/repos/builtin/packages/perl/package.py:111: [W503] line break before binary operator

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's strange. PEP8 allows this and even suggests it for new code.

@adamjstewart adamjstewart merged commit 4044e9f into spack:develop Jul 23, 2017
mamelara added a commit to NERSC/spack that referenced this pull request Jul 25, 2017
* satsuma2: new package (spack#4838)

* salmon: new package (spack#4833)

* New Package: C-Ares (spack#4840)

Adds the c-ares library, a C library for asynchronous DNS requests.

Required for the google gRPC library.

* sickle: new package (spack#4851)

* seqprep: new package (spack#4850)

* smalt: new package (spack#4853)

* singularity: new package (spack#4852)

* lmdb: Update to 0.9.21 (spack#4830)

Convert to MakefilePackage and add pkg-config file.

* added new pruners-ninja version (spack#4859)

* sortmerna: new package (spack#4866)

* revbayes: trying this again (spack#4861)

* new package: miniGMG (spack#4849)

* new package: miniGMG

* changed based on comments

* removed cuda version

* sparta: new package (spack#4867)

* sparta: new package

* fixing homepage

* Savanna (spack#4856)

Installing the stable version 0.5 through the checksummed tar.gz does not fetch the git submodule in the package.
The submodule appears as an empty directory.

Thus, clone the commit tagged as v0.5 using git to get around this issue

* savanna: modified adios dependency spec
* Replaced adios+staging with adios+flexpath+dataspaces
* savanna: Enabling fortran support in adios by default
* savanna: reverting to variant 'staging' for enabling all staging transports

* Make testing spack commands simpler (spack#4868)

Adds SpackCommand class allowing Spack commands to be easily in Python

Example usage:

    from spack.main import SpackCommand
    info = SpackCommand('info')
    out, err = info('mpich')
    print(info.returncode)

This allows easier testing of Spack commands.

Also:
* Simplify command tests
* Simplify mocking in command tests.
* Simplify module command test
* Simplify python command test
* Simplify uninstall command test
* Simplify url command test
* SpackCommand uses more compatible output redirection

* gBenchmark: Development Package (spack#4847)

* gBenchmark: Development Package

Add the development version (master branch) of `gBenchmark`

* gBenchmark: Remove Duplicate

Remove duplicate `gbenchmark` library
and keep its patch to remove the shipped
-Werror

* Perl - allow package activation without PERL5LIB variable (spack#4540)

* perl: prepend default perl @inc path to support package activation

* perl: remove stray comma from list of configure arguments

* perl: final comma in configure arguments makes adding arguments safer

This reverts commit fdc10cd.

* perl: add comment about modified @inc (thanks to George Hartzell)

* perl: use self.prefix.lib and self.prefix.bin for clarity

* perl: convert tabs added by editor to spaces for flake8

* perl: use new path syntax: prefix.lib.perl5

* perl: avoid line break before binary operator

* perl: use compact spack syntax for perl executable

* fix sphinx dependencies, add v1.6.3 (spack#4870)

* Add cuda variant for mvapich2. (spack#4800)

* Add cuda variant for mvapich2.

* Disable cuda for mvapich2 by default.

* Add a py-theano version from git repo (spack#4871)

* Change Version formatting properties and functions to return Version objects (spack#4834)

* Change version.up_to() to return Version() object
* Add unit tests for Version.up_to()
* Fix packages that expected up_to() to return a string
* Ensure that up_to() preserves separator characters
* Use version indexing instead of up_to
* Make all Version formatting properties return Version objects
* Update docs
* Tests need to test string representation

* stringtie: new package (spack#4878)

* added new version of cdo (spack#4877)

* subread: new package (spack#4882)

* structure: new package (spack#4879)

* structure: new pacakge

* fixing package structure (not a pun)

* swarm: new package (spack#4885)

* added new version of jdk 8u141-b15 (spack#4876)

* stacks: new package (spack#4875)

* fix GobjectIntrospection on Darwin (spack#4872)

* fix GobjectIntrospection on Darwin

* minor
mamelara added a commit to NERSC/spack that referenced this pull request Aug 1, 2017
* satsuma2: new package (spack#4838)

* salmon: new package (spack#4833)

* New Package: C-Ares (spack#4840)

Adds the c-ares library, a C library for asynchronous DNS requests.

Required for the google gRPC library.

* sickle: new package (spack#4851)

* seqprep: new package (spack#4850)

* smalt: new package (spack#4853)

* singularity: new package (spack#4852)

* lmdb: Update to 0.9.21 (spack#4830)

Convert to MakefilePackage and add pkg-config file.

* added new pruners-ninja version (spack#4859)

* sortmerna: new package (spack#4866)

* revbayes: trying this again (spack#4861)

* new package: miniGMG (spack#4849)

* new package: miniGMG

* changed based on comments

* removed cuda version

* sparta: new package (spack#4867)

* sparta: new package

* fixing homepage

* Savanna (spack#4856)

Installing the stable version 0.5 through the checksummed tar.gz does not fetch the git submodule in the package.
The submodule appears as an empty directory.

Thus, clone the commit tagged as v0.5 using git to get around this issue

* savanna: modified adios dependency spec
* Replaced adios+staging with adios+flexpath+dataspaces
* savanna: Enabling fortran support in adios by default
* savanna: reverting to variant 'staging' for enabling all staging transports

* Make testing spack commands simpler (spack#4868)

Adds SpackCommand class allowing Spack commands to be easily in Python

Example usage:

    from spack.main import SpackCommand
    info = SpackCommand('info')
    out, err = info('mpich')
    print(info.returncode)

This allows easier testing of Spack commands.

Also:
* Simplify command tests
* Simplify mocking in command tests.
* Simplify module command test
* Simplify python command test
* Simplify uninstall command test
* Simplify url command test
* SpackCommand uses more compatible output redirection

* gBenchmark: Development Package (spack#4847)

* gBenchmark: Development Package

Add the development version (master branch) of `gBenchmark`

* gBenchmark: Remove Duplicate

Remove duplicate `gbenchmark` library
and keep its patch to remove the shipped
-Werror

* Perl - allow package activation without PERL5LIB variable (spack#4540)

* perl: prepend default perl @inc path to support package activation

* perl: remove stray comma from list of configure arguments

* perl: final comma in configure arguments makes adding arguments safer

This reverts commit fdc10cd.

* perl: add comment about modified @inc (thanks to George Hartzell)

* perl: use self.prefix.lib and self.prefix.bin for clarity

* perl: convert tabs added by editor to spaces for flake8

* perl: use new path syntax: prefix.lib.perl5

* perl: avoid line break before binary operator

* perl: use compact spack syntax for perl executable

* fix sphinx dependencies, add v1.6.3 (spack#4870)

* Add cuda variant for mvapich2. (spack#4800)

* Add cuda variant for mvapich2.

* Disable cuda for mvapich2 by default.

* Add a py-theano version from git repo (spack#4871)

* Change Version formatting properties and functions to return Version objects (spack#4834)

* Change version.up_to() to return Version() object
* Add unit tests for Version.up_to()
* Fix packages that expected up_to() to return a string
* Ensure that up_to() preserves separator characters
* Use version indexing instead of up_to
* Make all Version formatting properties return Version objects
* Update docs
* Tests need to test string representation

* stringtie: new package (spack#4878)

* added new version of cdo (spack#4877)

* subread: new package (spack#4882)

* structure: new package (spack#4879)

* structure: new pacakge

* fixing package structure (not a pun)

* swarm: new package (spack#4885)

* added new version of jdk 8u141-b15 (spack#4876)

* stacks: new package (spack#4875)

* fix GobjectIntrospection on Darwin (spack#4872)

* fix GobjectIntrospection on Darwin

* minor

* Rename the gpu variant to cuda, this is to be consistent with other (spack#4890)

packages.

* Update zstd version (spack#4873)

* Update zstd version

* Change order of versions

* Use MakefilePackage

* sumaclust: new package (spack#4884)

* sumaclust: new package

* tweaking url and make specs

* tabix: new package (spack#4886)

* tabix: new package

* fixed docs location

* cleaveland4: new package (spack#4894)

* cleaveland4: new package

* fixing return line in viennarna url_for_version

* fix config.guess patch for ppc64le (spack#4858)

* fix config.guess patch for ppc64le

* explicit patch for config.guess not required

* trimgalore: new package (spack#4899)

* transposome: new package (spack#4896)

* transdecoder: new package (spack#4895)

* transdecoder: new package

* fixed package structure

* fix callpath bug (spack#4659)

* fix callpath bug I found while testing env/cc

* fix hanging indent for flake

* tmux should not set PKG_CONFIG_PATH (spack#4901)

* fixes spack#967

* Version bump to 0.9.1

- Bugfixes for spack find
- 0.9.1 can read specs from current develop.

* Don't assume spack is in the path when building docs.

* Remove PKG_CONFIG_PATH from tmux configure

* Change tmux to AutotoolsPackage

* Correct link to libtinfo in tmux

* Add universal build_type variant to CMakePackage (spack#4797)

* Add universal build_type variant to CMakePackage
* Override build_type in some packages with different possible values
* Remove reference to no longer existent debug variant
* Update CBTF packages with new build_type variant
* Keep note on build size of LLVM

* shortstack: new package (spack#4905)

* added MPI dependency to Nekbone package (spack#4903)

* removed the tags as per comment in PR# 4749

* addressed above comments

* changed fortran compiler.

* added proxy application tags.

* added tags by removing them from description.

* addressed comments

* used join_path instead of path concat.

* removed the tags as per comment in PR# 4749

* addressed above comments

* changed fortran compiler.

* added proxy application tags.

* added tags by removing them from description.

* addressed comments

* used join_path instead of path concat.

* added tags.

* changes to use MPI as depedency.

* removed MPI as variant.

* changed pointer to filtered makenek file.

* flake 8 fix.

* Updated Namespace of BML Repository (spack#4910)

* Improve version detection for URLs with dynamic after version (spack#4902)

* snptest: new package (spack#4900)

* snptest: new package

* fixed version things

* fixed install phase

* openblas: add 0.2.20 (spack#4915)

* New Package: RSbench (spack#4752)

* New Package: RSbench

* minor change

* removed tags as per PR# 4749

* addressed comments and added gcc compiler.

* added proxy app tags to description.

* removed setting CC to pgicc through spec.

* removed compiler as depedency

* removed pgi variant.

* flake 8 fix.

* added mpi depedency with pgi compiler

* added  pgi compiler

* removed PGI compiler as depedency.

* added tags and addressed other code formattings.

* added tags and addressed other code formattings.

* addressed comments.

* Fix for Krell openspeedshop spack package bug.  New multi-value variant for GUI build. (spack#4880)

* Update the krell institute products to use the latest features of spack for building on cluster platforms.

* Address travis error messages and resubmit the pull request.

* Update the contents of openspeedshop package.py so it passes the flake8 tests.

* Fix flake8 error-whitespack issue in mrnet package.py file.

* Add updates based on spack reviewer feedback.

* More fixes based on comments from reviewers.  Switch using extend to using append, remove additional setting of PATH and LD_LIBRARY_PATH that should not be required due to RPATH.

* More review related changes.  Update MPIOption.append lines and take out xercesc references.

* Create a base options function for common openspeedshop base cmake options to reduce redundencies.

* Add libxml2+python depends on to get around issues with the libxml2 package file.

* Using boost over 1.60.0 causes compile errors.  This is a known boost bug. Also, dyninst-9.2.0 is set to be the vesrion of dyninst to use with OSS, as of now. The newer version fails to build.

* Fix bad syntax in specifying the boost version range.

* Update the version numbers for the krell institute components and tools: cbtf and openspeedshop.

* Do not build glib for qt3, it is not needed and causes build problems at this time anyway.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Update the fix for qt3 build by setting LD_LIBRARY_PATH instead of checking for whether it is set or not per Adams comment that spack clears LD_LIBRARY_PATH.

* A fix was added for setting LD_LIBRARY_PATH in the qt3 build, but if LD_LIBRARY_PATH is not set the qt build fails. So so check and set LD_LIBRARY_PATH if not set, update if it is set.

* Trim comments to fit more concisely.

* Fix tabs versus spaces and swap if and else clause check from a negative to a positive check.

* Fix issues with the cbtf-argonavis build, update to use dyninst-9.3.2, fixes to openspeedshop package build.

* Fix issues with the cbtf-argonavis package.py files related to comments.

* Add changes for changing the krell packages from Package to CMakePackage.

* Add better changes for changing the krell packages from Package to CMakePackage.

* Add more modifications for changing the krell packages from Package to CMakePackage.

* Add additional modifications for changing the krell packages from Package to CMakePackage and fixing Travis erros

* Fix new travis errors.

* Fix new travis errors.

* Add more changes for PR 4765.

* Add more refinements to the conversion from Package to CMakePackage.

* Fix new travis errors.

* Add dependencies for MPI to be passed to cbtf-krell, so it can build the MPI collectors requested by the builder of openspeedshop.

* Remove extra unnecessary routine to adjust build arguments. Fix if-else clause issue.

* Fix more flake issues caused by last changes.

* Fix a bug where openspeedshop will not build when no mpi variants are specified.  Also switch to a multiple level variant for building the gui(s).  Use none, qt3, and qt4 as the variants with qt3 being the default.

* Add fix for spack issue spack#4843, where LTDL include files were not found.

* Add the build_type variant back into the openspeedshop package file.

* New Package: lcals (spack#4792)

* New Pacakge: lcals

* added logic for arch detection and compiler choice.

* fixes for comments.

* addressed comments.

* removed LCALS_ARCH and added flags though spack.

* addressed comments.

* flake 8 fix.

* reerted the changes along with comments.

* Added Proxy App tag (spack#4917)

* Added Proxy App tag

*  NO changes except proxy app tag

* bml: fix homepage (spack#4918)

* Adding QWT package. (spack#4911)

* Adding QWT package.

* Using builtin file filtering.

* Formatting.

* Fix for m4%clang (spack#4912)

* Fix for m4%clang

* Restricted condition to not subsitute rtlib on OSX

* Initial Spackage for qmd-progress library (spack#4924)

* Initial Spackage for qmd-progress library

PROGRESS is a library is focused on the development of general solvers
that are commonly used in quantum chemistry packages.

* Removed LA-CC from description to fix formatting

* Added Additional Formatting Requests

Added requested formatting changes and also ensured that graphlib and
mpi are disabled if not enabled

* gBenchmark: v1.2.0 (spack#4935)

Adds a the latest version of gBenchmark, release 1.2.0.

This is the first gBenchmark version with proper
[CMake config package installs](google/benchmark#363).
This is important for dependencies building against it, such as gRPC.

* zsh: add variant that skips tcsetpgrp test (spack#4923)

zsh's configure script fails if there's it tries to test for terminal
functionality if there's not a terminal (e.g. in a Jenkins build).

The configure script has a switch that asserts that tcsetpgrp works
and thereby avoids running that test.

This commit adds a variant that invokes that switch, defaulting to
True.

* Add latest version of apr (spack#4931)

* Add latest version of expat (spack#4930)

* Add missing dependencies to unixodbc (spack#4928)

* ZeroMQ: C++ Headers (cppzmq) (spack#4841)

Adds the cppzmq library, adding a C++ API to ZeroMQ (libzmq). In order to find the autotools-build libzmq, this requires the upcoming cppzmq release (or development branch).

* Add latest version of SCons (spack#4929)

* Add --color=[always|never|auto] argument; fix color when piping (spack#3013)

* Disable spec colorization when redirecting stdout and add command line flag to re-enable
* Add command line `--color` flag to control output colorization
* Add options to `llnl.util.tty.color` to allow color to be auto/always/never
* Add `Spec.cformat()` function to be used when `format()` should have auto-coloring

* Fix preference for X.Y version when mixed with X.Y.Z versions (spack#4922)

For packages which contain a mix of versions with formats X.Y and
X.Y.Z, if the user entered an X.Y version as a preference in
packages.yaml, Spack would get confused and favor any version A.B.Z
where X=A and Y=B. In the case where there is a mix of these version
types, this commit updates preferences so Spack will favor an exact
match.

* Clarify docs on using a hash in a spec (spack#4908)

* Fix xsdk build broken by petsc and trilinos (spack#4893)

* Fix xsdk build broken by petsc and trilinos

See spack#4891 for details

* Fix version conflict in trilinos package

Trilinos version 11 may conflict with superlu-dist.
The version "xsdk-0.2.0" was conflicting with superlu-dist,
even though it shouldn't.  I added a lower bound to the
comparison to fix this problem.

Thanks for the help @davydden!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants