Skip to content

Commit 0fcc156

Browse files
Merge #6339: chore: release v21.1.1
d627a6e chore: bump version to 21.1.1 (pasta) 5f9700c docs: release notes for v21.1.1 (pasta) 1c00726 Merge #6277: chore: add builder key for kittywhiskers (pasta) a2bc0f1 Merge #6290: chore: update pasta gpg key to reflect new subkeys (pasta) 167608c Merge #6338: ci: attest results of guix builds (pasta) 6fb4e49 Merge #6197: ci: always build guix, save artifacts (pasta) c0ca93c Merge #6340: fix: make 6336 compile in v21.1.x branch, using older CHECK_NONFATAL functionality (pasta) bb96df4 Merge #6336: fix: rpc getblock and getblockstats for blocks with withdrawal transactions (asset unlock) (pasta) 8e70262 Merge #6131: feat: make a support of Qt app to show Platform transfer Tx (pasta) 80ed279 Merge #6328: backport: bitcoin#30131, bitcoin#23258, bitcoin#30504 - fix bild for Ubuntu 24.10 + clang (pasta) bd772fb Merge #6229: fix: `creditOutputs` in AssetLock tx json output should be an array of objects, not debug strings (pasta) 9bf39a9 Merge #6222: fix: adjust payee predictions after mn_rr activation, add tests (pasta) 87bebfc Merge #6219: fix: correct is_snapshot_cs in VerifyDB (pasta) a4e6b8a Merge #6208: fix: persist coinjoin denoms options from gui over restarts (pasta) Pull request description: ## Issue being fixed or feature implemented See commits, backports, release notes, version bump ## What was done? ## How Has This Been Tested? ## Breaking Changes ## Checklist: _Go over all the following points, and put an `x` in all the boxes that apply._ - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added or updated relevant unit/integration/functional/e2e tests - [ ] I have made corresponding changes to the documentation - [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: knst: utACK d627a6e kwvg: ACK d627a6e UdjinM6: utACK d627a6e ogabrielides: utACK d627a6e Tree-SHA512: cde7e40760e16e9f48da8149c3742d18a34029b057405e4d55b87110da96acbcd19b47280451dd7b5ad1ccfc91fde655452cf5f0f0d1e01a41b4c685337c64b8
2 parents 5d286a5 + d627a6e commit 0fcc156

31 files changed

+562
-146
lines changed

.github/workflows/guix-build.yml

+73-31
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
name: Guix Build
22

3+
permissions:
4+
packages: write
5+
id-token: write
6+
attestations: write
7+
38
on:
4-
pull_request:
5-
types: [ labeled ]
6-
workflow_dispatch:
9+
pull_request_target:
10+
push:
711

812
jobs:
9-
build:
10-
runs-on: [ "self-hosted", "linux", "x64", "ubuntu-core" ]
11-
if: contains(github.event.pull_request.labels.*.name, 'guix-build')
12-
timeout-minutes: 480
13+
build-image:
14+
runs-on: ubuntu-latest
15+
outputs:
16+
image-tag: ${{ steps.prepare.outputs.image-tag }}
17+
repo-name: ${{ steps.prepare.outputs.repo-name }}
1318
steps:
1419
- name: Checkout
1520
uses: actions/checkout@v4
@@ -22,37 +27,72 @@ jobs:
2227
uses: docker/setup-buildx-action@v3
2328

2429
- name: Commit variables
25-
id: dockerfile
30+
id: prepare
2631
run: |
2732
echo "hash=$(sha256sum ./dash/contrib/containers/guix/Dockerfile | cut -d ' ' -f1)" >> $GITHUB_OUTPUT
2833
echo "host_user_id=$(id -u)" >> $GITHUB_OUTPUT
2934
echo "host_group_id=$(id -g)" >> $GITHUB_OUTPUT
35+
BRANCH_NAME=$(echo "${GITHUB_REF##*/}" | tr '[:upper:]' '[:lower:]')
36+
REPO_NAME=$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')
37+
echo "::set-output name=image-tag::${BRANCH_NAME}"
38+
echo "::set-output name=repo-name::${REPO_NAME}"
39+
40+
- name: Login to GitHub Container Registry
41+
uses: docker/login-action@v3
42+
with:
43+
registry: ghcr.io
44+
username: ${{ github.actor }}
45+
password: ${{ secrets.GITHUB_TOKEN }}
3046

