xSDK policies compatibility
Created by: aprokop
Template taking from here.
xSDK Community Policy Compatibility for ArborX
Website: https://github.com/arborx/ArborX
Mandatory Policies
Policy | Support | Notes |
---|---|---|
M1. Support xSDK community GNU Autoconf or CMake options. | None | Short-expanation-here; optional link for more extensive details if needed, see below. M1 details |
M2. Provide a comprehensive test suite for correctness of installation verification. | Full | |
M3. Employ user-provided MPI communicator (no MPI_COMM_WORLD). Don't assume a full MPI 3 implementation without checking. Provide an option to prevent any changes to MPI error-handling if it is changed by default. | Full | |
M4. Give best effort at portability to key architectures (standard Linux distributions, GNU, Clang, vendor compilers, and target machines at ALCF, NERSC, OLCF). | Full | |
M5. Provide a documented, reliable way to contact the development team. | Full | Have CONTRIBUTING.md |
M6. Respect system resources and settings made by other previously called packages (e.g. signal handling). | Full | |
M7. Come with an open source (BSD style) license. | Full | |
M8. Provide a runtime API to return the current version number of the software. | Full | |
M9. Use a limited and well-defined symbol, macro, library, and include file name space. | Full | |
M10. Provide an xSDK team accessible repository (not necessarily publicly available). | Full | |
M11. Have no hardwired print or IO statements that cannot be turned off. | Full | |
M12. For external dependencies, allow installing, building, and linking against an outside copy of external software. | Full | |
M13. Install headers and libraries under <prefix>/include and <prefix>/lib. | Full | |
M14. Be buildable using 64 bit pointers. 32 bit is optional. | Full | |
M15. All xSDK compatibility changes should be sustainable. | Full | |
M16. The package must support production-quality installation compatible with the xSDK install tool and xSDK metapackage. | Partial | Spack package was merged, but is not part of xSDK metapackage yet. |
M1 details : optional: provide more details about approach to addressing topic M1.
M2 details : optional: provide more details about approach to addressing topic M2.
Recommended Policies
Policy | Support | Notes |
---|---|---|
R1. Have a public repository. | Full | |
R2. Possible to run test suite under valgrind in order to test for memory corruption issues. | ||
R3. Adopt and document consistent system for error conditions/exceptions. | ||
R4. Free all system resources acquired as soon as they are no longer needed. | Need Kokkos initialize/finalize | |
R5. Provide a mechanism to export ordered list of library dependencies. | ||
R6. Document versions of packages that it works with or depends upon, preferably in machine-readable form. | ||
R7. Have README, SUPPORT, LICENSE, and CHANGELOG files in top directory. | Partial | need SUPPORT. |
M1 CMake policies
Item # | Option | Description | Notes |
---|---|---|---|
1 | USE_XSDK_DEFAULTS=[YES,NO] | Implement the default behavior described below. | Each package can decide whether XSDK mode is the default mode. |
2 | CMAKE_INSTALL_PREFIX=directory | Identify location to install package. | Multiple “versions” of packages, such as debug and release, can be installed by using different prefix directories. |
3 | CMAKE_CXX_COMPILER, ... | Select compilers and compiler flags | Variable CPP not supported by raw CMake |
4 | CMAKE_BUILD_TYPE=[Debug,Release] | Create libraries with debugging information and possible additional error checking | Default in XSDK mode: Debug |
5 | BUILD_SHARED_LIBS=[YES,NO] | Select option used for indicating whether to build shared libraries | Default in XSDK mode: shared |
6 | XSDK_ENABLE_=[YES,NO] | Build interface for a particular additional language. | |
7 | XSDK_PRECISION=[SINGLE,DOUBLE,QUAD] | Determine precision for packages that build only for one precision | Default in XSDK mode: double. Packages that handle all precisions automatically are free to ignore this option. |
8 | XSDK_INDEX_SIZE=[32,64] | Determine index size for packages that build only for one index size | Default in XSDK mode: 32. Packages that handle all precisions automatically are free to ignore this option. |
9 | TPL_BLAS_LIBRARIES=”linkable list of libraries”; TPL_LAPACK_LIBRARIES=”linkable list of libraries” (should not use -L or -l flags in the lists) | Set location of BLAS and LAPACK libraries | Default is to locate one on the system automatically) |
10 | TPL_ENABLE_=[YES,NO], TPL_LIBRARIES=”linkable list of libraries” (should not use -L or -l flags), TPL_INCLUDE_DIRS=”/path/to/includes1;/path/to/includes1;...” (Cannot include -I flags) | Determine other package libraries and include directories. | |
11 | In the XSDK mode, XSDK projects should not rely on users providing any library path information in environmental variables such as LD_LIBRARY_PATH. | ||
12 | After packages are configured, they can be compiled, installed and “smoke” tested with thefollowing commands: make ; [sudo] make install ; make test_install. | ||
13 | After an install the package should provide a machine-readable output to show provenance, that is, what compilers were used and what libraries were linked with, as well as other build configuration information if this information was also stored in the install directory somewhere, so that users with problems can send the information directly to developers. |