Commit graph

77 commits

Author SHA1 Message Date
Alexandru Ardelean
20685f5220 python: split source packages away from compiled packages
Well, they're not yet compiled, but in the next commit
they should be.

People have been complaining [citation needed] to me
via email or via Github that Python's performance is crap
because it packages sources directly and they're not compiled.
And Python has to compile the sources on each run, and
on-the-fly.

Allowing compilation caching is also a no-no, because
I'll get complaints that the flash storage fills up
whenever a Python app runs.

So, to give the user a choice, the new de-facto packaging
for Python packages will be:
* ship compiled + [ preferably ] optimized files
* package sources separately

The problem is that this doubles the number of packages
in LEDE/OpenWrt, but build-times should not suffer a big
hit, since the compilation is done once, and the
install phase should not be too intensive.

Oh, and people don't need ship source packages if
they don't want to.
To do that, a packager needs to just call
`$(eval $(call BuildPackage,python-<package>-src))`

The `python-` prefix is important.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-03-09 18:43:41 +02:00
Alexandru Ardelean
05f8d6edf0 python,python3: drop remove .pyc & .pyo files
We'll control in the install phase what we ship [byte-codes or source files]

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-03-09 09:26:36 +02:00
Alexandru Ardelean
6c4dcf4446 python: fix python-dev clash with python-base
Both want to install libpython.so.
python-dev should install libpython.a

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-03-09 09:23:10 +02:00
Alexandru Ardelean
df0d0bcc00 python,python3: move PyPackage install rules in the beggining of the Package install rules
So that we can process Python sources installed
by those rules, if we need to.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-03-09 09:23:10 +02:00
Alexandru Ardelean
06c91a7ed8 python: move filespec shell code into file
Cleanup.
And preparation for adding a bit more functionality.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-03-09 09:23:10 +02:00
Alexandru Ardelean
17da988645 python,python3: fix goof with multiline command break
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-03-09 09:23:10 +02:00
Alexandru Ardelean
4772aec581 python,python3: override python setuptools & pip versions
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-02-09 16:31:16 +02:00
Alexandru Ardelean
31d614f92c python,python3: add python-pip-conf package to be used by both python-pip & python3-pip
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-01-23 11:59:50 +02:00
Alexandru Ardelean
a53d0c5a40 pip,setuptools: move as part of python,python3 build
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-01-23 10:20:20 +02:00
Matthias Schiffer
3823ef9bc4 Merge pull request #3813 from NeoRaider/hostpkg
Use STAGING_DIR_HOSTPKG where appropriate
2017-01-11 21:54:09 +01:00
Alexandru Ardelean
ed5cd3e2ce python: remove Host/Install rule default add
I just found out that, that the BUILD_VARIANT var
is not set for the host build, so technically this code
would never get used.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-01-11 11:02:24 +02:00
Matthias Schiffer
4a984a8d60
treewide: replace $(STAGING_DIR)/host and $(HOST_BUILD_PREFIX) with $(STAGING_DIR_HOSTPKG)
As both LEDE and OpenWrt have STAGING_DIR_HOSTPKG now, we can start to rely
on it. See 73b7f55424 for more information on
STAGING_DIR_HOSTPKG.

STAGING_DIR_HOSTPKG won't actually be changed before the first LEDE release
(it is equivalent to $(STAGING_DIR)/host), so this simple search/replace
cleanup is safe to apply. Doing this cleanup now will be useful for the
Gluon project (an OpenWrt/LEDE based firmware framework) for experimenting
with modifying STAGING_DIR_HOSTPKG before doing this in the LEDE upstream.

Also fixes a typo in the dbus Makefile ("STAGIND_DIR").

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2017-01-10 18:25:54 +01:00
Matthias Schiffer
876d139c98
python{,3}: remove STAGING_DIR_HOSTPKG fallback definition
STAGING_DIR_HOSTPKG is now defined in both OpenWrt and LEDE, so we can
start to rely on it.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2017-01-10 02:24:29 +01:00
Alexandru Ardelean
f04641d3d1 python: upgrade to version 2.7.13
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-01-04 15:08:45 +02:00
Alexandru Ardelean
6d9137048b python: simplify/unify default build rules for python packages
Most python packages use the same build rules & vars.
So, adding them in python-package.mk.

