1
0
Commit Graph

29 Commits

Author SHA1 Message Date
SomberNight
fb5a1af666 bump min required Python version to 3.10 2025-01-10 18:52:49 +00:00
SomberNight
326f8c4fca freeze_packages: better apply version restrictions on restricted deps
hashin does not react well to package spec collisions:
```
$ touch txt
$ python3 -m hashin -r txt "colorama==0.4.5" colorama
$ cat txt
colorama==0.4.6 \
    --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
    --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
```

This lets pip resolve the version bounds instead.
2022-11-05 14:41:35 +00:00
SomberNight
6d01dbcc5c android build: "req..-build-android.txt" to only use source pkgs 2022-10-14 17:59:18 +00:00
SomberNight
328455bc8c freeze_packages: restrict some requirements files to source-only pkgs 2022-10-14 16:18:51 +00:00
SomberNight
b5900eae98 contrib: reformat most shell scripts
Mostly just indentations.
For consistency, to conform to .editorconfig.
2022-09-27 14:55:22 +00: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 8559d1eb72
2022-03-26 02:45:47 +01:00
SomberNight
dd2f8541b7 bump min required Python version to 3.8 2022-02-15 18:22:32 +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
3c9346cce2 android build: attempt at reproducible builds 2021-06-09 18:34:09 +02:00
SomberNight
b8395f71be contrib: freeze_packages should pin latest pip/etc if possible
We've already been pinning pip/setuptools/wheel; it is `pip freeze --all`
(the "--all" arg) that does that. This change just tries to ensure that
we pin the latest version when possible.
Previously if e.g. "pip" was not pulled in by any package in "requirements${i}.txt",
we would just pin whatever is installed locally.
2021-03-13 14:53:41 +01:00
SomberNight
168801b7f8 contrib/freeze_packages.sh: trivial clean-up 2020-11-14 05:18:12 +01:00
SomberNight
77f75f102b mac build: bundle old PyQt5 so that .app runs on macOS 11 "Big Sur"
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
2020-11-14 05:17:24 +01:00
SomberNight
a4e342ac58 requirements: rename some files 2020-11-14 04:30:48 +01: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
24a007840f sdist build: use modern pip
the one in apt refused to install certain package versions (that were pinned by hash!!)
and installed different versions instead... e.g.:

Collecting wheel==0.34.2 (from -r /opt/electrum/contrib/build-linux/sdist/../../../contrib/deterministic-build/requirements.txt (line 112))
  Downloading 521c6dc7fe/wheel-0.34.2.tar.gz (58kB)
    100% |████████████████████████████████| 61kB 3.8MB/s
  Requested wheel==0.34.2 from 521c6dc7fe/wheel-0.34.2.tar.gz (sha256)=8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96 (from -r /opt/electrum/contrib/build-linux/sdist/../../../contrib/deterministic-build/requirements.txt (line 112)), but installing version 0.30.0
2020-06-12 19:48:19 +02:00
SomberNight
5ec0747eff contrib/freeze_packages: should not use too new python interpreter
Certain dependencies are only needed on old python versions,
e.g. backports of stdlib functionality.
We should definitely not use newer python when running freeze_packages.sh
than what we bundle in the binaries. Perhaps it is prudent to use the
min python version that we support (which is atm older than what we bundle).
2020-06-03 18:05:26 +02:00
SomberNight
aac770404f mac build: pin hashes of more build dependencies
namely pyinstaller
2020-05-14 20:24:14 +02:00
SomberNight
c8e2653690 wine build: pin build dependencies
"pip install pyinstaller" was "silently" grabbing unpinned dependencies
2019-08-09 19:05:32 +02:00
SomberNight
e7d3fd32fb contrib/freeze_packages.sh: should hard fail if there is an error
exceptions raised by find_restricted_dependencies.py were getting ignored
2019-01-31 19:44:04 +01:00
SomberNight
10a0b0ad7f make_packages was failing
error was:
In --require-hashes mode, all requirements must have their versions pinned with ==. These do not:
    setuptools from 04a0b689d3/setuptools-39.0.1-py2.py3-none-any.whl (md5)=ca299c7acd13a72e1171a3697f2b99bc (from protobuf==3.5.2.post1->-r ./contrib/deterministic-build/requirements.txt (line 21))
2018-04-01 22:53:02 +02:00
SomberNight
bfccfc7e74 follow-up 70d827b984 2018-04-01 18:41:17 +02:00
Johann Bauer
70d827b984 Add a script that finds dependencies for other OSs
This is used to make sure we also freeze versions for
packages that will only be used on Windows or OS X, while
the freezing script is most likely only be run on Linux.
2018-03-31 22:19:09 +02:00
Johann Bauer
3c28e34919 Check package hashes when generating binaries 2018-03-31 17:49:38 +02:00
Johann Bauer
afa0168e14 Add new requirements file for binaries in contrib 2018-02-11 16:59:07 +01:00
SomberNight
aaa0ee75b7 make freeze_packages.sh cwd independent. update requirements-hw.txt. re-run freeze_packages.sh. 2018-02-07 16:54:03 +01:00
SomberNight
0693837538 freeze hw wallet dependencies into separate file. update versions using freeze_packages.sh. introduce "hardware" setuptools extra. 2018-01-30 22:10:03 +01:00
Alexx Saver
9ceaac6310 Use python3 for virtualenv 2018-01-23 17:55:25 +01:00
ThomasV
c8818cca05 rename file 2017-11-27 19:46:22 +01:00
Johann Bauer
957178217c Save dependency versions in repo 2017-11-26 23:22:07 +01:00