Commit graph

85 commits

Author SHA1 Message Date
Jeffery To
a0da5aec7f python: Fix float byte order detection
This backports patches from bpo-34585[1] to fix byte order detection of
floats.

Fixing byte order detection allows the repr() of floats to be shorter (a
feature backported to Python 2.7 from Python 3.1[2]).
sys.float_repr_style should be 'short' instead of 'legacy' on supported
platforms.

See #11134.

[1]: https://bugs.python.org/issue34585
[2]: https://docs.python.org/2.7/whatsnew/2.7.html#python-3-1-features

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-30 18:28:49 +08:00
Jeffery To
83b300aa83 python: Update to 2.7.17, refresh patches
Patches already merged and so removed:
* 011-fix-ssl-build-use-have-npn.patch
* 019-bpo-36216-Add-check-for-characters-in-netloc-that-normalize-to-separators-GH-12216.patch
* 020-bpo-36216-Only-print-test-messages-when-verbose-GH-12291.patch
* 021-2.7-bpo-35121-prefix-dot-in-domain-for-proper-subdom.patch
* 022-bpo-30458-Disallow-control-chars-in-http-URLs-GH-13315.patch
* 023-bpo-35907-Avoid-file-reading-as-disallowing-the-unnecessary-URL-scheme-in-urllib-GH-11842.patch
* 027-bpo-38243-Escape-the-server-title-of-DocXMLRPCServer.patch
* 028-bpo-34155-Dont-parse-domains-containing-GH-13079.patch

Patches no longer necessary and so removed:
* 017_lib2to3_fix_pyc_search.patch

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-10-21 23:30:53 +08:00
Jeffery To
a3be5cfa92 python,python3: Fix CVE-2019-16056, CVE-2019-16935
These patches address issues:
CVE-2019-16056: email.utils.parseaddr mistakenly parse an email
CVE-2019-16935: A reflected XSS in python/Lib/DocXMLRPCServer.py (for
Python 2.7)

CVE-2019-16935 was fixed for python3 in #10109

Links to Python issues:
https://bugs.python.org/issue34155
https://bugs.python.org/issue38243

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-10-04 23:54:46 +08:00
Alexandru Ardelean
ed0e77f3c3 python,python3: split python[3]-pkg-resources from setuptools
This package is required by other packages to run some binaries via
`load_entry_point`.

So, this splits this package away from setuptools.
setuptools is pretty big, akd pkg-resources is also big, but not as big.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-09-20 13:42:40 +03:00
Jeffery To
229c23a440 python,python3: Fix host Python compilation for macOS
* Remove $$$$(pkg-config --static --libs libcrypto libssl) from
  HOST_LDFLAGS

  Having this leads to an "unknown type name 'u_int'" error on Mac.
  Removing it doesn't appear to affect Python's ability to find
  buildroot LibreSSL.

* Change -Wl,-rpath=... to -Wl,-rpath,... in HOST_LDFLAGS

  The equals sign version is not supported by the Mac linker (appears to
  be an GNU extension). The comma version is supported; -rpath and its
  argument will be separated by a space when passed to the linker.

* Add ac_cv_header_libintl_h=no to HOST_CONFIGURE_VARS for Mac

  Python on Mac doesn't expect to use libintl, but if gettext-full is
  compiled for host, it will try, leading to undefined symbol errors
  during compilation. This prevents configure from finding libintl.h.

Fixes #7171.
Fixes #9621.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-08-17 04:45:58 +08:00
Rosen Penev
608df65a62
python: Replace utime with utimes
Optionally fixes compilation with uClibc-ng.

Based on the surrounding code, this looks like an oversight.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2019-07-30 23:44:43 -07:00
Josef Schlehofer
41241f0f12
Merge pull request #9532 from jefferyto/python-musl-find_library
python,python3: Fix ctypes.util.find_library()
2019-07-22 15:21:34 +02:00
Josef Schlehofer
725eb84462
python: add patch for CVE-2018-20852
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2019-07-22 15:20:00 +02:00
Jeffery To
e14c4e5c0a python,python3: Fix ctypes.util.find_library()
Python's ctypes.util.find_library() function currently doesn't work for
musl libraries/systems[1].

