Commit graph

49 commits

Author SHA1 Message Date
Alexandru Ardelean
178ffb41f1 python3: bump to version 3.7.1
This change bumps Python3 version to 3.7.1.
Patch `002-fix-implicit-dh-free-declaration.patch` is now included in
upstream.
This also fixes CVE-2018-1061.
   https://www.cvedetails.com/cve/CVE-2018-1061/

Compile & run-tested on x86.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-11-02 09:58:57 +02:00
Jan Kardell
6ade5a1e3a Python3: Fix host build on OpenSUSE
The linker option -rpath is required to find libs in staging_dir. Now it
is included when building host modules. Without it the import test of
the _ctypes and _uuid modules would fail. The _ctypes module uses
libffi.so.6 from staging, but OpenSUSE LEAP 15 has libffi.so.7.
It will also fail on LEAP 42.x, Fedora28 and 29 and future or old
versions of Ubuntu.

Fix needed in master and 18.06 branches.

Signed-off-by: Jan Kardell <jan.kardell@telliq.com>
2018-10-08 11:47:08 +02:00
Alexandru Ardelean
768c675123 python3: fix build with SSL module
No idea how this creeped up. Probably OpenSSL been has updated recently.
Will send this patch upstream as well, but in the meantime we should fix
the Python3 build.

Build error seems to be:
```
<openwrt>/build_dir/target-i386_pentium4_musl/Python-3.7.0/Modules/_ssl.c:4000:5: error: implicit declaration of function 'DH_free'; did you mean 'lh_free'? [-Werror=implicit-function-declaration]
     DH_free(dh);
     ^~~~~~~
     lh_free
cc1: some warnings being treated as errors

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_tkinter              _uuid                 nis
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
_abc                  atexit                pwd
time                  zlib

Failed to build these modules:
_ssl

Makefile:618: recipe for target 'sharedmods' failed
```

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-09-17 12:53:57 +03:00
Karol Wrona
23b7d14b24 python3: fix libuuid missing dependency for python3-light
Signed-off-by: Karol Wrona <wrona.vy@gmail.com>
2018-07-13 12:57:44 +02:00
Martin Strobel
2080550f76 python3: add override for uuid.h header check
Signed-off-by: Martin Strobel <arctus@crza.de>
2018-07-11 06:35:36 +02:00
Martin Strobel
fe01c8fc05 python3: update to python 3.7.0
Fixes python3 host SSL build -> host-pip can use https:// urls again.
Updates Pip to 10.0.1
rebased patches

Signed-off-by: Martin Strobel <arctus@crza.de>
2018-07-11 06:34:54 +02:00
Alexandru Ardelean
b7d1d2149e python3: update to version 3.6.5
Add PKG_RELEASE for setuptools and pip.
Refresh all patches.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-05-03 14:46:35 +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
Alexandru Ardelean
63dfa19812 python,python3: disable dependencies between python src packages
Related to:
 https://github.com/openwrt/packages/issues/5424

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-01-16 16:18:47 +02:00
Hannu Nyman
f460719bf4
Merge pull request #5360 from commodo/python_reproducible
python,python3: honour the SOURCE_DATE_EPOCH for the build-info
2018-01-14 17:32:57 +02:00
Alexandru Ardelean
ccdc6bc530 python,python3: export mk files outside of python package dirs
Since `lang/python` is it's own folder of Python packages
(for both Python 2 & 3), and these build rules are needed
in a lot of packages [especially Python packages],
putting them here makes sense architecturally,
to be shared.

This also helps get rid of the `include_mk` construct
which relies on OpenWrt core to provide, and seems
like a broken design idea that has persisted for a while.
Reason is: it requires that Python 2/3 be built to provide
these mk files for other Python packages,
which seems like a bad idea.

Long-term, there could be an issue where some other feeds
would require these mk files [e.g. telephony] for
some Python packages.
We'll see how we handle this a bit later.

