Geoff Oxberry <[email protected]> writes: > I can answer some Homebrew questions. I typically skim petsc-dev and > petsc-users due to my relative PETSc inexperience, and only read a few > posts here and there. If someone bugs you about it and I miss it, ping me, > and I'll do my best to help. PETSc is also a package in the > homebrew-science repo, so I can lean on some of them for help also. I've > learned to build PETSc from source because the package builds in Linux > distros and Mac package managers usually lack the external package > capabilities I want (and they're old versions, too).
For systems with shared libraries, it may be useful to have a way to add plugins after building PETSc, rather than asking packagers to build every subset or a maximal subset. The problem is that functions like PCHYPRESetType() are made visible to the user and thus become link-time dependencies. Is there something *maintainable* we could do to allow applications to link without the packages? Functions like the above either do PetscTryMethod or PetscUseMethod so they don't have a link-time dependency on the implementation PCHYPRESetType_HYPRE (and thus the external package), but are currently placed in the file with the external package. If we moved them somewhere that was always compiled, we would get rid of the link-time dependency and then we could add these plugins after installing the PETSc base system. It's not a huge amount of code wrangling to move these functions, but it means that adding a new function necessarily involves modifying three files (it already involves include/petscyyy.h and src/yyy/impls/zzz/zzz.c). We still also need the monolithic mode to keep linking sane on systems without shared libraries.
pgpdBjah9yc_t.pgp
Description: PGP signature
