summaryrefslogtreecommitdiff
path: root/lang/python/python-packages/README.md
diff options
context:
space:
mode:
authorAlexandru Ardelean <ardeleanalex@gmail.com>2017-05-17 16:45:48 +0300
committerAlexandru Ardelean <ardeleanalex@gmail.com>2017-05-17 16:51:14 +0300
commit68312f49c0b4456e665ed438a86a44738caa765a (patch)
tree6280a9fb0de5782ca8ca4ca39b014062e1b8d387 /lang/python/python-packages/README.md
parent1bf7af4ca53db6f58655857f6eb49a9893c854d9 (diff)
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>
Diffstat (limited to 'lang/python/python-packages/README.md')
-rw-r--r--lang/python/python-packages/README.md72
1 files changed, 72 insertions, 0 deletions
diff --git a/lang/python/python-packages/README.md b/lang/python/python-packages/README.md
new file mode 100644
index 000000000..3c09d8eb6
--- /dev/null
+++ b/lang/python/python-packages/README.md
@@ -0,0 +1,72 @@
+This package allows users to package python modules without creating package
+Makefiles for each individual module and their dependencies. It provides a
+way making packaging python packages faster and may also facilitate the process
+of developing Makefiles for new python packages
+
+This is a raw DEVEL only package. Using it may entail a lot of implementation
+details and you may need to resolve target dependencies and package details on
+your own
+
+- Third party python packages may depend on features not included in e.g.
+ python-light
+- Some python modules may require host install of another module to progress,
+ e.g. target cryptography requires host cffi
+- Some python modules have external C library dependencies, e.g. pyOpenSSL
+ requires openssl libs
+- Some packages may have an autoconf configure script whose arguments we
+ cannot control with pip and has to be passed on (hacked) by overriding some
+ environment variables
+
+## How it works
+
+1. Install host modules required for building target modules
+2. Install each target module to separate directories
+3. Install another copy of modules for cleanup purposes to make list of
+ installed files to be removed from target modules installed in step 2
+
+Why should it be so
+
+1. Installing target cryptography requires host installation of cffi module
+2. cryptography requires setuptools and pip will install its own copy with
+ --ignore-installed. When PACKAGE_python-setuptools is also selected, opkg
+ will complain of data file clashes if it was not removed here.
+
+Pip will handle dependency requirements of python modules, but external
+dependencies like c libraries has to be prepared by the build system. The
+issue is that there is currently no way to express such dependencies, thus may
+cause build failure, e.g. pycrypto requires the presence of libgmp to build
+successfully.
+
+## Tips
+
+If something goes wrong, we can add additional arguments to pip command
+line to check the detailed build process. Some useful arguments may be
+
+- -v, for verbose output. Repeat this option if the current level of
+ verbosity is not enough
+- --no-clean, for preserving pip build dir on build failure
+
+## Examples
+
+tornado (python-only module)
+
+ CONFIG_PACKAGE_python-packages=y
+ CONFIG_PACKAGE_python-packages-list="tornado==4.4.2"
+
+cryptography (requires installation of host modules and cleanup on target modules)
+
+ CONFIG_PACKAGE_python-packages=y
+ CONFIG_PACKAGE_python-packages-list-host="cffi"
+ CONFIG_PACKAGE_python-packages-list="cryptography"
+ CONFIG_PACKAGE_python-packages-list-cleanup="setuptools"
+
+pycrypto 2.7a1 (python module with autoconf configure script; depends on
+libgmp; broken wmmintrin.h). 2.6.1 does not work because of a flaw in
+the setup.py hardcoding host include directory
+
+ CONFIG_PACKAGE_libgmp=y
+ CONFIG_PACKAGE_python-packages=y
+ CONFIG_PACKAGE_python-packages-list="https://github.com/dlitz/pycrypto/archive/v2.7a1.tar.gz"
+ CONFIG_PACKAGE_python-packages-envs="ac_cv_header_wmmintrin_h=no build_alias=$(GNU_HOST_NAME) host_alias=$(GNU_TARGET_NAME) target_alias=$(GNU_TARGET_NAME)"
+ CONFIG_PACKAGE_python-packages-extra-deps="libgmp.so.10"
+