This adds a patch to fix this function, based on a patch from Alpine
Linux[2].

Fixes #9448.

[1]: https://bugs.python.org/issue21622
[2]: https://git.alpinelinux.org/aports/tree/main/python2/musl-find_library.patch

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-07-22 04:42:54 +08:00
Jeffery To
64959a1dd0 python,python3: Move python-config to $(STAGING_DIR)/host
Build/InstallDev is passed a second argument, a path where host binaries
should be placed (ultimately $(STAGING_DIR)/host).

This change moves python[3]-config to that directory.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-06-10 20:33:06 +08:00
Rosen Penev
8f0f613af0
Merge pull request #9131 from jefferyto/python-bpo-35907
python,python3: Fix CVE-2019-9948 - local_file:// allowed in urllib
2019-06-05 01:23:46 -07:00
Jeffery To
53838903fe python,python3: Fix CVE-2019-9948 - local_file:// allowed in urllib
These patches address issue:
CVE-2019-9948: Unnecessary URL scheme exists to allow local_file://
reading file in urllib

Link to Python issue:
https://bugs.python.org/issue35907

Issue 35907 is still currently open, waiting for a decision for
Python 3.5; these patches for Python 2.7 and 3.7 have been merged.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-06-04 22:20:21 +08:00
Hannu Nyman
1e39f3189b
Merge pull request #9114 from jefferyto/python-host-setuptools-pip-installed-pkg-release
python,python3: Record PKG_RELEASE for host setuptools/pip
2019-06-03 17:02:44 +03:00
Rosen Penev
15a0606403
Merge pull request #9100 from jefferyto/isolate-host-python
python,python3: Better isolate host Python
2019-06-03 02:11:20 -07:00
Jeffery To
9331fbb1a0 python,python3: Fix CVE-2019-9740 and CVE-2019-9947
These patches address issues:
CVE-2019-9740: Python urllib CRLF injection vulnerability
CVE-2019-9947: Header Injection in urllib

Links to Python issues:
https://bugs.python.org/issue36276 (resolved duplicated of 30458)
https://bugs.python.org/issue35906 (resolved duplicated of 30458)
https://bugs.python.org/issue30458

Issue 30458 is still currently open, waiting for a decision for
Python 3.5; these patches for Python 2.7 and 3.7 have been merged.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-06-03 00:38:53 +08:00
Jeffery To
1f1eacc484 python,python3: Record PKG_RELEASE for host setuptools/pip
This changes the "patched" indicator files for host setuptools and pip
to include their PKG_RELEASE values. This also removes host setuptools
and/or pip before host install, if the installed copy does not match the
version (and PKG_RELEASE) of the copy to be installed.

This will allow added or removed patches to affect host setuptools /
pip, since these changes will cause PKG_RELEASE to be incremented.

This also fixes the host install error, when the install tries to patch
an already patched copy of setuptools. (This error occurs because the
existing indicator files do not have version numbers in their file
names, whereas host install expected version numbers to be present.)

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-06-01 03:52:23 +08:00
Hannu Nyman
e3dbc87bd9
Merge pull request #9103 from jefferyto/python-host-patch-upgraded-setuptools-pip
python,python3: Allow upgraded host setuptools/pip to be patched
2019-05-30 11:11:26 +03:00
Hannu Nyman
b7e689aefd
Merge pull request #9101 from jefferyto/python-setuptools-pip-install
python-setuptools,python-pip: Installation changes
2019-05-30 11:10:23 +03:00
Jeffery To
e074cbc285 python,python3: Allow upgraded host setuptools/pip to be patched
This adds the current setuptools/pip version numbers to the indicator
files' names, which should allow upgraded versions to be patched.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-30 01:48:29 +08:00
Jeffery To
be751236aa python-setuptools,python-pip: Change prefix to /usr
This changes the --prefix option, passed to host pip when "installing"
target setuptools and pip, to /usr, in case the prefix is recorded in
the packages.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-29 22:38:30 +08:00
Jeffery To
688825f37a python-setuptools,python-pip: Set pip cache dir, disable version check
This adds --cache-dir and --disable-pip-version-check options for host
pip, when "installing" target setuptools and pip.

