Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
6af89e8
Add build information to dependencies.
pmienk Mar 26, 2026
9c76fa3
Correct process chmod behavior.
pmienk Mar 26, 2026
3d0d1d2
Initial install vNext introduction, refactor common code for common use.
pmienk Mar 26, 2026
05c7bc5
Normalize bash shell error handling for all vNext processes and artif…
pmienk Mar 26, 2026
32fc195
Use less questionable practice to avoid error.
pmienk Mar 26, 2026
48b4bcc
Intermediary commit to track down gsl count behavior break.
pmienk Mar 27, 2026
38121c3
Correct canonicalize computation.
pmienk Mar 27, 2026
e4101e0
Address spacing concerns.
pmienk Mar 27, 2026
1243cea
Add retrieval constants conditional (overridable).
pmienk Mar 27, 2026
6c96155
Add flags/options emission.
pmienk Mar 28, 2026
ac47311
Add build instruction generation.
pmienk Mar 28, 2026
b1c1a47
Refactor to centralize build/source detection, encode into intermedia…
pmienk Mar 28, 2026
4b7de81
Add computation of included build/source functions.
pmienk Mar 29, 2026
db73f9e
Initial cut, source_archive.
pmienk Mar 29, 2026
701ff4e
Add source_github implementation, generalize source_archive to match.
pmienk Mar 30, 2026
ce0fbbc
Add temporary simulation of action, define build options, parse options.
pmienk Mar 31, 2026
3d636d5
Add FLAGS manipulation for release and debug, pending NDEBUG config f…
pmienk Mar 31, 2026
57ad50b
Reshape column-ish output, compute CONFIGURE_OPTIONS for toolchain.
pmienk Apr 1, 2026
20260f1
Rationalize cmake toolchain build variable handling with script build…
pmienk Apr 1, 2026
16f153b
Working cmake build.
pmienk Apr 2, 2026
6591fe6
Retarget for pmienk chain.
pmienk Apr 2, 2026
c0abdec
In progress CI rewrite.
pmienk Apr 2, 2026
c5f5528
Alter CONFIGURE_OPTIONS manipulation, remove build-config and build-l…
pmienk Apr 3, 2026
2181e4e
vNext ci generation with working GNU/Cmake builds.
pmienk Apr 5, 2026
77f4ed5
Refactor installation script to handle msvc build script generation, …
pmienk Apr 9, 2026
51728a4
CI coverage corrections.
pmienk Apr 9, 2026
64319fe
CMakePresets updated to vNext, installer support for install-presets.sh.
pmienk Apr 9, 2026
6c8298c
Correct colorization by reset after use.
pmienk Apr 9, 2026
c1d0c7d
Enable install-presets.sh generation.
pmienk Apr 10, 2026
63cddb3
Working vNext CI, presets.
pmienk Apr 10, 2026
8f0fe8c
Cleanup - removal of migrated or unused artifacts.
pmienk Apr 10, 2026
967df5a
Correct behavior on macos, colorize generate_artifacts.sh.
pmienk Apr 10, 2026
d5f1825
Correct workflow failure.
pmienk Apr 10, 2026
e1a0808
Change printf to recognize escape characters for render.
pmienk Apr 10, 2026
309006c
Revert pmienk stack usage.
pmienk Apr 10, 2026
63659f7
MSVC generation/github actions changes.
pmienk Apr 12, 2026
86d943b
Alter windows generation scripts.
pmienk Apr 12, 2026
91f75e1
Refine generate.
pmienk Apr 12, 2026
ad20675
Normalization of windows build process scripts.
pmienk Apr 12, 2026
f4fdfef
Add windows binary gsl.
pmienk Apr 13, 2026
2f5c34f
Partial normalization of generative scripts.
pmienk Apr 13, 2026
3aee888
Suppress double 'pause'.
pmienk Apr 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 34 additions & 56 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,159 +18,137 @@ jobs:
- os: ubuntu-latest
script: generate4.sh
branch: master
shell: bash

- os: macos-latest
script: generate4.sh
branch: master
shell: bash

- os: windows-latest
script: generate4.cmd
branch: master
shell: cmd

