This recipe is used to generate buildout-cache.tar.gz2 file.
The recipe was inspired by update-packages script from Plone Installers-UnifiedInstaller (https://github.com/plone/Installers-UnifiedInstaller/blob/master/update_packages.py) The recipe will start a buildout with forced eggs-directory and download-cache. After it will deleted eggs with binary components, make some cleanup, and finally generate compressed file contains buildout-cache.
The recipe supports the following optionnal options:
- target
- Name of target compressed file. Default value is buildout-cache.tar.bz2.
- buildout_file
- Name of buildout file which be used for constuction of buildout cache. Default value is buildout.cfg.
- work_dir
- Directory where eggs are downloaded for creation of tar.gz2 file. This directroy is deleted before and after the script. Default value is tmp.
- timeout
- Timeout using for buildout in second. If no timeout define but a socket-timeout into buildout section, socket-timeout value is used. Default value is 10.
- preremove_old_work_dir
- Sometime we want to keep word_dir if a build failed. Default value is True, so work_dir will be deleted by default.
We'll start by creating a buildout.cfg file that uses the recipe:
[buildout] parts = makebuildoutcache [makebuildoutcache] recipe = collective.recipe.buildoutcache target = buildout-cache.tar.bz2 buildout_file = buildout.cfg work_dir = my-temp-buildout-work-dir
For recipe installation you can make this command line:
./bin/buildout install makebuildoutcache
And start recipe script:
./bin/makebuildoutcache
Then all these packages will download temporally into the directory my-temp-buildout-work-dir defined and later it will create a buildout-cache.tar.bz2 file in the Buildout directory.
The buildout-cache.tar.bz2 archive contains one single buildout-cache folder. In this folder, there are 2 folders:
- eggs: contains all eggs use by your buildout except eggs which have to be compiled.
- downloads: contains zip eggs which must be compiled (as AccessControl, lxml, Pillow, ZODB, ...).
Before starting a buildout, we download and extract buildout-cache and use it on our buildout directory. We add eggs-directory and download-cache parameters on buildout section like this:
[buildout] eggs-directory = buildout-cache/eggs download-cache = buildout-cache/downloads