Skip to content

Commit cfe8502

Browse files
committed
qt desktop gui: upgrade qt5->qt6
closes #8007
1 parent fcc4e1d commit cfe8502

File tree

89 files changed

+920
-1012
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+920
-1012
lines changed

contrib/build-linux/appimage/Dockerfile

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ RUN apt-get update -q && \
6060
libxcb-util0 \
6161
#libxcb-util1 \
6262
libxcb-render-util0 \
63+
libxcb-cursor0 \
6364
libx11-xcb1 \
6465
libc6-dev \
6566
libc6 \

contrib/build-linux/appimage/make_appimage.sh

+16-12
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ info "Installing build dependencies."
150150
# note: re pip installing from PyPI,
151151
# we prefer compiling C extensions ourselves, instead of using binary wheels,
152152
# hence "--no-binary :all:" flags. However, we specifically allow
153-
# - PyQt5, as it's harder to build from source
153+
# - PyQt6, as it's harder to build from source
154154
# - cryptography, as it's harder to build from source
155155
# - the whole of "requirements-build-base.txt", which includes pip and friends, as it also includes "wheel",
156156
# and I am not quite sure how to break the circular dependence there (I guess we could introduce
@@ -163,7 +163,7 @@ info "Installing build dependencies."
163163
info "installing electrum and its dependencies."
164164
"$python" -m pip install --no-build-isolation --no-dependencies --no-binary :all: --no-warn-script-location \
165165
--cache-dir "$PIP_CACHE_DIR" -r "$CONTRIB/deterministic-build/requirements.txt"
166-
"$python" -m pip install --no-build-isolation --no-dependencies --no-binary :all: --only-binary PyQt5,PyQt5-Qt5,cryptography --no-warn-script-location \
166+
"$python" -m pip install --no-build-isolation --no-dependencies --no-binary :all: --only-binary PyQt6,PyQt6-Qt6,cryptography --no-warn-script-location \
167167
--cache-dir "$PIP_CACHE_DIR" -r "$CONTRIB/deterministic-build/requirements-binaries.txt"
168168
"$python" -m pip install --no-build-isolation --no-dependencies --no-binary :all: --no-warn-script-location \
169169
--cache-dir "$PIP_CACHE_DIR" -r "$CONTRIB/deterministic-build/requirements-hw.txt"
@@ -240,19 +240,23 @@ rm -rf "$PYDIR"/config-3.*-x86_64-linux-gnu
240240
rm -rf "$PYDIR"/site-packages/{opt,pip,setuptools,wheel}
241241
rm -rf "$PYDIR"/site-packages/Cryptodome/SelfTest
242242
rm -rf "$PYDIR"/site-packages/{psutil,qrcode,websocket}/tests
243-
# rm lots of unused parts of Qt/PyQt. (assuming PyQt 5.15.3+ layout)
243+
# rm lots of unused parts of Qt/PyQt. (assuming PyQt 6 layout)
244244
for component in connectivity declarative help location multimedia quickcontrols2 serialport webengine websockets xmlpatterns ; do
245-
rm -rf "$PYDIR"/site-packages/PyQt5/Qt5/translations/qt${component}_*
246-
rm -rf "$PYDIR"/site-packages/PyQt5/Qt5/resources/qt${component}_*
245+
rm -rf "$PYDIR"/site-packages/PyQt6/Qt6/translations/qt${component}_*
246+
rm -rf "$PYDIR"/site-packages/PyQt6/Qt6/resources/qt${component}_*
247247
done
248-
rm -rf "$PYDIR"/site-packages/PyQt5/Qt5/{qml,libexec}
249-
rm -rf "$PYDIR"/site-packages/PyQt5/{pyrcc*.so,pylupdate*.so,uic}
250-
rm -rf "$PYDIR"/site-packages/PyQt5/Qt5/plugins/{bearer,gamepads,geometryloaders,geoservices,playlistformats,position,renderplugins,sceneparsers,sensors,sqldrivers,texttospeech,webview}
251-
for component in Bluetooth Concurrent Designer Help Location NetworkAuth Nfc Positioning PositioningQuick Qml Quick Sensors SerialPort Sql Test Web Xml ; do
252-
rm -rf "$PYDIR"/site-packages/PyQt5/Qt5/lib/libQt5${component}*
253-
rm -rf "$PYDIR"/site-packages/PyQt5/Qt${component}*
248+
rm -rf "$PYDIR"/site-packages/PyQt6/Qt6/{qml,libexec}
249+
rm -rf "$PYDIR"/site-packages/PyQt6/{pyrcc*.so,pylupdate*.so,uic}
250+
rm -rf "$PYDIR"/site-packages/PyQt6/Qt6/plugins/{bearer,gamepads,geometryloaders,geoservices,playlistformats,position,renderplugins,sceneparsers,sensors,sqldrivers,texttospeech,webview}
251+
for component in Bluetooth Concurrent Designer Help Location NetworkAuth Nfc Positioning PositioningQuick Qml Quick Sensors SerialPort Sql Test Web Xml Labs ShaderTools SpatialAudio ; do
252+
rm -rf "$PYDIR"/site-packages/PyQt6/Qt6/lib/libQt6${component}*
253+
rm -rf "$PYDIR"/site-packages/PyQt6/Qt${component}*
254+
rm -rf "$PYDIR"/site-packages/PyQt6/bindings/Qt${component}*
254255
done
255-
rm -rf "$PYDIR"/site-packages/PyQt5/Qt.so
256+
for component in Qml Quick ; do
257+
rm -rf "$PYDIR"/site-packages/PyQt6/Qt6/lib/libQt6*${component}.so*
258+
done
259+
rm -rf "$PYDIR"/site-packages/PyQt6/Qt.so
256260

