-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Infrastructure for making proper releases (#94)
``PROCEDURES.md`` needs work, but that can happen later.
- Loading branch information
1 parent
cb84abc
commit 74db115
Showing
11 changed files
with
260 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
Procedures for making a new RandBLAS release | ||
============================================ | ||
|
||
This file provides the procedures for releasing a new version of RandBLAS. The process involves defining a new release in the commit history, changing the default version that CMake reports if it can't detect Git, and deploying updated web documentation. | ||
|
||
# Defining a new release | ||
|
||
I think this just requires making a git tag. Tags of the form X.Y.Z should work out of the box. | ||
Tags with prerelease info (like alpha, beta, etc..) might require reworking the string | ||
parsing in RandBLAS/CMake/rb_version.cmake. | ||
|
||
This ends up being simpler than CVXPY's method of defining new releases, which requires data | ||
specified manually in cvxpy/setup/versioning.py, while we infer that data from a tag with the | ||
help of ``git describe``. | ||
|
||
# Writing release notes | ||
|
||
This is self-explanatory. | ||
|
||
# Updating web docs | ||
|
||
## Updating web doc sources | ||
|
||
Appropriately adapt the release notes. Maybe just link to the GitHub releases for now. | ||
|
||
## ReadTheDocs deployment | ||
|
||
Change the default version of the web docs that people see. | ||
Maybe have to hard-code the version for a given branch. | ||
|
||
# Creating a new release on GitHub | ||
|
||
This is self-explanatory. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,57 @@ | ||
#ifndef RandBLAS_config_h | ||
#define RandBLAS_config_h | ||
|
||
#define RandBLAS_VERSION "@RandBLAS_VERSION@" | ||
#define RandBLAS_FULL_VERSION "@RandBLAS_FULL_VERSION@" | ||
#define RandBLAS_VERSION_MAJOR @RandBLAS_VERSION_MAJOR@ | ||
#define RandBLAS_VERSION_MINOR @RandBLAS_VERSION_MINOR@ | ||
#define RandBLAS_VERSION_PATCH @RandBLAS_VERSION_PATCH@ | ||
#define RandBLAS_COMMITS_SINCE_RELEASE @RandBLAS_COMMITS_SINCE_RELEASE@ | ||
#define RandBLAS_COMMIT_HASH "@RandBLAS_COMMIT_HASH@" | ||
// ^ CMake sets those based on the output of a shell command executed in the RandBLAS git repo. | ||
// | ||
// The specific command is | ||
// git describe --tags --match "[0-9]*.[0-9]*.[0-9]*" | ||
// That should return a string of the form | ||
// [X].[Y].[Z]-[C]-g[H] | ||
// The contents of this string are interpreted as follows. | ||
// [X] is a nonnegative integer equal to the major version number | ||
// [Y] is a nonnegative integer equal to the minor version number | ||
// [Z] is a nonnegative integer equal to the patch number | ||
// [C] is a nonnegative integer equal to the number of commits since the version number was assigned | ||
// [H] is a short-form commit hash, indicating the state of repository's source code. | ||
// RandBLAS_FULL_VERSION is the entire string returned by the git command. | ||
// | ||
// If you want to use RandBLAS without using CMake, you need to create config.h manually. | ||
// We explain how to do that below. But first | ||
// | ||
// DISCLAIMER: if you're looking at a config.h file actually generated by CMake parsing | ||
// this config.h.in file, then the instructions below will mostly look like nonsense. | ||
// This is because CMake will have performed string substitution on the original | ||
// comments as given in config.h.in. | ||
// | ||
// Start by making a copy of this config.h.in file and giving it the name config.h. | ||
// From there, substitute every expression the form @X@ with a value based on the | ||
// ``git describe`` command. For example, if ``git describe``returned 0.1.0-456-gcb84abc, | ||
// then your config.h file would make the substitutions | ||
// | ||
// @RandBLAS_FULL_VERSION@ --> 0.1.0-456-gcb84abc | ||
// @RandBLAS_VERSION_MAJOR@ --> 0 | ||
// @RandBLAS_VERSION_MINOR@ --> 1 | ||
// @RandBLAS_VERSION_PATCH@ --> 0 | ||
// @RandBLAS_COMMITS_SINCE_RELEASE@ --> 456 | ||
// @RandBLAS_COMMIT_HASH@ --> cb84abc | ||
// | ||
|
||
#cmakedefine RandBLAS_HAS_OpenMP | ||
// ^ CMake determines whether or not to #define RandBLAS_HAS_OpenMP | ||
// | ||
// If you don't want to use CMake, then your config.h file should | ||
// either delete that line (if you aren't linking to OpenMP) or | ||
// it should replace it with | ||
// | ||
// #define RandBLAS_HAS_OpenMP | ||
// | ||
// if you are linking to OpenMP. | ||
// | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
Installation | ||
============ | ||
|
||
|
||
RandBLAS is a header-only C++20 library with two required dependencies. One of these | ||
dependencies (`Random123 <https://github.com/DEShawResearch/random123>`_) is header-only, | ||
while the other (`BLAS++ <https://github.com/icl-utk-edu/blaspp>`_) needs to be compiled. | ||
|
||
Having a compiled dependency makes setting up RandBLAS a little more complicated than | ||
setting up other header-only libraries. RandBLAS also has OpenMP and GoogleTest as | ||
optional dependencies. Access to OpenMP is essential for RandBLAS to achieve its | ||
best possible performance. | ||
|
||
RandBLAS is most useful when called from programs that can access LAPACK, | ||
or an equivalent library for dense matrix computations. However, we don't | ||
require that such a library is available. | ||
|
||
RandBLAS uses `C++20 concepts <https://en.cppreference.com/w/cpp/language/constraints>`_. | ||
Make sure your compiler supports these! | ||
|
||
CMake users | ||
----------- | ||
RandBLAS offers a CMake build system. | ||
This system manages a simple configuration step (populating ``RandBLAS/config.h``), | ||
connecting to BLAS++ (assuming it was built with CMake), and building unit tests. | ||
|
||
You can opt to *install* RandBLAS if you want other CMake projects to | ||
include it as a dependency. Formal installation just consists | ||
of copying the header files and CMake metadata into a directory of your choosing. | ||
|
||
See | ||
`INSTALL.md <https://github.com/BallisticLA/RandBLAS/blob/main/INSTALL.md>`_ | ||
for detailed build and installation instructions. | ||
Check out our `examples <https://github.com/BallisticLA/RandBLAS/tree/main/examples>`_ | ||
for CMake projects that use RandBLAS and `LAPACK++ <https://github.com/icl-utk-edu/lapackpp>`_ | ||
to implement high-level randomized algorithms. | ||
|
||
Everyone else | ||
------------- | ||
Strictly speaking, we only need three things to use RandBLAS in other projects. | ||
|
||
1. ``RandBLAS/config.h``, filled according to the instructions in ``RandBLAS/config.h.in``. | ||
|
||
2. The locations of Random123 header files. | ||
|
||
3. The locations of the header files and compiled binary for BLAS++ (which will | ||
referred to as blaspp when installed on your system). | ||
|
||
If you have these things at hand, then compiling a RandBLAS-dependent | ||
program is just a matter of specifying standard compiler flags. | ||
|
||
We recommend that you take a look at | ||
`INSTALL.md <https://github.com/BallisticLA/RandBLAS/blob/main/INSTALL.md>`_. | ||
even if you aren't using CMake, since it has additional | ||
advice about selecting an acceptable compiler or getting RandBLAS | ||
to see OpenMP. |
Oops, something went wrong.