Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
67aa238
merge bitcoin#31100: remove dependency install instructions from win …
kwvg Oct 24, 2025
b443c14
partial bitcoin#30454: Introduce CMake-based build system
kwvg Oct 24, 2025
8d887c3
merge bitcoin#31626: Use base system's `sha256sum` utility on FreeBSD
kwvg Jan 9, 2025
e6d6d17
merge bitcoin#31840: add missing Darwin objcopy
kwvg Feb 11, 2025
86d0a27
merge bitcoin#30584: Make default `host` and `build` comparable
kwvg Aug 4, 2024
c8e27a2
merge bitcoin#31982: rename libmultiprocess repository
kwvg Oct 24, 2025
00350a0
merge bitcoin#32086: Shuffle depends instructions and recommend moder…
kwvg Oct 24, 2025
6020cdc
merge bitcoin#31998: patch around PlacementNew issue in capnp
kwvg Feb 7, 2025
d4bc0aa
merge bitcoin#32505: bump to latest config.guess and config.sub
kwvg May 14, 2025
8d90c3c
merge bitcoin#32568: use "mkdir -p" when installing xproto
kwvg May 20, 2025
44d32a3
merge bitcoin#32690: fix multiprocess build on OpenBSD (apply capnp p…
kwvg Jun 5, 2025
ee9e934
build: check against `$host` instead of `TARGET_OS` in stacktrace search
kwvg Nov 14, 2025
ca52975
merge bitcoin#32731: Build `qt` package for FreeBSD hosts
kwvg Oct 25, 2025
61f2a23
merge bitcoin#32716: Override host compilers for FreeBSD and OpenBSD
kwvg Jun 10, 2025
6e66ef8
merge bitcoin#32837: fix libevent `_WIN32_WINNT` usage
kwvg Jun 30, 2025
4e57d1a
merge bitcoin#32266: Avoid `warning: "_FORTIFY_SOURCE"` redefined for…
kwvg Apr 14, 2025
dcf67c7
merge bitcoin#30095: avoid using thread_local variable that has a des…
kwvg May 13, 2024
b7febbe
merge bitcoin#30137: Remove `--enable-threadlocal`
kwvg May 14, 2024
d5dffb6
merge bitcoin#33580: Use $(package)_file_name when downloading from t…
kwvg Oct 8, 2025
f97d3d6
fix: skip `EXPORTED_SYMBOLS` validation on ELF targets
kwvg Nov 14, 2025
8e79c7a
fix: allow `dbghelp.dll` for PE targets
kwvg Nov 14, 2025
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
2 changes: 1 addition & 1 deletion build-aux/m4/bitcoin_qt.m4
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QWindowsIntegrationPlugin], [-lqwindows])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QWindowsVistaStylePlugin], [-lqwindowsvistastyle])
AC_DEFINE([QT_QPA_PLATFORM_WINDOWS], [1], [Define this symbol if the qt platform is windows])
elif test "$TARGET_OS" = "linux"; then
elif test "$TARGET_OS" = "linux" -o "$TARGET_OS" = "freebsd"; then
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QXcbIntegrationPlugin], [-lqxcb])
AC_DEFINE([QT_QPA_PLATFORM_XCB], [1], [Define this symbol if the qt platform is xcb])
elif test "$TARGET_OS" = "darwin"; then
Expand Down
73 changes: 15 additions & 58 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -237,12 +237,6 @@ AC_ARG_ENABLE([lcov-branch-coverage],
[use_lcov_branch=yes],
[use_lcov_branch=no])

AC_ARG_ENABLE([threadlocal],
[AS_HELP_STRING([--enable-threadlocal],
[enable features that depend on the c++ thread_local keyword (currently just thread names in debug logs). (default is to enable if there is platform support)])],
[use_thread_local=$enableval],
[use_thread_local=auto])

AC_ARG_ENABLE([zmq],
[AS_HELP_STRING([--disable-zmq],
[disable ZMQ notifications])],
Expand Down Expand Up @@ -952,8 +946,8 @@ case $host in
*linux*)
TARGET_OS=linux
;;
*bsd*)
TARGET_OS=bsd
*freebsd*)
TARGET_OS=freebsd
;;
esac

Expand Down Expand Up @@ -1192,45 +1186,6 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
[AC_MSG_RESULT([no])]
)