257261
# these are deleted as they were not deterministic; and are not needed anyway
258262
find "$APPDIR" -path '*/__pycache__*' -delete

contrib/build-wine/build-electrum-git.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ $WINE_PYTHON -m pip install --no-build-isolation --no-dependencies --no-binary :
3939
info "Installing dependencies specific to binaries..."
4040
# TODO tighten "--no-binary :all:" (but we don't have a C compiler...)
4141
$WINE_PYTHON -m pip install --no-build-isolation --no-dependencies --no-warn-script-location \
42-
--no-binary :all: --only-binary cffi,cryptography,PyQt5,PyQt5-Qt5,PyQt5-sip \
42+
--no-binary :all: --only-binary cffi,cryptography,PyQt6,PyQt6-Qt6,PyQt6-sip \
4343
--cache-dir "$WINE_PIP_CACHE_DIR" -r "$CONTRIB"/deterministic-build/requirements-binaries.txt
4444
info "Installing hardware wallet requirements..."
4545
$WINE_PYTHON -m pip install --no-build-isolation --no-dependencies --no-warn-script-location \

contrib/build-wine/deterministic.spec

+18-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ hiddenimports += collect_submodules(f"{PYPKG}.plugins")
2222

2323
binaries = []
2424
# Workaround for "Retro Look":
25-
binaries += [b for b in collect_dynamic_libs('PyQt5') if 'qwindowsvista' in b[0]]
25+
binaries += [b for b in collect_dynamic_libs('PyQt6') if 'qwindowsvista' in b[0]]
2626
# add libsecp256k1, libusb, etc:
2727
binaries += [(f"{PROJECT_ROOT}/{PYPKG}/*.dll", '.')]
2828

@@ -69,16 +69,30 @@ for d in a.datas:
6969
break
7070

7171
# Strip out parts of Qt that we never use. Reduces binary size by tens of MBs. see #4815
72-
qt_bins2remove=('qt5web', 'qt53d', 'qt5game', 'qt5designer', 'qt5quick',
73-
'qt5location', 'qt5test', 'qt5xml', r'pyqt5\qt\qml\qtquick')
72+
qt_bins2remove=(
73+
r'pyqt6\qt6\qml',
74+
r'pyqt6\qt6\bin\qt6quick',
75+
r'pyqt6\qt6\bin\qt6qml',
76+
r'pyqt6\qt6\bin\qt6multimediaquick',
77+
r'pyqt6\qt6\bin\qt6pdfquick',
78+
r'pyqt6\qt6\bin\qt6positioning',
79+
r'pyqt6\qt6\bin\qt6spatialaudio',
80+
r'pyqt6\qt6\bin\qt6shadertools',
81+
r'pyqt6\qt6\bin\qt6sensors',
82+
r'pyqt6\qt6\bin\qt6web',
83+
r'pyqt6\qt6\bin\qt6test',
84+
)
7485
print("Removing Qt binaries:", *qt_bins2remove)
7586
for x in a.binaries.copy():
7687
for r in qt_bins2remove:
7788
if x[0].lower().startswith(r):
7889
a.binaries.remove(x)
7990
print('----> Removed x =', x)
8091