Also, preparing for using VARIANTs for python/python3 packages.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-01-04 15:08:37 +02:00
Alexandru Ardelean
bb2f8fa8ed python-dev: add python-lib2to3 as dependency
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-01-04 15:08:37 +02:00
Alexandru Ardelean
9eca45fdf1 python, python3: unify HOST_ vars and get rid of HOST_CFLAGS
--sysconfigdir and --sbindir are obtained from --prefix
and --exec-prefix, so no need to have them explicitly

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-11-07 10:55:34 +02:00
Alexandru Ardelean
6a670f42b1 python: move PYTHON_VERSION in own .mk file
Allows for more granularity with respect to python-host.mk
and python-package.mk inclusions.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-11-07 10:55:31 +02:00
Alexandru Ardelean
45bdb70e1e python: add include guard for python-host.mk and include in Makefile
So that it can be included twice.
python-package.mk include python-host.mk, but at some point
in time python-host.mk is not exported to staging_dir yet.

So, to have in python's Makefile, we need to include it
in the Makefile, and to prevent double inclusion (if
python-host.mk is exported from a previous build), the
include guard is added.

Also, moved the includes after some vars were set.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-11-07 09:27:20 +02:00
Jo-Philipp Wich
73b7f55424 python: avoid use of HOST_BUILD_PREFIX
Currently, the python-host.mk framework relies on HOST_BUILD_PREFIX to
refer to the $(STAGING_DIR)/host directory but using the HOST_BUILD_PREFIX
variable requires the use of include/host-build.mk which in turn includes
python-host.mk, leading to target redefinition errors.

In order to provide a global, uniform way to refer to the host staging
directory, LEDE introduced a new variable STAGING_DIR_HOSTPKG which points
to $(STAGING_DIR)/host for now with the purpose of eventually being able to
relocate that directory in the future.