This also changes the pip command to use $(HOST_PYTHON[3]_PIP) from
python[3]-host.mk.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-29 22:29:20 +08:00
Jeffery To
87a31e49f7 python,python3: Disable user site-packages for host Python
Normally, Python will include the user's site-packages directory
(~/.local/lib/python$(PYTHON_VERSION)/site-packages) in it's internal
search path for modules.

This disables this default inclusion for host Python.

This change is applied during Host/Configure instead of as a patch to
keep this setting unchanged for target Python.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-29 22:03:18 +08:00
Jeffery To
af5288827e python,python3: Use ensurepip=upgrade for host Python
This changes --with-ensurepip=install to upgrade, to upgrade host
versions of setuptools and pip to the Python-bundled versions.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-28 20:27:13 +08:00
Jeffery To
da35e6770d python-setuptools: Add reproducibility patches from Debian
This adds the ability to patch setuptools (and pip), and adds 3
reproducibility patches from Debian[1].
(003-PKG-INFO-output-reproducible.patch addresses the issue identified
in #9039.)

The patching is not perfect, in that the patches are applied to
setuptools and pip after they have been installed, since they are
installed from wheels which are already "precompiled".

Also, patching for the host install cannot be updated in place, for
example if a patch is added or removed.

[1]: https://sources.debian.org/patches/python-setuptools/40.8.0-1/

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-05-24 13:18:09 +08:00
Eneas U de Queiroz
5f447b9020
python-python3-pip: add LICENSE information
CVE id was left commented out as it is not handled by uscan.

Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
2019-05-21 14:46:13 -03:00
Eneas U de Queiroz
bbd4930ccd
python-python3-setuptools: add LICENSE information
CVE id was left commented out as it is not handled by uscan.

Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
2019-05-21 14:44:40 -03:00
Eneas U de Queiroz
971b2a5218
python: refresh LICENSE information
Changed PKG_LICENSE to reflect spdx license tag, and PKG_LICENSE_FILES
to include all lincense-related files applicable to the parts of the
code we are actually using to build and/or distributing.  The
Windows-only files, and the python-bundled Tools we're not using have
been left out.

Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
2019-05-20 18:18:23 -03:00
Rosen Penev
9f15edf744
Merge pull request #8584 from jefferyto/python-compileall-recursion-level
python,python3: Increase max recursion level when generating bytecode
2019-04-04 00:19:55 -07:00
Jeffery To
85c805d0ad python,python3: Increase max recursion level when generating bytecode
"python -m compileall" has a default maximum recursion level of 10, i.e.
it will descend up to 10 levels of subdirectories when looking for
source files to compile. This is usually sufficient but there are
packages that include more than 10 levels (botocore,
https://github.com/openwrt/packages/pull/8214#discussion_r270056741).

This adds the "-r" command line option to the call to compileall to
increase the max recursion level (currently set to 20).

This also patches Python 2's compileall.py to add this max recursion
level option. (Python 3's compileall.py already supports this option.)

This also applies some related changes to python-package-install.sh:

* Use the "-delete" option with find instead of exec'ing rm / rmdir. For
  the case of removing empty directories (in delete_empty_dirs()), this
  has the added benefit of simplifying the code, as the "-delete" option
  implies "-depth", and thus find "does the right thing" (removing empty
  directories depth-first).

* Remove the backslash in "-name" patterns (for find), as they are not
  regular expression but glob patterns.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-04-04 03:07:02 +08:00
Jeffery To
8de8ff4f25 python,python3: Include python-config for target Python in InstallDev
This installs python{2.7,3.7}-config in $(STAGING_DIR)/usr/bin as part
of Build/InstallDev, to be used by other packages to get build
configuration for target Python.

The treatment for Python 2 and 3 are a bit different:

* For Python 2, python-config is a Python script that is expected to be
  run with, and return data for, the installed Python interpreter. This
  installs a modified version of this script, to be run using host
  Python, and read/return data for target Python.

* Python 3 includes a shell script version of python-config (expected to
  be used in cross-compilation scenarios). This simply installs the
  script into the right place.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-03-31 19:33:12 +08:00
Jeffery To
c23bea8dc8 python,python3: Fix CVE-2019-9636 - urlsplit missing NFKC normalization
These patches address issue:
CVE-2019-9636: urlsplit does not handle NFKC normalization

Link to Python issue:
https://bugs.python.org/issue36216

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-03-31 05:18:14 +08:00
Jeffery To
e436e73f1c python,python3: Use only target package data for Build/InstallDev
This changes Build/InstallDev for both Python 2 and 3 to only copy files
from target Python, not from host Python, since InstallDev files are
used for target packages to link to other target packages.

In particular, usr/lib/python{2.7,3.7}/_sysconfigdata.py holds system
configuration data generated at build time, and is different for target
Python and host Python.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-03-27 03:44:31 +08:00
Hannu Nyman
f9dd076a46
Merge pull request #8371 from neheb/patch-1
python: Add PKG_CPE_ID for proper CVE tracking
2019-03-12 19:06:41 +02:00
Rosen Penev
1d04e54651 python: Add PKG_CPE_ID for proper CVE tracking
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2019-03-11 13:14:26 -07:00
Rosen Penev
5d4f817865 python: Refresh patches
git is intollerant when it comes to fuzz. this fixes it.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2019-03-08 18:48:45 -08:00
Alexandru Ardelean
8e493eb19d python: bump to version 2.7.16
This change updates Python to version 2.7.16, which is a bugfix release
in the Python 2.7 series.
This also removes patches back-ported from upstream.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-03-08 19:34:38 +08:00
Alexandru Ardelean
998ff3471a python,python3: add Jeffery To as co-maintainer
For a while now, Jeffery has helped quite a lot with Python, and is now
unofficial go-to guy [for problems] with Python packages.

This change adds him as co-maintainer [if he also agrees].

I'm not going away; I'll be still doing the same work for Python.
This change serves to recognize Jeffery in an official way, since he's
already taking on these things. And 2 co-maintainers is better in case one
kicks the bucket [by accident].

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-02-27 12:33:27 +02:00
Karel Kočí
7175b2b47d
python,python3: do not package binary files to base packages
Thanks to fix 200a5a2eec all base packages
now contain all binaries that are generated as part of python
installation. That causes collision between those packages with package
managers that consider this such as Turris updater-ng. This is also just
wrong. Those binaries were not included and should not be after
mentioned fix as well.

This just adds empty install definition. The idea is to override the
default one that is otherwise used.

Signed-off-by: Karel Kočí <karel.koci@nic.cz>
2019-02-21 09:33:49 +01:00
Alexandru Ardelean
c767598097 python,python3: fix CVE-2019-5010 - Denial of Service
This patch addresses issue:
  [ssl][CVE-2019-5010] TALOS-2018-0758 Denial of Service

Link to Python issue:
  https://bugs.python.org/issue35746

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-02-12 12:31:55 +02:00
Alexandru Ardelean
ed862da936 python,python3: move shebang handle in install script
This extends the Python[3] shebang fixup to all packages.
Only Python scripts in `/usr/bin` will be handled at the moment. Later it
may make sense to also cover executables in `/bin`, though typically Python
executables shouldn't be placed there.

Previously the shebang handling was only done for python[3]-pip &
python[3]-setuptools.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-02-12 12:31:55 +02:00
Jeffery To
19c3f37f0f python: Fix lib2to3 fixes search
This is the patch from c98b12d9a9 (#7931),
applied for python 2.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-01-13 05:59:20 +08:00
Alexandru Ardelean
a16dea9627 python,python3: use setuptools & pip versions from python{3}-version.mk
`setuptools` & `pip` whl files were selected via wildcards, because it was
easier in the beginning.
Also, initially there weren't any PYTHON{3}_{SETUTPTOOLS/PIP}_VERSION
variables. But now since these vars exist, it makes sense to use them,
because we can catch easier (at build) time if Python/Python3 bump these
versions.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2019-01-02 23:42:01 +02:00
Alexandru Ardelean
3c8172255a python: backport CVE-2018-14647 patches from upstream
These patches are backports from Python 2.7 upstream.
The security issue is described here:
  https://nvd.nist.gov/vuln/detail/CVE-2018-14647

The Python bug report:
  https://bugs.python.org/issue34623

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-12-31 17:53:41 +02:00
Jeffery To
2f55f2a7b5 python/python3: fix .dist-info missing for setuptools and pip
Without .dist-info (similar to .egg-info), setuptools and pip are not
discoverable by pkg_resources.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2018-12-22 22:16:52 +08:00
Alexandru Ardelean
5bc39702fb python: fix build with OpenSSL 1.1.0
Addresses issue from here:
  https://github.com/openwrt/packages/issues/7367#issuecomment-437685598

The SSL module in Python doesn't handle properly all the combinations of
NPN between all OpenSSL & LibreSSL versions.
This patch fixes this.
Also pushed a report & proposal upstream to Python:
  https://bugs.python.org/issue35264

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-11-16 15:35:42 +02:00
Jan Kardell
0311e58bb6 Python: Fix compile of host modules
Add -rpath linker option to host build, pointing to staging/hostpkh/lib.
It's needed to find the correct host libs during runtime, without it the
hosts libs may be used instaead, causing failures.

Signed-off-by: Jan Kardell <jan.kardell@telliq.com>
2018-10-08 12:22:39 +02:00
Alexandru Ardelean
2ef484615d python: update to version 2.7.15
This also updates pip and setuptools.
With this occasion, they also get PKG_RELEASEs of their own.

Dropped patch 011-remove-setupterm-definition.patch
Manually re-applied 005-fix-bluetooth-support.patch
Ran make package/python/refresh to refresh other patches.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-05-03 14:46:12 +03:00
Hauke Mehrtens
f9016b5977 python/python3: remove zlib/host dependency
zlib is now a host tool and the zlib/host package was removed. this
dependency is not needed any more as there will always be a zlib host
library.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2018-04-28 16:20:44 +02:00
Alexandru Ardelean
b6973e5deb python,python3: remove --with-system-ffi=no config arg
Report https://github.com/openwrt/packages/issues/5638
It was mentioned that this causes build failures on Mac OS X.

The default behavior [in the setup.py script] is to check whether
`--with-system-ffi` is present in the CONFIG_ARGS env var.

However that back-fires a bit when `--with-system-ffi=no`, because the
condition `not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS")`
evaluates to true.

This is a small bug in the `setup.py` script, but it looks like the
easiest/cleanest way to address it on our end is to just remove it entirely
from the HOST_CONFIGURE_ARGS.
At least that's how it looks like when testing on a Linux machine.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-03-14 16:21:41 +02:00
Alexandru Ardelean
ea62d1217c python,python3: limit underlinking behavior to linux platforms
This change was introduced in commit 1c54e2b0fb to address build
issues on Ubuntu 12.04.

However it was reported to cause issues on Mac OS X.
Report: https://github.com/openwrt/packages/issues/5310

It was also reported that removing this on MacOS X fixes the issue.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-03-14 16:18:30 +02:00