Skip to content

Commit 0770db5

Browse files
committed
Merge #2967: [GA] Bump linux runners to 22.04/24.04
70161c1 Build: fix native cctools on ubuntu 22.04+ (Fuzzbawls) 5a2f84d CI: Use Boost 1.74 on Ubuntu 24.04 (Fuzzbawls) d33549d Build: remove cdrkit package from depends (Fuzzbawls) bbf77ed Build: Replace genisoimage with xorriso (Fuzzbawls) af6ad2c Build: Run libdmg-hfsplus's DMG tool in make deploy (Fuzzbawls) 544544a Depends: Fix Qt build on GCC 11 (Fuzzbawls) fe90085 [Build] Bump CI runner versions for linux (Fuzzbawls) Pull request description: GA will be removing Ubuntu 20.04 runners soon, so this updates the runners we use to accomodate the change. Some build/depends system changes were needed to achieve full compatibility, notably: - Drop the outdated cdrkit from macOS depends builds and use xorriso instead. - Patch Qt's build system to explicetly include `<limits>` where necessary for gcc 11. - bitcoin#20470 - Pin Boost to 1.74 on Ubuntu 24.04 as there are compile issues with 1.83. ACKs for top commit: 70161c1 Duddino: ACK 70161c1 Liquid369: ACK 70161c1 Tree-SHA512: 42c14975b436af758c72c7357d451d2edf729dab65ed328271c95c609bd1b1c819b30bfb050478674d6e61decbea421ea69bae4a8d01dc3e71454158d12d6240
2 parents d09af88 + 70161c1 commit 0770db5

File tree

12 files changed

+63
-160
lines changed

12 files changed

+63
-160
lines changed

.github/workflows/build-and-test.yml

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
env:
1414
SHELLCHECK_VERSION: v0.7.1
1515
LC_ALL: C
16-
runs-on: ubuntu-20.04
16+
runs-on: ubuntu-22.04
1717
defaults:
1818
run:
1919
shell: bash
@@ -79,7 +79,7 @@ jobs:
7979
CPPCHECK_BIN_DIR: ${{ github.workspace }}/.cppcheck
8080
CPPCHECK_BUILD_DIR: ${{ github.workspace }}/.ci-cppcheck
8181
LC_ALL: C
82-
runs-on: ubuntu-20.04
82+
runs-on: ubuntu-22.04
8383
defaults:
8484
run:
8585
shell: bash
@@ -150,16 +150,16 @@ jobs:
150150
matrix:
151151
config:
152152
- name: Linux
153-
os: ubuntu-20.04
153+
os: ubuntu-22.04
154154
python-version: '3.8'
155155
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
156156
cc: gcc
157157
cxx: g++
158158

159159
- name: Linux-latest
160-
os: ubuntu-22.04
160+
os: ubuntu-24.04
161161
python-version: '3.8'
162-
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
162+
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system1.74-dev libboost-filesystem1.74-dev libboost-chrono1.74-dev libboost-test1.74-dev libboost-thread1.74-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
163163
cc: gcc
164164
cxx: g++
165165

@@ -264,7 +264,7 @@ jobs:
264264
config:
265265
- name: x64-Linux
266266
id: Linux-x86_64-nodepends
267-
os: ubuntu-20.04
267+
os: ubuntu-22.04
268268
python-version: '3.8'
269269
packages: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
270270
unit_tests: true
@@ -274,9 +274,9 @@ jobs:
274274

275275
- name: x64-Linux-latest
276276
id: Linux-x86_64-nodepends-latest
277-
os: ubuntu-22.04
277+
os: ubuntu-24.04
278278
python-version: '3.8'
279-
packages: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
279+
packages: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system1.74-dev libboost-filesystem1.74-dev libboost-chrono1.74-dev libboost-test1.74-dev libboost-thread1.74-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
280280
unit_tests: true
281281
functional_tests: true
282282
goal: install
@@ -431,15 +431,15 @@ jobs:
431431
config:
432432
- name: x64-Linux
433433
id: Linux-x86_64-nodepends-tests
434-
os: ubuntu-20.04
434+
os: ubuntu-22.04
435435
python-version: '3.8'
436436
packages: python3-zmq libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev
437437

438438
- name: x64-Linux-latest
439439
id: Linux-x86_64-nodepends-latest-tests
440-
os: ubuntu-22.04
440+
os: ubuntu-24.04
441441
python-version: '3.8'
442-
packages: python3-zmq libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev
442+
packages: python3-zmq libevent-dev bsdmainutils libboost-system1.74-dev libboost-filesystem1.74-dev libboost-chrono1.74-dev libboost-test1.74-dev libboost-thread1.74-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev
443443