if test "$use_thread_local" = "yes" || test "$use_thread_local" = "auto"; then
TEMP_LDFLAGS="$LDFLAGS"
LDFLAGS="$TEMP_LDFLAGS $PTHREAD_CFLAGS"
AC_MSG_CHECKING([for thread_local support])
AC_LINK_IFELSE([AC_LANG_SOURCE([
#include <thread>
static thread_local int foo = 0;
static void run_thread() { foo++;}
int main(){
for(int i = 0; i < 10; i++) { std::thread(run_thread).detach();}
return foo;
}
])],
[
case $host in
*mingw*)
dnl mingw32's implementation of thread_local has also been shown to behave
dnl erroneously under concurrent usage; see:
dnl https://gist.github.com/jamesob/fe9a872051a88b2025b1aa37bfa98605
AC_MSG_RESULT([no])
;;
*freebsd*)
dnl FreeBSD's implementation of thread_local is also buggy (per
dnl https://groups.google.com/d/msg/bsdmailinglist/22ncTZAbDp4/Dii_pII5AwAJ)
AC_MSG_RESULT([no])
;;
*)
AC_DEFINE([HAVE_THREAD_LOCAL], [1], [Define if thread_local is supported.])
AC_MSG_RESULT([yes])
;;
esac
],
[
AC_MSG_RESULT([no])
]
)
LDFLAGS="$TEMP_LDFLAGS"
fi