3147
- name: Build Docker image
32-
uses: docker/build-push-action@v5
48+
uses: docker/build-push-action@v6
3349
with:
3450
context: ${{ github.workspace }}/dash
3551
build-args: |
36-
USER_ID=${{ steps.dockerfile.outputs.host_user_id }}
37-
GROUP_ID=${{ steps.dockerfile.outputs.host_group_id }}
52+
USER_ID=${{ steps.prepare.outputs.host_user_id }}
53+
GROUP_ID=${{ steps.prepare.outputs.host_group_id }}
3854
build-contexts: |
3955
docker_root=${{ github.workspace }}/dash/contrib/containers/guix
4056
file: ./dash/contrib/containers/guix/Dockerfile
41-
load: true
42-
tags: guix_ubuntu:latest
43-
cache-from: type=gha
44-
cache-to: type=gha,mode=max
57+
push: true
58+
tags: |
59+
ghcr.io/${{ steps.prepare.outputs.repo-name }}/dashcore-guix-builder:${{ steps.prepare.outputs.image-tag }}
60+
ghcr.io/${{ steps.prepare.outputs.repo-name }}/dashcore-guix-builder:latest
61+
cache-from: type=registry,ref=ghcr.io/${{ steps.prepare.outputs.repo-name }}/dashcore-guix-builder:latest
62+
cache-to: type=inline,mode=max
63+
64+
build:
65+
needs: build-image
66+
# runs-on: [ "self-hosted", "linux", "x64", "ubuntu-core" ]
67+
runs-on: ubuntu-latest
68+
# if: ${{ contains(github.event.pull_request.labels.*.name, 'guix-build') }}
69+
strategy:
70+
matrix:
71+
build_target: [x86_64-linux-gnu, arm-linux-gnueabihf, aarch64-linux-gnu, riscv64-linux-gnu, x86_64-w64-mingw32, x86_64-apple-darwin, arm64-apple-darwin]
72+
73+
timeout-minutes: 480
74+
steps:
75+
- name: Checkout
76+
uses: actions/checkout@v4
77+
with:
78+
ref: ${{ github.event.pull_request.head.sha }}
79+
path: dash
80+
fetch-depth: 0
4581