444444
- name: x64-macOS
445445
id: macOS-nodepends
@@ -505,35 +505,35 @@ jobs:
505505
matrix:
506506
config:
507507
- name: ARM 32-bit
508-
os: ubuntu-20.04
508+
os: ubuntu-22.04
509509
host: arm-linux-gnueabihf
510510
packages: g++-arm-linux-gnueabihf
511511

512512
- name: AARCH64
513-
os: ubuntu-20.04
513+
os: ubuntu-22.04
514514
host: aarch64-linux-gnu
515515
packages: g++-aarch64-linux-gnu
516516

517517
- name: Win64
518-
os: ubuntu-20.04
518+
os: ubuntu-22.04
519519
host: x86_64-w64-mingw32
520520
packages: nsis g++-mingw-w64-x86-64 wine-binfmt wine64
521521

522522
- name: 32-bit + dash
523-
os: ubuntu-20.04
523+
os: ubuntu-22.04
524524
host: i686-pc-linux-gnu
525525
packages: g++-multilib python3-zmq
526526

527527
- name: x86_64 Linux
528-
os: ubuntu-20.04
528+
os: ubuntu-22.04
529529
host: x86_64-unknown-linux-gnu
530530
packages: python3-zmq
531531
dep_opts: DEBUG=1
532532

533533
- name: macOS 10.12
534-
os: ubuntu-20.04
534+
os: ubuntu-22.04
535535
host: x86_64-apple-darwin16
536-
packages: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools
536+
packages: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools xorriso libtinfo5
537537
XCODE_VERSION: 11.3.1
538538
XCODE_BUILD_ID: 11C505
539539

@@ -612,7 +612,7 @@ jobs:
612612
config:
613613
- name: ARM 32-bit [GOAL:install]
614614
id: ARM32-build
615-
os: ubuntu-20.04
615+
os: ubuntu-22.04
616616
host: arm-linux-gnueabihf
617617
packages: python3 g++-arm-linux-gnueabihf
618618
unit_tests: false
@@ -624,7 +624,7 @@ jobs:
624624

625625
- name: AARCH64 [GOAL:install]
626626
id: ARM64-build
627-
os: ubuntu-20.04
627+
os: ubuntu-22.04
628628
host: aarch64-linux-gnu
629629
packages: g++-aarch64-linux-gnu
630630
unit_tests: false
@@ -634,7 +634,7 @@ jobs:
634634

635635
- name: Win64 [GOAL:deploy]
636636
id: Win64-build
637-
os: ubuntu-20.04
637+
os: ubuntu-22.04
638638
host: x86_64-w64-mingw32
639639
packages: nsis g++-mingw-w64-x86-64 wine-binfmt wine64
640640
unit_tests: false
@@ -645,7 +645,7 @@ jobs:
645645

646646
- name: x86_64 Linux [GOAL:install]
647647
id: Linux-x86_64-build
648-
os: ubuntu-20.04
648+
os: ubuntu-22.04
649649
host: x86_64-unknown-linux-gnu
650650
packages: python3-zmq
651651
unit_tests: true
@@ -655,9 +655,9 @@ jobs:
655655

656656
- name: macOS 10.12 [GOAL:deploy]
657657
id: macOS10.12-build
658-
os: ubuntu-20.04
658+
os: ubuntu-22.04
659659
host: x86_64-apple-darwin16
660-
packages: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools
660+
packages: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools xorriso libtinfo5
661661
XCODE_VERSION: 11.3.1
662662
XCODE_BUILD_ID: 11C505
663663
unit_tests: false
@@ -815,14 +815,14 @@ jobs:
815815
config:
816816
- name: x86_64 Linux [Full Functional Tests]
817817
id: Linux-x86_64-tests
818-
os: ubuntu-20.04
818+
os: ubuntu-22.04
819819
host: x86_64-unknown-linux-gnu
820820
packages: python3-zmq
821821
test_runner_extra: "--coverage --all --exclude feature_dbcrash"
822822

823823
- name: x86_64 Linux [Only functional tests on legacy pre-HD wallets]
824824
id: Linux-x86_64-legacy-tests
825-
os: ubuntu-20.04
825+
os: ubuntu-22.04
826826
host: x86_64-unknown-linux-gnu
827827
packages: python3-zmq
828828
test_runner_extra: "--legacywallet"

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ src/qt/test/moc*.cpp
9696
*.log
9797
*.trs
9898
*.dmg
99+
*.iso
99100

100101
*.json.h
101102
*.raw.h

