Bundle-python

Version 3 (Saúl Ibarra Corretgé, 05/27/2013 02:20 pm)

1 1 Saúl Ibarra Corretgé
h1. Building a Python Framework to bundle inside Blink
2 1 Saúl Ibarra Corretgé
3 1 Saúl Ibarra Corretgé
In order to avoid using the system Python a custom Framework build is needed. Using a bundled Python version will make the package bigger in size, but all package versions are controlled and not up to the environment. Also, we can use the latest Python version, with latest bugfixes and features, since Apple only updates the system Python version on every major OS release.
4 1 Saúl Ibarra Corretgé
5 1 Saúl Ibarra Corretgé
h2. Building the Python Framework itself
6 1 Saúl Ibarra Corretgé
7 1 Saúl Ibarra Corretgé
* Download the desired Python version, at the time of this writing, 2.7.5
8 1 Saúl Ibarra Corretgé
9 1 Saúl Ibarra Corretgé
<pre>
10 1 Saúl Ibarra Corretgé
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
11 1 Saúl Ibarra Corretgé
</pre>
12 1 Saúl Ibarra Corretgé
13 1 Saúl Ibarra Corretgé
* Uncompress and get ready to compile
14 1 Saúl Ibarra Corretgé
15 1 Saúl Ibarra Corretgé
<pre>
16 1 Saúl Ibarra Corretgé
tar jxvf Python-2.7.5.tar.bz2
17 1 Saúl Ibarra Corretgé
cd Python-2.7.5
18 1 Saúl Ibarra Corretgé
</pre>
19 1 Saúl Ibarra Corretgé
20 1 Saúl Ibarra Corretgé
* Create a temporary directory for the build result
21 1 Saúl Ibarra Corretgé
22 1 Saúl Ibarra Corretgé
<pre>
23 1 Saúl Ibarra Corretgé
mkdir -p /tmp/py
24 1 Saúl Ibarra Corretgé
</pre>
25 1 Saúl Ibarra Corretgé
26 1 Saúl Ibarra Corretgé
* Compile Python (Framework build) in 32 bits mode and with compatibility for OSX >= 10.6
27 1 Saúl Ibarra Corretgé
28 1 Saúl Ibarra Corretgé
<pre>
29 1 Saúl Ibarra Corretgé
./configure --prefix=/tmp/py --enable-framework=/tmp/py MACOSX_DEPLOYMENT_TARGET=10.6 ARCHFLAGS="-arch i386" CFLAGS="-arch i386" CXXFLAGS="-arch i386" LDFLAGS="-arch i386"
30 1 Saúl Ibarra Corretgé
make
31 1 Saúl Ibarra Corretgé
make install
32 1 Saúl Ibarra Corretgé
</pre>
33 1 Saúl Ibarra Corretgé
34 1 Saúl Ibarra Corretgé
The resulting framework will be located in /tmp/py
35 1 Saúl Ibarra Corretgé
36 1 Saúl Ibarra Corretgé
* Change the dynamic link target in the main binary file of the Python Framework
37 1 Saúl Ibarra Corretgé
38 1 Saúl Ibarra Corretgé
<pre>
39 1 Saúl Ibarra Corretgé
cd /tmp/py/Python.framework/Versions/2.7
40 1 Saúl Ibarra Corretgé
chmod +w Python
41 1 Saúl Ibarra Corretgé
install_name_tool -id @executable_path/../Frameworks/Python.framework/Versions/2.7/Python Python
42 1 Saúl Ibarra Corretgé
chmod -w Python
43 1 Saúl Ibarra Corretgé
</pre>
44 1 Saúl Ibarra Corretgé
45 3 Saúl Ibarra Corretgé
The framework is almos ready for inclusion on the project.
46 1 Saúl Ibarra Corretgé
47 2 Saúl Ibarra Corretgé
*NOTE*: Be careful when copying the framework around, it contains symlinks and if @cp -r@ is used the size will we doubled, use @cp -RH@ instead.
48 2 Saúl Ibarra Corretgé
49 1 Saúl Ibarra Corretgé
50 1 Saúl Ibarra Corretgé
* Reduce the size of the Python Framework:
51 1 Saúl Ibarra Corretgé
52 3 Saúl Ibarra Corretgé
There are a number of things that can be removed from the framework directory to make it smaller in size:
53 3 Saúl Ibarra Corretgé
54 3 Saúl Ibarra Corretgé
<pre>
55 3 Saúl Ibarra Corretgé
*.pyc
56 3 Saúl Ibarra Corretgé
*.pyo
57 3 Saúl Ibarra Corretgé
Versions/Current/Mac
58 3 Saúl Ibarra Corretgé
Versions/Current/bin
59 3 Saúl Ibarra Corretgé
Versions/Current/share
60 3 Saúl Ibarra Corretgé
Versions/Current/Resources/English*
61 3 Saúl Ibarra Corretgé
Versions/Current/Resources/*.app
62 3 Saúl Ibarra Corretgé
Versions/Current/lib/python2.7/test
63 3 Saúl Ibarra Corretgé
Versions/Current/lib/python2.7/plat-*
64 3 Saúl Ibarra Corretgé
Versions/Current/lib/python2.7/idlelib
65 3 Saúl Ibarra Corretgé
Versions/Current/lib/python2.7/curses
66 3 Saúl Ibarra Corretgé
Versions/Current/lib/python2.7/lib2to3
67 3 Saúl Ibarra Corretgé
Versions/Current/lib/python2.7/lib-tk
68 3 Saúl Ibarra Corretgé
Versions/Current/lib/python2.7/bsddb
69 3 Saúl Ibarra Corretgé
</pre>