[petsc-dev] PETSc-3.4 PR open at https://github.com/Homebrew/homebrew-science/pull/343
Jed Brown
jedbrown at mcs.anl.gov
Sat Oct 12 17:33:50 CDT 2013
Barry Smith <bsmith at mcs.anl.gov> writes:
> 1) So what directories should we be generating in the prefix location and
$prefix/include and $prefix/lib at a minimum. If we need to install
binaries, they go in $prefix/bin/petsc*. Other non-library files go in
$prefix/share/petsc/*. We should not use $prefix/conf because it is
non-standard. (And even if we did, we cannot steal non-namespaced paths
like $prefix/conf/rules because PETSc should be installable to
prefix=/usr/local without creating a mess.)
> 2) exactly what files should we be copying over (currently I think we
> just copy entire directories worth of material which results in
> garbage being moved over)
Yeah, that's the problem now. We need to copy headers, Fortran modules,
libraries, pkg-config file. The matlab/octave stuff should install to
$prefix/share/octave/packages/petsc/* and something similar for Matlab
(I'm not familiar with their conventions).
> 1) prefix/bin
> prefix/share
> prefix/include prefix/include/mpiuni (when needed) prefix/include/petsc-private prefix/include/finclude and various other subdirectories for f90?
> prefix/lib prefix/lib/modules (Jed says prefix/lib/petsc/modules) I see a lib/modules/3.4.2 why does this have a version number and nothing else?
Judging from NERSC's configuration it looks like it should be $prefix/modulefiles/petsc/3.4.2.
> prefix/conf ?
This is non-standard. Yes, changing it will change all makefiles, but
we have to namespace that stuff anyway so let's decide how to do it
right.
> What is the rule for putting a "petsc" subdirectory in the middle?
> My guess is that it is being put in whenever a "nonstandard"
> subdirectory is put in. What defines a "nonstandard" subdirectory?
> Isn't mpiuni a nonstandard subdirectory?
It is conventional to use $prefix/include/$PKG/*.h to keep headers
contained. However, I'm leaning toward saying that if MPIUNI is being
installed, mpi.h should go to the top level ($prefix/mpi.h) so that it
works like normal.
> What about finclude?
Everything in finclude is itself namespaced (or should be). I'd rather
put it in $prefix/include/petsc/fortran/, but finclude is not totally
violating our namespace.
> What about conf?
Nobody else uses conf so we shouldn't either. It looks like the CMake
convention (at least that used by KDE) is for $PKG to install
/usr/lib/cmake/$PKG/${PKG}.cmake.
> What is the standard for where module files are put, not allowed
> directly in the lib directory? But not in a "standard" modules
> subdirectory? Some people advocate modules in prefix/finclude.
> Since include is supposed to be reserved for C includes should our
> finclude directory not be under the include directory?
Are you talking about Fortran *.mod files? I'm not sure. MPICH,
NetCDF, and HDF5 install $prefix/include/$PKG.mod while Open MPI
installs $prefix/lib/openmpi/mpi.mod.
> We should try to be as "standard" compliant as reasonable. Should
> we be adjusting the non-prefix installs as well?
Yeah, the user should not need to know whether they are using a prefix
build or not. I'm in favor of adding a simple $prefix/bin/petsc-config
script. If pkg-config is available, it could even be implemented in
terms of calls to pkg-config with paths set appropriately. This would
allow people to avoid including PETSc's makefile (which brings unknown
variables into scope) and instead write
CFLAGS := $(shell $(PETSC_DIR)/$(PETSC_ARCH)/bin/petsc-config --cflags)
pkg-config is better in principle because being a single tool, it can
sort any dependencies (only really relevant when using static libs) and
can report cases of conflicting flags.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20131012/762bce1e/attachment.sig>
More information about the petsc-dev
mailing list