Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 .github/workflows/build-container.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ env:
jobs:
build:
name: Build container
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
outputs:
tag: ${{ steps.prepare.outputs.tag }}
repo: ${{ steps.prepare.outputs.repo }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-depends.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ on:
jobs:
build-depends:
name: Build depends
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
outputs:
key: ${{ steps.restore.outputs.cache-primary-key }}
container:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-src.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ on:
jobs:
build-src:
name: Build source
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
container:
image: ${{ inputs.container-path }}
options: --user root
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release_docker_hub.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
jobs:
release:
name: Release to Docker Hub
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
image: "ubuntu:jammy"
image: "ubuntu:noble"

variables:
DOCKER_DRIVER: overlay2
Expand Down
28 changes: 7 additions & 21 deletions contrib/containers/ci/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:jammy
FROM ubuntu:noble

# Needed to prevent tzdata hanging while expecting user input
ENV DEBIAN_FRONTEND="noninteractive" TZ="Europe/London"
Expand All @@ -7,16 +7,9 @@ ENV DEBIAN_FRONTEND="noninteractive" TZ="Europe/London"
# (zlib1g-dev is needed for the Qt host binary builds, but should not be used by target binaries)
ENV APT_ARGS="-y --no-install-recommends --no-upgrade"

# Install packages for i386 on amd64 hosts, then install common packages
# Install common packages
RUN set -ex; \
apt-get update && \
if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
dpkg --add-architecture i386 && \
apt-get update && \
apt-get install $APT_ARGS \
g++-multilib \
wine32; \
fi; \
apt-get install $APT_ARGS \
autotools-dev \
automake \
Expand Down Expand Up @@ -138,12 +131,12 @@ RUN set -ex; \
mkdir -p /opt/shellcheck && tar -xf /tmp/shellcheck.tar.xz -C /opt/shellcheck --strip-components=1 && rm /tmp/shellcheck.tar.xz
ENV PATH="/opt/shellcheck:${PATH}"

# Add user with specified (or default) user/group ids and setup configuration files
ARG USER_ID=1000
ARG GROUP_ID=1000
# Setup unprivileged user and configuration files
ARG USER_ID=1000 \
GROUP_ID=1000
RUN set -ex; \
groupadd -g ${GROUP_ID} dash; \
useradd -u ${USER_ID} -g dash -s /bin/bash -m -d /home/dash dash; \
groupmod -g ${GROUP_ID} -n dash ubuntu; \
usermod -u ${USER_ID} -md /home/dash -l dash ubuntu; \
mkdir -p /home/dash/.config/gdb; \
echo "add-auto-load-safe-path /usr/lib/llvm-${LLVM_VERSION}/lib" | tee /home/dash/.config/gdb/gdbinit; \
chown ${USER_ID}:${GROUP_ID} -R /home/dash
Expand All @@ -156,7 +149,6 @@ RUN apt-get update && apt-get install $APT_ARGS \
g++-mingw-w64-x86-64 \
jq \
libz-dev \
libncurses5 \
nsis \
python3-zmq \
parallel \
Expand All @@ -166,12 +158,6 @@ RUN apt-get update && apt-get install $APT_ARGS \
zip \
&& rm -rf /var/lib/apt/lists/*

# This is a hack. It is needed because gcc-multilib and g++-multilib are conflicting with g++-arm-linux-gnueabihf. This is
# due to gcc-multilib installing the following symbolic link, which is needed for -m32 support. However, this causes
# arm builds to also have the asm folder implicitly in the include search path. This is kind of ok, because the asm folder
# for arm has precedence.
RUN ln -s x86_64-linux-gnu/asm /usr/include/asm

# Make sure std::thread and friends is available
RUN \
update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix; \
Expand Down
19 changes: 7 additions & 12 deletions contrib/containers/deploy/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
FROM phusion/baseimage:jammy-1.0.4
FROM phusion/baseimage:noble-1.0.0
LABEL maintainer="Dash Developers <[email protected]>"
LABEL description="Dockerised DashCore, built from CI"

ARG USER_ID
ARG GROUP_ID

ENV HOME="/home/dash"

# add user with specified (or default) user/group ids
ENV USER_ID="${USER_ID:-1000}"
ENV GROUP_ID="${GROUP_ID:-1000}"
RUN groupadd -g ${GROUP_ID} dash && \
useradd -u ${USER_ID} -g dash -s /bin/bash -m -d /home/dash dash && \
mkdir /home/dash/.dashcore && \
# Setup unprivileged user
ARG USER_ID=1000 \
GROUP_ID=1000
RUN groupmod -g ${GROUP_ID} -n dash ubuntu; \
usermod -u ${USER_ID} -md /home/dash -l dash ubuntu; \
mkdir -p /home/dash/.dashcore && \
chown ${USER_ID}:${GROUP_ID} -R /home/dash

COPY bin/* /usr/local/bin/
Expand Down
16 changes: 8 additions & 8 deletions contrib/containers/deploy/Dockerfile.GitHubActions.Dispatch
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.3

FROM --platform=$BUILDPLATFORM ubuntu:jammy as builder
FROM --platform=$BUILDPLATFORM ubuntu:noble as builder
RUN apt-get update && \
apt-get -y install --no-install-recommends \
automake \
Expand Down Expand Up @@ -42,7 +42,7 @@ RUN mkdir built-target && \
"linux/amd64") cp depends/x86_64-pc-linux-gnu/bin/dash* /home/dash/built-target ;; \
esac

FROM ubuntu:jammy
FROM ubuntu:noble
LABEL maintainer="Dash Developers <[email protected]>"
LABEL description="Dockerised DashCore"

Expand All @@ -52,12 +52,12 @@ ARG TAG

ENV HOME="/home/dash"

# add user with specified (or default) user/group ids
ENV USER_ID="${USER_ID:-1000}"
ENV GROUP_ID="${GROUP_ID:-1000}"
RUN groupadd -g ${GROUP_ID} dash && \
useradd -u ${USER_ID} -g dash -s /bin/bash -m -d /home/dash dash && \
mkdir /home/dash/.dashcore && \
# Setup unprivileged user
ARG USER_ID=1000 \
GROUP_ID=1000
RUN groupmod -g ${GROUP_ID} -n dash ubuntu; \
usermod -u ${USER_ID} -md /home/dash -l dash ubuntu; \
mkdir -p /home/dash/.dashcore && \
chown ${USER_ID}:${GROUP_ID} -R /home/dash

RUN apt-get update && \
Expand Down
14 changes: 7 additions & 7 deletions contrib/containers/deploy/Dockerfile.GitHubActions.Release
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:jammy
FROM ubuntu:noble
LABEL maintainer="Dash Developers <[email protected]>"
LABEL description="Dockerised DashCore"

Expand All @@ -9,12 +9,12 @@ ARG GITHUB_REPOSITORY

ENV HOME /home/dash

# add user with specified (or default) user/group ids
ENV USER_ID ${USER_ID:-1000}
ENV GROUP_ID ${GROUP_ID:-1000}
RUN groupadd -g ${GROUP_ID} dash && \
useradd -u ${USER_ID} -g dash -s /bin/bash -m -d /home/dash dash && \
mkdir /home/dash/.dashcore && \
# Setup unprivileged user
ARG USER_ID=1000 \
GROUP_ID=1000
RUN groupmod -g ${GROUP_ID} -n dash ubuntu; \
usermod -u ${USER_ID} -md /home/dash -l dash ubuntu; \
mkdir -p /home/dash/.dashcore && \
chown ${USER_ID}:${GROUP_ID} -R /home/dash

RUN apt-get update && \
Expand Down
2 changes: 1 addition & 1 deletion contrib/containers/develop/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# syntax = edrevo/dockerfile-plus

FROM ubuntu:jammy
FROM ubuntu:noble

INCLUDE+ ci/Dockerfile

Expand Down
20 changes: 8 additions & 12 deletions contrib/containers/guix/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# to use 'docker compose run guix_ubuntu' to drop into an
# interactive shell

FROM ubuntu:jammy
FROM ubuntu:noble

SHELL ["/bin/bash", "-c"]

Expand Down Expand Up @@ -65,15 +65,11 @@ RUN groupadd --system guixbuild && \
"guixbuilder${i}" ; \
done

# Create unprivileged user
# Setup unprivileged user and grant it passwordless sudo
ARG USER_ID=1000 \
GROUP_ID=1000 \
USERNAME=ubuntu
RUN groupadd -g ${GROUP_ID} ${USERNAME} && \
useradd -u ${USER_ID} -g ${USERNAME} -s /bin/bash -m -d /home/${USERNAME} ${USERNAME}

# Grant it passwordless admin permissions
RUN usermod -aG sudo ${USERNAME} && \
GROUP_ID=1000
RUN groupmod -g ${GROUP_ID} ubuntu; \
usermod -u ${USER_ID} -aG sudo ubuntu; \
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# Copy required files to container
Expand All @@ -85,16 +81,16 @@ COPY --from=docker_root ./scripts/setup-sdk /usr/local/bin/setup-sdk

# Create directories for mounting to save/restore cache and grant necessary permissions
RUN mkdir -p \
/home/${USERNAME}/.cache \
/home/ubuntu/.cache \
/src/dash/depends/{built,sources,work}; \
chown -R ${USER_ID}:${GROUP_ID} \
/home/${USERNAME}/.cache \
/home/ubuntu/.cache \
/src;

WORKDIR "/src/dash"

# Switch to unprivileged context
USER ${USERNAME}
USER ubuntu

# Set entrypoint to copied file
ENTRYPOINT ["/usr/local/bin/entrypoint"]
2 changes: 2 additions & 0 deletions depends/packages/qt.mk
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ $(package)_patches += memory_resource.patch
$(package)_patches += clang_18_libpng.patch
$(package)_patches += utc_from_string_no_optimize.patch
$(package)_patches += windows_lto.patch
$(package)_patches += zlib-timebits64.patch

$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
$(package)_qttranslations_sha256_hash=5b94d1a11b566908622fcca2f8b799744d2f8a68da20be4caa5953ed63b10489
Expand Down Expand Up @@ -257,6 +258,7 @@ define $(package)_preprocess_cmds
patch -p1 -i $($(package)_patch_dir)/fast_fixed_dtoa_no_optimize.patch && \
patch -p1 -i $($(package)_patch_dir)/guix_cross_lib_path.patch && \
patch -p1 -i $($(package)_patch_dir)/windows_lto.patch && \
patch -p1 -i $($(package)_patch_dir)/zlib-timebits64.patch && \
mkdir -p qtbase/mkspecs/macx-clang-linux &&\
cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\
cp -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \
Expand Down
31 changes: 31 additions & 0 deletions depends/patches/qt/zlib-timebits64.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
From a566e156b3fa07b566ddbf6801b517a9dba04fa3 Mon Sep 17 00:00:00 2001
From: Mark Adler <[email protected]>
Date: Sat, 29 Jul 2023 22:13:09 -0700
Subject: [PATCH] Avoid compiler complaints if _TIME_BITS defined when building
zlib.

zlib does not use time_t, so _TIME_BITS is irrelevant. However it
may be defined anyway as part of a sledgehammer indiscriminately
applied to all builds.

From https://github.com/madler/zlib/commit/a566e156b3fa07b566ddbf6801b517a9dba04fa3.patch
---
qtbase/src/3rdparty/zlib/src/gzguts.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/qtbase/src/3rdparty/zlib/src/gzguts.h b/qtbase/src/3rdparty/zlib/src/gzguts.h
index e23f831f5..f9375047e 100644
--- a/qtbase/src/3rdparty/zlib/src/gzguts.h
+++ b/qtbase/src/3rdparty/zlib/src/gzguts.h
@@ -26,9 +26,8 @@
# ifndef _LARGEFILE_SOURCE
# define _LARGEFILE_SOURCE 1
# endif
-# ifdef _FILE_OFFSET_BITS
-# undef _FILE_OFFSET_BITS
-# endif
+# undef _FILE_OFFSET_BITS
+# undef _TIME_BITS
#endif

#ifdef HAVE_HIDDEN
5 changes: 5 additions & 0 deletions test/sanitizer_suppressions/ubsan
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,8 @@ shift-base:streams.h
shift-base:test/fuzz/crypto_diff_fuzz_chacha20.cpp
shift-base:util/bip32.cpp
vptr:bls/bls.h

# -fsanitize=float-cast-overflow suppressions
# ===============================
# See QTBUG-133261
float-cast-overflow:qRound
Loading