For now we limit this to this feed.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-01-10 23:01:51 +02:00
Matthias Schiffer
55c0b5ae19 python,python3: do not install .mk snippets
The .mk snippets are not really usable at the moment, as they cannot be
considered for metadata collection (package DUMP) when included through
include_mk. Python packages do not use include_mk anymore for this reason,
so the install commands can be removed as well.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2018-01-10 23:01:51 +02:00
Alexandru Ardelean
c54b312043 python,python3: honour the SOURCE_DATE_EPOCH for the build-info
The Modules/getbuildinfo.c allows the use of DATE and TIME
macros to be defined via CFLAGS.

These vars, control the build date & time when the
interpreter is opened, and can be read via the
`platform._sys_version()` function.

So, a conversion from SOURCE_DATE_EPOCH to DATE & TIME
is required at build-time.

This is especially needed for `platform._sys_version()`
to work.
The installation of pip seems to rely on this.

The logic has been adapted from:
 https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal#Makefile

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-01-08 15:32:47 +02:00
Jeffery To
c5cbd44cea python,python3: undo egg-info removal
This reverts commits 4333d1dcbf and
074d2863be, making Python packages
discoverable again by pkg_resources.

Fixes #5361.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2018-01-08 17:26:54 +08:00
Alexandru Ardelean
36bb5706a2 python,python3: add zlib/host to HOST_BUILD_DEPENDS (ver 2)
This reverts commit 3c6d14021e.
( which is a revert of commit c764f77dc1 )

The initiall commit ( c764f77dc1 )
was reverted, becase zlib did not have a host-build.

Now it does:
 cbe71649bc

So, now it should be good to put this in.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2018-01-02 18:59:53 +02:00
Alexandru Ardelean
4ec5d3d62f python3: bump to version 3.6.4
Re-worked patch `003-do-not-run-distutils-tests.patch`
to reduce patch-size.

Removed `011-fix-ncursesw-definition-colisions.patch`
it is fixed upstream.

Refreshed with `make package/python3/refresh`

Resetting PKG_RELEASE to 1.
This variable was never used for pip3 & setuptools, since
VERSION is specified in the package definitions.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-12-31 17:58:34 +02:00
Alexandru Ardelean
1b6dd4781f python,python3: add support for SOURCE_DATE_EPOCH var
See:
https://github.com/openwrt/packages/issues/5278

This should make Python & Python3 packages reproducible
when building.
In my local tests, I got the same sha256 for a sample
.pyc file, so likely this is the solution that should address
this.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-12-20 00:11:47 +02:00
Hannu Nyman
3c6d14021e Revert "python,python3: add zlib/host to HOST_BUILD_DEPENDS"
This reverts commit c764f77dc1.

The commit caused warnings to be displayed at make defconfig etc.
  WARNING: Makefile 'package/feeds/packages/python/python/Makefile'
  has a host build dependency on 'zlib/host' but
  'package/libs/zlib/Makefile' does not implement a 'host' build type

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2017-12-16 17:02:45 +02:00
Alexandru Ardelean
c764f77dc1 python,python3: add zlib/host to HOST_BUILD_DEPENDS
This should fix the zlibmodule build on the host side.

Usually, if zlib is not found, Python/Python3 builds fine
without it, but there are some cases where the Python/Python3
interpreter on the host-side requires zlib to run.

At the moment, zlib does not have a host-build.
This should be available when this PR gets merged:
https://github.com/lede-project/source/pull/1329
[ or a similar one that contains host-build support for zlib ].

In the meantime, this change can go into Python/Python3.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-12-13 21:07:46 +02:00
Alexandru Ardelean
59f0506622 python,python3: define config option for bluetooth support
It was reported via
https://github.com/openwrt/packages/pull/5122#issuecomment-347395472
that if bluez-libs is selected as an installable package,
then the error below will show up:
```
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for python-light:
 *	bluez-libs *
 * opkg_install_cmd: Cannot install package python-light.
```

This looks like a limitation in the design of package deps,
and maybe a misuse of conditional deps (i.e. PACKAGE_bluez-libs:bluez-libs).

So, to fix this, an idea we're adding an extra symbol
that enfoces installation of bluez-libs if selected.