Makefile.am

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ space := $(empty) $(empty)
3232
OSX_APP=PIVX-Qt.app
3333
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
3434
OSX_DMG = $(OSX_VOLNAME).dmg
35+
OSX_TEMP_ISO = $(OSX_DMG:.dmg=).temp.iso
3536
OSX_BACKGROUND_SVG=background.svg
3637
OSX_BACKGROUND_IMAGE=background.tiff
3738
OSX_BACKGROUND_IMAGE_DPIS=36 72
@@ -160,8 +161,12 @@ $(APP_DIST_DIR)/Applications:
160161

161162
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/PIVX-Qt
162163

163-
$(OSX_DMG): $(APP_DIST_EXTRAS)
164-
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist
164+
.INTERMEDIATE: $(OSX_TEMP_ISO)
165+
$(OSX_TEMP_ISO): $(APP_DIST_EXTRAS)
166+
$(XORRISOFS) -D -l -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -o $@ dist
167+
168+
$(OSX_DMG): $(OSX_TEMP_ISO)
169+
$(DMG) dmg "$<" "$@"
165170

166171
dpi%.$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_SVG)
167172
sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d $* -p $* | $(IMAGEMAGICK_CONVERT) - $@

configure.ac

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,8 @@ case $host in
594594
*)
595595
AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], [install_name_tool])
596596
AC_PATH_TOOL([OTOOL], [otool], [otool])
597-
AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs], [genisoimage])
597+
AC_PATH_PROGS([XORRISOFS], [xorrisofs], [xorrisofs])
598+
AC_PATH_PROGS([DMG], [dmg], [dmg])
598599
AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg], [rsvg-convert])
599600
AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert], [convert])
600601
AC_PATH_PROGS([TIFFCP], [tiffcp], [tiffcp])

contrib/gitian-descriptors/gitian-osx-signer.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ architectures:
77
- "amd64"
88
packages:
99
- "faketime"
10+
- "xorriso"
1011
remotes:
1112
- "url": "https://github.com/pivx-project/pivx-detached-sigs.git"
1213
"dir": "signature"
@@ -18,7 +19,7 @@ script: |
1819
WRAP_DIR=$HOME/wrapped
1920
mkdir -p ${WRAP_DIR}
2021
export PATH="$PWD":$PATH
21-
FAKETIME_PROGS="dmg genisoimage"
22+
FAKETIME_PROGS="dmg xorrisofs"
2223
2324
# Create global faketime wrappers
2425
for prog in ${FAKETIME_PROGS}; do
@@ -36,5 +37,5 @@ script: |
3637
tar -xf ${UNSIGNED}
3738
OSX_VOLNAME="$(cat osx_volname)"
3839
./detached-sig-apply.sh ${UNSIGNED} signature/osx
39-
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "${OSX_VOLNAME}" -no-pad -r -dir-mode 0755 -apple -o uncompressed.dmg signed-app
40+
${WRAP_DIR}/xorrisofs -D -l -V "${OSX_VOLNAME}" -no-pad -r -dir-mode 0755 -o uncompressed.dmg signed-app
4041
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}

contrib/gitian-descriptors/gitian-osx.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ packages:
2828
- "python3-dev"
2929
- "python3-setuptools"
3030
- "fonts-tuffy"
31+
- "xorriso"
3132
remotes:
3233
- "url": "https://github.com/pivx-project/pivx.git"
3334
"dir": "pivx"
@@ -38,9 +39,9 @@ script: |
3839
3940
WRAP_DIR=$HOME/wrapped
4041
HOSTS="x86_64-apple-darwin16"
41-
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests --disable-online-rust GENISOIMAGE=$WRAP_DIR/genisoimage"
42+
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests --disable-online-rust XORRISOFS=${WRAP_DIR}/xorrisofs DMG=$WRAP_DIR/dmg"
4243
FAKETIME_HOST_PROGS=""
43-
FAKETIME_PROGS="ar ranlib date dmg genisoimage"
44+
FAKETIME_PROGS="ar ranlib date dmg xorrisofs"
4445
4546
export QT_RCC_TEST=1
4647
export QT_RCC_SOURCE_DATE_OVERRIDE=1
@@ -143,21 +144,19 @@ script: |
143144
144145
make osx_volname
145146
make deploydir
146-
OSX_VOLNAME="$(cat osx_volname)"
147147
mkdir -p unsigned-app-${i}
148148
cp osx_volname unsigned-app-${i}/
149149
cp contrib/macdeploy/detached-sig-apply.sh unsigned-app-${i}
150150
cp contrib/macdeploy/detached-sig-create.sh unsigned-app-${i}
151-
cp ${BASEPREFIX}/${i}/native/bin/dmg ${BASEPREFIX}/${i}/native/bin/genisoimage unsigned-app-${i}
151+
cp ${BASEPREFIX}/${i}/native/bin/dmg unsigned-app-${i}
152152
cp ${BASEPREFIX}/${i}/native/bin/${i}-codesign_allocate unsigned-app-${i}/codesign_allocate
153153
cp ${BASEPREFIX}/${i}/native/bin/${i}-pagestuff unsigned-app-${i}/pagestuff
154154
mv dist unsigned-app-${i}
155155
pushd unsigned-app-${i}
156156
find . | sort | tar --mtime="$REFERENCE_DATETIME" --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-osx-unsigned.tar.gz
157157
popd
158158
159-
make deploy
160-
${WRAP_DIR}/dmg dmg "${OSX_VOLNAME}.dmg" ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
159+
make deploy OSX_DMG="${OUTDIR}/${DISTNAME}-osx-unsigned.dmg"
161160
162161
cd installed
163162
find . -name "lib*.la" -delete

