Had to also bump ubuntu version 18.04->20.04,
as was getting errors running the self-compiled pyinstaller otherwise (weird...):
```
from .utils.git import get_repo_revision
ModuleNotFoundError: No module named 'PyInstaller.utils'
```
(similar to https://github.com/pyinstaller/pyinstaller/issues/4403 )
-----
Note re appimage: when trying to compile python 3.8.x on ubuntu 16.04, I am getting:
./Modules/posixmodule.c: In function ‘os_copy_file_range_impl’:
./Modules/posixmodule.c:10351:15: error: implicit declaration of function ‘copy_file_range’ [-Werror=implicit-function-declaration]
ret = copy_file_range(src, p_offset_src, dst, p_offset_dst, count, flags);
This is because ubuntu 16.04 has too old glibc.
and poetry has a gazillion dependencies...
Collecting dnspython==2.1.0
Downloading dnspython-2.1.0.zip (389 kB)
|████████████████████████████████| 389 kB 2.1 MB/s
Installing build dependencies ... |
error
ERROR: Command errored out with exit status 1:
command: /opt/electrum/contrib/build-linux/appimage/../../../contrib/build-linux/appimage/build/appimage/electrum.AppDir/usr/bin/python3.7 /opt/electrum/contrib/build-linux/appimage/build/appimage/electrum.AppDir/usr/lib/python3.7/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-5z1gx14i/overlay --no-warn-script-location --no-binary :all: --only-binary :none: -i https://pypi.org/simple -- 'poetry>=0.12'
cwd: None
Complete output (195 lines):
Collecting poetry>=0.12
Downloading poetry-1.1.4.tar.gz (132 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting pkginfo<2.0,>=1.4
Downloading pkginfo-1.6.1.tar.gz (37 kB)
Collecting tomlkit<1.0.0,>=0.7.0
Downloading tomlkit-0.7.0.tar.gz (163 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting keyring<22.0.0,>=21.2.0; python_version >= "3.6" and python_version < "4.0"
Downloading keyring-21.8.0.tar.gz (58 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting cleo<0.9.0,>=0.8.1
Downloading cleo-0.8.1.tar.gz (19 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting pexpect<5.0.0,>=4.7.0
Downloading pexpect-4.8.0.tar.gz (157 kB)
Collecting poetry-core<2.0.0,>=1.0.0
Using cached poetry-core-1.0.0.tar.gz (333 kB)
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting importlib-metadata<2.0.0,>=1.6.0; python_version < "3.8"
Using cached importlib_metadata-1.7.0.tar.gz (29 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting crashtest<0.4.0,>=0.3.0; python_version >= "3.6" and python_version < "4.0"
Downloading crashtest-0.3.1.tar.gz (4.3 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting shellingham<2.0,>=1.1
Downloading shellingham-1.3.2.tar.gz (9.7 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting virtualenv<21.0.0,>=20.0.26
Downloading virtualenv-20.2.2.tar.gz (9.1 MB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting requests-toolbelt<0.10.0,>=0.9.1
Downloading requests-toolbelt-0.9.1.tar.gz (207 kB)
Collecting html5lib<2.0,>=1.0
Downloading html5lib-1.1.tar.gz (272 kB)
Collecting cachecontrol[filecache]<0.13.0,>=0.12.4
Downloading CacheControl-0.12.6.tar.gz (14 kB)
Collecting clikit<0.7.0,>=0.6.2
Downloading clikit-0.6.2.tar.gz (56 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting requests<3.0,>=2.18
Downloading requests-2.25.1.tar.gz (102 kB)
Collecting cachy<0.4.0,>=0.3.0
Downloading cachy-0.3.0.tar.gz (15 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting packaging<21.0,>=20.4
Downloading packaging-20.8.tar.gz (79 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting jeepney>=0.4.2; sys_platform == "linux"
Downloading jeepney-0.6.0.tar.gz (49 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting SecretStorage>=3.2; sys_platform == "linux"
Downloading SecretStorage-3.3.0.tar.gz (19 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting ptyprocess>=0.5
Downloading ptyprocess-0.7.0.tar.gz (70 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting zipp>=0.5
Using cached zipp-3.4.0.tar.gz (15 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Collecting appdirs<2,>=1.4.3
Downloading appdirs-1.4.4.tar.gz (13 kB)
Collecting distlib<1,>=0.3.1
Downloading distlib-0.3.1.zip (578 kB)
Collecting six<2,>=1.9.0
Downloading six-1.15.0.tar.gz (33 kB)
Collecting filelock<4,>=3.0.0
Downloading filelock-3.0.12.tar.gz (8.5 kB)
Collecting webencodings
Downloading webencodings-0.5.1.tar.gz (9.7 kB)
Collecting msgpack>=0.5.2
Downloading msgpack-1.0.2.tar.gz (123 kB)
Collecting lockfile>=0.9
Downloading lockfile-0.12.2.tar.gz (20 kB)
ERROR: Command errored out with exit status 1:
- dnspython 2.0 requires cryptography 2.6 so we now always require that
(no longer a choice between cryptography and pycryptodomex)
- test_dnssec.py is deleted as it was testing the monkey-patch
related: #6538
follow-up: 59e9337be0
For some reason, without this change, the first build works but subsequent builds fail.
Not sure what the cause is. This is why Travis builds work.
This is the time of the year Apple breaks our mac builds, as usual.
mac now has its own "binaries" requirements. This allows us to use
an older version of PyQt5 in the mac binaries. For some reason
if we bundle newer PyQt5, the built app will not start on macOS 11
(but will on older macOS).
related: #6461
in particular, see https://github.com/spesmilo/electrum/issues/6461#issuecomment-713888921
The "setup" Windows binary we distribute allows users to "install" Electrum
on their system. The distributable is created by NSIS. During
installation a bunch of files will get unpacked in %programfiles(x86)%/Electrum,
including an "inner" exe that will be the entrypoint for the user to start
the application. A shortcut is also created for the inner exe.
With this change, there will now be two inner EXEs. One the same as before,
the other with a "-debug" suffix in its name. The debug exe is built as a
"console" application (as opposed to a "windowed" application), so when
launched via double-click a black console window would appear; and also
importantly stdin/stdout are handled properly for it (unlike for "windowed"
programs). (see #2592)
There will not be a shortcut or similar for the debug exe; it would just
be there as a debugging option we can instruct users to use when needed.
In particular early crashes during startup are hard to debug without
stdout/stderr. (see e.g. #6601)
Since #6014, pyaes is not really needed anymore.
As we currently require either one of pycryptodomex or cryptography,
even if pyaes is available, it will not be used.
We could strip it out completely from crypto.py...
In any case, pyaes is still pulled in by some hw wallet dependencies indirectly;
but the core library no longer depends on it.