We also need to add a way to disable bluetooth build
if PYTHON(3)_BLUETOOTH_SUPPORT is de-selected.
Otherwise, bluetooth is installed and the socket
module is broken due to linker errors.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-12-10 19:49:23 +02:00
Alexandru Ardelean
c2b3496977 python,python3: build bluetooth support if bluez-libs selected
This should hopefully fix the Python3 build on buildbot.

For a while I assumed it may be a build-bot issue, but
then looking through the packages repo [and finding
the bluez package] it looks like, if you try
to build all packages, Python3 detects the bluetooth
headers installed by bluez.

It looks like Python's bluetooth support was somewhat
broken ; it was not detecting the <bluetooth/bluetooth.h>
header, so a backport from Python3 to Python fixed that.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-11-14 13:50:14 +02:00
Alexandru Ardelean
8750a59d3d python,python3: apply PKG_FIXUP:=autoreconf
Should hopefully provide more consistent results
across distros.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-11-06 18:06:02 +02:00
Alexandru Ardelean
652553e552 python3: bump to version 3.6.3
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-11-06 18:05:59 +02:00
Mirko Vogt
32b60fa32b python3: package CGI component
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
2017-10-31 13:45:29 +01:00
Alexandru Ardelean
074d2863be python,python3: add option to keep egg-info dirs for python packages
That way some python packages can choose
to keep their egg-info dirs, if they want to, or they're needed.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-10-03 10:40:26 +03:00
Alexandru Ardelean
21a18bd97f python3: fix install mk filenames
Copy + paste error.

Seems I fixed it while testing but forgot to update PR with this.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-09-15 08:59:47 +03:00
Alexandru Ardelean
2eb3979d28 python,python3: install mk files in both host build and InstallDev part
Not sure how it can happen that the files are not
installed via the host build.

Maybe some SDK-like build.

Let's make sure they are installed via InstallDev rule too.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-09-14 11:44:01 +03:00
Alexandru Ardelean
4d0a44d31a python,python3: add host-flags/settings to host pip install rules
The host pip install should have the host's CFLAGS, LDFLAGS, etc
available.
And not the target's flags.
Otherwise, weird things can happen when installing
packages (host-side) that need to build C code.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-09-14 11:44:01 +03:00
Alexandru Ardelean
d7fe1c624f python,python3: fix opkg collisions with -src packages
Fixes:
 https://github.com/openwrt/packages/issues/4681

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-08-08 23:52:40 +03:00
Alexandru Ardelean
5986c5f5cd python3: refresh patches make package/python3/refresh cmd
This was a bit overdue.
I did not know about this methodology.
Reduces patch fuzz.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-26 23:56:51 +03:00
Alexandru Ardelean
77bf1f09ad python3: upgrade to version 3.6.2
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-24 13:57:54 +03:00
Alexandru Ardelean
612c53fc6c python,python3: add host python pip install support
To install Python packages host side, that
may be needed for a build.

The intent, is to try to reduce host-side Python
packages being installed via LEDE/OpenWrt build system.
Because those seem like a pain to maintain.

The idea is adapted from Yousong's `python-packages`
package.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-19 16:50:25 +03:00
Alexandru Ardelean
93a6545591 python,python3: drop HostPy/Compile/Default rules
Not used, and will not be used.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-19 16:50:25 +03:00
Alexandru Ardelean
0df253cc04 python,python3: drop PKG_MD5SUM fields ; will use only PKG_HASH
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-19 16:50:25 +03:00
Alexandru Ardelean
84202f17e1 python,python3: remove multi-arch support, and /usr/local paths
This should hopefully reduce weird behaviour caused
by the host system.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-19 16:50:25 +03:00
Alexandru Ardelean
e066fdaf11 python,python3: handle install script errors better
Depending on execution order the `python-package-install.sh`
script would return a non-zero err code.

So, this enforces that all commands in the script
don't fail (via the `set -e` directive).

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-19 16:50:25 +03:00
Alexandru Ardelean
4333d1dcbf python,python3: remove .egginfo directories
They don't seem needed, and makes packages a bit smaller

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-07 18:07:10 +03:00
Alexandru Ardelean
8db8c927ed python,python3: define PyBuild/Compile & Py3Build/Compile
Similar to LEDE/OpenWrt's Build/Compile/Default rule,
and other similarities like this.

