blob: 734d82b22c57dbdb13992f14533dbc6b207ff6d6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
Bundler
+++++++
This application is intended to create bundles for the platform in which its being run. This should eventually become the main tool in order to create reproducible builds.
How to use
++++++++++
NOTE: Most of this will be done automatically in a while, but this is how it's done now.
- Install Xcode and command line tools (OSX only)
- Create a new virtualenv
::
mkvirtualenv bundle
- Install bundler deps (OSX or Linux)
::
pip install -r pkg/requirements.pip
- Install bundler deps (Windows)
::
pip install pbs # There's no sh in Windows
pip install modulegraph altgraph
- Install the needed dependencies
::
# Linux
aptitude install libsqlite3-dev
# In Windows you'll need sqlite3 in your path
- psutils is a dependency for another dependency, it might get installed in a zip form, which we don't want, so we install it by hand for now
::
pip install psutil
- We need a slightly different python-gnupg, so clone from a different repo
::
git clone https://github.com/chiiph/python-gnupg
cd python-gnupg/
git checkout develop
git pull origin develop
python setup.py develop
- Same thing with protobuf.socketrpc
::
git clone https://github.com/chiiph/protobuf-socket-rpc
cd protobuf-socket-rpc
python setup.py easy_install -Z .
- Install Qt 4.8 in whatever way you prefer.
- Build PySide:
::
git clone git://gitorious.org/pyside/apiextractor.git
git clone git://gitorious.org/pyside/generatorrunner.git
git clone git://gitorious.org/pyside/shiboken.git
git clone git://gitorious.org/pyside/pyside.git
git clone git://gitorious.org/pyside/pyside-tools.git
# OSX
export PYSIDESANDBOXPATH=$HOME/Code/pyside/sandbox
export DYLD_LIBRARY_PATH=$PYSIDESANDBOXPATH/lib:$DYLD_LIBRARY_PATH
# Linux
export PYSIDESANDBOXPATH=$HOME/sandbox
export LD_LIBRARY_PATH=$PYSIDESANDBOXPATH/lib:$LD_LIBRARY_PATH
export PATH=$PYSIDESANDBOXPATH/bin:$PATH
export PYTHONPATH=$PYSIDESANDBOXPATH/lib/python2.6/site-packages:$PYTHONPATH
export PKG_CONFIG_PATH=$PYSIDESANDBOXPATH/lib/pkgconfig:$PKG_CONFIG_PATH
alias runcmake='cmake .. -DCMAKE_INSTALL_PREFIX=$PYSIDESANDBOXPATH'
# In OSX, the paths may vary depending on the Qt installation
runcmake -DCMAKE_OSX_DEPLOYMENT_TARGET=10.7 -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk .. -DQT_QMAKE_EXECUTABLE=/usr/local/bin/qmake -DQT_INCLUDE_DIR=/usr/local/include/ -DQT_INCLUDES=/usr/local/include/ -DALTERNATIVE_QT_INCLUDE_DIR=/usr/local/include/
# In Linux
runcmake ..
make install
# Make them available from the virtualenv
ln -s $PYSIDESANDBOXPATH/lib/python2.7/site-packages/PySide $VIRTUAL_ENV/lib/python2.7/site-packages/PySide
ln -s $PYSIDESANDBOXPATH/lib/python2.7/site-packages/pysideuic $VIRTUAL_ENV/lib/python2.7/site-packages/pysideuic
- Create a paths file: The problem is that inside a virtualenv we don't have access to the real distutils, so we'll need to look for it on the "original" (i.e. non-virtualenv) paths for python.
::
python bundler/create_paths.py <paths file>
- Collect the binaries. We aren't building everything yet, so you'll need to collect the following files:
::
# OSX
Bitmask <-- this is the bitmask_launcher
Python
QtCore
QtGui
cocoasudo
gpg
libboost_filesystem.dylib
libboost_python.dylib
libboost_system.dylib
libpng15.15.dylib
libpyside-python2.7.1.2.dylib
libshiboken-python2.7.1.2.dylib
openvpn.files
openvpn.leap
qt_menu.nib
tuntap-installer.app
- (Optional) Seed a configuration: You might want to create a bundle with a specific configuration pinned providers.
- Create the bundle:
::
# On OSX and Linux
python bundler/main.py --workon <path/to/bundle/temp> --paths-file <paths file> --binaries <binaries dir> --seeded-config <seeded config> [--nightly] --do gitclone pythonsetup
python bundler/main.py --workon <path/to/bundle/temp> --paths-file <paths file> --binaries <binaries dir> --seeded-config <seeded config> [--nightly] --skip gitclone pythonsetup
# On Windows
python bundler/main.py --workon <path/to/bundle/temp> --paths-file <paths file> --binaries <binaries dir> --seeded-config <seeded config> [--nightly] --do gitclone
# Modify bitmask_client/pkg/requirements.pip, comment out python-daemon
python bundler/main.py --workon <path/to/bundle/temp> --paths-file <paths file> --binaries <binaries dir> --seeded-config <seeded config> [--nightly] --do pythonsetup
python bundler/main.py --workon <path/to/bundle/temp> --paths-file <paths file> --binaries <binaries dir> --seeded-config <seeded config> [--nightly] --skip gitclone pythonsetup
|