runs-on: ${{ matrix.os }}

steps:
- name: Checkout repository
- name: Checkout repository [build]
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-build'
repository: ${{ github.repository }}

- name: Checkout repository
- name: Checkout repository [system]
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-system'
repository: '${{ github.repository_owner }}/libbitcoin-system'
ref: ${{ matrix.branch }}

- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-protocol'
repository: '${{ github.repository_owner }}/libbitcoin-protocol'
ref: ${{ matrix.branch }}

- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-client'
repository: '${{ github.repository_owner }}/libbitcoin-client'
ref: ${{ matrix.branch }}

- name: Checkout repository
- name: Checkout repository [explorer]
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-explorer'
repository: '${{ github.repository_owner }}/libbitcoin-explorer'
ref: ${{ matrix.branch }}

- name: Checkout repository
- name: Checkout repository [network]
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-network'
repository: '${{ github.repository_owner }}/libbitcoin-network'
ref: ${{ matrix.branch }}

- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-consensus'
repository: '${{ github.repository_owner }}/libbitcoin-consensus'
ref: ${{ matrix.branch }}

- name: Checkout repository
- name: Checkout repository [database]
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-database'
repository: '${{ github.repository_owner }}/libbitcoin-database'
ref: ${{ matrix.branch }}

- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-blockchain'
repository: '${{ github.repository_owner }}/libbitcoin-blockchain'
ref: ${{ matrix.branch }}

- name: Checkout repository
- name: Checkout repository [node]
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-node'
repository: '${{ github.repository_owner }}/libbitcoin-node'
ref: ${{ matrix.branch }}

- name: Checkout repository
- name: Checkout repository [server]
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'libbitcoin-server'
repository: '${{ github.repository_owner }}/libbitcoin-server'
ref: ${{ matrix.branch }}