This should allow Python packages to define
PyBuild/Compile rules to do specific stuff per
package.

The advantage of using these (over just overriding
Build/Compile) is the VARIANT mechanism that is
in place to support packaging both for Python & Python3.

So, PyBuild/Compile will get picked up for the Python
variant build, and Py3Build/Compile will get picked
up for the Python3 variant build.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-07 18:07:10 +03:00
Alexandru Ardelean
3fa0c06d48 python,python3: add dependency on CONFIG_PACKAGE_ symbols for setuptools & pip
If you build python/python3 and later decide to build
python(3)-setuptools and/or python(3)-pip, the build won't
re-run without adding `CONFIG_PACKAGE_python(3)-setuptools`
and `CONFIG_PACKAGE_python(3)-pip`.

Seems to resolve issue:
https://github.com/openwrt/packages/issues/4529

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-03 16:11:57 +03:00
Alexandru Ardelean
a2b76b5403 python,python3: simplify sed expression for setuptools & pip
A suggestion from comment (from Philip Prindeville):
https://github.com/openwrt/packages/issues/4529#issuecomment-312518121

Avoids some escaping of slashes.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-03 16:11:52 +03:00
Alexandru Ardelean
1c54e2b0fb python,python3: fix underlinking issues with lrt (clock_gettime())
Seems it's called underlinking that's happening only
on Ubuntu 12.04 with libressl (that comes from LEDE's
tools folder).

Link here:
https://ubuntuforums.org/showthread.php?t=1870586

I'm still reading about this a bit.
Since I don't really get it.

But applying that fix (as in the link) seems to fix compiling
on Ubuntu 12.04, and tried also on 16.04 (to make sure).

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-07-03 09:28:41 +03:00
Alexandru Ardelean
e88e35249f python,python3: install mk files in the Host/Install phase
The Build/InstallDev rule is activated only for target builds.
But if someone needs only the host Python, then
these files need to be installed in this phase, and not Build/InstallDev

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-06-29 14:04:09 +03:00
Alexandru Ardelean
576c45eb0a python3: fix distutils path to package when using bytecodes
If there is only Python bytecodes, then
the __init__.py script will be concatenated, and
the __init__.pyc as well.

This is becase this bit `path = os.path.join(path, '__init__'+extension)`
is iterated twice.

This is a bug in Python3, also because we ship bytecodes
instead of source code [ with Python & Python3 ].
Python is not affected.

Reported-by: Mirko Vogt <mirko@nanl.de>
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-06-12 23:26:54 +03:00
Alexandru Ardelean
0d54d05b6d python3-pip: override Package/python3-pip/install rule
This is in essence fixes pip3.

That means pip3 will ship without Python byte-codes
for a while, until I'll find a better way to fix it.

I couldn't think of a not-very hack-ish way of doing it.

The only draw-back of this, will be that pip3 will run
a bit slower ; but that should be ok for a while.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-05-19 17:28:08 +03:00
Alexandru Ardelean
a4691a289c python3: remove __pycache__ folders pip & setuptools
python3-pip & python3-setuptools have slightly
different installation mechanisms.

We need to remove the __pycache__ folders.
Seems they're generated.

This also reduces the size of the python3-pip &
python3-setuptools packages.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-05-19 17:27:48 +03:00
Alexandru Ardelean
b9d88065f5 python,python3: allow python packages to override Package/<pkg>/install rule
Python packages try to enforce their own.
For some cases this may not be desired.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-05-19 17:16:39 +03:00
Alexandru Ardelean
68312f49c0 python packages: move all things python under lang/python
I admit this may be be a bit aggressive, but the lang
folder is getting cluttered/filled up with Python, PHP, Perl,
Ruby, etc. packages.

Makes sense to try to group them into per-lang folders.

I took the Pythons.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-05-17 16:51:14 +03:00