BACKTRACE_FLAGS=
BACKTRACE_LDFLAGS=
BACKTRACE_LIBS=
Expand All @@ -1240,17 +1195,19 @@ if test "$enable_stacktraces" != "no"; then
BACKTRACE_LIBS="$BACKTRACE_LIBS -ldbghelp"
else
AC_CHECK_HEADERS([execinfo.h], [
if test "$TARGET_OS" = "bsd"; then
AC_SEARCH_LIBS([backtrace], [execinfo], [
BACKTRACE_LIBS="$BACKTRACE_LIBS -lexecinfo"
], [
if test "$enable_stacktraces" = "yes"; then
AC_MSG_ERROR([--enable-stacktraces was specified but cannot locate libexecinfo])
fi
AC_MSG_WARN([cannot locate libexecinfo, stacktraces will be disabled])
enable_stacktraces=no
])
fi
case $host in
*bsd*)
AC_SEARCH_LIBS([backtrace], [execinfo], [
BACKTRACE_LIBS="$BACKTRACE_LIBS -lexecinfo"
], [
if test "$enable_stacktraces" = "yes"; then
AC_MSG_ERROR([--enable-stacktraces was specified but cannot locate libexecinfo])
fi
AC_MSG_WARN([cannot locate libexecinfo, stacktraces will be disabled])
enable_stacktraces=no
])
;;
esac
AX_CHECK_LINK_FLAG([-Wl,-export-dynamic], [BACKTRACE_LDFLAGS="$BACKTRACE_LDFLAGS -Wl,-export-dynamic"], [
AX_CHECK_LINK_FLAG([-rdynamic], [BACKTRACE_LDFLAGS="$BACKTRACE_LDFLAGS -rdynamic"], [
if test "$enable_stacktraces" = "yes"; then
Expand Down
6 changes: 4 additions & 2 deletions contrib/devtools/symbol-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,8 @@
'msvcrt.dll', # C standard library for MSVC
'SHELL32.dll', # shell API
'WS2_32.dll', # sockets
'bcrypt.dll',
'bcrypt.dll', # crypto API
'dbghelp.dll', # debugging routines
# bitcoin-qt only
'dwmapi.dll', # desktop window manager
'GDI32.dll', # graphics device interface
Expand Down Expand Up @@ -285,7 +286,8 @@ def check_ELF_ABI(binary) -> bool:
CHECKS = {
lief.EXE_FORMATS.ELF: [
('IMPORTED_SYMBOLS', check_imported_symbols),
('EXPORTED_SYMBOLS', check_exported_symbols),
# Dash: We export symbols aggressively to aid in backtrace generation
# ('EXPORTED_SYMBOLS', check_exported_symbols),
('LIBRARY_DEPENDENCIES', check_ELF_libraries),
('INTERPRETER_NAME', check_ELF_interpreter),
('ABI', check_ELF_ABI),
Expand Down
14 changes: 7 additions & 7 deletions depends/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ C_STANDARD ?= c11
CXX_STANDARD ?= c++20

BUILD = $(shell ./config.guess)
HOST ?= $(BUILD)
PATCHES_PATH = $(BASEDIR)/patches
BASEDIR = $(CURDIR)
HASH_LENGTH:=11
Expand All @@ -61,11 +60,6 @@ DOWNLOAD_RETRIES:=3
HOST_ID_SALT ?= salt
BUILD_ID_SALT ?= salt

host:=$(BUILD)
ifneq ($(HOST),)
host:=$(HOST)
endif

ifneq ($(DEBUG),)
release_type=debug
else
Expand All @@ -75,9 +69,15 @@ endif
base_build_dir=$(WORK_PATH)/build
base_staging_dir=$(WORK_PATH)/staging
base_download_dir=$(WORK_PATH)/download
canonical_host:=$(shell ./config.sub $(HOST))
build:=$(shell ./config.sub $(BUILD))

host:=$(build)
ifneq ($(HOST),)
host:=$(HOST)
endif
HOST ?= $(BUILD)
canonical_host:=$(shell ./config.sub $(HOST))

build_arch =$(firstword $(subst -, ,$(build)))
build_vendor=$(word 2,$(subst -, ,$(build)))
full_build_os:=$(subst $(build_arch)-$(build_vendor)-,,$(build))
Expand Down
161 changes: 97 additions & 64 deletions depends/README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,59 @@
### Usage
# Depends build

This is a system of building and caching dependencies necessary for building
Dash Core. It supports cross-compilation. For more details see [description.md](description.md),
as well as [packages.md](packages.md) for how to add packages.

## Usage

### Ubuntu & Debian

apt install automake bison cmake curl libtool make patch pkg-config python3 xz-utils

To build dependencies for the current arch+OS:

make

To build for another arch/OS:
### macOS

make HOST=host-platform-triplet
Install Xcode Command Line Tools and Homebrew Package Manager,
see [build-osx.md](../doc/build-osx.md).

For example:
brew install cmake make ninja

make HOST=x86_64-w64-mingw32 -j4
To build dependencies for the current arch+OS:

gmake

### FreeBSD

pkg install bash

Skip the following packages if you don't intend to use the GUI and will build with [`NO_QT=1`](#dependency-options):

pkg install bison ninja pkgconf python3

To build dependencies for the current arch+OS:

gmake

### NetBSD

pkgin install bash gmake

To build dependencies for the current arch+OS:

gmake

### OpenBSD

pkg_add bash gmake gtar

To build dependencies for the current arch+OS:

gmake

## Configuring Dash Core

**Dash Core's `configure` script by default will ignore the depends output.** In
order for it to pick up libraries, tools, and settings from the depends build,
Expand All @@ -23,6 +66,53 @@ created. To use it during compilation:
The default install prefix when using `config.site` is `--prefix=depends/<host-platform-triplet>`,
so depends build outputs will be installed in that location.

## Dependency Options

The following can be set when running make: `make FOO=bar`

- `SOURCES_PATH`: Downloaded sources will be placed here
- `BASE_CACHE`: Built packages will be placed here
- `SDK_PATH`: Path where SDKs can be found (used by macOS)
- `FALLBACK_DOWNLOAD_PATH`: If a source file can't be fetched, try here before giving up
- `C_STANDARD`: Set the C standard version used. Defaults to `c11`.
- `CXX_STANDARD`: Set the C++ standard version used. Defaults to `c++20`.
- `NO_BOOST`: Don't download/build/cache Boost
- `NO_LIBEVENT`: Don't download/build/cache Libevent
- `NO_QT`: Don't download/build/cache Qt and its dependencies
- `NO_QR`: Don't download/build/cache packages needed for enabling qrencode
- `NO_ZMQ`: Don't download/build/cache packages needed for enabling ZeroMQ
- `NO_WALLET`: Don't download/build/cache libs needed to enable the wallet
- `NO_BDB`: Don't download/build/cache BerkeleyDB
- `NO_SQLITE`: Don't download/build/cache SQLite
- `NO_UPNP`: Don't download/build/cache packages needed for enabling UPnP
- `NO_NATPMP`: Don't download/build/cache packages needed for enabling NAT-PMP
- `NO_USDT`: Don't download/build/cache packages needed for enabling USDT tracepoints
- `ALLOW_HOST_PACKAGES`: Packages that are missed in dependencies (due to `NO_*` option or
build script logic) are searched for among the host system packages using
`pkg-config`. It allows building with packages of other (newer) versions
- `MULTIPROCESS`: build libmultiprocess (experimental, requires cmake)
- `DEBUG`: Disable some optimizations and enable more runtime checking
- `HOST_ID_SALT`: Optional salt to use when generating host package ids
- `BUILD_ID_SALT`: Optional salt to use when generating build package ids
- `LOG`: Use file-based logging for individual packages. During a package build its log file
resides in the `depends` directory, and the log file is printed out automatically in case
of build error. After successful build log files are moved along with package archives
- `LTO`: Enable options needed for LTO. Does not add `-flto` related options to *FLAGS.
- `NO_HARDEN=1`: Don't use hardening options when building packages

If some packages are not built, for example `make NO_WALLET=1`, the appropriate
options will be passed to Dash Core's configure. In this case, `--disable-wallet`.

## Cross compilation

To build for another arch/OS:

make HOST=host-platform-triplet

For example:

make HOST=x86_64-w64-mingw32 -j4

Common `host-platform-triplet`s for cross compilation are:

- `i686-pc-linux-gnu` for Linux 32 bit
Expand All @@ -41,13 +131,7 @@ Common `host-platform-triplet`s for cross compilation are:
- `aarch64-linux-android` for Android ARM 64 bit
- `x86_64-linux-android` for Android x86 64 bit

The paths are automatically configured and no other options are needed unless targeting [Android](../doc/build-android.md).

### Install the required dependencies: Ubuntu & Debian

#### Common

apt install automake bison cmake curl libtool make patch pkg-config python3 xz-utils
The paths are automatically configured and no other options are needed.

#### For macOS cross compilation

Expand All @@ -60,7 +144,7 @@ For more information, see [SDK Extraction](../contrib/macdeploy/README.md#sdk-ex

#### For Win64 cross compilation

- see [build-windows.md](../doc/build-windows.md#cross-compilation-for-ubuntu-and-windows-subsystem-for-linux)
apt install g++-mingw-w64-x86-64-posix

#### For linux (including i386, ARM) cross compilation

Expand Down Expand Up @@ -88,60 +172,9 @@ For linux S390X cross compilation:

sudo apt-get install g++-s390x-linux-gnu binutils-s390x-linux-gnu

### Install the required dependencies: FreeBSD

pkg install bash

### Install the required dependencies: OpenBSD

pkg_add bash gtar

### Dependency Options

The following can be set when running make: `make FOO=bar`

- `SOURCES_PATH`: Downloaded sources will be placed here
- `BASE_CACHE`: Built packages will be placed here
- `SDK_PATH`: Path where SDKs can be found (used by macOS)
- `FALLBACK_DOWNLOAD_PATH`: If a source file can't be fetched, try here before giving up
- `C_STANDARD`: Set the C standard version used. Defaults to `c11`.
- `CXX_STANDARD`: Set the C++ standard version used. Defaults to `c++20`.
- `NO_BOOST`: Don't download/build/cache Boost
- `NO_LIBEVENT`: Don't download/build/cache Libevent
- `NO_QT`: Don't download/build/cache Qt and its dependencies
- `NO_QR`: Don't download/build/cache packages needed for enabling qrencode
- `NO_ZMQ`: Don't download/build/cache packages needed for enabling ZeroMQ
- `NO_WALLET`: Don't download/build/cache libs needed to enable the wallet
- `NO_BDB`: Don't download/build/cache BerkeleyDB
- `NO_SQLITE`: Don't download/build/cache SQLite
- `NO_UPNP`: Don't download/build/cache packages needed for enabling UPnP
- `NO_NATPMP`: Don't download/build/cache packages needed for enabling NAT-PMP
- `NO_USDT`: Don't download/build/cache packages needed for enabling USDT tracepoints
- `ALLOW_HOST_PACKAGES`: Packages that are missed in dependencies (due to `NO_*` option or
build script logic) are searched for among the host system packages using
`pkg-config`. It allows building with packages of other (newer) versions
- `MULTIPROCESS`: build libmultiprocess (experimental, requires cmake)
- `DEBUG`: Disable some optimizations and enable more runtime checking
- `HOST_ID_SALT`: Optional salt to use when generating host package ids
- `BUILD_ID_SALT`: Optional salt to use when generating build package ids
- `LOG`: Use file-based logging for individual packages. During a package build its log file
resides in the `depends` directory, and the log file is printed out automatically in case
of build error. After successful build log files are moved along with package archives
- `LTO`: Enable options needed for LTO. Does not add `-flto` related options to *FLAGS.
- `NO_HARDEN=1`: Don't use hardening options when building packages

If some packages are not built, for example `make NO_WALLET=1`, the appropriate
options will be passed to Dash Core's configure. In this case, `--disable-wallet`.

### Additional targets

download: run 'make download' to fetch all sources without building them
download-osx: run 'make download-osx' to fetch all sources needed for macOS builds
download-win: run 'make download-win' to fetch all sources needed for win builds
download-linux: run 'make download-linux' to fetch all sources needed for linux builds


### Other documentation

- [description.md](description.md): General description of the depends system
- [packages.md](packages.md): Steps for adding packages
6 changes: 5 additions & 1 deletion depends/builders/freebsd.mk
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
build_freebsd_CC=clang
build_freebsd_CXX=clang++

build_freebsd_SHA256SUM = shasum -a 256
build_freebsd_SHA256SUM = sha256sum
build_freebsd_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o

Comment on lines +4 to +6
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

Ensure sha256sum is available on FreeBSD builders (or add fallback).

FreeBSD base ships sha256, not sha256sum. If Guix/Coreutils isn’t present on the FreeBSD builder, -c verification will fail.

Option A: verify sha256sum exists in your FreeBSD build env.
Option B: switch back to a portable tool or add a guarded fallback.

Based on learnings.


🏁 Script executed:

# Quick check on builder
command -v sha256sum || command -v shasum || command -v sha256

Length of output: 0


I need to examine the codebase context to properly assess this issue. Let me gather more information about the build environment setup and how SHA256 tools are handled across different builders.




🏁 Script executed:

#!/bin/bash
# Show the freebsd.mk file content around lines 4-6
fd -t f 'freebsd.mk' -x cat {}

echo "---"
echo "Checking other builder files for SHA256SUM patterns:"
fd -t f '\.mk$' -path '*/builders/*' -x grep -l 'SHA256SUM' {}

Length of output: 1345


🏁 Script executed:

#!/bin/bash
# Compare SHA256SUM definitions across builders
echo "=== SHA256SUM definitions in all builders ==="
fd -t f '\.mk$' -path '*/builders/*' -x grep -n 'SHA256SUM' {}

echo ""
echo "=== Checking for sha256/shasum/sha256sum references in build system ==="
rg -n 'sha256sum|shasum' --type-list | head -20
fd -t f \( -name '*.mk' -o -name '*.sh' -o -name 'Makefile' \) -x rg -l 'sha256sum|shasum' {}

Length of output: 908


Let me fix the syntax errors and properly search the codebase:




🏁 Script executed:

#!/bin/bash
# Find all builder files
echo "=== All builder .mk files ==="
find depends/builders -name '*.mk' -type f

echo ""
echo "=== SHA256SUM definitions across all builders ==="
grep -n 'SHA256SUM' depends/builders/*.mk

Length of output: 733


🏁 Script executed:

#!/bin/bash
# Search for actual usage of sha256sum in the codebase
echo "=== References to SHA256SUM variable ==="
rg -n 'SHA256SUM' 

echo ""
echo "=== Direct sha256sum tool references ==="
rg -n 'sha256sum' --type sh --type mk

echo ""
echo "=== FreeBSD specific SHA256 references ==="
rg -n 'sha256' depends/builders/freebsd.mk

Length of output: 8305



---

🌐 Web query:

```web
FreeBSD base system sha256sum vs sha256 command availability

💡 Result:

Short answer: FreeBSD historically provided a sha256 command (from the base's libmd/OpenSSL utilities) while the GNU-style sha256sum was not in base until more recently. Recent FreeBSD releases (e.g. FreeBSD 14 series) include a sha256sum manpage and the utility is available in base; older releases relied on sha256 / shasum (from ports/perl/coreutils) or openssl dgst. Check your installed release to see which is present (which sha256 sha256sum shasum). [1][2][3]

Sources:

  • FreeBSD sha256/sha256sum manpage (FreeBSD 14.3 manpath). [1]
  • Discussion/StackOverflow: FreeBSD provides md5/sha* utilities via base libraries (libmd / OpenSSL). [2]
  • Project/commit discussion noting use of sha256sum in FreeBSD base (example: bitcoin depends change). [3]




🏁 Script executed:

#!/bin/bash
# Search for FreeBSD version specs or build environment docs
echo "=== Looking for FreeBSD version references ==="
rg -n 'freebsd.*14|freebsd.*13|freebsd.*12' -i

echo ""
echo "=== Looking for Guix or build environment setup ==="
fd -t f 'guix*' -o 'Dockerfile*' -o 'manifest*' 
find . -name 'guix*' -o -name 'Dockerfile*' -o -name '*manifest*' 2>/dev/null | head -20

echo ""
echo "=== Check depends documentation ==="
ls -la depends/*.md depends/*.txt 2>/dev/null || echo "No docs found"

echo ""
echo "=== Check for environment/requirements files ==="
fd -t f 'requirements|README|INSTALL' depends/

Length of output: 1524


🏁 Script executed:

#!/bin/bash
# Check git history for sha256sum change in freebsd.mk
echo "=== Recent changes to freebsd.mk ==="
git log --oneline -n 20 depends/builders/freebsd.mk 2>/dev/null || echo "Git history unavailable"

echo ""
echo "=== Full git blame for SHA256SUM line ==="
git blame depends/builders/freebsd.mk 2>/dev/null | grep -A1 -B1 'SHA256SUM' || echo "Git blame unavailable"

Length of output: 660





🏁 Script executed:

#!/bin/bash
# Check what was the prior SHA256SUM setting before the recent change
echo "=== Prior state of freebsd.mk before sha256sum change ==="
git show 8d887c34abd~1:depends/builders/freebsd.mk 2>/dev/null | head -20 || echo "Cannot show prior state"

echo ""
echo "=== Commit message for the sha256sum change ==="
git log -1 --format=fuller 8d887c34abd 2>/dev/null || echo "Cannot show commit"

echo ""
echo "=== Check if there's any FreeBSD version pinning in build setup ==="
cat doc/build-freebsd.md 2>/dev/null || echo "No build-freebsd.md"

Length of output: 4388


🏁 Script executed:

#!/bin/bash
# Check Guix manifest for FreeBSD or sha256sum/coreutils
echo "=== Guix manifest content ==="
cat contrib/guix/manifest.scm 2>/dev/null | head -100

echo ""
echo "=== Search for sha256sum in Guix files ==="
rg 'sha256sum|coreutils' contrib/guix/ contrib/containers/guix/

Length of output: 5635


Revert sha256sum to portable shasum -a 256 or ensure coreutils availability.

This is a regression: the recent change (commit 8d887c3, Jan 9) switched FreeBSD from shasum -a 256 to sha256sum. However, FreeBSD 12.3 does not include sha256sum in base, and your build documentation explicitly targets FreeBSD 12.3. The prior shasum -a 256 was portable across BSD variants.

Either revert to shasum -a 256 (the documented target won't have sha256sum without coreutils), ensure coreutils is a declared FreeBSD build dependency, or update documentation to require FreeBSD 14+.

🤖 Prompt for AI Agents
In depends/builders/freebsd.mk around lines 4 to 6, the change replaced the
portable "shasum -a 256" with "sha256sum", which breaks builds on the documented
FreeBSD 12.3 target since sha256sum isn't in base; either revert
build_freebsd_SHA256SUM to use "shasum -a 256", or add a small portability fix:
detect availability of sha256sum and otherwise use "shasum -a 256" (or declare
coreutils as a required dependency and update the FreeBSD build docs to require
coreutils or a newer FreeBSD); implement one of these options and update the
README/docs to reflect the chosen requirement.

# freebsd host on freebsd builder: override freebsd host preferences.
freebsd_CC = clang
freebsd_CXX = clang++
6 changes: 5 additions & 1 deletion depends/builders/openbsd.mk
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
build_openbsd_CC = clang
build_openbsd_CXX = clang++

build_openbsd_SHA256SUM = sha256
build_openbsd_SHA256SUM = sha256 -r
build_openbsd_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -o

build_openbsd_TAR = gtar
# openBSD touch doesn't understand -h
build_openbsd_TOUCH = touch -m -t 200001011200

# openbsd host on openbsd builder: override openbsd host preferences.
openbsd_CC = clang
openbsd_CXX = clang++
Loading
Loading