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>
Well, this slipped by for some time.
This should make the Python core packages even more lighter.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
python-cryptography tries to install other packages during setup.
However, this isn't needed, since they should have been already
resolved/installed via LEDE/OpenWrt's build system dep logic.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
After removing python-setuptools package, the dependency
chain to python/host is a bit different.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
So, I chose to workaround it in the Makefile.
A proper fix is a bit more work that I would like to do now,
and I have no suggestion/idea for a good fix right now.
The problem is with the `CMD` part that's used in the install rule,
together with the fact that PREFIX is the same as the source location.
```
CMD="find . -maxdepth 1 -mindepth 1 \( -name '*.py' -not -name 'test_*' -not -name 'setup.py' \) -or \( -type d -not -name 'dist' -not -name '*.egg-info' -not -name '__pycache__' \)| xargs --no-run-if-empty cp -r -t $(PREFIX)"
```
The gist of it, is that it seems that this will filter
and copy to `PREFIX` all python sources and folders that
are not names `dist`, `__pycache__`, or `*.egg-info`.
And it searches all folders at (exactly) depth 1.
The solution I chose is to put a `dist` folder under
`_install_tmp`, which is kind of a trick to go
to depth 2 and avoid both conditions in the `find` call.
This avoids errors:
```
cp: './weakref.py' and '/home/sandu/work/lede/build_dir/target-mips_24kc_musl-1.1.16/micropython-lib-1.8.6-f81e979c56dddb771ad36ec381b7f2c6cd12111f-f81e979c56dddb771ad36ec381b7f2c6cd12111f/_install_tmp/weakref.py' are the same file
cp: './xmltok.py' and '/home/sandu/work/lede/build_dir/target-mips_24kc_musl-1.1.16/micropython-lib-1.8.6-f81e979c56dddb771ad36ec381b7f2c6cd12111f-f81e979c56dddb771ad36ec381b7f2c6cd12111f/_install_tmp/xmltok.py' are the same file
cp: './zipfile.py' and '/home/sandu/work/lede/build_dir/target-mips_24kc_musl-1.1.16/micropython-lib-1.8.6-f81e979c56dddb771ad36ec381b7f2c6cd12111f-f81e979c56dddb771ad36ec381b7f2c6cd12111f/_install_tmp/zipfile.py' are the same file
```
Initially I tried to add exit 0, but that would
just hide other (potentially worse) issues.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
LEDE now provides libncursesw by default [even for libncurses].
No need to keep this patch around.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Python comes with it's own builtin libffi lib, which
seems easier to use for the host build, than trying
to use the one from the package feeds.
Also, dropping `005-fix-libffi-x86-64-configure.patch`
Not needed anymore.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
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>
Fixes build error:
```
x86_64-openwrt-linux-musl-gcc -L/home/sandu/work/lede/staging_dir/target-x86_64_musl-1.1.15/usr/lib -L/home/sandu/work/lede/staging_dir/target-x86_64_musl-1.1.15/lib -L/home/sandu/work/lede/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.15/usr/lib -L/home/sandu/work/lede/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.15/lib -znow -zrelro -fPIC -shared -Wl,--version-script=libfdt/version.lds -Wl,-soname,libfdt.so.1 -o libfdt/libfdt-1.4.2.so libfdt/fdt.o libfdt/fdt_ro.o libfdt/fdt_wip.o libfdt/fdt_sw.o libfdt/fdt_rw.o libfdt/fdt_strerror.o libfdt/fdt_empty_tree.o libfdt/fdt_addresses.o
/home/sandu/work/lede/staging_dir/toolchain-x86_64_gcc-5.4.0_musl-1.1.15/lib64/gcc/x86_64-openwrt-linux-musl/5.4.0/../../../../x86_64-openwrt-linux-musl/bin/ld: libfdt/fdt.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
libfdt/fdt.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:283: recipe for target 'libfdt/libfdt-1.4.2.so' failed
make[4]: *** [libfdt/libfdt-1.4.2.so] Error 1
```
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Talked it over with Ben (@scrpi).
He said he'd be fine with taking over maintainership of this.
@scrpi: please confirm this on PR.
Signed-off-by: Ben Kelly <ben@benjii.net>
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Technically, this just updates build details.
No functionality change to package itself.
So, no need to increase PKG_RELEASE on this change.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
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>
PYTHON_FOR_BUILD is used to build the target python.
Nomally Python scripts detect fine the Python host interpreter
to use for building the Python target interpreter.
But, let's not leave it up to chance anymore.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
And apparently `--with-system-ffi` does not take any arguments.
But it's only in Python 3.6 that a check was added for that.
After checking, Python 2.7 does not take any args either
for `--with-system-ffi` ; so, remove it [for the case when this
change may get backported].
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Python 3.6 comes with some new cross-compilation logic that
generates filenames/paths with arch, abiflags and mach
included (in filename & path).
Problem is that the generated paths/filenames are not
consistent across archs (noticed on x86_64 & ar71xx),
so patch `016-adjust-config-paths.patch` was added
to mitigate this (by removing extra stuff in paths).
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Dropped patches, unrequired.
There is a newer version released, but I cannot vouch for it yet.
We've been using this one for about a year now.
Since, I only recently became maintainer of `keepalived`, I will
push this as the current stable one, and start using a newer
version internally, before releasing it to the public.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Adding @scrpi (Ben Kelly).
Initial UCI config support was written by me (@commodo)
Updates & fixes added by Ben.
Signed-off-by: Ben Kelly <ben@benjii.net>
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
keepalived seems to work fine without it.
There is fall-back code that kicks in when it's not present.
So, we will build against (or pull) the libnl package only
if there is another package that pulls it.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
And move \`python3-package.mk\` include, same as in python package.
This is mostly to have consistency/similarity between python & python3
packages.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
This was fixed a few versions back.
But then python-setuptools changed.
The problem is that python scripts installed via setuptools
& pip would have `#!/build_dir_path/staging_dir/target-x86_64_musl-1.1.15/host/bin/python`
as the path in the script, rather than the path on the target (`/usr/bin/python`).
This fixes that.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
After commit a4b0c0a9fb
python host does not install/have the built-in setuptools package.
So, for python-dns, we need to add it explicitly (since it's required).
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
--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>
Allows for more granularity with respect to python-host.mk
and python-package.mk inclusions.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
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>
The configure script (for libdnet) seems to find <net/bpf.h>
and detect some BSD stuff.
The lidnet's Makefile wants to include eth-bsd.c, arp-bsd.c
and other BSD friends.
This seems to put a cork on it, and no BSD stuff appears anymore.
[at least on my system].
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
It's a bit weird fixing a build error with an upgrade,
but it seems to work on my setup.
Hopefully, builbot agrees.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Tcpreplay is a suite of free Open Source utilities for editing and
replaying previously captured network traffic. Originally designed
to replay malicious traffic patterns to Intrusion Detection/Prevention
Systems, it has seen many evolutions including
capabilities to replay to web servers.
Pretty useful for testing stuff too.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Otherwise it will pull all compression libraries to install
(on newly configured targets) when maybe 1 or 2 are needed.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
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>
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>
python-setuptools releases more often than my preference.
Every once in a while I sync up with the latest released.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
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>
Warning is:
#warning redirecting incorrect #include <sys/poll.h> to <poll.
Not a big issue.
But it can be annoying when building with -Werror set.
Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>