81-
qt_data2remove=(r'pyqt5\qt\translations\qtwebengine_locales',)
92+
qt_data2remove=(
93+
r'pyqt6\qt6\translations\qtwebengine_locales',
94+
r'pyqt6\qt6\qml',
95+
)
8296
print("Removing Qt datas:", *qt_data2remove)
8397
for x in a.datas.copy():
8498
for r in qt_data2remove:

contrib/deterministic-build/requirements-binaries-mac.txt

+36-34
Original file line numberDiff line numberDiff line change
@@ -90,40 +90,42 @@ pip==22.3.1 \
9090
pycparser==2.21 \
9191
--hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
9292
--hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
93-
PyQt5==5.15.10 \
94-
--hash=sha256:501355f327e9a2c38db0428e1a236d25ebcb99304cd6e668c05d1188d514adec \
95-
--hash=sha256:862cea3be95b4b0a2b9678003b3a18edf7bd5eafd673860f58820f246d4bf616 \
96-
--hash=sha256:93288d62ebd47b1933d80c27f5d43c7c435307b84d480af689cef2474e87e4c8 \
97-
--hash=sha256:b89478d16d4118664ff58ed609e0a804d002703c9420118de7e4e70fa1cb5486 \
98-
--hash=sha256:d46b7804b1b10a4ff91753f8113e5b5580d2b4462f3226288e2d84497334898a \
99-
--hash=sha256:ff99b4f91aa8eb60510d5889faad07116d3340041916e46c07d519f7cad344e1
100-
PyQt5-Qt5==5.15.2 \
101-
--hash=sha256:1988f364ec8caf87a6ee5d5a3a5210d57539988bf8e84714c7d60972692e2f4a \
102-
--hash=sha256:750b78e4dba6bdf1607febedc08738e318ea09e9b10aea9ff0d73073f11f6962 \
103-
--hash=sha256:76980cd3d7ae87e3c7a33bfebfaee84448fd650bad6840471d6cae199b56e154 \
104-
--hash=sha256:9cc7a768b1921f4b982ebc00a318ccb38578e44e45316c7a4a850e953e1dd327
105-
PyQt5-sip==12.13.0 \
106-
--hash=sha256:0f85fb633a522f04e48008de49dce1ff1d947011b48885b8428838973fbca412 \
107-
--hash=sha256:108a15f603e1886988c4b0d9d41cb74c9f9815bf05cefc843d559e8c298a10ce \
108-
--hash=sha256:1c8371682f77852256f1f2d38c41e2e684029f43330f0635870895ab01c02f6c \
109-
--hash=sha256:205cd449d08a2b024a468fb6100cd7ed03e946b4f49706f508944006f955ae1a \
110-
--hash=sha256:29fa9cc964517c9fc3f94f072b9a2aeef4e7a2eda1879cb835d9e06971161cdf \
111-
--hash=sha256:3188a06956aef86f604fb0d14421a110fad70d2a9e943dbacbfc3303f651dade \
112-
--hash=sha256:3a4498f3b1b15f43f5d12963accdce0fd652b0bcaae6baf8008663365827444c \
113-
--hash=sha256:5338773bbaedaa4f16a73c142fb23cc18c327be6c338813af70260b756c7bc92 \
114-
--hash=sha256:6e4ac714252370ca037c7d609da92388057165edd4f94e63354f6d65c3ed9d53 \
115-
--hash=sha256:773731b1b5ab1a7cf5621249f2379c95e3d2905e9bd96ff3611b119586daa876 \
116-
--hash=sha256:7f321daf84b9c9dbca61b80e1ef37bdaffc0e93312edae2cd7da25b953971d91 \
117-
--hash=sha256:7fe3375b508c5bc657d73b9896bba8a768791f1f426c68053311b046bcebdddf \
118-
--hash=sha256:96414c93f3d33963887cf562d50d88b955121fbfd73f937c8eca46643e77bf61 \
119-
--hash=sha256:9a8cdd6cb66adcbe5c941723ed1544eba05cf19b6c961851b58ccdae1c894afb \
120-
--hash=sha256:9b984c2620a7a7eaf049221b09ae50a345317add2624c706c7d2e9e6632a9587 \
121-
--hash=sha256:a7e3623b2c743753625c4650ec7696362a37fb36433b61824cf257f6d3d43cca \
122-
--hash=sha256:bbc7cd498bf19e0862097be1ad2243e824dea56726f00c11cff1b547c2d31d01 \
123-
--hash=sha256:d5032da3fff62da055104926ffe76fd6044c1221f8ad35bb60804bcb422fe866 \
124-
--hash=sha256:db228cd737f5cbfc66a3c3e50042140cb80b30b52edc5756dbbaa2346ec73137 \
125-
--hash=sha256:ec60162e034c42fb99859206d62b83b74f987d58937b3a82bdc07b5c3d190dec \
126-
--hash=sha256:fb4a5271fa3f6bc2feb303269a837a95a6d8dd16be553aa40e530de7fb81bfdf
93+
PyQt6==6.7.1 \
94+
--hash=sha256:0adb7914c732ad1dee46d9cec838a98cb2b11bc38cc3b7b36fbd8701ae64bf47 \
95+
--hash=sha256:2d771fa0981514cb1ee937633dfa64f14caa902707d9afffab66677f3a73e3da \
96+
--hash=sha256:3672a82ccd3a62e99ab200a13903421e2928e399fda25ced98d140313ad59cb9 \
97+
--hash=sha256:7f397f4b38b23b5588eb2c0933510deb953d96b1f0323a916c4839c2a66ccccc \
98+
--hash=sha256:c2f202b7941aa74e5c7e1463a6f27d9131dbc1e6cabe85571d7364f5b3de7397 \
99+
--hash=sha256:f053378e3aef6248fa612c8afddda17f942fb63f9fe8a9aeb2a6b6b4cbb0eba9 \
100+
--hash=sha256:fa3954698233fe286a8afc477b84d8517f0788eb46b74da69d3ccc0170d3714c
101+
PyQt6-Qt6==6.7.2 \
102+
--hash=sha256:05f2c7d195d316d9e678a92ecac0252a24ed175bd2444cc6077441807d756580 \
103+
--hash=sha256:065415589219a2f364aba29d6a98920bb32810286301acbfa157e522d30369e3 \
104+
--hash=sha256:7f817efa86a0e8eda9152c85b73405463fbf3266299090f32bbb2266da540ead \
105+
--hash=sha256:b2d7e5ddb1b9764cd60f1d730fa7bf7a1f0f61b2630967c81761d3d0a5a8a2e0 \
106+
--hash=sha256:fc93945eaef4536d68bd53566535efcbe78a7c05c2a533790a8fd022bac8bfaa
107+
PyQt6-sip==13.8.0 \
108+
--hash=sha256:056af69d1d8d28d5968066ec5da908afd82fc0be07b67cf2b84b9f02228416ce \
109+
--hash=sha256:08dd81037a2864982ece2bf9891f3bf4558e247034e112993ea1a3fe239458cb \
110+
--hash=sha256:2559afa68825d08de09d71c42f3b6ad839dcc30f91e7c6d0785e07830d5541a5 \
111+
--hash=sha256:2f74cf3d6d9cab5152bd9f49d570b2dfb87553ebb5c4919abfde27f5b9fd69d4 \
112+
--hash=sha256:33d9b399fc9c9dc99496266842b0fb2735d924604774e97cf9b555667cc0fc59 \
113+
--hash=sha256:6bce6bc5870d9e87efe5338b1ee4a7b9d7d26cdd16a79a5757d80b6f25e71edc \
114+
--hash=sha256:755beb5d271d081e56618fb30342cdd901464f721450495cb7cb0212764da89e \
115+
--hash=sha256:7a0bbc0918eab5b6351735d40cf22cbfa5aa2476b55e0d5fe881aeed7d871c29 \
116+
--hash=sha256:7f84c472afdc7d316ff683f63129350d645ef82d9b3fd75a609b08472d1f7291 \
117+
--hash=sha256:835ed22eab977f75fd77e60d4ff308a1fa794b1d0c04849311f36d2a080cdf3b \
118+
--hash=sha256:9ea9223c94906efd68148f12ae45b51a21d67e86704225ddc92bce9c54e4d93c \
119+
--hash=sha256:a5c086b7c9c7996ea9b7522646cc24eebbf3591ec9dd38f65c0a3fdb0dbeaac7 \
120+
--hash=sha256:b1bf29e95f10a8a00819dac804ca7e5eba5fc1769adcd74c837c11477bf81954 \
121+
--hash=sha256:b203b6fbae4a8f2d27f35b7df46200057033d9ecd9134bcf30e3eab66d43572c \
122+
--hash=sha256:beaddc1ec96b342f4e239702f91802706a80cb403166c2da318cec4ad8b790cb \
123+
--hash=sha256:cd81144b0770084e8005d3a121c9382e6f9bc8d0bb320dd618718ffe5090e0e6 \
124+
--hash=sha256:cedd554c643e54c4c2e12b5874781a87441a1b405acf3650a4a2e1df42aae231 \
125+
--hash=sha256:d8b22a6850917c68ce83fc152a8b606ecb2efaaeed35be53110468885d6cdd9d \
126+
--hash=sha256:dd168667addf01f8a4b0fa7755323e43e4cd12ca4bade558c61f713a5d48ba1a \
127+
--hash=sha256:f57275b5af774529f9838adcfb58869ba3ebdaf805daea113bb0697a96a3f3cb \
128+
--hash=sha256:fbb249b82c53180f1420571ece5dc24fea1188ba435923edd055599dffe7abfb
127129
setuptools==65.5.1 \
128130
--hash=sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31 \
129131
--hash=sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f

