[petsc-dev] Sean is going to love this

Barry Smith bsmith at mcs.anl.gov
Tue Dec 23 17:19:00 CST 2014


    Say I am writing a PETSc package (for any generic packaging system) that will use the MPICH compilers package and the BLAS/LAPACK package (and say, the hdf5 package). How do I indicate to PETSc's configure the information for MPICH, BLAS/LAPACK, and hdf5 so they will be correct for users when they link and run their applications? That is, I don't want to randomly list some hdf5 on the system but is it enough to just list the exact location of the hdf5 I know the package manager will install hdf5 to?



> On Dec 23, 2014, at 1:38 PM, Sean Farley <sean.michael.farley at gmail.com> wrote:
> Karl Rupp writes:
>> Hi,
>>>> The only way to do this, in my experience, is if the package manager has
>>>> something like 'variants' (macports and homebrew have it, at least, I
>>>> don't know about others):
>>>> port install petsc +superlu +mumps +mpich +hdf5 +hypre ... etc.
>>> I think variants are a crutch for poor plugin support.  I would prefer
>>> for PETSc to offer these as plugins that can be built and distributed
>>> separately.  Then one can install petsc-superlu, petsc-mumps, etc.
>> I cannot agree more with Jed on this. Although defining a sufficiently 
>> powerful plugin system for this isn't easy and would require us to 
>> rethink the whole build process, it has the potential of reducing the 
>> number of support requests on building PETSc substantially, just because 
>> inexperienced users can then rely on package managers to setup  a PETSc 
>> tailored to their needs.
>> Ideally we could preserve the following two options:
>> a) building a 'fat' PETSc lib with packages compiled into libpetsc.so
>> b) a 'slim' libpetsc.so which loads additional packages from e.g. a 
>> plugin folder.
>> We already have a), but I'm not entirely sure whether we can (and want 
>> to?) reasonably support option b) without giving up parts of a).
> While I definitely agree with both Karl and Jed, I think there are
> easier targets to hit to help package managers. The current rough spots
> I deal with are:
> 1) Non-standard prefix
> This is by far the biggest one and would require, I'm sure, much
> discussion. The desired outcome would be a PETSc installation into
> $PREFIX/{bin,etc,include,lib,libexec,man,var,www}. No other directories
> (seems to only be 'conf') would be allowed.
> 2) Multiple installations
> Not as high on the list but still would be nice.
> 3) Don't warn the user about environment variables
> It is an unfortunate fact that some package managers set environment
> variables. I manually use the correct --CC, --FC, etc. but still get a
> warning. I think a simple fix for this is to not show the warning if the
> command line arg is set.
> 4) Better coordination with dependent packages
> This item is hard to implement because it's out of the PETSc team's
> control. For example, packages like SLEPc depend on PETSc but don't have
> as good of a build system. SLEPc can't be built with a version of SLEPc
> already installed in the prefix. This is unnecessarily cumbersome for
> end-users.
> The above points would drastically reduce the friction of having PETSc
> in a package manager.

More information about the petsc-dev mailing list