mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-01 08:44:02 +02:00
Merge #21375: guix: Misc feedback-based fixes + hier restructuring
7476b46f18guix: Build dmg as a static binary (Carl Dong)06d6cf6784depends: libdmg-hfsplus: Skip CMake RPATH patching (Carl Dong)65176ab573guix: Remove codesign_allocate+pagestuff from unsigned tarball (Carl Dong)ca85679eb4guix: Use clang-toolchain instead of clang (Carl Dong)1aec0eda8fguix: Fallback to local build for substitute-enabled Guix users (Carl Dong)1742f8e12dguix: Add early health check for guix-daemon (Carl Dong)c1ae726a13guix: More thoroughly control native toolchain (Carl Dong)39741128d3guix: Supply --link-profile (Carl Dong)d55a1056eeguix: Add troubleshooting documentation entries (Carl Dong)7f401c953fguix: Adapt guix-build to prelude, restructure hier (Carl Dong)4eccf063b2guix: Remove guix-build.sh filename extension (Carl Dong)7753357a7bguix: Add source-able bash prelude and utils (Carl Dong)e5b49a01f5guix: Create windeploy inside distsrc-* (Carl Dong)3e9982ab38contrib: Silence git-describe when looking for tag (Carl Dong)d5a71e9785guix: Use --cores instead of --max-jobs (Carl Dong) Pull request description: This PR addresses a few hiccups encountered by the brave souls who've been experimenting with the Guix scripts: - Resolves confusion between `--cores=` and `--max-jobs=` - `guix`'s `--cores=` actually corresponds to make's `--jobs=`, so let's just control `--cores=` with our overridable env var - `git-describe` will scream `fatal: no tag exactly matches '<hash>'` when looking for a tag, but we don't care, so silence that - `windeploy/unsigned` should be inside `distsrc-*` and created idempotently (sorry I know this one annoyed people) - Add troubleshooting documentation to `README.md` - Add early health check for `guix-daemon` in case user forgot to start a `guix-daemon` - Depending on configuration, a `--fallback` flag may be needed to tell Guix to not fail if substitutes fail but fallback to building locally - `codesign_allocate` and `pagestuff` are now unnecessary for codesigning as we're now using `signapple` A few robustness changes are also included: - We supply the `--link-profile` flag, as some Guix packages may expect the profile to be available under `$HOME/.guix-profile` - We now clear and manually set all toolchain-related env vars (e.g. `C*_INCLUDE_PATH`) ourselves, after patching a Qt::moc bug - We use the native `clang-toolchain` package for darwin builds instead of `clang`, lining up with all our other toolchain packages. Finally, we restructure the guix building hierarchy such that it looks something like: ``` guix-build-<short-hash-or-version-tag> ├── distsrc-<short-hash-or-version-tag>-${HOST} │ ├── contrib │ ├── depends │ ├── src │ └── ... ├── distsrc-<short-hash-or-version-tag>-... └── output ├── dist-archive │ └── bitcoin-<short-hash-or-version-tag>.tar.gz ├── *-linux-* │ ├── bitcoin-<short-hash-or-version-tag>-*-linux-*-debug.tar.gz │ └── bitcoin-<short-hash-or-version-tag>-*-linux-*.tar.gz ├── x86_64-apple-darwin18 │ ├── bitcoin-<short-hash-or-version-tag>-osx64.tar.gz │ ├── bitcoin-<short-hash-or-version-tag>-osx-unsigned.dmg │ └── bitcoin-<short-hash-or-version-tag>-osx-unsigned.tar.gz └── x86_64-w64-mingw32 ├── bitcoin-<short-hash-or-version-tag>-win64-debug.zip ├── bitcoin-<short-hash-or-version-tag>-win64-setup-unsigned.exe ├── bitcoin-<short-hash-or-version-tag>-win64.zip └── bitcoin-<short-hash-or-version-tag>-win-unsigned.tar.gz ``` Separating guix builds by their version identifier (basically namespacing them) allows us to change the layout in the future without worry about potential naming conflicts. ACKs for top commit: sipa: ACK7476b46f18laanwj: ACK7476b46f18Tree-SHA512: 0e899aa941aafdf552b2a7e8a08131ee9283180bbef7334439e2461a02aa7235ab7b9ca9c149b80fc5d0a9f4bbd35bc80fcee26197c0836ba8eaf2d86ffa0386
This commit is contained in:
@@ -141,8 +141,8 @@ build_id_string+=system_clang
|
||||
$(host_arch)_$(host_os)_id_string+=system_clang
|
||||
endif
|
||||
|
||||
build_id_string+=GUIX_ENVIRONMENT=$(GUIX_ENVIRONMENT)
|
||||
$(host_arch)_$(host_os)_id_string+=GUIX_ENVIRONMENT=$(GUIX_ENVIRONMENT)
|
||||
build_id_string+=GUIX_ENVIRONMENT=$(realpath $(GUIX_ENVIRONMENT))
|
||||
$(host_arch)_$(host_os)_id_string+=GUIX_ENVIRONMENT=$(realpath $(GUIX_ENVIRONMENT))
|
||||
|
||||
qrencode_packages_$(NO_QR) = $(qrencode_packages)
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ define $(package)_preprocess_cmds
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_cmake) -DCMAKE_C_FLAGS="$$($(1)_cflags) -Wl,--build-id=none" ..
|
||||
$($(package)_cmake) -DCMAKE_C_FLAGS="$$($(1)_cflags) -Wl,--build-id=none" -DCMAKE_SKIP_RPATH="ON" -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_FIND_LIBRARY_SUFFIXES=".a" ..
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
|
||||
@@ -10,7 +10,7 @@ $(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_no_printer.patch no
|
||||
$(package)_patches+= fix_android_qmake_conf.patch fix_android_jni_static.patch dont_hardcode_pwd.patch
|
||||
$(package)_patches+= drop_lrelease_dependency.patch no_sdk_version_check.patch
|
||||
$(package)_patches+= fix_qpainter_non_determinism.patch fix_lib_paths.patch fix_android_pch.patch
|
||||
$(package)_patches+= fix_bigsur_drawing.patch
|
||||
$(package)_patches+= fix_bigsur_drawing.patch qtbase-moc-ignore-gcc-macro.patch
|
||||
|
||||
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
|
||||
$(package)_qttranslations_sha256_hash=e1de58ed108b7e0a138815ea60fd46a2c4e1fc31396a707e5630e92de79c53de
|
||||
@@ -232,6 +232,7 @@ define $(package)_preprocess_cmds
|
||||
patch -p1 -i $($(package)_patch_dir)/no_sdk_version_check.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_lib_paths.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_bigsur_drawing.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/qtbase-moc-ignore-gcc-macro.patch && \
|
||||
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
|
||||
mkdir -p qtbase/mkspecs/macx-clang-linux &&\
|
||||
cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\
|
||||
|
||||
17
depends/patches/qt/qtbase-moc-ignore-gcc-macro.patch
Normal file
17
depends/patches/qt/qtbase-moc-ignore-gcc-macro.patch
Normal file
@@ -0,0 +1,17 @@
|
||||
The moc executable loops through headers on CPLUS_INCLUDE_PATH and stumbles
|
||||
on the GCC internal _GLIBCXX_VISIBILITY macro. Tell it to ignore it as it is
|
||||
not supposed to be looking there to begin with.
|
||||
|
||||
Upstream report: https://bugreports.qt.io/browse/QTBUG-83160
|
||||
|
||||
diff --git a/qtbase/src/tools/moc/main.cpp b/qtbase/src/tools/moc/main.cpp
|
||||
--- a/qtbase/src/tools/moc/main.cpp
|
||||
+++ b/qtbase/src/tools/moc/main.cpp
|
||||
@@ -188,6 +188,7 @@ int runMoc(int argc, char **argv)
|
||||
dummyVariadicFunctionMacro.arguments += Symbol(0, PP_IDENTIFIER, "__VA_ARGS__");
|
||||
pp.macros["__attribute__"] = dummyVariadicFunctionMacro;
|
||||
pp.macros["__declspec"] = dummyVariadicFunctionMacro;
|
||||
+ pp.macros["_GLIBCXX_VISIBILITY"] = dummyVariadicFunctionMacro;
|
||||
|
||||
QString filename;
|
||||
QString output;
|
||||
Reference in New Issue
Block a user