contrib/macdeploy/README.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,15 @@ created using these tools. The build process has been designed to avoid includin
9292
SDK's files in Gitian's outputs. All interim tarballs are fully deterministic and may be freely
9393
redistributed.
9494

95-
`genisoimage` is used to create the initial DMG. It is not deterministic as-is, so it has been
96-
patched. A system `genisoimage` will work fine, but it will not be deterministic because
97-
the file-order will change between invocations. The patch can be seen here: [cdrkit-deterministic.patch](https://github.com/pivx-project/pivx/blob/master/depends/patches/native_cdrkit/cdrkit-deterministic.patch).
98-
No effort was made to fix this cleanly, so it likely leaks memory badly, however it's only used for
99-
a single invocation, so that's no real concern.
95+
[`xorrisofs`](https://www.gnu.org/software/xorriso/) is used to create the DMG.
10096

101-
`genisoimage` cannot compress DMGs, so afterwards, the DMG tool from the
102-
`libdmg-hfsplus` project is used to compress it. There are several bugs in this tool and its
103-
maintainer has seemingly abandoned the project.
97+
`xorrisofs` cannot compress DMGs, so afterwards, the DMG tool from the
98+
`libdmg-hfsplus` project is used to compress it. There are several bugs in this
99+
tool and its maintainer has seemingly abandoned the project.
104100

105101
The DMG tool has the ability to create DMGs from scratch as well, but this functionality is
106102
broken. Only the compression feature is currently used. Ideally, the creation could be fixed
107-
and `genisoimage` would no longer be necessary.
103+
and `xorrisofs` would no longer be necessary.
108104

109105
Background images and other features can be added to DMG files by inserting a
110106
`.DS_Store` during creation.

depends/packages/native_cdrkit.mk

Lines changed: 0 additions & 26 deletions
This file was deleted.

depends/packages/packages.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ darwin_native_packages = native_ds_store native_mac_alias
2020
$(host_arch)_$(host_os)_native_packages += native_b2
2121

2222
ifneq ($(build_os),darwin)
23-
darwin_native_packages += native_cctools native_cdrkit native_libdmg-hfsplus
23+
darwin_native_packages += native_cctools native_libdmg-hfsplus
2424
endif

depends/packages/qt.mk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ $(package)_dependencies=zlib
88
$(package)_linux_dependencies=freetype fontconfig libxcb
99
$(package)_build_subdir=qtbase
1010
$(package)_qt_libs=corelib network widgets gui plugins testlib concurrent
11-
$(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch fix_no_printer.patch fix_rcc_determinism.patch fix_riscv64_arch.patch fix_s390x_powerpc_mips_mipsel_architectures.patch xkb-default.patch no-xlib.patch fix_qpainter_non_determinism.patch
11+
$(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch fix_no_printer.patch fix_rcc_determinism.patch fix_riscv64_arch.patch fix_s390x_powerpc_mips_mipsel_architectures.patch xkb-default.patch no-xlib.patch fix_qpainter_non_determinism.patch fix_gcc_11.patch
1212

1313
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
1414
$(package)_qttranslations_sha256_hash=b36da7d93c3ab6fca56b32053bb73bc619c8b192bb89b74e3bcde2705f1c2a14
@@ -185,6 +185,7 @@ define $(package)_preprocess_cmds
185185
patch -p1 -i $($(package)_patch_dir)/fix_rcc_determinism.patch &&\
186186
patch -p1 -i $($(package)_patch_dir)/xkb-default.patch &&\
187187
patch -p1 -i $($(package)_patch_dir)/fix_qpainter_non_determinism.patch &&\
188+
patch -p1 -i $($(package)_patch_dir)/fix_gcc_11.patch &&\
188189
echo "!host_build: QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
189190
echo "!host_build: QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
190191
echo "!host_build: QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf && \

0 commit comments

Comments
 (0)