mirror of
https://github.com/feather-wallet/feather.git
synced 2025-01-09 04:19:57 +00:00
Merge updates to upstream feather repository
This commit is contained in:
commit
ac3d07257d
35 changed files with 559 additions and 256 deletions
11
.github/workflows/guix
vendored
Normal file
11
.github/workflows/guix
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
abi <abi/4.0>,
|
||||
include <tunables/global>
|
||||
|
||||
# https://bugs.launchpad.net/ubuntu/+source/guix/+bug/2064115
|
||||
|
||||
profile guix /usr/bin/guix flags=(unconfined) {
|
||||
userns,
|
||||
|
||||
# Site-specific additions and overrides. See local/README for details.
|
||||
include if exists <local/guix>
|
||||
}
|
21
.github/workflows/guix.yml
vendored
21
.github/workflows/guix.yml
vendored
|
@ -4,7 +4,7 @@ on: [push, pull_request]
|
|||
|
||||
jobs:
|
||||
cache-sources:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
|
@ -20,7 +20,7 @@ jobs:
|
|||
run: make -C contrib/depends download
|
||||
|
||||
build-guix:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [cache-sources]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
@ -52,9 +52,20 @@ jobs:
|
|||
path: contrib/depends/sources
|
||||
key: sources-${{ hashFiles('contrib/depends/packages/*') }}
|
||||
- name: install dependencies
|
||||
run: sudo apt update; sudo apt -y install guix git ca-certificates
|
||||
run: sudo apt update; sudo apt -y install guix git ca-certificates apparmor-utils
|
||||
- name: fix apparmor
|
||||
run: sudo cp .github/workflows/guix /etc/apparmor.d/guix; sudo /etc/init.d/apparmor reload; sudo aa-enforce guix || echo "failed"
|
||||
- name: purge apparmor
|
||||
run: sudo apt purge apparmor
|
||||
- name: build
|
||||
run: SUBSTITUTE_URLS='http://ci.guix.gnu.org' HOSTS="${{ matrix.toolchain.target }}" ./contrib/guix/guix-build
|
||||
run: SUBSTITUTE_URLS='http://bordeaux.guix.gnu.org' HOSTS="${{ matrix.toolchain.target }}" ./contrib/guix/guix-build
|
||||
- name: virustotal scan
|
||||
if: matrix.toolchain.target == 'x86_64-w64-mingw32'
|
||||
uses: crazy-max/ghaction-virustotal@v4
|
||||
with:
|
||||
vt_api_key: ${{ secrets.VT_API_KEY }}
|
||||
files: |
|
||||
guix/guix-build-*/build/distsrc-*/build/bin/feather.exe
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.toolchain.target }}
|
||||
|
@ -63,7 +74,7 @@ jobs:
|
|||
guix/guix-build-*/logs/${{ matrix.toolchain.target }}/*
|
||||
|
||||
bundle-logs:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-24.04
|
||||
needs: [build-guix]
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
cmake_minimum_required(VERSION 3.18)
|
||||
|
||||
project(feather
|
||||
VERSION "2.6.7"
|
||||
VERSION "2.6.8"
|
||||
DESCRIPTION "A free Monero desktop wallet"
|
||||
LANGUAGES CXX C ASM
|
||||
)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package=boost
|
||||
$(package)_version=1.84.0
|
||||
$(package)_download_path=https://downloads.sourceforge.net/project/boost/boost/$($(package)_version)/
|
||||
$(package)_file_name=$(package)_$(subst .,_,$($(package)_version)).tar.bz2
|
||||
$(package)_sha256_hash=cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454
|
||||
$(package)_version=1.85.0
|
||||
$(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/$($(package)_version)/source/
|
||||
$(package)_file_name=$(package)_$(subst .,_,$($(package)_version)).tar.gz
|
||||
$(package)_sha256_hash=be0d91732d5b0cc6fbb275c7939974457e79b54d6f07ce2e3dfdd68bef883b0b
|
||||
$(package)_dependencies=libiconv
|
||||
$(package)_patches=disable_addr2line.patch
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package=libgpg-error
|
||||
$(package)_version=1.48
|
||||
$(package)_version=1.49
|
||||
$(package)_download_path=https://www.gnupg.org/ftp/gcrypt/libgpg-error/
|
||||
$(package)_file_name=libgpg-error-$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=89ce1ae893e122924b858de84dc4f67aae29ffa610ebf668d5aa539045663d6f
|
||||
$(package)_file_name=libgpg-error-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=e59cc3ced0ae86f49073e2f2344676919a82fc5033716bee7232f6f778158792
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_build_opts=CFLAGS="-fPIE"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package=sodium
|
||||
$(package)_version=1.0.19
|
||||
package=libsodium
|
||||
$(package)_version=1.0.20
|
||||
$(package)_download_path=https://download.libsodium.org/libsodium/releases/
|
||||
$(package)_file_name=libsodium-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=018d79fe0a045cca07331d37bd0cb57b2e838c51bc48fd837a1472e50068bbea
|
||||
$(package)_sha256_hash=ebb65ef6ca439333c2bb41a0c1990587288da07f6c7fd07cb3a18cc18d30ce19
|
||||
$(package)_patches += fix-blake2b-symbol-naming.patch
|
||||
|
||||
define $(package)_set_vars
|
||||
|
@ -11,6 +11,7 @@ define $(package)_set_vars
|
|||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
rm -rf builds/msvc &&\
|
||||
cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub build-aux/ && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix-blake2b-symbol-naming.patch && \
|
||||
autoconf
|
|
@ -1,9 +1,9 @@
|
|||
package=native_qt
|
||||
$(package)_version=6.7.0
|
||||
$(package)_version=6.7.2
|
||||
$(package)_download_path=https://download.qt.io/official_releases/qt/6.7/$($(package)_version)/submodules
|
||||
$(package)_suffix=everywhere-src-$($(package)_version).tar.xz
|
||||
$(package)_file_name=qtbase-$($(package)_suffix)
|
||||
$(package)_sha256_hash=11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254
|
||||
$(package)_sha256_hash=c5f22a5e10fb162895ded7de0963328e7307611c688487b5d152c9ee64767599
|
||||
$(package)_qt_libs=corelib network widgets gui plugins testlib
|
||||
$(package)_patches = dont_hardcode_pwd.patch
|
||||
$(package)_patches += fast_fixed_dtoa_no_optimize.patch
|
||||
|
@ -13,16 +13,16 @@ $(package)_patches += rcc_hardcode_timestamp.patch
|
|||
$(package)_patches += root_CMakeLists.txt
|
||||
|
||||
$(package)_qttools_file_name=qttools-$($(package)_suffix)
|
||||
$(package)_qttools_sha256_hash=c8da6b239e82fe1e23465cbf0936c0da5a334438d3fb433e19c503cbb1abee7b
|
||||
$(package)_qttools_sha256_hash=58e855ad1b2533094726c8a425766b63a04a0eede2ed85086860e54593aa4b2a
|
||||
|
||||
$(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
|
||||
$(package)_qtsvg_sha256_hash=1518f40e08ff5e6153a6e26e5b95b033413ac143b70795dc1317e7f73ebf922d
|
||||
$(package)_qtsvg_sha256_hash=fb0d1286a35be3583fee34aeb5843c94719e07193bdf1d4d8b0dc14009caef01
|
||||
|
||||
$(package)_qtmultimedia_file_name=qtmultimedia-$($(package)_suffix)
|
||||
$(package)_qtmultimedia_sha256_hash=f394bae49e3d4ee6a3b0c9e1e5e31bb870cc04a4b44f4cda3615baf7bd078c70
|
||||
$(package)_qtmultimedia_sha256_hash=8ef835115acb9a1d3d2c9f23cfacb43f2c537e3786a8ab822299a2a7765651d3
|
||||
|
||||
$(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
|
||||
$(package)_qtshadertools_sha256_hash=3e13f967c62f0815c901e754cbc472a2e19170da0c7a505230d559615f7998af
|
||||
$(package)_qtshadertools_sha256_hash=edfa34c0ac8c00fcaa949df1d8e7a77d89dadd6386e683ce6c3e3b117e2f7cc1
|
||||
|
||||
$(package)_extra_sources += $($(package)_qttools_file_name)
|
||||
$(package)_extra_sources += $($(package)_qtsvg_file_name)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package=openssl
|
||||
$(package)_version=3.2.1
|
||||
$(package)_version=3.3.1
|
||||
$(package)_download_path=https://www.openssl.org/source
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39
|
||||
$(package)_sha256_hash=777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_env=AR="$($(package)_ar)" ARFLAGS=$($(package)_arflags) RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)"
|
||||
|
@ -49,7 +49,8 @@ $(package)_config_opts_x86_64_freebsd=BSD-x86_64
|
|||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
sed -i.old 's|crypto ssl apps util tools fuzz providers doc|crypto ssl util tools providers|' build.info
|
||||
sed -i.old 's|crypto ssl apps util tools fuzz providers doc|crypto ssl util tools providers|' build.info &&\
|
||||
rm -rf doc demos apps test
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
packages := boost openssl libiconv unbound qrencode sodium polyseed hidapi protobuf libusb zlib libgpg-error libgcrypt expat libzip zxing-cpp
|
||||
packages := boost openssl libiconv unbound qrencode libsodium polyseed hidapi protobuf libusb zlib libgpg-error libgcrypt expat libzip zxing-cpp
|
||||
native_packages := native_qt native_protobuf
|
||||
|
||||
linux_packages := eudev libfuse libsquashfuse zstd appimage_runtime
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package=qt
|
||||
$(package)_version=6.7.0
|
||||
$(package)_version=6.7.2
|
||||
$(package)_download_path=https://download.qt.io/official_releases/qt/6.7/$($(package)_version)/submodules
|
||||
$(package)_suffix=everywhere-src-$($(package)_version).tar.xz
|
||||
$(package)_file_name=qtbase-$($(package)_suffix)
|
||||
$(package)_sha256_hash=11b2e29e2e52fb0e3b453ea13bbe51a10fdff36e1c192d8868c5a40233b8b254
|
||||
$(package)_sha256_hash=c5f22a5e10fb162895ded7de0963328e7307611c688487b5d152c9ee64767599
|
||||
$(package)_darwin_dependencies=native_cctools native_qt openssl
|
||||
$(package)_mingw32_dependencies=openssl native_qt
|
||||
$(package)_linux_dependencies=openssl native_qt freetype fontconfig libxcb libxkbcommon libxcb_util libxcb_util_render libxcb_util_keysyms libxcb_util_image libxcb_util_wm libxcb_util_cursor dbus
|
||||
|
@ -21,22 +21,24 @@ $(package)_patches += toolchain.cmake
|
|||
$(package)_patches += revert-macOS-Silence-warning-about-supporting-secure.patch
|
||||
$(package)_patches += no-resonance-audio.patch
|
||||
$(package)_patches += fix_static_qt_darwin_camera_permissions.patch
|
||||
$(package)_patches += revert-f67ee7c39.patch
|
||||
$(package)_patches += CVE-2024-39936.patch
|
||||
#$(package)_patches += fix-static-fontconfig-static-linking.patch
|
||||
|
||||
$(package)_qttools_file_name=qttools-$($(package)_suffix)
|
||||
$(package)_qttools_sha256_hash=c8da6b239e82fe1e23465cbf0936c0da5a334438d3fb433e19c503cbb1abee7b
|
||||
$(package)_qttools_sha256_hash=58e855ad1b2533094726c8a425766b63a04a0eede2ed85086860e54593aa4b2a
|
||||
|
||||
$(package)_qtsvg_file_name=qtsvg-$($(package)_suffix)
|
||||
$(package)_qtsvg_sha256_hash=1518f40e08ff5e6153a6e26e5b95b033413ac143b70795dc1317e7f73ebf922d
|
||||
$(package)_qtsvg_sha256_hash=fb0d1286a35be3583fee34aeb5843c94719e07193bdf1d4d8b0dc14009caef01
|
||||
|
||||
$(package)_qtwebsockets_file_name=qtwebsockets-$($(package)_suffix)
|
||||
$(package)_qtwebsockets_sha256_hash=5ffc77da6b36cdf18e04c975a0fbf243968806a93a6291bcd2e9cd0b26139736
|
||||
$(package)_qtwebsockets_sha256_hash=5bde4af6ec9ce8c8632b782ab77b82d910721be2c714e6d38902521bcd1d215f
|
||||
|
||||
$(package)_qtmultimedia_file_name=qtmultimedia-$($(package)_suffix)
|
||||
$(package)_qtmultimedia_sha256_hash=f394bae49e3d4ee6a3b0c9e1e5e31bb870cc04a4b44f4cda3615baf7bd078c70
|
||||
$(package)_qtmultimedia_sha256_hash=8ef835115acb9a1d3d2c9f23cfacb43f2c537e3786a8ab822299a2a7765651d3
|
||||
|
||||
$(package)_qtshadertools_file_name=qtshadertools-$($(package)_suffix)
|
||||
$(package)_qtshadertools_sha256_hash=3e13f967c62f0815c901e754cbc472a2e19170da0c7a505230d559615f7998af
|
||||
$(package)_qtshadertools_sha256_hash=edfa34c0ac8c00fcaa949df1d8e7a77d89dadd6386e683ce6c3e3b117e2f7cc1
|
||||
|
||||
$(package)_extra_sources += $($(package)_qttools_file_name)
|
||||
$(package)_extra_sources += $($(package)_qtsvg_file_name)
|
||||
|
@ -198,10 +200,12 @@ define $(package)_preprocess_cmds
|
|||
patch -p1 -i $($(package)_patch_dir)/libxau-fix.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/revert-macOS-Silence-warning-about-supporting-secure.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_static_qt_darwin_camera_permissions.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/CVE-2024-39936.patch && \
|
||||
cd ../qtmultimedia && \
|
||||
patch -p1 -i $($(package)_patch_dir)/qtmultimedia-fixes.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/v4l2.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/no-resonance-audio.patch
|
||||
patch -p1 -i $($(package)_patch_dir)/no-resonance-audio.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/revert-f67ee7c39.patch
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package=tor_linux
|
||||
$(package)_version=0.4.8.10
|
||||
$(package)_version=0.4.8.12
|
||||
$(package)_download_path=https://dist.torproject.org/
|
||||
$(package)_file_name=tor-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=e628b4fab70edb4727715b23cf2931375a9f7685ac08f2c59ea498a178463a86
|
||||
$(package)_sha256_hash=ca7cc735d98e3747b58f2f3cc14f804dd789fa0fb333a84dcb6bd70adbb8c874
|
||||
$(package)_dependencies=libevent openssl zlib
|
||||
|
||||
define $(package)_set_vars
|
||||
|
@ -17,6 +17,12 @@ define $(package)_set_vars
|
|||
$(package)_ldflags+=$(guix_ldflags)
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
rm Makefile.in aclocal.m4 ar-lib compile config.guess config.sub configure depcomp install-sh missing orconfig.h.in test-driver &&\
|
||||
rm -rf doc/man &&\
|
||||
autoreconf -fi
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_autoconf) $($(package)_config_opts)
|
||||
endef
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
package=unbound
|
||||
$(package)_version=1.19.3
|
||||
$(package)_version=1.20.0
|
||||
$(package)_download_path=https://www.nlnetlabs.nl/downloads/$(package)/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=3ae322be7dc2f831603e4b0391435533ad5861c2322e34a76006a9fb65eb56b9
|
||||
$(package)_sha256_hash=56b4ceed33639522000fd96775576ddf8782bb3617610715d7f1e777c5ec1dbf
|
||||
$(package)_dependencies=openssl expat
|
||||
$(package)_patches=disable-glibc-reallocarray.patch
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=--disable-shared --enable-static --without-pyunbound --prefix=$(host_prefix)
|
||||
|
@ -17,7 +16,8 @@ define $(package)_set_vars
|
|||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 < $($(package)_patch_dir)/disable-glibc-reallocarray.patch &&\
|
||||
rm configure~ doc/IP-BasedActions.pdf doc/ietf67-design-02.odp doc/ietf67-design-02.pdf doc/CNAME-basedRedirectionDesignNotes.pdf &&\
|
||||
rm -rf testdata dnscrypt/testdata &&\
|
||||
autoconf
|
||||
endef
|
||||
|
||||
|
|
|
@ -4,20 +4,20 @@ diff --git a/libs/stacktrace/build/Jamfile.v2 b/libs/stacktrace/build/Jamfile.v2
|
|||
index 230d5a8b4..d3d74599b 100644
|
||||
--- a/libs/stacktrace/build/Jamfile.v2
|
||||
+++ b/libs/stacktrace/build/Jamfile.v2
|
||||
@@ -42,9 +42,6 @@ rule mp-run-simple ( sources + : args * : input-files * : requirements * : targe
|
||||
@@ -48,9 +48,6 @@ rule mp-run-simple ( sources + : args * : input-files * : requirements * : targe
|
||||
mp-run-simple has_backtrace.cpp : : : <library>backtrace : libbacktrace ;
|
||||
explicit libbacktrace ;
|
||||
|
||||
|
||||
-mp-run-simple has_addr2line.cpp : : : : addr2line ;
|
||||
-explicit addr2line ;
|
||||
-
|
||||
mp-run-simple has_windbg.cpp : : : <library>Dbgeng <library>ole32 : WinDbg ;
|
||||
explicit WinDbg ;
|
||||
|
||||
@@ -76,19 +73,6 @@ lib boost_stacktrace_backtrace
|
||||
|
||||
@@ -82,19 +79,6 @@ lib boost_stacktrace_backtrace
|
||||
#<link>shared:<define>BOOST_STACKTRACE_DYN_LINK=1
|
||||
;
|
||||
|
||||
|
||||
-lib boost_stacktrace_addr2line
|
||||
- : # sources
|
||||
- ../src/addr2line.cpp
|
||||
|
@ -34,9 +34,9 @@ index 230d5a8b4..d3d74599b 100644
|
|||
lib boost_stacktrace_basic
|
||||
: # sources
|
||||
../src/basic.cpp
|
||||
@@ -128,4 +112,4 @@ lib boost_stacktrace_windbg_cached
|
||||
@@ -152,4 +136,4 @@ lib boost_stacktrace_from_exception
|
||||
#<link>shared:<define>BOOST_STACKTRACE_DYN_LINK=1
|
||||
;
|
||||
|
||||
-boost-install boost_stacktrace_noop boost_stacktrace_backtrace boost_stacktrace_addr2line boost_stacktrace_basic boost_stacktrace_windbg boost_stacktrace_windbg_cached ;
|
||||
+boost-install boost_stacktrace_noop boost_stacktrace_backtrace boost_stacktrace_basic boost_stacktrace_windbg boost_stacktrace_windbg_cached ;
|
||||
|
||||
-boost-install boost_stacktrace_noop boost_stacktrace_backtrace boost_stacktrace_addr2line boost_stacktrace_basic boost_stacktrace_windbg boost_stacktrace_windbg_cached boost_stacktrace_from_exception ;
|
||||
+boost-install boost_stacktrace_noop boost_stacktrace_backtrace boost_stacktrace_basic boost_stacktrace_windbg boost_stacktrace_windbg_cached boost_stacktrace_from_exception ;
|
||||
|
|
235
contrib/depends/patches/qt/CVE-2024-39936.patch
Normal file
235
contrib/depends/patches/qt/CVE-2024-39936.patch
Normal file
|
@ -0,0 +1,235 @@
|
|||
From 2b1e36e183ce75c224305c7a94457b92f7a5cf58 Mon Sep 17 00:00:00 2001
|
||||
From: Mårten Nordheim <marten.nordheim@qt.io>
|
||||
Date: Tue, 25 Jun 2024 17:09:35 +0200
|
||||
Subject: [PATCH] HTTP2: Delay any communication until encrypted() can be responded to
|
||||
|
||||
We have the encrypted() signal that lets users do extra checks on the
|
||||
established connection. It is emitted as BlockingQueued, so the HTTP
|
||||
thread stalls until it is done emitting. Users can potentially call
|
||||
abort() on the QNetworkReply at that point, which is passed as a Queued
|
||||
call back to the HTTP thread. That means that any currently queued
|
||||
signal emission will be processed before the abort() call is processed.
|
||||
|
||||
In the case of HTTP2 it is a little special since it is multiplexed and
|
||||
the code is built to start requests as they are available. This means
|
||||
that, while the code worked fine for HTTP1, since one connection only
|
||||
has one request, it is not working for HTTP2, since we try to send more
|
||||
requests in-between the encrypted() signal and the abort() call.
|
||||
|
||||
This patch changes the code to delay any communication until the
|
||||
encrypted() signal has been emitted and processed, for HTTP2 only.
|
||||
It's done by adding a few booleans, both to know that we have to return
|
||||
early and so we can keep track of what events arose and what we need to
|
||||
resume once enough time has passed that any abort() call must have been
|
||||
processed.
|
||||
|
||||
Fixes: QTBUG-126610
|
||||
Pick-to: 6.5 6.2 5.15 5.12
|
||||
Change-Id: Ic25a600c278203256e35f541026f34a8783235ae
|
||||
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
|
||||
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
||||
(cherry picked from commit b1e75376cc3adfc7da5502a277dfe9711f3e0536)
|
||||
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
||||
(cherry picked from commit 0fb43e4395da34d561814242a0186999e4956e28)
|
||||
---
|
||||
|
||||
diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp
|
||||
index 0abd99b..3631b13 100644
|
||||
--- a/src/network/access/qhttp2protocolhandler.cpp
|
||||
+++ b/src/network/access/qhttp2protocolhandler.cpp
|
||||
@@ -303,12 +303,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (!prefaceSent && !sendClientPreface())
|
||||
- return false;
|
||||
-
|
||||
if (!requests.size())
|
||||
return true;
|
||||
|
||||
+ if (!prefaceSent && !sendClientPreface())
|
||||
+ return false;
|
||||
+
|
||||
m_channel->state = QHttpNetworkConnectionChannel::WritingState;
|
||||
// Check what was promised/pushed, maybe we do not have to send a request
|
||||
// and have a response already?
|
||||
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
|
||||
index 6766989..1e4161d 100644
|
||||
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
|
||||
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
|
||||
@@ -209,6 +209,10 @@
|
||||
bool QHttpNetworkConnectionChannel::sendRequest()
|
||||
{
|
||||
Q_ASSERT(protocolHandler);
|
||||
+ if (waitingForPotentialAbort) {
|
||||
+ needInvokeSendRequest = true;
|
||||
+ return false; // this return value is unused
|
||||
+ }
|
||||
return protocolHandler->sendRequest();
|
||||
}
|
||||
|
||||
@@ -221,21 +225,28 @@
|
||||
void QHttpNetworkConnectionChannel::sendRequestDelayed()
|
||||
{
|
||||
QMetaObject::invokeMethod(this, [this] {
|
||||
- Q_ASSERT(protocolHandler);
|
||||
if (reply)
|
||||
- protocolHandler->sendRequest();
|
||||
+ sendRequest();
|
||||
}, Qt::ConnectionType::QueuedConnection);
|
||||
}
|
||||
|
||||
void QHttpNetworkConnectionChannel::_q_receiveReply()
|
||||
{
|
||||
Q_ASSERT(protocolHandler);
|
||||
+ if (waitingForPotentialAbort) {
|
||||
+ needInvokeReceiveReply = true;
|
||||
+ return;
|
||||
+ }
|
||||
protocolHandler->_q_receiveReply();
|
||||
}
|
||||
|
||||
void QHttpNetworkConnectionChannel::_q_readyRead()
|
||||
{
|
||||
Q_ASSERT(protocolHandler);
|
||||
+ if (waitingForPotentialAbort) {
|
||||
+ needInvokeReadyRead = true;
|
||||
+ return;
|
||||
+ }
|
||||
protocolHandler->_q_readyRead();
|
||||
}
|
||||
|
||||
@@ -1239,7 +1250,18 @@
|
||||
if (!h2RequestsToSend.isEmpty()) {
|
||||
// Similar to HTTP/1.1 counterpart below:
|
||||
const auto &pair = std::as_const(h2RequestsToSend).first();
|
||||
+ waitingForPotentialAbort = true;
|
||||
emit pair.second->encrypted();
|
||||
+
|
||||
+ // We don't send or handle any received data until any effects from
|
||||
+ // emitting encrypted() have been processed. This is necessary
|
||||
+ // because the user may have called abort(). We may also abort the
|
||||
+ // whole connection if the request has been aborted and there is
|
||||
+ // no more requests to send.
|
||||
+ QMetaObject::invokeMethod(this,
|
||||
+ &QHttpNetworkConnectionChannel::checkAndResumeCommunication,
|
||||
+ Qt::QueuedConnection);
|
||||
+
|
||||
// In case our peer has sent us its settings (window size, max concurrent streams etc.)
|
||||
// let's give _q_receiveReply a chance to read them first ('invokeMethod', QueuedConnection).
|
||||
}
|
||||
@@ -1257,6 +1279,28 @@
|
||||
QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
+
|
||||
+void QHttpNetworkConnectionChannel::checkAndResumeCommunication()
|
||||
+{
|
||||
+ Q_ASSERT(connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2
|
||||
+ || connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2Direct);
|
||||
+
|
||||
+ // Because HTTP/2 requires that we send a SETTINGS frame as the first thing we do, and respond
|
||||
+ // to a SETTINGS frame with an ACK, we need to delay any handling until we can ensure that any
|
||||
+ // effects from emitting encrypted() have been processed.
|
||||
+ // This function is called after encrypted() was emitted, so check for changes.
|
||||
+
|
||||
+ if (!reply && h2RequestsToSend.isEmpty())
|
||||
+ abort();
|
||||
+ waitingForPotentialAbort = false;
|
||||
+ if (needInvokeReadyRead)
|
||||
+ _q_readyRead();
|
||||
+ if (needInvokeReceiveReply)
|
||||
+ _q_receiveReply();
|
||||
+ if (needInvokeSendRequest)
|
||||
+ sendRequest();
|
||||
+}
|
||||
+
|
||||
void QHttpNetworkConnectionChannel::requeueHttp2Requests()
|
||||
{
|
||||
const auto h2RequestsToSendCopy = std::exchange(h2RequestsToSend, {});
|
||||
diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
|
||||
index c42290f..061f20f 100644
|
||||
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h
|
||||
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h
|
||||
@@ -74,6 +74,10 @@
|
||||
QAbstractSocket *socket;
|
||||
bool ssl;
|
||||
bool isInitialized;
|
||||
+ bool waitingForPotentialAbort = false;
|
||||
+ bool needInvokeReceiveReply = false;
|
||||
+ bool needInvokeReadyRead = false;
|
||||
+ bool needInvokeSendRequest = false;
|
||||
ChannelState state;
|
||||
QHttpNetworkRequest request; // current request, only used for HTTP
|
||||
QHttpNetworkReply *reply; // current reply for this request, only used for HTTP
|
||||
@@ -146,6 +150,8 @@
|
||||
void closeAndResendCurrentRequest();
|
||||
void resendCurrentRequest();
|
||||
|
||||
+ void checkAndResumeCommunication();
|
||||
+
|
||||
bool isSocketBusy() const;
|
||||
bool isSocketWriting() const;
|
||||
bool isSocketWaiting() const;
|
||||
diff --git a/tests/auto/network/access/http2/tst_http2.cpp b/tests/auto/network/access/http2/tst_http2.cpp
|
||||
index 00efbc9..c02e7b7 100644
|
||||
--- a/tests/auto/network/access/http2/tst_http2.cpp
|
||||
+++ b/tests/auto/network/access/http2/tst_http2.cpp
|
||||
@@ -106,6 +106,8 @@
|
||||
|
||||
void duplicateRequestsWithAborts();
|
||||
|
||||
+ void abortOnEncrypted();
|
||||
+
|
||||
protected slots:
|
||||
// Slots to listen to our in-process server:
|
||||
void serverStarted(quint16 port);
|
||||
@@ -1479,6 +1481,48 @@
|
||||
QCOMPARE(finishedCount, ExpectedSuccessfulRequests);
|
||||
}
|
||||
|
||||
+void tst_Http2::abortOnEncrypted()
|
||||
+{
|
||||
+#if !QT_CONFIG(ssl)
|
||||
+ QSKIP("TLS support is needed for this test");
|
||||
+#else
|
||||
+ clearHTTP2State();
|
||||
+ serverPort = 0;
|
||||
+
|
||||
+ ServerPtr targetServer(newServer(defaultServerSettings, H2Type::h2Direct));
|
||||
+
|
||||
+ QMetaObject::invokeMethod(targetServer.data(), "startServer", Qt::QueuedConnection);
|
||||
+ runEventLoop();
|
||||
+
|
||||
+ nRequests = 1;
|
||||
+ nSentRequests = 0;
|
||||
+
|
||||
+ const auto url = requestUrl(H2Type::h2Direct);
|
||||
+ QNetworkRequest request(url);
|
||||
+ request.setAttribute(QNetworkRequest::Http2DirectAttribute, true);
|
||||
+
|
||||
+ std::unique_ptr<QNetworkReply> reply{manager->get(request)};
|
||||
+ reply->ignoreSslErrors();
|
||||
+ connect(reply.get(), &QNetworkReply::encrypted, reply.get(), [reply = reply.get()](){
|
||||
+ reply->abort();
|
||||
+ });
|
||||
+ connect(reply.get(), &QNetworkReply::errorOccurred, this, &tst_Http2::replyFinishedWithError);
|
||||
+
|
||||
+ runEventLoop();
|
||||
+ STOP_ON_FAILURE
|
||||
+
|
||||
+ QCOMPARE(nRequests, 0);
|
||||
+ QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError);
|
||||
+
|
||||
+ const bool res = QTest::qWaitFor(
|
||||
+ [this, server = targetServer.get()]() {
|
||||
+ return serverGotSettingsACK || prefaceOK || nSentRequests > 0;
|
||||
+ },
|
||||
+ 500);
|
||||
+ QVERIFY(!res);
|
||||
+#endif // QT_CONFIG(ssl)
|
||||
+}
|
||||
+
|
||||
void tst_Http2::serverStarted(quint16 port)
|
||||
{
|
||||
serverPort = port;
|
55
contrib/depends/patches/qt/revert-f67ee7c39.patch
Normal file
55
contrib/depends/patches/qt/revert-f67ee7c39.patch
Normal file
|
@ -0,0 +1,55 @@
|
|||
diff --git a/src/multimedia/darwin/qdarwinmediadevices.mm b/src/multimedia/darwin/qdarwinmediadevices.mm
|
||||
index b0a108935..3ab7e6c05 100644
|
||||
--- a/src/multimedia/darwin/qdarwinmediadevices.mm
|
||||
+++ b/src/multimedia/darwin/qdarwinmediadevices.mm
|
||||
@@ -39,11 +39,8 @@ static AudioDeviceID defaultAudioDevice(QAudioDevice::Mode mode)
|
||||
{
|
||||
const AudioObjectPropertySelector selector = (mode == QAudioDevice::Output) ? kAudioHardwarePropertyDefaultOutputDevice
|
||||
: kAudioHardwarePropertyDefaultInputDevice;
|
||||
- const AudioObjectPropertyAddress propertyAddress = {
|
||||
- selector,
|
||||
- kAudioObjectPropertyScopeGlobal,
|
||||
- kAudioObjectPropertyElementMain,
|
||||
- };
|
||||
+ const AudioObjectPropertyAddress propertyAddress = { selector, kAudioObjectPropertyScopeGlobal,
|
||||
+ kAudioObjectPropertyElementMaster };
|
||||
|
||||
if (auto audioDevice = getAudioObject<AudioDeviceID>(kAudioObjectSystemObject, propertyAddress,
|
||||
"Default Device")) {
|
||||
@@ -77,7 +74,7 @@ static QList<QAudioDevice> availableAudioDevices(QAudioDevice::Mode mode)
|
||||
|
||||
const AudioObjectPropertyAddress audioDevicesPropertyAddress = {
|
||||
kAudioHardwarePropertyDevices, kAudioObjectPropertyScopeGlobal,
|
||||
- kAudioObjectPropertyElementMain
|
||||
+ kAudioObjectPropertyElementMaster
|
||||
};
|
||||
|
||||
if (auto audioDevices = getAudioData<AudioDeviceID>(
|
||||
@@ -130,11 +127,11 @@ static OSStatus audioDeviceChangeListener(AudioObjectID id, UInt32,
|
||||
|
||||
static constexpr AudioObjectPropertyAddress listenerAddresses[] = {
|
||||
{ kAudioHardwarePropertyDefaultInputDevice, kAudioObjectPropertyScopeGlobal,
|
||||
- kAudioObjectPropertyElementMain },
|
||||
+ kAudioObjectPropertyElementMaster },
|
||||
{ kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal,
|
||||
- kAudioObjectPropertyElementMain },
|
||||
+ kAudioObjectPropertyElementMaster },
|
||||
{ kAudioHardwarePropertyDevices, kAudioObjectPropertyScopeGlobal,
|
||||
- kAudioObjectPropertyElementMain }
|
||||
+ kAudioObjectPropertyElementMaster }
|
||||
};
|
||||
|
||||
static void setAudioListeners(QDarwinMediaDevices &instance)
|
||||
diff --git a/src/multimedia/darwin/qmacosaudiodatautils_p.h b/src/multimedia/darwin/qmacosaudiodatautils_p.h
|
||||
index 8cc2f8440..5cd6fced2 100644
|
||||
--- a/src/multimedia/darwin/qmacosaudiodatautils_p.h
|
||||
+++ b/src/multimedia/darwin/qmacosaudiodatautils_p.h
|
||||
@@ -44,7 +44,7 @@ void printUnableToReadWarning(const char *logName, AudioObjectID objectID, const
|
||||
|
||||
inline static AudioObjectPropertyAddress
|
||||
makePropertyAddress(AudioObjectPropertySelector selector, QAudioDevice::Mode mode,
|
||||
- AudioObjectPropertyElement element = kAudioObjectPropertyElementMain)
|
||||
+ AudioObjectPropertyElement element = kAudioObjectPropertyElementMaster)
|
||||
{
|
||||
return { selector,
|
||||
mode == QAudioDevice::Input ? kAudioDevicePropertyScopeInput
|
|
@ -1,15 +1,15 @@
|
|||
diff --git a/src/plugins/multimedia/CMakeLists.txt b/src/plugins/multimedia/CMakeLists.txt
|
||||
index 978710112..1cb2cc730 100644
|
||||
index 5bc39c1f8..c74f2ff4c 100644
|
||||
--- a/src/plugins/multimedia/CMakeLists.txt
|
||||
+++ b/src/plugins/multimedia/CMakeLists.txt
|
||||
@@ -2,7 +2,7 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
if (QT_FEATURE_ffmpeg)
|
||||
if(QT_FEATURE_ffmpeg)
|
||||
- add_subdirectory(ffmpeg)
|
||||
+ add_subdirectory(v4l2)
|
||||
endif ()
|
||||
if (QT_FEATURE_gstreamer)
|
||||
endif()
|
||||
if(QT_FEATURE_gstreamer)
|
||||
add_subdirectory(gstreamer)
|
||||
diff --git a/src/plugins/multimedia/v4l2/CMakeLists.txt b/src/plugins/multimedia/v4l2/CMakeLists.txt
|
||||
new file mode 100644
|
||||
|
@ -672,10 +672,10 @@ index 000000000..e34005bbf
|
|||
+#endif
|
||||
diff --git a/src/plugins/multimedia/v4l2/qffmpegmediaintegration.cpp b/src/plugins/multimedia/v4l2/qffmpegmediaintegration.cpp
|
||||
new file mode 100644
|
||||
index 000000000..2dad447c9
|
||||
index 000000000..63a8ff196
|
||||
--- /dev/null
|
||||
+++ b/src/plugins/multimedia/v4l2/qffmpegmediaintegration.cpp
|
||||
@@ -0,0 +1,130 @@
|
||||
@@ -0,0 +1,131 @@
|
||||
+// Copyright (C) 2021 The Qt Company Ltd.
|
||||
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
+
|
||||
|
@ -724,6 +724,7 @@ index 000000000..2dad447c9
|
|||
+};
|
||||
+
|
||||
+QFFmpegMediaIntegration::QFFmpegMediaIntegration()
|
||||
+ : QPlatformMediaIntegration(QLatin1String("ffmpeg"))
|
||||
+{
|
||||
+#ifndef QT_NO_DEBUG
|
||||
+ qDebug() << "Available HW decoding frameworks:";
|
||||
|
@ -1043,7 +1044,7 @@ index 000000000..cbaa810d7
|
|||
+#endif
|
||||
diff --git a/src/plugins/multimedia/v4l2/qv4l2camera.cpp b/src/plugins/multimedia/v4l2/qv4l2camera.cpp
|
||||
new file mode 100644
|
||||
index 000000000..2086af10d
|
||||
index 000000000..1ba05364d
|
||||
--- /dev/null
|
||||
+++ b/src/plugins/multimedia/v4l2/qv4l2camera.cpp
|
||||
@@ -0,0 +1,707 @@
|
||||
|
@ -1443,7 +1444,7 @@ index 000000000..2086af10d
|
|||
+void QV4L2Camera::setCameraBusy()
|
||||
+{
|
||||
+ m_cameraBusy = true;
|
||||
+ emit error(QCamera::CameraError, QLatin1String("Camera is in use"));
|
||||
+ updateError(QCamera::CameraError, QLatin1String("Camera is in use"));
|
||||
+}
|
||||
+
|
||||
+void QV4L2Camera::initV4L2Controls()
|
||||
|
@ -1461,7 +1462,7 @@ index 000000000..2086af10d
|
|||
+ qCWarning(qLcV4L2Camera) << "Unable to open the camera" << deviceName
|
||||
+ << "for read to query the parameter info:"
|
||||
+ << qt_error_string(errno);
|
||||
+ emit error(QCamera::CameraError, QLatin1String("Cannot open camera"));
|
||||
+ updateError(QCamera::CameraError, QLatin1String("Cannot open camera"));
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
|
@ -1700,7 +1701,7 @@ index 000000000..2086af10d
|
|||
+
|
||||
+ if (!m_memoryTransfer) {
|
||||
+ qCWarning(qLcV4L2Camera) << "Cannot init v4l2 memory transfer," << qt_error_string(errno);
|
||||
+ emit error(QCamera::CameraError, QLatin1String("Cannot init V4L2 memory transfer"));
|
||||
+ updateError(QCamera::CameraError, QLatin1String("Cannot init V4L2 memory transfer"));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
diff --git a/configure.ac b/configure.ac
|
||||
index 5c7da197..e2b25288 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1702,6 +1702,9 @@ AC_LINK_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT
|
||||
#ifndef _OPENBSD_SOURCE
|
||||
#define _OPENBSD_SOURCE 1
|
||||
#endif
|
||||
+#ifdef __linux__
|
||||
+# error reallocarray() is currently disabled on Linux to support glibc < 2.26
|
||||
+#endif
|
||||
#include <stdlib.h>
|
||||
int main(void) {
|
||||
void* p = reallocarray(NULL, 10, 100);
|
|
@ -6,6 +6,10 @@ cd empty
|
|||
|
||||
mkdir export files usr
|
||||
|
||||
# Needs to exists, otherwise flatpak doesn't mount zoneinfo
|
||||
# https://github.com/flatpak/flatpak/blob/8b4f523c4f8287d57f1a84a3a8216efe200c5fbf/common/flatpak-run.c#L1605
|
||||
mkdir -p usr/share/zoneinfo
|
||||
|
||||
cat << EOF > metadata
|
||||
[Runtime]
|
||||
name=org.featherwallet.Empty
|
||||
|
|
|
@ -51,7 +51,7 @@ fi
|
|||
time-machine() {
|
||||
# shellcheck disable=SC2086
|
||||
guix time-machine --url=https://github.com/tobtoht/guix.git \
|
||||
--commit=dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a \
|
||||
--commit=f0bb724211872cd6158fce6162e0b8c73efed126 \
|
||||
--cores="$JOBS" \
|
||||
--keep-failed \
|
||||
--fallback \
|
||||
|
|
|
@ -104,7 +104,7 @@ chain for " target " development."))
|
|||
#:key
|
||||
(base-gcc-for-libc linux-base-gcc)
|
||||
(base-kernel-headers base-linux-kernel-headers)
|
||||
(base-libc glibc-2.27)
|
||||
(base-libc glibc-2.31)
|
||||
(base-gcc linux-base-gcc))
|
||||
"Convenience wrapper around MAKE-CROSS-TOOLCHAIN with default values
|
||||
desirable for building Feather Wallet release binaries."
|
||||
|
@ -181,22 +181,21 @@ chain for " target " development."))
|
|||
(("-rpath=") "-rpath-link="))
|
||||
#t))))))))
|
||||
|
||||
(define-public glibc-2.27
|
||||
(define-public glibc-2.31
|
||||
(let ((commit "8e30f03744837a85e33d84ccd34ed3abe30d37c3"))
|
||||
(package
|
||||
(inherit glibc-2.31)
|
||||
(version "2.27")
|
||||
(inherit glibc) ;; 2.35
|
||||
(version "2.31")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://sourceware.org/git/glibc.git")
|
||||
(commit "73886db6218e613bd6d4edf529f11e008a6c2fa6")))
|
||||
(file-name (git-file-name "glibc" "73886db6218e613bd6d4edf529f11e008a6c2fa6"))
|
||||
(commit commit)))
|
||||
(file-name (git-file-name "glibc" commit))
|
||||
(sha256
|
||||
(base32
|
||||
"0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq"))
|
||||
(patches (search-our-patches "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
|
||||
"glibc-2.27-fcommon.patch"
|
||||
"glibc-2.27-no-librt.patch"))))
|
||||
"1zi0s9yy5zkisw823vivn7zlj8w6g9p3mm7lmlqiixcxdkz4dbn6"))
|
||||
(patches (search-our-patches "glibc-guix-prefix.patch"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments glibc)
|
||||
((#:configure-flags flags)
|
||||
|
@ -212,12 +211,13 @@ chain for " target " development."))
|
|||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Install the rpc data base file under `$out/etc/rpc'.
|
||||
;; Otherwise build will fail with "Permission denied."
|
||||
;; Can be removed when we are building 2.32 or later.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(substitute* "sunrpc/Makefile"
|
||||
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
|
||||
(string-append out "/etc/rpc" suffix "\n"))
|
||||
(("^install-others =.*$")
|
||||
(string-append "install-others = " out "/etc/rpc\n"))))))))))))
|
||||
(string-append "install-others = " out "/etc/rpc\n")))))))))))))
|
||||
|
||||
(define-public ldid
|
||||
(package
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
commit 264a4a0dbe1f4369db315080034b500bed66016c
|
||||
Author: fanquake <fanquake@gmail.com>
|
||||
Date: Fri May 6 11:03:04 2022 +0100
|
||||
|
||||
build: use -fcommon to retain legacy behaviour with GCC 10
|
||||
|
||||
GCC 10 started using -fno-common by default, which causes issues with
|
||||
the powerpc builds using gibc 2.24. A patch was commited to glibc to fix
|
||||
the issue, 18363b4f010da9ba459b13310b113ac0647c2fcc but is non-trvial
|
||||
to backport, and was broken in at least one way, see the followup in
|
||||
commit 7650321ce037302bfc2f026aa19e0213b8d02fe6.
|
||||
|
||||
For now, retain the legacy GCC behaviour by passing -fcommon when
|
||||
building glibc.
|
||||
|
||||
https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html.
|
||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=18363b4f010da9ba459b13310b113ac0647c2fcc
|
||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=7650321ce037302bfc2f026aa19e0213b8d02fe6
|
||||
|
||||
diff --git a/Makeconfig b/Makeconfig
|
||||
index 86a71e5802..aa2166be60 100644
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -896,7 +896,7 @@ ifeq "$(strip $(+cflags))" ""
|
||||
endif # $(+cflags) == ""
|
||||
|
||||
+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) \
|
||||
- $(+stack-protector)
|
||||
+ $(+stack-protector) -fcommon
|
||||
+gcc-nowarn := -w
|
||||
|
||||
# Don't duplicate options if we inherited variables from the parent.
|
|
@ -1,53 +0,0 @@
|
|||
This patch can be dropped when we are building with glibc 2.30+.
|
||||
|
||||
commit 6e41ef56c9baab719a02f1377b1e7ce7bff61e73
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Feb 8 10:21:56 2019 +0100
|
||||
|
||||
rt: Turn forwards from librt to libc into compat symbols [BZ #24194]
|
||||
|
||||
As the result of commit 6e6249d0b461b952d0f544792372663feb6d792a
|
||||
("BZ#14743: Move clock_* symbols from librt to libc."), in glibc 2.17,
|
||||
clock_gettime, clock_getres, clock_settime, clock_getcpuclockid,
|
||||
clock_nanosleep were added to libc, and the file rt/clock-compat.c
|
||||
was added with forwarders to the actual implementations in libc.
|
||||
These forwarders were wrapped in
|
||||
|
||||
#if SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_17)
|
||||
|
||||
so that they are not present for newer architectures (such as
|
||||
powerpc64le) with a 2.17 or later ABI baseline. But the forwarders
|
||||
were not marked as compatibility symbols. As a result, on older
|
||||
architectures, historic configure checks such as
|
||||
|
||||
AC_CHECK_LIB(rt, clock_gettime)
|
||||
|
||||
still cause linking against librt, even though this is completely
|
||||
unnecessary. It also creates a needless porting hazard because
|
||||
architectures behave differently when it comes to symbol availability.
|
||||
|
||||
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
||||
|
||||
diff --git a/rt/clock-compat.c b/rt/clock-compat.c
|
||||
index f816973c05..11e71aa890 100644
|
||||
--- a/rt/clock-compat.c
|
||||
+++ b/rt/clock-compat.c
|
||||
@@ -30,14 +30,16 @@
|
||||
#if HAVE_IFUNC
|
||||
# undef INIT_ARCH
|
||||
# define INIT_ARCH()
|
||||
-# define COMPAT_REDIRECT(name, proto, arglist) libc_ifunc (name, &__##name)
|
||||
+# define COMPAT_REDIRECT(name, proto, arglist) libc_ifunc (name, &__##name) \
|
||||
+ compat_symbol (librt, name, name, GLIBC_2_2);
|
||||
#else
|
||||
# define COMPAT_REDIRECT(name, proto, arglist) \
|
||||
int \
|
||||
name proto \
|
||||
{ \
|
||||
return __##name arglist; \
|
||||
- }
|
||||
+ } \
|
||||
+ compat_symbol (librt, name, name, GLIBC_2_2);
|
||||
#endif
|
||||
|
||||
COMPAT_REDIRECT (clock_getres,
|
|
@ -1,76 +0,0 @@
|
|||
Note that this has been modified from the original commit, to use __has_include
|
||||
instead of __has_include__, as the later was causing build failures with GCC 10.
|
||||
See also: http://lists.busybox.net/pipermail/buildroot/2020-July/590376.html.
|
||||
|
||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=0b9c84906f653978fb8768c7ebd0ee14a47e662e
|
||||
|
||||
From 562c52cc81a4e456a62e6455feb32732049e9070 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Mon, 31 Dec 2018 09:26:42 -0800
|
||||
Subject: [PATCH] riscv: Use __has_include__ to include <asm/syscalls.h> [BZ
|
||||
#24022]
|
||||
|
||||
<asm/syscalls.h> has been removed by
|
||||
|
||||
commit 27f8899d6002e11a6e2d995e29b8deab5aa9cc25
|
||||
Author: David Abdurachmanov <david.abdurachmanov@gmail.com>
|
||||
Date: Thu Nov 8 20:02:39 2018 +0100
|
||||
|
||||
riscv: add asm/unistd.h UAPI header
|
||||
|
||||
Marcin Juszkiewicz reported issues while generating syscall table for riscv
|
||||
using 4.20-rc1. The patch refactors our unistd.h files to match some other
|
||||
architectures.
|
||||
|
||||
- Add asm/unistd.h UAPI header, which has __ARCH_WANT_NEW_STAT only for 64-bit
|
||||
- Remove asm/syscalls.h UAPI header and merge to asm/unistd.h
|
||||
- Adjust kernel asm/unistd.h
|
||||
|
||||
So now asm/unistd.h UAPI header should show all syscalls for riscv.
|
||||
|
||||
<asm/syscalls.h> may be restored by
|
||||
|
||||
Subject: [PATCH] riscv: restore asm/syscalls.h UAPI header
|
||||
Date: Tue, 11 Dec 2018 09:09:35 +0100
|
||||
|
||||
UAPI header asm/syscalls.h was merged into UAPI asm/unistd.h header,
|
||||
which did resolve issue with missing syscalls macros resulting in
|
||||
glibc (2.28) build failure. It also broke glibc in a different way:
|
||||
asm/syscalls.h is being used by glibc. I noticed this while doing
|
||||
Fedora 30/Rawhide mass rebuild.
|
||||
|
||||
The patch returns asm/syscalls.h header and incl. it into asm/unistd.h.
|
||||
I plan to send a patch to glibc to use asm/unistd.h instead of
|
||||
asm/syscalls.h
|
||||
|
||||
In the meantime, we use __has_include__, which was added to GCC 5, to
|
||||
check if <asm/syscalls.h> exists before including it. Tested with
|
||||
build-many-glibcs.py for riscv against kernel 4.19.12 and 4.20-rc7.
|
||||
|
||||
[BZ #24022]
|
||||
* sysdeps/unix/sysv/linux/riscv/flush-icache.c: Check if
|
||||
<asm/syscalls.h> exists with __has_include__ before including it.
|
||||
---
|
||||
sysdeps/unix/sysv/linux/riscv/flush-icache.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sysdeps/unix/sysv/linux/riscv/flush-icache.c b/sysdeps/unix/sysv/linux/riscv/flush-icache.c
|
||||
index d612ef4c6c..0b2042620b 100644
|
||||
--- a/sysdeps/unix/sysv/linux/riscv/flush-icache.c
|
||||
+++ b/sysdeps/unix/sysv/linux/riscv/flush-icache.c
|
||||
@@ -21,7 +21,11 @@
|
||||
#include <stdlib.h>
|
||||
#include <atomic.h>
|
||||
#include <sys/cachectl.h>
|
||||
-#include <asm/syscalls.h>
|
||||
+#if __has_include (<asm/syscalls.h>)
|
||||
+# include <asm/syscalls.h>
|
||||
+#else
|
||||
+# include <asm/unistd.h>
|
||||
+#endif
|
||||
|
||||
typedef int (*func_type) (void *, void *, unsigned long int);
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
2
monero
2
monero
|
@ -1 +1 @@
|
|||
Subproject commit ad951be2edfb3045ec3d0bb74a25badb91bc8b92
|
||||
Subproject commit 6a88faa9af20c56363bac563a5c0b803ea2695dd
|
|
@ -96,7 +96,8 @@ void ContactsWidget::copyName() {
|
|||
void ContactsWidget::payTo() {
|
||||
QModelIndex index = ui->contacts->currentIndex();
|
||||
QString address = index.model()->data(index.siblingAtColumn(AddressBookModel::Address), Qt::UserRole).toString();
|
||||
emit fillAddress(address);
|
||||
QString description = index.model()->data(index.siblingAtColumn(AddressBookModel::Description), Qt::UserRole).toString();
|
||||
emit fill(address, description);
|
||||
}
|
||||
|
||||
void ContactsWidget::setShowFullAddresses(bool show) {
|
||||
|
|
|
@ -37,7 +37,7 @@ public slots:
|
|||
void setSearchFilter(const QString &filter);
|
||||
|
||||
signals:
|
||||
void fillAddress(QString &address);
|
||||
void fill(QString &address, QString &description);
|
||||
|
||||
private slots:
|
||||
void showHeaderMenu(const QPoint &position);
|
||||
|
|
|
@ -237,7 +237,9 @@ void MainWindow::initWidgets() {
|
|||
m_historyWidget->setSearchText(text);
|
||||
ui->tabWidget->setCurrentIndex(this->findTab("History"));
|
||||
});
|
||||
connect(m_contactsWidget, &ContactsWidget::fillAddress, m_sendWidget, &SendWidget::fillAddress);
|
||||
connect(m_contactsWidget, &ContactsWidget::fill, [this](const QString &address, const QString &description){
|
||||
m_sendWidget->fill(address, description, 0, true);
|
||||
});
|
||||
|
||||
// [Coins]
|
||||
m_coinsWidget = new CoinsWidget(m_wallet, this);
|
||||
|
|
|
@ -112,11 +112,13 @@ void SendWidget::fill(double amount) {
|
|||
ui->lineAmount->setText(QString::number(amount));
|
||||
}
|
||||
|
||||
void SendWidget::fill(const QString &address, const QString &description, double amount) {
|
||||
void SendWidget::fill(const QString &address, const QString &description, double amount, bool overrideDescription) {
|
||||
ui->lineAddress->setText(address);
|
||||
ui->lineAddress->moveCursor(QTextCursor::Start);
|
||||
|
||||
ui->lineDescription->setText(description);
|
||||
if (overrideDescription || ui->lineDescription->text().isEmpty()) {
|
||||
ui->lineDescription->setText(description);
|
||||
}
|
||||
|
||||
if (amount > 0)
|
||||
ui->lineAmount->setText(QString::number(amount));
|
||||
|
|
|
@ -18,7 +18,7 @@ Q_OBJECT
|
|||
|
||||
public:
|
||||
explicit SendWidget(Wallet *wallet, QWidget *parent = nullptr);
|
||||
void fill(const QString &address, const QString &description, double amount = 0);
|
||||
void fill(const QString &address, const QString &description, double amount = 0, bool overrideDescription = true);
|
||||
void fill(double amount);
|
||||
void clearFields();
|
||||
void payToMany();
|
||||
|
|
|
@ -371,6 +371,8 @@ void WindowManager::tryCreateWallet(Seed seed, const QString &path, const QStrin
|
|||
|
||||
wallet->setCacheAttribute("feather.seed", seed.mnemonic.join(" "));
|
||||
wallet->setCacheAttribute("feather.seedoffset", seedOffset);
|
||||
// Store attributes now, so we don't lose them on crash / forced exit
|
||||
wallet->store();
|
||||
|
||||
if (newWallet) {
|
||||
wallet->setNewWallet();
|
||||
|
|
|
@ -76,7 +76,6 @@ sethsimmons
|
|||
Shakybeats
|
||||
SmashTR
|
||||
SovereignStreetArt
|
||||
spoontechtips
|
||||
stickyf00t
|
||||
strace
|
||||
tevador
|
||||
|
|
|
@ -2066,4 +2066,79 @@
|
|||
1709534527:3097500
|
||||
1709716289:3099000
|
||||
1709892940:3100500
|
||||
1710071409:3102000
|
||||
1710071409:3102000
|
||||
1710255097:3103500
|
||||
1710432606:3105000
|
||||
1710615410:3106500
|
||||
1710795065:3108000
|
||||
1710976109:3109500
|
||||
1711152408:3111000
|
||||
1711335265:3112500
|
||||
1711516323:3114000
|
||||
1711694909:3115500
|
||||
1711880054:3117000
|
||||
1712059470:3118500
|
||||
1712236145:3120000
|
||||
1712419759:3121500
|
||||
1712597840:3123000
|
||||
1712781127:3124500
|
||||
1712958802:3126000
|
||||
1713135962:3127500
|
||||
1713316678:3129000
|
||||
1713503744:3130500
|
||||
1713676680:3132000
|
||||
1713858900:3133500
|
||||
1714041253:3135000
|
||||
1714217386:3136500
|
||||
1714396919:3138000
|
||||
1714576890:3139500
|
||||
1714757796:3141000
|
||||
1714939811:3142500
|
||||
1715118316:3144000
|
||||
1715299757:3145500
|
||||
1715478761:3147000
|
||||
1715656179:3148500
|
||||
1715838106:3150000
|
||||
1716017126:3151500
|
||||
1716196273:3153000
|
||||
1716373096:3154500
|
||||
1716552670:3156000
|
||||
1716732589:3157500
|
||||
1716908042:3159000
|
||||
1717109817:3160500
|
||||
1717288707:3162000
|
||||
1717469290:3163500
|
||||
1717645342:3165000
|
||||
1717819667:3166500
|
||||
1717997823:3168000
|
||||
1718180974:3169500
|
||||
1718358198:3171000
|
||||
1718535067:3172500
|
||||
1718708312:3174000
|
||||
1718889905:3175500
|
||||
1719067389:3177000
|
||||
1719247949:3178500
|
||||
1719430906:3180000
|
||||
1719620680:3181500
|
||||
1719797945:3183000
|
||||
1719976133:3184500
|
||||
1720160899:3186000
|
||||
1720342629:3187500
|
||||
1720519986:3189000
|
||||
1720701683:3190500
|
||||
1720881472:3192000
|
||||
1721058802:3193500
|
||||
1721241822:3195000
|
||||
1721420236:3196500
|
||||
1721603903:3198000
|
||||
1721785988:3199500
|
||||
1721964141:3201000
|
||||
1722143014:3202500
|
||||
1722327380:3204000
|
||||
1722505790:3205500
|
||||
1722682957:3207000
|
||||
1722861675:3208500
|
||||
1723042527:3210000
|
||||
1723220196:3211500
|
||||
1723401886:3213000
|
||||
1723577283:3214500
|
|
@ -1040,4 +1040,72 @@
|
|||
1709585920:1558500
|
||||
1709759746:1560000
|
||||
1709952785:1561500
|
||||
1710055215:1563000
|
||||
1710055215:1563000
|
||||
1710257276:1564500
|
||||
1711028944:1566000
|
||||
1711189415:1567500
|
||||
1711852389:1569000
|
||||
1712019430:1570500
|
||||
1712195259:1572000
|
||||
1712387277:1573500
|
||||
1712553502:1575000
|
||||
1712770163:1576500
|
||||
1712962539:1578000
|
||||
1713119443:1579500
|
||||
1713314139:1581000
|
||||
1713504130:1582500
|
||||
1713694372:1584000
|
||||
1713869222:1585500
|
||||
1714049033:1587000
|
||||
1714218128:1588500
|
||||
1714398252:1590000
|
||||
1714561751:1591500
|
||||
1714776182:1593000
|
||||
1714952164:1594500
|
||||
1715136648:1596000
|
||||
1715318231:1597500
|
||||
1715497199:1599000
|
||||
1715660837:1600500
|
||||
1715841315:1602000
|
||||
1716048980:1603500
|
||||
1716224906:1605000
|
||||
1716410114:1606500
|
||||
1716590438:1608000
|
||||
1716769078:1609500
|
||||
1716948695:1611000
|
||||
1717128222:1612500
|
||||
1717298347:1614000
|
||||
1717487344:1615500
|
||||
1717670988:1617000
|
||||
1717851467:1618500
|
||||
1718031223:1620000
|
||||
1718209607:1621500
|
||||
1718394771:1623000
|
||||
1718558906:1624500
|
||||
1718754325:1626000
|
||||
1718878017:1627500
|
||||
1719199738:1629000
|
||||
1719379121:1630500
|
||||
1719560968:1632000
|
||||
1719748533:1633500
|
||||
1719923678:1635000
|
||||
1720103101:1636500
|
||||
1720281849:1638000
|
||||
1720454676:1639500
|
||||
1720640815:1641000
|
||||
1720822608:1642500
|
||||
1721006310:1644000
|
||||
1721182711:1645500
|
||||
1721360475:1647000
|
||||
1721542623:1648500
|
||||
1721724918:1650000
|
||||
1721904235:1651500
|
||||
1722082879:1653000
|
||||
1722260219:1654500
|
||||
1722447582:1656000
|
||||
1722623443:1657500
|
||||
1722805689:1659000
|
||||
1722983267:1660500
|
||||
1723166957:1662000
|
||||
1723347339:1663500
|
||||
1723524898:1665000
|
Loading…
Reference in a new issue