This commit changes python-host.mk to ...
 - stop including include/host-build.mk (revert of #3423)
 - replace usages of $(HOST_BUILD_PREFIX) with $(STAGING_DIR_HOSTPKG)
 - warn and fallback to $(STAGING_DIR)/host if STAGING_DIR_HOSTPKG is
   unavailable

The fallback code will ensure that the python host build infrastructure
continues to work properly on older OpenWrt and LEDE versions until the
STAGING_DIR_HOSTPKG is fully settled in and can be removed some time
in the future.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-11-01 12:57:36 +01:00
Alexandru Ardelean
e54d296a53 python,python3: include host-build.mk in python-host.mk & python3-package.mk
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-10-31 09:51:34 +02:00
Hannu Nyman
265f9595ed Merge pull request #3297 from NeoRaider/python
python, python3, python-*: use default prefix for host install
2016-10-27 16:43:15 +03:00
Yousong Zhou
fbba266e79 python: introduce Build/Compile/HostPyRun{Host,Target}
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
2016-10-17 19:55:39 +08:00
Matthias Schiffer
205ee41506
python, python-*: use default prefix for host install
Also fixes a few incorrect "$(STAGING_DIR_HOST)/host" paths.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-10-04 00:59:37 +02:00
Alexandru Ardelean
8dd0131439 python: upgrade to version 2.7.12
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-09-13 10:17:57 +03:00
Alexandru Ardelean
aa2baa2120 python: do not allow packaging of windows exe files
Thanks to @ryzhovau for reporting.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-06-27 15:31:12 +03:00
Alexandru Ardelean
eec85f0ce7 python: revert $(STAGING_DIR)/host to $(STAGING_DIR)/host change
Also, override all prefix args in the HOST_CONFIGURE_ARGS
so that this works fine on CC/15.05.
There are some changes in core regarding package builds that
require this.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-04-15 12:11:21 +03:00
Alexandru Ardelean
c8e8aae579 python: change $(STAGING_DIR)/host to $(STAGING_DIR_HOST)
It seems that this can become an issue.
Found when building python3-setuptools from packages/trunk
in openwrt/15.05.

python3-setuptools is not in packages/for-15.05

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-04-14 11:56:21 +03:00
Jeffery To
11d1b213c2 python: add rpath for host Python extension modules
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2016-03-13 00:50:12 +08:00
Jeffery To
b70b978cc6 python: use default host build prefix, remove cross-compile workarounds for host
The sets host Python's prefix and exec-prefix to the same value
($(STAGING_DIR)/host for packages, as currently defined in
include/host-build.mk), which avoids the case where pyconfig.h is
not in the same location as Python's other header files (see
https://bugs.python.org/issue896330).

This also removes some cross compilation workarounds
(_python_sysroot/prefix/exec_prefix, disabling byte-compilation,
__PYVENV_LAUNCHER__) that are not necessary when compiling packages
for host.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2016-03-05 02:30:12 +08:00
Jeffery To
2140d8f6d2 python: fix HOST_PYTHON_INC_DIR path
Host python moved in c5564133, this updates HOST_PYTHON_INC_DIR to
match.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2016-02-14 01:46:56 +08:00
Felix Fietkau
9f8e5aca34 treewide: use $(STAGING_DIR)/host instead of $(STAGING_DIR_HOST), sync with changes in trunk
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
2016-01-20 21:56:03 +01:00
Jeffery To
94578145cd python: fixed _python_sysroot paths
AFAIK sysroot is combined with prefix/exec_prefix, so sysroot shouldn't
include "/usr". (cf. the HostPython function in older versions of
python-package.mk)

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2015-12-31 11:55:12 +08:00
Daniel Dickinson
83d992a8a9 lang/python: Make building additional (non-base) python modules easier
This adds code to make it easier to build third-party python
modules such as ones from PyPi.

Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
2015-12-18 17:15:36 -05:00
Hannu Nyman
298c826361 Merge pull request #2092 from cshore/pull-request-python-system-expat
lang/python: Depend on system expat
2015-12-16 10:23:57 +02:00
Alexandru Ardelean
65b388adbc python2: fix typo in HostPython function
I call this the curse of the End-Of-The-Year for me.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-12-13 14:56:45 +02:00
Alexandru Ardelean
fdde13be29 python: fix HostPython again
Tested on python-setuptools.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-12-12 14:51:50 +02:00
Alexandru Ardelean
779643e358 python: fix HostPython host/target selection
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-12-11 17:13:21 +02:00
Alexandru Ardelean
a8602a7ccb python: upgrade to version 2.7.11
And split python-dev and python-lib2to3 packages.
Seems for python3 this was done, so we'll sync here.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-12-11 16:07:22 +02:00
Alexandru Ardelean
c55641331e python: unify HostPython and HostHostPython functions
That means basically moving the host Python from $(STAGING_DIR_HOST)
to $(STAGING_DIR_HOST)/usr and making the PYTHONPATH var
as an argument.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-12-11 16:01:27 +02:00
Daniel Dickinson
9535b642a9 lang/python: Depend on system expat
Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
2015-12-09 21:21:47 -05:00
Jeffery To
b12d7b6db1 python: add capability to install python packages for the host
Some python packages (e.g. cffi) compile one or more shared libraries
as part of their setup process. When these packages are setup
dependencies of other packages (e.g. cryptography), these packages (and
their shared libraries) will need to be loaded on the host system.

This adds a makefile, similar to python-package.mk, to simplify
installing python packages on the host.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2015-11-24 22:43:56 +08:00
Attila Lendvai
2bb9f6b9c7 python: fix cross-compiling C++ modules.
Signed-off-by: Attila Lendvai <attila@lendvai.name>
2015-09-28 17:42:05 +00:00
Alexandru Ardelean
af89de58f5 python: upgrade to 2.7.10
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-05-27 19:52:49 +03:00
Alexandru Ardelean
022fb434cf python: replace with libncursesw with libncurses
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-04-21 10:15:44 +03:00
Jan Čermák
a5d784de0b python: added configure args for distutils path detection
python-package.mk now defines (extends) CONFIGURE_ARGS that are
adjusting PREFIX and EXEC_PREFIX in distutils.sysconfig during
compilation. These variables are sometimes used by autotools to detect
path to Python header files. Adding these variables to python-package.mk
fixes compilation of legacy autotools-configured packages that already
include python-package.mk and do not overwrite CONFIGURE_ARGS.

Signed-off-by: Jan Čermák <jan.cermak@nic.cz>
Cc: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-03-16 10:41:33 +01:00
Alexandru Ardelean
d69d8ec0b9 python: refine packaging and split more modules into packages
Rule of thumb is: any Python file that is greater than 100kb
(or adds a dependency with which it adds more than 100 kb)
should be a pretty useful/commonly used lib to stay in `python-light`.
An example, is the Python IO lib, which summarized (Python source +
binary module) is over 200kb.

Also moved some files that should have been put into previously
existing packages before, and re-organized the packages a bit.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-03-13 18:39:08 +02:00
Steven Barth
66331c6de2 Merge pull request #992 from commodo/python-patch-updates
python: patch updates
2015-03-06 15:29:30 +01:00
Alexandru Ardelean
0d072f2b42 python: packetize some python modules
Packetize some Python modules to reduce size of the overall Python package.
Basically, a new package is introduced, call `python-light`,
and everything that's extra (or big) is put in other packages.

The `python` package becomes a metapackage that installs `python-light`
along with the rest of the packages.

Base work started by Jan Čermák.

Signed-off-by: Jan Čermák <jan.cermak@nic.cz>
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-03-06 15:19:29 +02:00
Alexandru Ardelean
bb87de33dd python: add '_python_*' env vars to host python
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2015-03-06 14:18:45 +02:00