46-
- name: Restore Guix cache and depends
82+
- name: Cache Guix and depends
4783
id: guix-cache-restore
48-
uses: actions/cache/restore@v3
84+
uses: actions/cache@v3
4985
with:
5086
path: |
5187
${{ github.workspace }}/.cache
5288
${{ github.workspace }}/dash/depends/built
5389
${{ github.workspace }}/dash/depends/sources
5490
${{ github.workspace }}/dash/depends/work
55-
key: ${{ runner.os }}-guix
91+
/gnu/store
92+
key: ${{ runner.os }}-guix-${{ matrix.build_target }}-${{ github.sha }}
93+
restore-keys: |
94+
${{ runner.os }}-guix-${{ matrix.build_target }}
95+
${{ runner.os }}-guix-
5696
5797
- name: Create .cache folder if missing
5898
if: steps.guix-cache-restore.outputs.cache-hit != 'true'
@@ -67,8 +107,8 @@ jobs:
67107
-v ${{ github.workspace }}/dash:/src/dash \
68108
-v ${{ github.workspace }}/.cache:/home/ubuntu/.cache \
69109
-w /src/dash \
70-
guix_ubuntu:latest && \
71-
docker exec guix-daemon bash -c '/usr/local/bin/guix-start'
110+
ghcr.io/${{ needs.build-image.outputs.repo-name }}/dashcore-guix-builder:${{ needs.build-image.outputs.image-tag }} && \
111+
docker exec guix-daemon bash -c 'HOSTS=${{ matrix.build_target }} /usr/local/bin/guix-start'
72112
73113
- name: Ensure build passes
74114
run: |
@@ -77,17 +117,19 @@ jobs:
77117
exit 1
78118
fi
79119
80-
- name: Save Guix cache and depends
81-
id: guix-cache-save
82-
uses: actions/cache/save@v3
120+
- name: Compute SHA256 checksums
121+
continue-on-error: true # It will complain on depending on only some hosts
122+
run: |
123+
HOSTS=${{ matrix.build_target }} ./dash/contrib/containers/guix/scripts/guix-check ${{ github.workspace }}/dash
124+
125+
- name: Upload build artifacts
126+
uses: actions/upload-artifact@v4
83127
with:
128+
name: guix-artifacts-${{ matrix.build_target }}
84129
path: |
85-
${{ github.workspace }}/.cache
86-
${{ github.workspace }}/dash/depends/built
87-
${{ github.workspace }}/dash/depends/sources
88-
${{ github.workspace }}/dash/depends/work
89-
key: ${{ steps.guix-cache-restore.outputs.cache-primary-key }}
130+
${{ github.workspace }}/dash/guix-build*/output/${{ matrix.build_target }}/
90131
91-
- name: Compute SHA256 checksums
92-
run: |
93-
./dash/contrib/containers/guix/scripts/guix-check ${{ github.workspace }}/dash
132+
- name: Attest build provenance
133+
uses: actions/attest-build-provenance@v1
134+
with:
135+
subject-path: ${{ github.workspace }}/dash/guix-build*/output/${{ matrix.build_target }}/*

configure.ac

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ AC_PREREQ([2.69])
22
dnl Don't forget to push a corresponding tag when updating any of _CLIENT_VERSION_* numbers
33
define(_CLIENT_VERSION_MAJOR, 21)
44
define(_CLIENT_VERSION_MINOR, 1)
5-
define(_CLIENT_VERSION_BUILD, 0)
5+
define(_CLIENT_VERSION_BUILD, 1)
66
define(_CLIENT_VERSION_IS_RELEASE, true)
77
define(_COPYRIGHT_YEAR, 2024)
88
define(_COPYRIGHT_HOLDERS,[The %s developers])
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
3+
mDMEZZs7ABYJKwYBBAHaRw8BAQdAxvpS5zLLn9agjKg1bpMyHtKROTC8SLTl3AZm
4+
b4DKXJq0P0tpdHR5d2hpc2tlcnMgVmFuIEdvZ2ggPDYzMTg5NTMxK2t3dmdAdXNl
5+
cnMubm9yZXBseS5naXRodWIuY29tPoiaBBMWCABCAhsDBQkDw7iAAheAAhkBFiEE
6+
lpGHqOdP5AqKSAZ0MM0MBl5cSq0FAmbpq2gFCwkIBwIGFQoJCAsCBRYCAwEAAh4F
7+
AAoJEDDNDAZeXEqt6D4BALOgavknWXzg3zyBI4rzqS2Qq1qrDl0AVohpYQYJrUZ6
8+
AP92LejS8DyeR4NZuUeP4gCxL/0wOydz6LkmEefaTvNiD7RIS2l0dHl3aGlza2Vy
9+
cyBWYW4gR29naCA8NjMxODk1MzEra2l0dHl3aGlza2Vyc0B1c2Vycy5ub3JlcGx5
10+
LmdpdGh1Yi5jb20+iJcEExYIAD8CGwMFCQPDuIACF4AWIQSWkYeo50/kCopIBnQw
11+
zQwGXlxKrQUCZumraQULCQgHAgYVCgkICwIFFgIDAQACHgUACgkQMM0MBl5cSq3B
12+
zAD/T6dYqUtzIuZjIIBXisBMISNTHQxRv1KH3txuN+lCW/UBAIMV6Y41aIqbGnI2
13+
ADm+WYFsnABokj+mT5GZBuqfEYQEtEdLaXR0eXdoaXNrZXJzIFZhbiBHb2doIDw2
14+
MDk4OTc0LWtpdHR5d2hpc2tlcnNAdXNlcnMubm9yZXBseS5naXRsYWIuY29tPoiX
15+
BBMWCAA/AhsDBQkDw7iAAheAFiEElpGHqOdP5AqKSAZ0MM0MBl5cSq0FAmbpq2kF
16+
CwkIBwIGFQoJCAsCBRYCAwEAAh4FAAoJEDDNDAZeXEqt2D0BAIZOVRQgvP6DZeXc
17+
ONNZcFGp3mrbumudjsoCCiDTS/PZAP48LFSFBB8NBcXgjj1edktii9AN3JYyW+yF
18+
60uLMN4NAbQvS2l0dHl3aGlza2VycyBWYW4gR29naCA8a2l0dHl3aGlza2Vyc0Bk
19+
YXNoLm9yZz6IlwQTFgoAPwIbAwUJA8O4gAIXgBYhBJaRh6jnT+QKikgGdDDNDAZe
20+
XEqtBQJm6atpBQsJCAcCBhUKCQgLAgUWAgMBAAIeBQAKCRAwzQwGXlxKrSHfAQCU
21+
Tu3DPWNWj8weotN4NKoShfsMrIEEeKqv1ykLc1K2lwD8CwEBUG69Pl8NFWMElvam
22+
6wu9OWtOKp9xBkFS+CjM8A60NktpdHR5d2hpc2tlcnMgVmFuIEdvZ2ggPGt3dmdA
23+
dXNlcnMubm9yZXBseS5naXRodWIuY29tPoiXBBMWCgA/AhsDBQkDw7iAAheAFiEE
24+
lpGHqOdP5AqKSAZ0MM0MBl5cSq0FAmbpq2kFCwkIBwIGFQoJCAsCBRYCAwEAAh4F
25+
AAoJEDDNDAZeXEqt4YAA/22FrVJGDOeZVYRNLjFL34+YjXEyTO5dACjZ8jV2/uHD
26+
AQDB9osQDYr/lDfuMMSPZhufAryHIWBJp/e8AwHwJ65aALg4BGWbOwASCisGAQQB
27+
l1UBBQEBB0DCbqznf45arlTBDkpS76ineVKFabpOa3vohGKIKJ+5FAMBCAeIfgQY
28+
FggAJhYhBJaRh6jnT+QKikgGdDDNDAZeXEqtBQJlmzsAAhsMBQkDw7iAAAoJEDDN
29+
DAZeXEqtUvEBALBrYJ7jRRCwBMBTG2doiFupibGQh2vN46gKSrXzYSG9AQDIXcCJ
30+
moGvMWiiBz71Wr9JZ7/ZV6rcRE1YXfM06G6gCQ==
31+
=gtD4
32+
-----END PGP PUBLIC KEY BLOCK-----

0 commit comments

Comments
 (0)