Commit Graph

172 Commits

Author SHA1 Message Date
ThomasV 3c5465fc5c update locale 2022-08-17 14:52:26 +02:00
ThomasV 4fcc5a580a prepare release 4.3.0: update version.py and locale 2022-08-05 14:05:49 +02:00
SomberNight 752b37a03b dependencies: bundle older hidapi in binaries
closes https://github.com/spesmilo/electrum/issues/7738
2022-08-04 21:47:50 +02:00
ThomasV 3ce42edbab update locale submodule 2022-05-27 12:17:41 +02:00
Jamie C. Driver 15f108aaa5 Add support for the Blockstream Jade hww 2022-05-20 16:03:46 +01:00
SomberNight 3bae7dfd90 mac build: git clone pyinstaller to allow using custom commits
This allows more freedom than using releases from PyPI.
(atm there is no released version that fixes https://github.com/pyinstaller/pyinstaller/pull/6701 )
Also, we now build the pyinstaller bootloader, just like in the windows build:
one fewer binary blob to trust.
2022-04-06 21:01:11 +02:00
Sander van Grieken 184e122c36 rerun freeze_packages 2022-04-04 00:56:08 +02:00
SomberNight c51655ad61 update locale 2022-03-26 03:38:13 +01:00
SomberNight 98d32f41d5 build: (reproducibility) always uses "pip install" with "--no-build-isolation"
fixes https://github.com/spesmilo/electrum/issues/7737
fixes https://github.com/spesmilo/electrum/issues/7736
related https://github.com/spesmilo/electrum/commit/8559d1eb723c8c462c3d2a7365967ada46ef21c5
2022-03-26 02:45:47 +01:00
SomberNight b5951adc29 win build: update pyinstaller (from around 4.2 to around 4.10)
see https://github.com/spesmilo/electrum/pull/7721#issuecomment-1072669548

-----

pyinstaller 4.2 failed (during its runtime) to create exes (worked with cpython 3.9.10, but not with cpython 3.9.11):
```
80572 INFO: Processing module hooks...
80573 INFO: Loading module hook 'hook-certifi.py' from 'C:\\python3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
80618 INFO: Loading module hook 'hook-cryptography.py' from 'C:\\python3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
82879 INFO: Loading module hook 'hook-dns.rdata.py' from 'C:\\python3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
84147 INFO: Loading module hook 'hook-mnemonic.py' from 'C:\\python3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
84207 INFO: Loading module hook 'hook-pycparser.py' from 'C:\\python3\\lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'...
84212 INFO: Loading module hook 'hook-usb1.py' from 'C:\\python3\\lib\\site-packages\\usb1\\__pyinstaller'...
84215 INFO: --- libusb1 pyinstaller hook ---
84226 INFO: Added libusb binaries: [('C:\\python3\\lib\\site-packages\\usb1\\libusb-1.0.dll', 'usb1')]
84228 INFO: Loading module hook 'hook-difflib.py' from 'C:\\python3\\lib\\site-packages\\PyInstaller\\hooks'...
84237 INFO: Excluding import of doctest from module difflib
84237 INFO: Loading module hook 'hook-distutils.py' from 'C:\\python3\\lib\\site-packages\\PyInstaller\\hooks'...
Unable to find "C:\python3\Include\pyconfig.h" when adding binary and data files.This would mean your Python installation doesn't
come with proper library files. This usually happens by missing development
package, or unsuitable build parameters of Python installation.
* On Debian/Ubuntu, you would need to install Python development packages
  * apt-get install python3-dev
  * apt-get install python-dev
* If you're building Python by yourself, please rebuild your Python with
`--enable-shared` (or, `--enable-framework` on Darwin)

🗯 ERROR: build-electrum-git failed
```

Looks like this might be fixed in pyinstaller 4.3 (we are using 4.2):
https://github.com/pyinstaller/pyinstaller/pull/5218

-----

While trying to update pyinstaller to have that fix, several issues found with versions 4.3-4.10,
now reported upstream and already fixed:
https://github.com/pyinstaller/pyinstaller/issues/6338
https://github.com/pyinstaller/pyinstaller/issues/6339
https://github.com/pyinstaller/pyinstaller/issues/6686

So the pyinstaller commit pinned here is from the stable "v4" branch, some commits after the 4.10 tag,
which has fixes for the above issues.
2022-03-20 17:28:11 +01:00
ThomasV d10203f88e update submodule 2022-03-15 15:26:57 +01:00
SomberNight 1c297d6049 android build: add Qt/QML build-time dependencies
related https://github.com/spesmilo/electrum/pull/7703/files/78b51b3f4346f731fab81003bd4caf15092179e2#r826140909
2022-03-14 21:36:27 +01:00
SomberNight 338637973f frozen deps: update bitbox02 and coldcard libs 2022-03-14 17:32:04 +01:00
ThomasV d91a4da557 Add Qt5/QML building framework to contrib/android:
- update requirements file for building PyQt5
 - use separate .buildozer directories for qml and Kivy
 - add GUI and ARCH parameters to android/build.sh
2022-03-08 17:21:31 +01:00
SomberNight b79656e54c rerun freeze_packages 2022-02-17 17:07:06 +01:00
SomberNight c9c094cfab requirements: bump min aiorpcx to 0.22.0
aiorpcx 0.20 changed the behaviour/API of TaskGroups.
When used as a context manager, TaskGroups no longer propagate
exceptions raised by their tasks. Instead, the calling code has
to explicitly check the results of tasks and decide whether to re-raise
any exceptions.
This is a significant change, and so this commit introduces "OldTaskGroup",
which should behave as the TaskGroup class of old aiorpcx. All existing
usages of TaskGroup are replaced with OldTaskGroup.

closes https://github.com/spesmilo/electrum/issues/7446
2022-02-15 18:22:44 +01:00
SomberNight a3e1d2e25e follow-up prev
there must be a better way of doing this...
we should somehow automate figuring out the build-time dependencies of requirements.txt
2022-01-22 17:49:20 +01:00
SomberNight 8559d1eb72 build: android reprod: "pip install" needs "--no-build-isolation"
maybe fixes https://github.com/spesmilo/electrum/issues/7640

Looks like by default pip is ignoring the locally available setuptools and wheel,
and downloading the latest ones from the internet at build time...

https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml/?highlight=no-build-isolation#disabling-build-isolation
https://stackoverflow.com/a/62889268

> When making build requirements available, pip does so in an isolated environment. That is, pip does not install those requirements into the user’s site-packages, but rather installs them in a temporary directory which it adds to the user’s sys.path for the duration of the build. This ensures that build requirements are handled independently of the user’s runtime environment. For example, a project that needs a recent version of setuptools to build can still be installed, even if the user has an older version installed (and without silently replacing that version).
>
> In certain cases, projects (or redistributors) may have workflows that explicitly manage the build environment. For such workflows, build isolation can be problematic. If this is the case, pip provides a --no-build-isolation flag to disable build isolation. Users supplying this flag are responsible for ensuring the build environment is managed appropriately (including ensuring that all required build dependencies are installed).

If only it were that easy!
If we add the "--no-build-isolation" flag, it becomes our responsibility to install *all* build time deps,
hence we now have "requirements-build-makepackages.txt".
2022-01-22 14:49:35 +01:00
SomberNight d9b55ae5c8 build: relax dnspython version bound
The <2.1 pin had been put there as dnspython 2.1 added "poetry" as a build time dep,
which pulled in a significant number of transitive dependencies, and it was also
causing issues with our appimage build.

dnspython 2.2.0 was released since, which no longer needs full poetry, only "poetry-core":
https://github.com/rthalley/dnspython/commit/da279dec7e8121c4ff6fc1ea166570888a2bb988

related https://github.com/spesmilo/electrum/issues/7361
2022-01-20 15:09:08 +01:00
SomberNight 1705c1999a build: rm "dataclasses" from pinned requirements-hw.txt
trezorlib requires "dataclasses ; python_version<'3.7'", and our min supported python version is 3.6,
so freeze_packages.sh pins down a version of "dataclasses". However, when creating binaries we
use newer versions of python (typically py3.9 atm), for which dataclasses is not available (it's a backport of py3.7 stuff).
Hmhm, what to do... short-term, I am manually removing the dataclasses pin, so it won't be installed in our binaries.

```
Collecting construct==2.10.67
  Downloading construct-2.10.67.tar.gz (57 kB)
     |████████████████████████████████| 57 kB 2.7 MB/s
  Preparing metadata (setup.py) ... done
Requirement already satisfied: cryptography==36.0.1 in ./build/appimage/electrum.AppDir/usr/lib/python3.9/site-packages (from -r /opt/electrum/contrib/build-linux/appimage/../../../contrib/deterministic-build/requirements-hw.txt (line 74)) (36.0.1)
ERROR: Could not find a version that satisfies the requirement dataclasses==0.8 (from versions: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6)
ERROR: No matching distribution found for dataclasses==0.8
```
2022-01-20 15:09:04 +01:00
SomberNight 6421ff015d rerun freeze_packages 2022-01-20 14:11:54 +01:00
SomberNight 6a0d7dfd48 rerun freeze_packages 2021-11-02 18:38:13 +01:00
ThomasV d8d2c180aa update locale 2021-07-19 17:35:40 +02:00
SomberNight 81a71ec09b update locale; again :P
c2c845a82d accidentally undid the previous update
2021-06-16 20:28:00 +02:00
ThomasV c2c845a82d follow-up 8ff49fa9bb 2021-06-16 17:14:06 +02:00
SomberNight 60debf9116 update locale 2021-06-16 16:59:44 +02:00
SomberNight 3c9346cce2 android build: attempt at reproducible builds 2021-06-09 18:34:09 +02:00
SomberNight 1dfa81e7b6 contrib: fix find_restricted_dependencies for deps with version range
New release of pyinstaller (4.3) broke the script (which is used by freeze_packages.sh).

-----

Compare:

$ wget https://pypi.org/pypi/pyinstaller/4.3/json
$ cat json | jq ".info.requires_dist"
[
  "setuptools",
  "altgraph",
  "pyinstaller-hooks-contrib (>=2020.6)",
  "importlib-metadata ; python_version < \"3.8\"",
  "macholib (>=1.8) ; sys_platform == \"darwin\"",
  "pefile (>=2017.8.1) ; sys_platform == \"win32\"",
  "pywin32-ctypes (>=0.2.0) ; sys_platform == \"win32\"",
  "tinyaes (>=1.0.0) ; extra == 'encryption'",
  "pytest (>=2.7.3) ; extra == 'hook_testing'",
  "execnet (>=1.5.0) ; extra == 'hook_testing'",
  "psutil ; extra == 'hook_testing'"
]

$ wget https://pypi.org/pypi/pyinstaller/4.2/json | jq .
$ cat json | jq ".info.requires_dist"
null

$ wget https://pypi.org/pypi/qrcode/6.1/json
$ cat json | jq ".info.requires_dist"
[
  "six",
  "colorama ; platform_system == \"Windows\"",
  "tox ; extra == 'dev'",
  "pytest ; extra == 'dev'",
  "mock ; (python_version < \"3\") and extra == 'dev'",
  "zest.releaser[recommended] ; extra == 'maintainer'",
  "pillow ; extra == 'pil'",
  "pytest ; extra == 'test'",
  "pytest-cov ; extra == 'test'",
  "mock ; (python_version < \"3\") and extra == 'test'"
]
2021-04-26 20:45:40 +02:00
SomberNight ce4e556e20 update locale 2021-03-30 18:01:43 +02:00
SomberNight cecbaca4d1 rerun freeze_packages 2021-03-13 15:00:05 +01:00
SomberNight 83750a861f ledger: bump min btchip-python (0.1.30->0.1.32)
So that it has https://github.com/LedgerHQ/btchip-python/pull/42

fixes #6928
2021-02-12 05:28:01 +01:00
SomberNight 922a48f2b7 rerun freeze_packages 2021-01-07 21:42:03 +01:00
SomberNight e0917d12f6 rerun freeze_packages 2020-12-09 16:37:59 +01:00
ThomasV 4fdeeb224e update locale 2020-12-09 14:20:34 +01:00
ThomasV 0e0cb57c73 update locale 2020-12-09 14:19:04 +01:00
SomberNight 2c8ebff965 rerun freeze_packages 2020-12-08 16:53:51 +01:00
SomberNight 827f00896c update locale submodule 2020-11-18 20:19:38 +01:00
SomberNight 8c1c07a290 build: partially revert 3cd52e2d7b
new versions of yarl and multidict break the windows build as they
don't provide win32 wheels

see
https://github.com/aio-libs/multidict/issues/550
https://github.com/aio-libs/yarl/issues/535
2020-11-14 09:07:46 +01:00
SomberNight 3cd52e2d7b rerun freeze_packages 2020-11-14 05:21:33 +01:00
SomberNight a4e342ac58 requirements: rename some files 2020-11-14 04:30:48 +01:00
SomberNight 695ad757c7 frozen deps: don't use colorama 0.4.4
until https://github.com/tartley/colorama/issues/284 is resolved

colorama 0.4.4 does not have a source dist uploaded to PyPI, which breaks contrib/make_packages

this partially reverts 4d0afffbcd
2020-10-15 17:11:33 +02:00
SomberNight e4e6c4fb1b update locale submodule 2020-10-15 16:19:14 +02:00
SomberNight 4d0afffbcd rerun freeze_packages 2020-10-15 15:57:39 +02:00
ThomasV 413fcfbf9b update locale submodule 2020-09-11 15:18:03 +02:00
SomberNight 9204102663 binaries: pip install build requirements first
I no longer trust pip to install packages from a requirements.txt file in the correct order.
For reproducibility, let's install pip/setuptools/wheels/cython first.

see https://github.com/pypa/pip/issues/2362#issuecomment-418423458
see #5859 and #6382
2020-09-08 16:44:35 +02:00
SomberNight 829f7c7443 rerun freeze_packages 2020-09-08 16:44:31 +02:00
SomberNight f1d54d3cd8 update locale submodule 2020-07-08 02:13:44 +02:00
SomberNight 27d03441d3 frozen deps: update bitbox02 and ledger libs
related: #6309, #6293
2020-07-02 13:01:07 +02:00
SomberNight 212d18d5e6 frozen deps: update coldcard lib
closes #6181
2020-06-25 19:36:43 +02:00
ThomasV 27f90ad595 update locale submodule 2020-06-23 20:35:28 +02:00