contrib/deterministic-build/requirements-binaries.txt

+36-34
Original file line numberDiff line numberDiff line change
@@ -90,40 +90,42 @@ pip==22.3.1 \
9090
pycparser==2.21 \
9191
--hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
9292
--hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
93-
PyQt5==5.15.10 \
94-
--hash=sha256:501355f327e9a2c38db0428e1a236d25ebcb99304cd6e668c05d1188d514adec \
95-
--hash=sha256:862cea3be95b4b0a2b9678003b3a18edf7bd5eafd673860f58820f246d4bf616 \
96-
--hash=sha256:93288d62ebd47b1933d80c27f5d43c7c435307b84d480af689cef2474e87e4c8 \
97-
--hash=sha256:b89478d16d4118664ff58ed609e0a804d002703c9420118de7e4e70fa1cb5486 \
98-
--hash=sha256:d46b7804b1b10a4ff91753f8113e5b5580d2b4462f3226288e2d84497334898a \
99-
--hash=sha256:ff99b4f91aa8eb60510d5889faad07116d3340041916e46c07d519f7cad344e1
100-
PyQt5-Qt5==5.15.2 \
101-
--hash=sha256:1988f364ec8caf87a6ee5d5a3a5210d57539988bf8e84714c7d60972692e2f4a \
102-
--hash=sha256:750b78e4dba6bdf1607febedc08738e318ea09e9b10aea9ff0d73073f11f6962 \
103-
--hash=sha256:76980cd3d7ae87e3c7a33bfebfaee84448fd650bad6840471d6cae199b56e154 \
104-
--hash=sha256:9cc7a768b1921f4b982ebc00a318ccb38578e44e45316c7a4a850e953e1dd327
105-
PyQt5-sip==12.13.0 \
106-
--hash=sha256:0f85fb633a522f04e48008de49dce1ff1d947011b48885b8428838973fbca412 \
107-
--hash=sha256:108a15f603e1886988c4b0d9d41cb74c9f9815bf05cefc843d559e8c298a10ce \
108-
--hash=sha256:1c8371682f77852256f1f2d38c41e2e684029f43330f0635870895ab01c02f6c \
109-
--hash=sha256:205cd449d08a2b024a468fb6100cd7ed03e946b4f49706f508944006f955ae1a \
110-
--hash=sha256:29fa9cc964517c9fc3f94f072b9a2aeef4e7a2eda1879cb835d9e06971161cdf \
111-
--hash=sha256:3188a06956aef86f604fb0d14421a110fad70d2a9e943dbacbfc3303f651dade \
112-
--hash=sha256:3a4498f3b1b15f43f5d12963accdce0fd652b0bcaae6baf8008663365827444c \
113-
--hash=sha256:5338773bbaedaa4f16a73c142fb23cc18c327be6c338813af70260b756c7bc92 \
114-
--hash=sha256:6e4ac714252370ca037c7d609da92388057165edd4f94e63354f6d65c3ed9d53 \
115-
--hash=sha256:773731b1b5ab1a7cf5621249f2379c95e3d2905e9bd96ff3611b119586daa876 \
116-
--hash=sha256:7f321daf84b9c9dbca61b80e1ef37bdaffc0e93312edae2cd7da25b953971d91 \
117-
--hash=sha256:7fe3375b508c5bc657d73b9896bba8a768791f1f426c68053311b046bcebdddf \
118-
--hash=sha256:96414c93f3d33963887cf562d50d88b955121fbfd73f937c8eca46643e77bf61 \
119-
--hash=sha256:9a8cdd6cb66adcbe5c941723ed1544eba05cf19b6c961851b58ccdae1c894afb \
120-
--hash=sha256:9b984c2620a7a7eaf049221b09ae50a345317add2624c706c7d2e9e6632a9587 \
121-
--hash=sha256:a7e3623b2c743753625c4650ec7696362a37fb36433b61824cf257f6d3d43cca \
122-
--hash=sha256:bbc7cd498bf19e0862097be1ad2243e824dea56726f00c11cff1b547c2d31d01 \
123-
--hash=sha256:d5032da3fff62da055104926ffe76fd6044c1221f8ad35bb60804bcb422fe866 \
124-
--hash=sha256:db228cd737f5cbfc66a3c3e50042140cb80b30b52edc5756dbbaa2346ec73137 \
125-
--hash=sha256:ec60162e034c42fb99859206d62b83b74f987d58937b3a82bdc07b5c3d190dec \
126-
--hash=sha256:fb4a5271fa3f6bc2feb303269a837a95a6d8dd16be553aa40e530de7fb81bfdf
93+
PyQt6==6.7.1 \
94+
--hash=sha256:0adb7914c732ad1dee46d9cec838a98cb2b11bc38cc3b7b36fbd8701ae64bf47 \
95+
--hash=sha256:2d771fa0981514cb1ee937633dfa64f14caa902707d9afffab66677f3a73e3da \
96+
--hash=sha256:3672a82ccd3a62e99ab200a13903421e2928e399fda25ced98d140313ad59cb9 \
97+
--hash=sha256:7f397f4b38b23b5588eb2c0933510deb953d96b1f0323a916c4839c2a66ccccc \
98+
--hash=sha256:c2f202b7941aa74e5c7e1463a6f27d9131dbc1e6cabe85571d7364f5b3de7397 \
99+
--hash=sha256:f053378e3aef6248fa612c8afddda17f942fb63f9fe8a9aeb2a6b6b4cbb0eba9 \
100+
--hash=sha256:fa3954698233fe286a8afc477b84d8517f0788eb46b74da69d3ccc0170d3714c
101+
PyQt6-Qt6==6.7.2 \
102+
--hash=sha256:05f2c7d195d316d9e678a92ecac0252a24ed175bd2444cc6077441807d756580 \
103+
--hash=sha256:065415589219a2f364aba29d6a98920bb32810286301acbfa157e522d30369e3 \
104+
--hash=sha256:7f817efa86a0e8eda9152c85b73405463fbf3266299090f32bbb2266da540ead \
105+
--hash=sha256:b2d7e5ddb1b9764cd60f1d730fa7bf7a1f0f61b2630967c81761d3d0a5a8a2e0 \
106+
--hash=sha256:fc93945eaef4536d68bd53566535efcbe78a7c05c2a533790a8fd022bac8bfaa
107+
PyQt6-sip==13.8.0 \
108+
--hash=sha256:056af69d1d8d28d5968066ec5da908afd82fc0be07b67cf2b84b9f02228416ce \
109+
--hash=sha256:08dd81037a2864982ece2bf9891f3bf4558e247034e112993ea1a3fe239458cb \
110+
--hash=sha256:2559afa68825d08de09d71c42f3b6ad839dcc30f91e7c6d0785e07830d5541a5 \
111+
--hash=sha256:2f74cf3d6d9cab5152bd9f49d570b2dfb87553ebb5c4919abfde27f5b9fd69d4 \
112+
--hash=sha256:33d9b399fc9c9dc99496266842b0fb2735d924604774e97cf9b555667cc0fc59 \
113+
--hash=sha256:6bce6bc5870d9e87efe5338b1ee4a7b9d7d26cdd16a79a5757d80b6f25e71edc \
114+
--hash=sha256:755beb5d271d081e56618fb30342cdd901464f721450495cb7cb0212764da89e \
115+
--hash=sha256:7a0bbc0918eab5b6351735d40cf22cbfa5aa2476b55e0d5fe881aeed7d871c29 \
116+
--hash=sha256:7f84c472afdc7d316ff683f63129350d645ef82d9b3fd75a609b08472d1f7291 \
117+
--hash=sha256:835ed22eab977f75fd77e60d4ff308a1fa794b1d0c04849311f36d2a080cdf3b \
118+
--hash=sha256:9ea9223c94906efd68148f12ae45b51a21d67e86704225ddc92bce9c54e4d93c \
119+
--hash=sha256:a5c086b7c9c7996ea9b7522646cc24eebbf3591ec9dd38f65c0a3fdb0dbeaac7 \
120+
--hash=sha256:b1bf29e95f10a8a00819dac804ca7e5eba5fc1769adcd74c837c11477bf81954 \
121+
--hash=sha256:b203b6fbae4a8f2d27f35b7df46200057033d9ecd9134bcf30e3eab66d43572c \
122+
--hash=sha256:beaddc1ec96b342f4e239702f91802706a80cb403166c2da318cec4ad8b790cb \
123+
--hash=sha256:cd81144b0770084e8005d3a121c9382e6f9bc8d0bb320dd618718ffe5090e0e6 \
124+
--hash=sha256:cedd554c643e54c4c2e12b5874781a87441a1b405acf3650a4a2e1df42aae231 \
125+
--hash=sha256:d8b22a6850917c68ce83fc152a8b606ecb2efaaeed35be53110468885d6cdd9d \
126+
--hash=sha256:dd168667addf01f8a4b0fa7755323e43e4cd12ca4bade558c61f713a5d48ba1a \
127+
--hash=sha256:f57275b5af774529f9838adcfb58869ba3ebdaf805daea113bb0697a96a3f3cb \
128+
--hash=sha256:fbb249b82c53180f1420571ece5dc24fea1188ba435923edd055599dffe7abfb
127129
setuptools==65.5.1 \
128130
--hash=sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31 \
129131
--hash=sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f

