Bundle-python

Version 1 (Saúl Ibarra Corretgé, 05/27/2013 02:10 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 1 Saúl Ibarra Corretgé
The framework is now ready for inclusion on the project.
46 1 Saúl Ibarra Corretgé
47 1 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 1 Saúl Ibarra Corretgé
49 1 Saúl Ibarra Corretgé
* Reduce the size of the Python Framework:
50 1 Saúl Ibarra Corretgé
51 1 Saúl Ibarra Corretgé
TODO