forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Squashed 'src/secp256k1/' changes from efe85c70a2..4b77fec67a
4b77fec67a Merge bitcoin-core/secp256k1#1512: msan: notate more variable assignments from assembly code f7f0184ba1 msan: notate more variable assignments from assembly code a61339149f change inconsistent array param to pointer 05bfab69ae Merge bitcoin-core/secp256k1#1507: ci: Add workaround for ASLR bug in sanitizers a5e8ab2484 ci: Add sanitizer env variables to debug output 84a93de4d2 ci: Add workaround for ASLR bug in sanitizers 427e86b9ed Merge bitcoin-core/secp256k1#1490: tests: improve fe_sqr test (issue bitcoin#1472) 2028069df2 doc: clarify input requirements for secp256k1_fe_mul 11420a7a28 tests: improve fe_sqr test cdc9a6258e Merge bitcoin-core/secp256k1#1489: tests: add missing fe comparison checks for inverse field test cases d926510cf7 Merge bitcoin-core/secp256k1#1496: msan: notate variable assignments from assembly code 31ba404944 msan: notate variable assignments from assembly code e7ea32e30a msan: Add SECP256K1_CHECKMEM_MSAN_DEFINE which applies to memory sanitizer and not valgrind e7bdddd9c9 refactor: rename `check_fe_equal` -> `fe_equal` 00111c9c56 tests: add missing fe comparison checks for inverse field test cases 0653a25d50 Merge bitcoin-core/secp256k1#1486: ci: Update cache action 94a14d5290 ci: Update cache action 2483627299 Merge bitcoin-core/secp256k1#1483: cmake: Recommend native CMake commands in README 5ad3aa3dcd Merge bitcoin-core/secp256k1#1484: tests: Drop redundant _scalar_check_overflow calls 51df2d9ab3 tests: Drop redundant _scalar_check_overflow calls 3777e3f36a cmake: Recommend native CMake commands in README e4af41c61b Merge bitcoin-core/secp256k1#1249: cmake: Add `SECP256K1_LATE_CFLAGS` configure option 3bf4d68fc0 Merge bitcoin-core/secp256k1#1482: build: Clean up handling of module dependencies e6822678ea build: Error if required module explicitly off 89ec583ccf build: Clean up handling of module dependencies 44378867a0 Merge bitcoin-core/secp256k1#1468: v0.4.1 release aftermath a9db9f2d75 Merge bitcoin-core/secp256k1#1480: Get rid of untested sizeof(secp256k1_ge_storage) == 64 code path 74b7c3b53e Merge bitcoin-core/secp256k1#1476: include: make docs more consistent b37fdb28ce check-abi: Minor UI improvements ad5f589a94 check-abi: Default to HEAD for new version 9fb7e2f156 release process: Style and formatting nits ba5d72d626 assumptions: Use new STATIC_ASSERT macro e53c2d9ffc Require that sizeof(secp256k1_ge_storage) == 64 d0ba2abbff util: Add STATIC_ASSERT macro da7bc1b803 include: in doc, remove article in front of "pointer" aa3dd5280b include: make doc about ctx more consistent e3f690015a include: remove obvious "cannot be NULL" doc d373bf6d08 Merge bitcoin-core/secp256k1#1474: tests: restore scalar_mul test 79e094517c Merge bitcoin-core/secp256k1#1473: Fix typos 3dbfb48946 tests: restore scalar_mul test d77170a88d Fix typos e7053d065b release process: Add email step 429d21dc79 release process: Run sanity checks on release PR 42f8c51402 cmake: Add `SECP256K1_LATE_CFLAGS` configure option git-subtree-dir: src/secp256k1 git-subtree-split: 4b77fec67a80af41a538b6195317229c77101f87
- Loading branch information
Showing
27 changed files
with
357 additions
and
269 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
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,12 @@ | ||
# Add compile options to all targets added in the subdirectory. | ||
function(all_targets_compile_options dir options) | ||
get_directory_property(targets DIRECTORY ${dir} BUILDSYSTEM_TARGETS) | ||
separate_arguments(options) | ||
set(compiled_target_types STATIC_LIBRARY SHARED_LIBRARY OBJECT_LIBRARY EXECUTABLE) | ||
foreach(target ${targets}) | ||
get_target_property(type ${target} TYPE) | ||
if(type IN_LIST compiled_target_types) | ||
target_compile_options(${target} PRIVATE ${options}) | ||
endif() | ||
endforeach() | ||
endfunction() |
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 |
---|---|---|
@@ -1,4 +1,4 @@ | ||
# Release Process | ||
# Release process | ||
|
||
This document outlines the process for releasing versions of the form `$MAJOR.$MINOR.$PATCH`. | ||
|
||
|
@@ -14,31 +14,30 @@ This process also assumes that there will be no minor releases for old major rel | |
|
||
We aim to cut a regular release every 3-4 months, approximately twice as frequent as major Bitcoin Core releases. Every second release should be published one month before the feature freeze of the next major Bitcoin Core release, allowing sufficient time to update the library in Core. | ||
|
||
## Sanity Checks | ||
Perform these checks before creating a release: | ||
## Sanity checks | ||
Perform these checks when reviewing the release PR (see below): | ||
|
||
1. Ensure `make distcheck` doesn't fail. | ||
```shell | ||
./autogen.sh && ./configure --enable-dev-mode && make distcheck | ||
``` | ||
```shell | ||
./autogen.sh && ./configure --enable-dev-mode && make distcheck | ||
``` | ||
2. Check installation with autotools: | ||
```shell | ||
dir=$(mktemp -d) | ||
./autogen.sh && ./configure --prefix=$dir && make clean && make install && ls -RlAh $dir | ||
gcc -o ecdsa examples/ecdsa.c $(PKG_CONFIG_PATH=$dir/lib/pkgconfig pkg-config --cflags --libs libsecp256k1) -Wl,-rpath,"$dir/lib" && ./ecdsa | ||
``` | ||
```shell | ||
dir=$(mktemp -d) | ||
./autogen.sh && ./configure --prefix=$dir && make clean && make install && ls -RlAh $dir | ||
gcc -o ecdsa examples/ecdsa.c $(PKG_CONFIG_PATH=$dir/lib/pkgconfig pkg-config --cflags --libs libsecp256k1) -Wl,-rpath,"$dir/lib" && ./ecdsa | ||
``` | ||
3. Check installation with CMake: | ||
```shell | ||
dir=$(mktemp -d) | ||
build=$(mktemp -d) | ||
cmake -B $build -DCMAKE_INSTALL_PREFIX=$dir && cmake --build $build --target install && ls -RlAh $dir | ||
gcc -o ecdsa examples/ecdsa.c -I $dir/include -L $dir/lib*/ -l secp256k1 -Wl,-rpath,"$dir/lib",-rpath,"$dir/lib64" && ./ecdsa | ||
``` | ||
4. Use the [`check-abi.sh`](/tools/check-abi.sh) tool to ensure there are no unexpected ABI incompatibilities and that the version number and release notes accurately reflect all potential ABI changes. To run this tool, the `abi-dumper` and `abi-compliance-checker` packages are required. | ||
|
||
```shell | ||
tools/check-abi.sh | ||
``` | ||
```shell | ||
dir=$(mktemp -d) | ||
build=$(mktemp -d) | ||
cmake -B $build -DCMAKE_INSTALL_PREFIX=$dir && cmake --build $build --target install && ls -RlAh $dir | ||
gcc -o ecdsa examples/ecdsa.c -I $dir/include -L $dir/lib*/ -l secp256k1 -Wl,-rpath,"$dir/lib",-rpath,"$dir/lib64" && ./ecdsa | ||
``` | ||
4. Use the [`check-abi.sh`](/tools/check-abi.sh) tool to verify that there are no unexpected ABI incompatibilities and that the version number and the release notes accurately reflect all potential ABI changes. To run this tool, the `abi-dumper` and `abi-compliance-checker` packages are required. | ||
```shell | ||
tools/check-abi.sh | ||
``` | ||
|
||
## Regular release | ||
|
||
|
@@ -47,47 +46,48 @@ tools/check-abi.sh | |
* adding a section for the release (make sure that the version number is a link to a diff between the previous and new version), | ||
* removing the `[Unreleased]` section header, and | ||
* including an entry for `### ABI Compatibility` if it doesn't exist, | ||
* sets `_PKG_VERSION_IS_RELEASE` to `true` in `configure.ac`, and | ||
* if this is not a patch release | ||
* updates `_PKG_VERSION_*` and `_LIB_VERSION_*` in `configure.ac` and | ||
* sets `_PKG_VERSION_IS_RELEASE` to `true` in `configure.ac`, and, | ||
* if this is not a patch release, | ||
* updates `_PKG_VERSION_*` and `_LIB_VERSION_*` in `configure.ac`, and | ||
* updates `project(libsecp256k1 VERSION ...)` and `${PROJECT_NAME}_LIB_VERSION_*` in `CMakeLists.txt`. | ||
2. After the PR is merged, tag the commit and push it: | ||
2. Perform the [sanity checks](#sanity-checks) on the PR branch. | ||
3. After the PR is merged, tag the commit, and push the tag: | ||
``` | ||
RELEASE_COMMIT=<merge commit of step 1> | ||
git tag -s v$MAJOR.$MINOR.$PATCH -m "libsecp256k1 $MAJOR.$MINOR.$PATCH" $RELEASE_COMMIT | ||
git push [email protected]:bitcoin-core/secp256k1.git v$MAJOR.$MINOR.$PATCH | ||
``` | ||
3. Open a PR to the master branch with a commit (using message `"release cleanup: bump version after $MAJOR.$MINOR.$PATCH"`, for example) that | ||
4. Open a PR to the master branch with a commit (using message `"release cleanup: bump version after $MAJOR.$MINOR.$PATCH"`, for example) that | ||
* sets `_PKG_VERSION_IS_RELEASE` to `false` and increments `_PKG_VERSION_PATCH` and `_LIB_VERSION_REVISION` in `configure.ac`, | ||
* increments the `$PATCH` component of `project(libsecp256k1 VERSION ...)` and `${PROJECT_NAME}_LIB_VERSION_REVISION` in `CMakeLists.txt`, and | ||
* adds an `[Unreleased]` section header to the [CHANGELOG.md](../CHANGELOG.md). | ||
|
||
If other maintainers are not present to approve the PR, it can be merged without ACKs. | ||
4. Create a new GitHub release with a link to the corresponding entry in [CHANGELOG.md](../CHANGELOG.md). | ||
5. Create a new GitHub release with a link to the corresponding entry in [CHANGELOG.md](../CHANGELOG.md). | ||
6. Send an announcement email to the bitcoin-dev mailing list. | ||
|
||
## Maintenance release | ||
|
||
Note that bugfixes only need to be backported to releases for which no compatible release without the bug exists. | ||
Note that bug fixes need to be backported only to releases for which no compatible release without the bug exists. | ||
|
||
1. If there's no maintenance branch `$MAJOR.$MINOR`, create one: | ||
``` | ||
git checkout -b $MAJOR.$MINOR v$MAJOR.$MINOR.$((PATCH - 1)) | ||
git push [email protected]:bitcoin-core/secp256k1.git $MAJOR.$MINOR | ||
``` | ||
2. Open a pull request to the `$MAJOR.$MINOR` branch that | ||
* includes the bugfixes, | ||
* includes the bug fixes, | ||
* finalizes the release notes similar to a regular release, | ||
* increments `_PKG_VERSION_PATCH` and `_LIB_VERSION_REVISION` in `configure.ac` | ||
and the `$PATCH` component of `project(libsecp256k1 VERSION ...)` and `${PROJECT_NAME}_LIB_VERSION_REVISION` in `CMakeLists.txt` | ||
(with commit message `"release: bump versions for $MAJOR.$MINOR.$PATCH"`, for example). | ||
3. After the PRs are merged, update the release branch and tag the commit: | ||
3. Perform the [sanity checks](#sanity-checks) on the PR branch. | ||
4. After the PRs are merged, update the release branch, tag the commit, and push the tag: | ||
``` | ||
git checkout $MAJOR.$MINOR && git pull | ||
git tag -s v$MAJOR.$MINOR.$PATCH -m "libsecp256k1 $MAJOR.$MINOR.$PATCH" | ||
``` | ||
4. Push tag: | ||
``` | ||
git push [email protected]:bitcoin-core/secp256k1.git v$MAJOR.$MINOR.$PATCH | ||
``` | ||
5. Create a new GitHub release with a link to the corresponding entry in [CHANGELOG.md](../CHANGELOG.md). | ||
6. Open PR to the master branch that includes a commit (with commit message `"release notes: add $MAJOR.$MINOR.$PATCH"`, for example) that adds release notes to [CHANGELOG.md](../CHANGELOG.md). | ||
6. Create a new GitHub release with a link to the corresponding entry in [CHANGELOG.md](../CHANGELOG.md). | ||
7. Send an announcement email to the bitcoin-dev mailing list. | ||
8. Open PR to the master branch that includes a commit (with commit message `"release notes: add $MAJOR.$MINOR.$PATCH"`, for example) that adds release notes to [CHANGELOG.md](../CHANGELOG.md). |
Oops, something went wrong.