contrib/osx/README_macos.md

+2-18
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ $ git submodule update --init
1717

1818
Run install (this should install most dependencies):
1919
```
20-
$ python3 -m pip install --user -e ".[crypto]"
20+
$ python3 -m pip install --user -e ".[gui,crypto]"
2121
```
2222

2323
### 2. Install libsecp256k1
@@ -26,23 +26,7 @@ $ brew install autoconf automake libtool coreutils
2626
$ contrib/make_libsecp256k1.sh
2727
```
2828

29-
### 3. Install PyQt5
30-
31-
On Intel-based (x86_64) Macs:
32-
```
33-
$ python3 -m pip install --user pyqt5
34-
```
35-
36-
Re ARM-based Macs (Apple M1), there are no prebuilt wheels on PyPI.
37-
As a workaround, we can install it from `brew`:
38-
```
39-
$ brew install pyqt5
40-
$ echo 'export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"' >> ~/.zshrc
41-
$ echo 'export PATH="/opt/homebrew/opt/pyqt@5/5.15.4_1/bin:$PATH"' >> ~/.zshrc
42-
$ source ~/.zshrc
43-
```
44-
45-
### 4. Run electrum:
29+
### 3. Run electrum:
4630
```
4731
$ ./run_electrum
4832
```

0 commit comments

Comments
 (0)