First steps¶
How to create and bootstrap a buildout¶
To create a buildout and run the build, you just need 1 file and 2 commands:
Create a single
buildout.cfg
file.Be sure you installed all your build dependencies
Bootstrap the buildout with:
python bootstrap.py
Run the build with:
bin/buildout
The same with more details below :
Creating the buildout¶
Create a buildout.cfg
file in an empty directory, containing the
configuration of the example 6.1 section.
Installing build dependencies¶
You basically need typical development tools needed to build all the Python dependency eggs of Odoo. You can do this by yourself with your system or Linux distribution.
Or if you’re using a Debian based distribution, we provide a single dependency package you can use to install all dependencies in one shot:
Add the following line in your /etc/apt/sources.list
:
deb http://apt.anybox.fr/openerp common main
If you don’t want your system to complain about non-signed packages, have it accept the signing key, e.g. by issuing:
sudo apt-key adv --keyserver hkp://subkeys.pgp.net --recv-keys 0xE38CEB07
(sometimes, the key server is too busy, you may need to wait a few minutes and try again)
Install the dependency package:
$ sudo aptitude update
$ sudo aptitude install openerp-server-system-build-deps
You can uninstall this package with aptitude
after the build to
automatically remove all un-needed dependencies, but you need to
install run dependencies before that
$ sudo aptitude install openerp-server-system-run-deps
$ sudo aptitude remove openerp-server-system-build-deps
Please note that these package will have your system install the client part of PostgreSQL software only. If you want a PostgreSQL server on the same host, that’s not in the recipe scope, just install it as well.
Bootstrapping the buildout¶
Bootstrapping the buildout consists in creating the basic structure of the buildout, and installing buildout itself in the directory. Once it’s been done, everything is under tight control.
The easiest way to bootstrap is to use the bootstrap.py
script:
$ wget https://raw.github.com/buildout/buildout/master/bootstrap/bootstrap.py
As of zc.buildout version 2.2, strong isolation from the system-wide Python installation has been abandoned because of its redundancy with the very popular virtualenv. Besides, the bootstrap actually fails if a version of setuptools older than 0.7 is present system-wide (happens easily enough at the time of this writing).
The universal current way of doing is therefore to start from a virtualenv without setuptools. For virtualenv >= 1.9, just do:
$ virtualenv sandbox --no-setuptools
For older versions of virtualenv:
$ virtualenv sandbox
$ sandbox/bin/pip uninstall setuptools pip
Note
to install virtualenv.
Debian family: sudo aptitude install python-virtualenv
Redhat/Fedora/CenOS family: sudo yum install python-virtualenv
Finally, perform the bootstrap with the virtualenv’s Python:
$ sandbox/bin/python bootstrap.py
Warning
boostrap.py
will fail if you don’t already have a valid
buildout.cfg
file. Don’t hesitate over options, you
can bootstrap with a really minimal one and tweak it
later.
From now on, all buildout related operations, including Odoo startup script, custom scripts will be protected by the virtualenv.
Note
nothing, not even zc.buildout
actually gets installed by
buildout in such a virtualenv.
It’s totally safe if you’re managing several buildouts to
share a single such virtualenv among all of them.
Note
since the bootstrap operation is so sensitive, we recommend
package managers to include the precise bootstrap.py
in
their distributed buildout, and to bundle a future-proof
shell script, using options such as -v
.
Running the build¶
This is the day-to-day operation. Just run
$ bin/buildout
And rerun to apply any changes you could later make to buildout.cfg
.
Starting Odoo¶
Just run
$ bin/start_openerp
Example OpenERP 7.0 buildouts¶
This example builds the latest nightly OpenERP 7 version. Note how most Python distribution versions are pinned.
While not mandatory, version pinning is an
important part of the buildout culture. Note also how even zc.buildout
and the current recipe versions can be pinned:
[buildout]
parts = openerp
versions = versions
find-links = http://download.gna.org/pychart/
[openerp]
recipe = anybox.recipe.openerp[bzr]:server
version = nightly 7.0 latest
[versions]
setuptools = 1.1.0
zc.buildout = 2.2.1
zc.recipe.eggs = 2.0.0
anybox.recipe.openerp = 1.7.1
babel = 0.9.6
Pillow = 1.7.1
pywebdav = 0.9.4.1
PyXML = 0.8.4
pyyaml = 3.10
werkzeug = 0.8.3
zsi = 2.0-rc3
feedparser = 5.1.1
gdata = 2.0.16
lxml = 2.3.3
psycopg2 = 2.4.4
pydot = 1.0.28
pyparsing = 1.5.6
python-dateutil = 1.5
python-ldap = 2.4.9
python-openid = 2.2.5
pytz = 2012b
vatnumber = 1.0
vobject = 0.8.1c
xlwt = 0.7.3
Of course, installing the latest nightly release provided by Odoo is not really interesting. The flexibility is.
Here’s an example with the latest versions of the 7.0 Bazaar branches
on Launchpad as lightweight checkouts (to avoid hour long downloads).
We don’t repeat the buildout
and versions
sections:
[openerp]
recipe = anybox.recipe.openerp[bzr]:server
version = bzr lp:openobject-server/7.0 openerp-7.0 last:1 bzr-init=lightweight-checkout
addons = bzr lp:openobject-addons/7.0 addons-7.0 last:1 bzr-init=lightweight-checkout
bzr lp:openerp-web/7.0 addons-web-7.0 last:1 subdir=addons bzr-init=lightweight-checkout
Now imagine how easily one can switch branches and redistribute a ready-to-run buildout on some dedicated support branch, Git mirrors, etc.
The next example is on 6.1 and demonstrates both how to add specific addons directories, and how uniform it is.
Example OpenERP 6.1 buildout with a custom addon¶
Here is a very simple example for a latest OpenERP 6.1 nightly and a custom addon hosted on Bitbucket:
[buildout]
parts = openerp
versions = versions
find-links = http://download.gna.org/pychart/
[openerp]
recipe = anybox.recipe.openerp:server
version = nightly 6.1 latest
addons = hg https://bitbucket.org/anybox/anytracker addons-at default
[versions]
MarkupSafe = 0.15
Pillow = 1.7.7
PyXML = 0.8.4
babel = 0.9.6
feedparser = 5.1.1
gdata = 2.0.16
lxml = 2.3.3
mako = 0.6.2
psycopg2 = 2.4.4
pychart = 1.39
pydot = 1.0.28
pyparsing = 1.5.6
python-dateutil = 1.5
python-ldap = 2.4.9
python-openid = 2.2.5
pytz = 2012b
pywebdav = 0.9.4.1
pyyaml = 3.10
reportlab = 2.5
simplejson = 2.4.0
vatnumber = 1.0
vobject = 0.8.1c
werkzeug = 0.8.3
xlwt = 0.7.3
zc.buildout = 1.5.2
zc.recipe.egg = 1.3.2
zsi = 2.0-rc3
Note
with OpenERP 6.1 the web client is natively included in the server as a simple module. In that case you don’t need to write a separate part for the web client, unless that’s what you really want to do.
Example OpenERP 6.0 buildout (server and clients)¶
Here is a sample buildout with version specification, 2 OpenERP servers (with one using the latest 6.0 branch on the launchpad) using only NETRPC and listening on 2 different ports, and 2 web clients:
[buildout]
parts = openerp1 web1 openerp2 web2
#allow-picked-versions = false
versions = versions
find-links = http://download.gna.org/pychart/
[openerp1]
recipe = anybox.recipe.openerp:server
version = 6.0.3
options.xmlrpc = False
options.xmlrpcs = False
[web1]
recipe = anybox.recipe.openerp:webclient
version = 6.0.3
[openerp2]
recipe = anybox.recipe.openerp[bzr]:server
version = bzr lp:openobject-server/6.0 openobject-server-6.x last:1
options.xmlrpc = False
options.xmlrpcs = False
options.netrpc_port = 8170
[web2]
recipe = anybox.recipe.openerp:webclient
version = 6.0.3
global.openerp.server.port = '8170'
global.server.socket_port = 8180
[versions]
MarkupSafe = 0.15
Pillow = 1.7.7
anybox.recipe.openerp = 0.9
caldav = 0.1.10
collective.recipe.cmd = 0.5
coverage = 3.5
distribute = 0.6.25
feedparser = 5.0.1
lxml = 2.1.5
mako = 0.4.2
nose = 1.1.2
psycopg2 = 2.4.2
pychart = 1.39
pydot = 1.0.25
pyparsing = 1.5.6
python-dateutil = 1.5
pytz = 2012b
pywebdav = 0.9.4.1
pyyaml = 3.10
reportlab = 2.5
vobject = 0.8.1c
z3c.recipe.scripts = 1.0.1
zc.buildout = 1.5.2
zc.recipe.egg = 1.3.2
Babel = 0.9.6
FormEncode = 1.2.4
simplejson = 2.1.6
Continuously tested examples¶
Other examples are available in the buildbot
subdirectory of the
source distribution archive of this recipe (the tar.gz
file that
can be downloaded from the PyPI), and are
continuously tested in the
anybox buildbot which is powered by
anybox.buildbot.openerp.
See also Continuous integration for more details about these tested examples.
Other sample buildouts¶
Here are a few ready-to-use buildouts:
(Be sure to install system dependencies first)
OpenERP with the development branches of the Magento connector addons:
$ hg clone https://bitbucket.org/anybox/openerp_connect_magento_buildout
$ cd openerp_connect_magento_buildout
$ python bootstrap.py
$ bin/buildout
$ bin/start_openerp
OpenERP with the development branches of the Prestashop connector addons:
$ hg clone https://bitbucket.org/anybox/openerp_connect_prestashop_buildout
$ cd openerp_connect_prestashop_buildout
$ python bootstrap.py
$ bin/buildout
$ bin/start_openerp