- name: Checkout repository
- name: Checkout repository [zeromq/gsl]
if: ${{ startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') }}
uses: actions/checkout@v6
with:
fetch-depth: 1
path: 'gsl'
repository: 'zeromq/gsl'

- name: Prepare toolchain [macos]
- name: Prepare platform toolchain [macos]
if: ${{ startsWith(matrix.os, 'macos') }}
run: |
brew install pcre

- name: Prepare toolchain [ubuntu]
- name: Prepare platform toolchain [ubuntu]
if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
sudo apt-get update
sudo apt-get install libpcre3-dev

- name: Prepare toolchain [windows]
- name: Prepare platform toolchain [windows]
if: ${{ startsWith(matrix.os, 'windows') }}
uses: microsoft/setup-msbuild@v3

- name: Build gsl [macos]
- name: Aquire gsl [macos]
if: ${{ startsWith(matrix.os, 'macos') }}
run: |
pushd "gsl/src"
CPPFLAGS="-I/opt/homebrew/include ${CPPFLAGS}" make --silent
sudo make install
popd
- name: Build gsl [ubuntu]

- name: Aquire gsl [ubuntu]
if: ${{ startsWith(matrix.os, 'ubuntu') }}
run: |
pushd "gsl/src"
make --silent
sudo make install
popd

- name: Retrieve gsl binary [windows]
- name: Aquire gsl [windows]
if: ${{ startsWith(matrix.os, 'windows') }}
shell: powershell
run: |
Invoke-WebRequest -Uri "https://github.com/imatix/gsl/releases/download/NuGet-4.1.0.1/gsl.exe" -OutFile "${{ github.workspace }}\libbitcoin-build\gsl.exe"
echo "${{ github.workspace }}\libbitcoin-build\bin\winx64" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8

- name: Execute generation [macos, ubuntu]
if: ${{ startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') }}
run: |
pushd libbitcoin-build
- name: Execute generation [bash]
if: ${{ startsWith(matrix.shell, 'bash') }}
shell: bash
working-directory: ${{ github.workspace }}/libbitcoin-build
run: >
./${{ matrix.script }}
popd

- name: Execute generation [windows]
if: ${{ startsWith(matrix.os, 'windows') }}
- name: Execute generation [cmd]
if: ${{ startsWith(matrix.shell, 'cmd') }}
shell: cmd
run: .\libbitcoin-build\${{ matrix.script }}
working-directory: ${{ github.workspace }}\libbitcoin-build
run: .\\${{ matrix.script }}

- name: Execute generation [powershell]
if: ${{ startsWith(matrix.shell, 'powershell') }}
shell: pwsh
working-directory: ${{ github.workspace }}\libbitcoin-build
run: .\\${{ matrix.script }}

Binary file added bin/winx64/gsl.exe
Binary file not shown.
97 changes: 70 additions & 27 deletions generate.cmd
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@echo off
setlocal EnableDelayedExpansion

REM ###########################################################################
REM Copyright (c) 2014-2026 libbitcoin developers (see COPYING).
REM
Expand All @@ -16,54 +15,98 @@ REM ###########################################################################
REM Do everything relative to this file location.
pushd %~dp0

set "GSL_EXE=gsl -q"

if "%~1"=="" (
echo Usage: %~nx0 configuration [targets...]
echo.
echo configuration required xml file
echo targets all targets to be copied
call :msg "Usage: %~nx0 configuration [targets...]"
call :msg ""
call :msg " configuration required xml file"
call :msg " targets all targets to be copied"
exit /b 1
)

set "configuration=%~1"
set "CONFIG=%~1"
shift

set "targets="
set "TARGETS="
call :populate_targets %*

set "names[1]=generate_artifacts"
set "names[2]=copy_statics"
set "names[3]=copy_projects"
set "names.length=3"

for /L %%i in (1,1,%names.length%) do (
echo gsl -q -script:"process\!names[%%i]!.cmd.gsl" "!configuration!"
gsl -q -script:"process\!names[%%i]!.cmd.gsl" "!configuration!"
if %errorlevel% neq 0 (
echo FAILURE: evaluating "process\!names[%%i]!.cmd.gsl".
exit /b %errorlevel%
set "NAMES[1]=generate_artifacts"
set "NAMES[2]=copy_statics"
set "NAMES[3]=copy_projects"
set "NAMES.length=3"

for /L %%i in (1,1,%NAMES.length%) do (
call :msg "!GSL_EXE! -q -script:'process\!NAMES[%%i]!.cmd.gsl' '!CONFIG!'"
!GSL_EXE! -q -script:"process\!NAMES[%%i]!.cmd.gsl" "!CONFIG!"
if %ERRORLEVEL% neq 0 (
echo FAILURE: evaluating "process\!NAMES[%%i]!.cmd.gsl".
exit /b %ERRORLEVEL%
)
)

REM Execute process scripts (explicit enumeration).
pushd process
for /L %%i in (1,1,%names.length%) do (
call !names[%%i]!.cmd !targets!
if %errorlevel% neq 0 (
exit /b %errorlevel%
for /L %%i in (1,1,%NAMES.length%) do (
call !NAMES[%%i]!.cmd !targets!
if %ERRORLEVEL% neq 0 (
exit /b %ERRORLEVEL%
)
)
popd

echo "Generation for configuration %CONFIGURATION% complete."
::pause
echo "Generation for configuration %CONFIG% complete."
REM Commented out until calling script is obsolete
REM if not defined CI (
REM pause
REM )

exit /b 0



:populate_targets
shift
:begin
:begin
if "%1"=="" goto done
set "targets=%targets% %~1"
set "TARGETS=!TARGETS! %~1"
shift
goto begin
:done
:done
exit /b 0

:msg_heading
call :msg "***************************************************************************"
call :msg "%~1"
call :msg "***************************************************************************"
exit /b %ERRORLEVEL%

:msg
if "%~1" == "" (
echo.
) else (
echo %~1
)
exit /b %ERRORLEVEL%

:msg_empty
echo.
exit /b %ERRORLEVEL%

:msg_verbose
if "!DISPLAY_VERBOSE!" == "yes" (
echo %~1
)
exit /b %ERRORLEVEL%

:msg_success
echo %~1
exit /b %ERRORLEVEL%

:msg_warn
echo %~1
exit /b %ERRORLEVEL%

:msg_error
echo %~1
exit /b %ERRORLEVEL%
Loading
Loading