{ "info": { "author": "Mathieu Pasquet", "author_email": "kiorky@cryptelium.net", "bugtrack_url": null, "classifiers": [ "Framework :: Buildout", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "******************************************************************************\nRecipe for compiling and installing software with or without minitage\n******************************************************************************\n\n.. contents::\n\n=======================\nIntroduction\n=======================\n\nPlease look for options at http://pypi.python.org/pypi/minitage.recipe.common\n\nThe egg has those entry point:\n\n - *cmmi*: install configure/make/make install softwares\n\nThe reasons why i have rewrite yet another buildout recipes builder are:\n\n - Support for downloading stuff\n - Support on the fly patchs for eggs and other distribution.\n - Support multiple hooks at each stage of the build system.\n - Robust offline mode\n - support automaticly minitage dependencies and rpath linking.\n\nYou can browse the code on minitage's following resources:\n\n - https://github.com/minitage/minitage.recipe.cmmi\n\nYou can migrate your buldouts without any effort with buildout.minitagificator:\n\n - http://pypi.python.org/pypi/buildout.minitagificator\n\n\n======================================\nMakina Corpus sponsored software\n======================================\n|makinacom|_\n\n* `Planet Makina Corpus `_\n* `Contact us `_\n\n .. |makinacom| image:: http://depot.makina-corpus.org/public/logo.gif\n .. _makinacom: http://www.makina-corpus.com\n\n\n\n\n===============================================\nminitage.recipe.cmmi\n===============================================\n\nAbstract\n-----------------\n\n - The cmmi recipe use abusivly or -rpath to save you from settings LD_LIBRARY_PATH at run time.\n - If you are inside a minitage environment, all the dependencies of your minibuild are put in the environment.\n That mean that CFLAGS, LDFLAGS, PKG_CONFIG_PATH, and so on are updated to reference your minibuild's dependencies.\n - minitage.recipe.cmmi is a replacment fo ``zc.recipe.cmmi``.\n - It intends to do the *configure && make && make install* dance with hooks where you can do (in python) specific stuff at each stage of the build cursus.\n - With this recipe, if the destination directory exists, we only remove it\n when we can sucessfully install something, unless that we never touch to it,\n or it is a bug.\n - LOOK ALSO AT THE *SHARED VARIABLES* AS ALL THE MINITAGE RECIPES SHARE A LOT OF VARIABLES\n\nSpecific options\n-----------------\nPlease look for options at : http://pypi.python.org/pypi/minitage.recipe.common#options-shared-by-all-the-recipes\n \n* make-targets(-UNAME)\n default to all and install, make targets to run\n* inner-dir: change to inner directory before doing anything.\n* prefix: where to install (defaults to options:location)\n Be warn that the content of the destination will be wiped before unless you\n set 'install-in-place'\n* install-in-place: install over a previous installation instead of removing\n the older install replacing it with the new 'makeinstall result'::\n\n install-in-place=True\n\n* build-dir(-UNAME)\n inner directory to execute the build dance [see cmmi recipe for documentation]\n* configure-options(-UNAME)\n Os specific options to give to configure\n uname can be either linux2|freebsd6|freebsd7|darwin|leopard|snowleopard (darwin for both leopard)\n Its the result of sys.platform.lower() [see cmmi recipe for documentation]\n* configure(-UNAME)\n * specific OS configure script to use (darwin, leopard, snowleopard, linux, freebsd, freebsd(6,7,8)\n configure script to use (default to ./configure)\n* prefix-separator [see cmmi recipe for documentation]\n prefix separator to use between --prefix and location (default to =)\n* prefix-option [see cmmi recipe for documentation]\n what to put for the \"prefix\" expression, default to --prefix$PREFIX_SEPARATOR$LOCATION\n* autogen\n autogen script to use if any [optionnal]\n* configure-options(-UNAME)\n options to feed configure with [see cmmi recipe for documentation]\n* configure-options(-UNAME)-replace\n - overide options for a specific OS\n* extra_options\n appendended to configure-options [see cmmi recipe for documentation]\n* mingw \n For windows/cygwin use only\n Set this variable (mingw=true for example) to use mingw compiler\n Default will search for a mingw installation in /minitageprefix/mingw\n* mingw-path\n Alternative path for mingw installation\n* noconfigure(-UNAME)\n do not run ./configure\n* nomake(-UNAME)\n do not run make\n* noinstall(-UNAME)\n do not run make install\n* make-options(-UNAME)\n options to prepent betwenn make and the target (eg MAKE \n* make-install-append-options(-UNAME)\n if set, instead of prepending option before target, we will append them at install time\n* make-install-options(-UNAME)\n options to append after the install targets (eg make install DESDIR=foo)\n* hooks\n\n A hook is in the form /path/to/hook:CALLABLE::\n\n myhook=${buildout:directory}/toto.py:foo\n\n Where we have toto.py::\n\n def foo(options, buildout):\n return 'Hourray'\n\n The complete possible hooks list:\n\n * pre-unpack-hook\n hook executed before the unpack dance\n * post-unpack-hook\n hook executed after the unpack dance\n * post-unpack-hook\n hook executed after the unpack dance\n * pre-configure-hook\n hook executed before the configure is run\n * pre-make-hook\n hook executed before the first make target is run\n * post-build-hook\n hook executed after the build make targets are done\n * pending-make-install\n hook executed after the make and before the make install is done.\n * post-make-hook\n hook executed after the make install is done\n\n\nDetailled documentation\n-------------------------\n\nLet's create a buildout configuration file.\n\n >>> rmdir(tempdir)\n >>> mkdir(tempdir)\n >>> cd(tempdir)\n >>> a = [mkdir(d) for d in ('eggs', 'develop-eggs', 'bin', 'src')]\n >>> install_develop_eggs(['minitage.recipe.cmmi'])\n >>> install_eggs_from_pathes(['zc.buildout'], sys.path)\n >>> touch('buildout.cfg')\n >>> sh('buildout -o bootstrap')\n buildout -o bootstrap...\n\nThis first buildout is classical, trying to build some url.\n\n >>> touch('buildout.cfg',\n ... data=\"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... \"\"\")\n >>> sh('bin/buildout install part')\n bin/buildout install part...\n \n While:\n Installing part.\n \n A...\n MinimergeError: URL was not set!\n \n\nOups, we forgot the url, we will make a basic distribution package to test our stuff\nRunning the buildout with the url bit.\n\n >>> if not os.path.exists('foo'):\n ... mkdir('foo')\n ... else:\n ... rmdir(foo)\n ... mkdir('foo')\n >>> touch('foo/configure', data =\"\"\"echo configure $@\\n\"\"\")\n >>> sh('chmod +x foo/configure')\n c...\n >>> touch('foo/Makefile',\n ... data = \"\"\"\n ... all:\n ... \\t@echo all\n ...\n ... install:\n ... \\t@echo install\n ...\n ... \"\"\")\n >>> sh('tar cfz foo.tgz foo')\n tar cfz ...\n \n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part...\n Installing part.\n minitage.recipe: Download archive\n minitage.recipe: Downloading file:///tmp/buildout.test/foo.tgz in /tmp/buildout.test/minitage/foo.tgz\n minitage.recipe: Unpacking in /tmp/buildout.test/__minitage__part__tmp.\n minitage.recipe: Guessing compilation directory\n minitage.recipe: Setting path\n minitage.recipe: Setting pkgconfigpath\n minitage.recipe: Setting compilation flags\n minitage.recipe: Setting path\n minitage.recipe: Running /tmp/buildout.test/__minitage__part__tmp/foo/configure --prefix=/tmp/buildout.test/parts/part\n configure --prefix=/tmp/buildout.test/parts/part\n minitage.recipe: Running make\n all\n minitage.recipe: Running make install\n install\n minitage.recipe: Completed install...\n\nGeneral usage\n++++++++++++++++++++++\nThis first buildout does nothing except print us the hooks calls. We have desactivated the configure and make dance!.\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... noconfigure=true\n ... noinstall = true\n ... nomake = true\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part...\n Installing part.\n minitage.recipe: Download archive\n minitage.recipe: Unpacking in /tmp/buildout.test/__minitage__part__tmp.\n minitage.recipe: Guessing compilation directory\n minitage.recipe: Setting path\n minitage.recipe: Setting pkgconfigpath\n minitage.recipe: Setting compilation flags\n minitage.recipe: Setting path\n minitage.recipe: Completed install...\n\nApplying patches\n++++++++++++++++++++\nThis second one aimes to show us the patch capababilities.\n\n >>> sh('cp foo/Makefile foo/Makefile.old')\n cp foo/Makefile foo/Makefile.old\n >>> sh('echo >> foo/Makefile')\n echo >> foo/Makefile\n >>> sh('diff -u foo/Makefile.old foo/Makefile > patch')\n diff -u foo/Makefile.old foo/Makefile > patch\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... patches = ${buildout:directory}/patch\n ... noconfigure=true\n ... noinstall = true\n ... nomake = true\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part...\n minitage.recipe: Running patch -t -Np0 < /tmp/buildout.test/minitage/patch_d96115b00b41e282469f73708c68bdaf/patch\n can't find file to patch at input line 3\n Perhaps you used the wrong -p or --strip option?\n The text leading up to this was:\n --------------------------\n |--- foo/Makefile.old ...\n |+++ foo/Makefile ...\n --------------------------\n No file to patch. Skipping patch.\n 1 out of 1 hunk ignored\n \n While:\n Installing part.\n \n An internal error occured due to a bug in either zc.buildout or in a...\n SystemError: ('Failed', 'patch -t -Np0 < /tmp/buildout.test/minitage/patch_d96115b00b41e282469f73708c68bdaf/patch')\n \n\n\nThe patch level is wrong !\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... patches = ${buildout:directory}/patch\n ... patch-options = -p1\n ... noconfigure=true\n ... noinstall = true\n ... nomake = true\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part...\n minitage.recipe: Running patch -t -p1 < /tmp/buildout.test/minitage/patch...\n patching file Makefile\n minitage.recipe: Completed install...\n\n\nUsing hooks\n++++++++++++++\nBut now that we have some sort of messy packages, can we not intercale some python to code to arrange things upside down ?\nWe have hooks to achieve that. A hook is a python callable which takes at least the options part and the buildout.\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... pre-unpack-hook = ${buildout:directory}/hooks.py:pre_unpack_hook\n ... post-unpack-hook = ${buildout:directory}/hooks.py:post_unpack_hook\n ... pre-configure-hook = ${buildout:directory}/hooks.py:pre_configure_hook\n ... pre-make-hook = ${buildout:directory}/hooks.py:pre_make_hook\n ... post-build-hook = ${buildout:directory}/hooks.py:post_build_hook\n ... post-make-hook = ${buildout:directory}/hooks.py:post_make_hook\n ... \"\"\"\n >>> touch('hooks.py', data=\"\"\"\n ... def pre_unpack_hook (o, b, hook='pre_unpack_hook'):\n ... print \"%s in %s target %s\" % (hook, b['buildout']['directory'], o['location'])\n ... def post_unpack_hook (o, b, hook='post_unpack_hook'):\n ... print \"%s in %s target %s\" % (hook, b['buildout']['directory'], o['location'])\n ... def pre_configure_hook (o, b, hook='pre_configure_hook'):\n ... print \"%s in %s target %s\" % (hook, b['buildout']['directory'], o['location'])\n ... def pre_make_hook (o, b, hook='pre_make_hook'):\n ... print \"%s in %s target %s\" % (hook, b['buildout']['directory'], o['location'])\n ... def post_build_hook (o, b, hook='post_build_hook'):\n ... print \"%s in %s target %s\" % (hook, b['buildout']['directory'], o['location'])\n ... def post_make_hook (o, b, hook='post_make_hook'):\n ... print \"%s in %s target %s\" % (hook, b['buildout']['directory'], o['location'])\n ... \"\"\")\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n ... bin/buildout -o install part...\n bin/buildout -o install part...\n minitage.recipe: Download archive\n minitage.recipe: Executing pre-unpack-hook\n pre_unpack_hook in /tmp/buildout.test target /tmp/buildout.test/parts/part...\n minitage.recipe: Setting path\n minitage.recipe: Executing post-unpack-hook\n post_unpack_hook in /tmp/buildout.test target /tmp/buildout.test/parts/part\n minitage.recipe: Executing pre-configure-hook\n pre_configure_hook in /tmp/buildout.test target /tmp/buildout.test/parts/part\n minitage.recipe: Running /tmp/buildout.test/__minitage__part__tmp/foo/configure --prefix=/tmp/buildout.test/parts/part\n configure --prefix=/tmp/buildout.test/parts/part\n minitage.recipe: Executing pre-make-hook\n pre_make_hook in /tmp/buildout.test target /tmp/buildout.test/parts/part\n minitage.recipe: Running make\n all\n minitage.recipe: Executing post-build-hook\n post_build_hook in /tmp/buildout.test target /tmp/buildout.test/parts/part\n minitage.recipe: Running make install\n install\n minitage.recipe: Executing post-make-hook\n post_make_hook in /tmp/buildout.test target /tmp/buildout.test/parts/part\n minitage.recipe: Completed install...\n\n\nMD5 check\n+++++++++++++\nCan we check md5, of course!\nAs we have already the foo package in our download cache, we try to download something else.\n\n >>> shutil.copy2('foo.tgz', 'bar.tgz')\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... md5sum = b4d\n ... url = file://${buildout:directory}/bar.tgz\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part\n Uninstalling part.\n Unused options for buildout: 'download-directory'.\n Installing part.\n minitage.recipe: Download archive\n minitage.recipe: Downloading file:///tmp/buildout.test/bar.tgz in /tmp/buildout.test/minitage/bar.tgz\n \n While:\n Installing part.\n \n A...\n MinimergeError: Failed download for file:///tmp/buildout.test/bar.tgz: MD5SUM mismatch for /tmp/buildout.test/minitage/bar.tgz: Good:b4d != Bad:...\n \n\nControlling configure\n++++++++++++++++++++++++++++++\nGiving configure options the two possible ways.\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/bar.tgz\n ... configure-options = foo\n ... extra_options = bar\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part...\n minitage.recipe: Running /tmp/buildout.test/__minitage__part__tmp/foo/configure --prefix=/tmp/buildout.test/parts/part foo bar\n configure --prefix=/tmp/buildout.test/parts/part foo bar ...\n\nUse OS Specific rules\n+++++++++++++++++++++++++\nGiving os specific rules.\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... configure-options-linux = linuxoptions\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n b...\n minitage.recipe: Running /tmp/buildout.test/__minitage__part__tmp/foo/configure --prefix=/tmp/buildout.test/parts/part linuxoptions...\n\nOr, in the same manner, you can specify OS specific patches: (darwin, linux, freebsd6, freebsd7). sys.platform is your friend :) ('linux', for all linuxes).\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... patch-options = -p1\n ... url = file://${buildout:directory}/foo.tgz\n ... \"\"\"\n >>> data += '%s-patches =${buildout:directory}/patch' % uname\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n b...\n minitage.recipe: Running patch -t -p1 < /tmp/buildout.test/minitage/patch...\n\n\nUsing underlying minitage environment\n++++++++++++++++++++++++++++++++++++++++++++\nIf you are in a minitage, all your minibuild dependencies come automaticly in the env, no need to do the following code :)\nAs you can have CFLAGS and so on added to your env., you can specify manual things too, the underlying code is the same.\nThe goal is to proove that all is preprended as we would have think.\nWe will use some hook to print the relevant parts.\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... pre-make-hook = ${buildout:directory}/hooks.py:pre_unpack_hook\n ... includes-dirs = /foo/include\n ... rpath = /someruntimespath/lib\n ... library-dirs = /bar/lib\n ... pkgconfigpath = /lib/pkgconfig/\n ... noconfigure = true\n ... nomake = true\n ... noinstall = true\n ... \"\"\"\n >>> touch('hooks.py', data=\"\"\"\n ... import os\n ... def pre_unpack_hook(o, b):\n ... flags = [(a, os.environ.get(a, 'not_set')) for a in ('CFLAGS', 'LDFLAGS', 'PKG_CONFIG_PATH', 'LD_RUN_PATH',)]\n ... for flag in flags:\n ... print flag\n ... \"\"\")\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n b...\n minitage.recipe: Executing pre-make-hook\n ('CFLAGS', '-I/foo/include')\n ('LDFLAGS', '-L/bar/lib -Wl,-rpath -Wl,/bar/lib -L/tmp/buildout.test/parts/part/lib -Wl,-rpath -Wl,/tmp/buildout.test/parts/part/lib')\n ('PKG_CONFIG_PATH', '/lib/pkgconfig/...')\n ('LD_RUN_PATH', '/someruntimespath/lib:/tmp/buildout.test/parts/part/lib')...\n\n\nPlaying with the environment\n++++++++++++++++++++++++++++++++\nYou can play also with the environment directly in two ways.\n\n * Precising a buildout part\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [foo]\n ... CFLAGS=bar\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... pre-make-hook = ${buildout:directory}/hooks.py:pre_unpack_hook\n ... environment = foo\n ... noconfigure = true\n ... nomake = true\n ... noinstall = true\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bi...\n ('CFLAGS', 'bar')...\n\n * Entering an option formed by key=value pair\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... pre-make-hook = ${buildout:directory}/hooks.py:pre_unpack_hook\n ... noconfigure = true\n ... nomake = true\n ... noinstall = true\n ... environment=\n ... CFLAGS=myvalue\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part...\n minitage.recipe: Executing pre-make-hook\n ('CFLAGS', 'myvalue')...\n\nAutogen can be your friend\n+++++++++++++++++++++++++++++\nIt is possible to autogenerate the configure files.\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... noconfigure = true\n ... nomake = true\n ... noinstall = true\n ... autogen = configure\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part...\n minitage.recipe: Auto generating configure files\n minitage.recipe: Running /tmp/buildout.test/__minitage__part__tmp/foo/configure\n configure...\n\nshared builds\n++++++++++++++++++++\nHandling shared mode as a backward compatibility with zc.recipe.cmmi.\n\n >>> data = \"\"\"\n ... [buildout]\n ... download-cache=${buildout:directory}\n ... parts =\n ... part\n ... [part]\n ... recipe=minitage.recipe.cmmi\n ... url = file://${buildout:directory}/foo.tgz\n ... shared = true\n ... \"\"\"\n >>> touch('buildout.cfg', data=data)\n >>> sh('bin/buildout -o install part')\n bin/buildout -o install part...\n minitage.recipe: Running /tmp/buildout.test/__minitage__part__tmp/foo/configure --prefix=/tmp/buildout.test/minitage/cmmi/...\n\n\n=======================\nCHANGELOG\n=======================\n\n\n1.58 (2013-06-02)\n-----------------\n\n- gmake can be make on OSX\n\n\n1.57 (2013-02-25)\n-----------------\n\n- bugfix: create tmp dir \n\n\n1.56 (2012-12-19)\n-----------------\n\n- fix doc, again\n\n1.55 (2012-12-19)\n-----------------\n\n- fix doc\n\n\n1.54 (2012-05-09)\n-----------------\n\n- use cache subdirs for download files\n\n\n1.53 (2011-03-09)\n-----------------\n- conditionnaly remove la files\n\n\n1.52 (2011-03-09)\n-----------------\n\n- add a 'make-install-append-options' to add after make install targets the 'make-options' buildout option.\n- add a 'make-install-options' to add after make install targets\n- add a debug stop flag\n- add env file generation for debug\n- add per os options\n- fix develop link\n- win32 fix\n- Remove la files if present\n\n1.37\n---------\n\n- API FIX\n\n-> 1.36\n--------\n\n- splitted out from minitage.recipe", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://cheeseshop.python.org/pypi/minitage.recipe.cmmi", "keywords": "development buildout recipe", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "minitage.recipe.cmmi", "package_url": "https://pypi.org/project/minitage.recipe.cmmi/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/minitage.recipe.cmmi/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://cheeseshop.python.org/pypi/minitage.recipe.cmmi" }, "release_url": "https://pypi.org/project/minitage.recipe.cmmi/1.58/", "requires_dist": null, "requires_python": null, "summary": "zc.buildout recipes to compile and install software or python packages and generate scripts or configuration files sponsored by Makina Corpus.", "version": "1.58" }, "last_serial": 794814, "releases": { "1.35": [ { "comment_text": "", "digests": { "md5": "b4c4d67fb4832955db2d5b4cbcac2f2f", "sha256": "96ca04cd6153f113bdcdc5d72f3a73168e5512af4954a0b050af3994f29589a2" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.35.zip", "has_sig": false, "md5_digest": "b4c4d67fb4832955db2d5b4cbcac2f2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37286, "upload_time": "2009-08-18T19:06:21", "url": "https://files.pythonhosted.org/packages/c0/73/b2c483fbaa9540ebf6e6aab38cd9d866b88d9ccb36fb872c427c5a9b13d3/minitage.recipe.cmmi-1.35.zip" } ], "1.36": [ { "comment_text": "", "digests": { "md5": "59139676ff9b1df45a24a39d96d161ab", "sha256": "58113f181a0b6c1922cc4040d242d6cc1595080a319579bca55049b7f9f13651" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.36.zip", "has_sig": false, "md5_digest": "59139676ff9b1df45a24a39d96d161ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37503, "upload_time": "2009-08-18T19:16:56", "url": "https://files.pythonhosted.org/packages/76/da/63cad2bf1064ecd3ebc8f0bdac319a24b65103116f6ce60e4c312238e531/minitage.recipe.cmmi-1.36.zip" } ], "1.37": [ { "comment_text": "", "digests": { "md5": "7825139aed29063afdd8398044944c30", "sha256": "c87cfcc2b9969303bda4b5002c95340c40e41d8adc01d016b451fce815d25293" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.37.zip", "has_sig": false, "md5_digest": "7825139aed29063afdd8398044944c30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30687, "upload_time": "2009-08-18T19:36:14", "url": "https://files.pythonhosted.org/packages/1e/d7/484d4626b3a2f94931036ca33737f0cedcf7643b59216ddd364d9382c28b/minitage.recipe.cmmi-1.37.zip" } ], "1.38": [ { "comment_text": "", "digests": { "md5": "470afba64c0cdc5ba6f1bed96058cd32", "sha256": "078338657c4ad75e50fa0e31bc1eb6598ba0fe873aa7433c9da9772fb5de6072" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.38.zip", "has_sig": false, "md5_digest": "470afba64c0cdc5ba6f1bed96058cd32", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30742, "upload_time": "2009-08-19T21:56:48", "url": "https://files.pythonhosted.org/packages/27/7b/0c994897da5614df02b01bc5b547111bdc318674fa6b7577cc1a65a45930/minitage.recipe.cmmi-1.38.zip" } ], "1.39": [ { "comment_text": "", "digests": { "md5": "5f11574fe823be546758c5e2e3a54009", "sha256": "1cd462462a08534264dbb4da96f469446c0d4c45a5848893322891ffbd3ee684" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.39.zip", "has_sig": false, "md5_digest": "5f11574fe823be546758c5e2e3a54009", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30722, "upload_time": "2009-08-19T22:23:32", "url": "https://files.pythonhosted.org/packages/03/39/65c89270d8869d297929e68af7b6a6c39ec30ef50142c55d239c0a30d353/minitage.recipe.cmmi-1.39.zip" } ], "1.41": [ { "comment_text": "", "digests": { "md5": "47243c4ef69ffb19f4c38310172d5347", "sha256": "edb54f972571e1de668df7cb563f8e1721b871d308423f45f31578038b0da9d5" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.41.zip", "has_sig": false, "md5_digest": "47243c4ef69ffb19f4c38310172d5347", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32768, "upload_time": "2009-10-03T03:20:39", "url": "https://files.pythonhosted.org/packages/58/3c/842180d874244707b8b70ebc6c18a6ba4782a9220a5f720ff95055909183/minitage.recipe.cmmi-1.41.zip" } ], "1.42": [ { "comment_text": "", "digests": { "md5": "746b03e0ed6c815d0008e4f57a25bc0e", "sha256": "39d275f17146cb611efebd9c26ed343a042631938a45257bebfe162c48cc8993" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.42.zip", "has_sig": false, "md5_digest": "746b03e0ed6c815d0008e4f57a25bc0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32808, "upload_time": "2009-11-19T12:44:13", "url": "https://files.pythonhosted.org/packages/c0/06/6da6e655e147c4d48b58efee152ca48ece80e7bf07d1ac7d7f843bf08b6c/minitage.recipe.cmmi-1.42.zip" } ], "1.43": [ { "comment_text": "", "digests": { "md5": "89f8d1ad2fc5b05be251cb787acd7c09", "sha256": "8919beb17dffd394bf7b0dcbc4836ae939d17f6175d8a52572121be78b09f0e4" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.43.zip", "has_sig": false, "md5_digest": "89f8d1ad2fc5b05be251cb787acd7c09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32800, "upload_time": "2009-11-20T09:23:09", "url": "https://files.pythonhosted.org/packages/6f/97/20c1d9522dac29eaee0c0fd4618a56b344bb9e9295ef7ef5f138ed6d2cdf/minitage.recipe.cmmi-1.43.zip" } ], "1.44": [ { "comment_text": "", "digests": { "md5": "a7a39db93a134e8cc5130c039e146bda", "sha256": "2590293bc276fcd358bc60abf8f92fb9aa14b0aaf7e2d960392b2a32a40ac33b" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.44.zip", "has_sig": false, "md5_digest": "a7a39db93a134e8cc5130c039e146bda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32967, "upload_time": "2009-11-24T15:29:35", "url": "https://files.pythonhosted.org/packages/50/5a/cd6ed3d21363d61bc715cf7a56341887506db2410daa36ee99796396e92a/minitage.recipe.cmmi-1.44.zip" } ], "1.45": [ { "comment_text": "", "digests": { "md5": "32371e74defc0d9c8b7181c8c98d3439", "sha256": "8e732ee866268e6c30bf5d22bf7eeb2023401d2d4cc0a723bef0cfe8e617a414" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.45.zip", "has_sig": false, "md5_digest": "32371e74defc0d9c8b7181c8c98d3439", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33426, "upload_time": "2009-11-29T15:29:32", "url": "https://files.pythonhosted.org/packages/fa/0f/fd22aaf9dc0e79bf56759818bf8d7d1aace4a65b46444fbcedd11a46e401/minitage.recipe.cmmi-1.45.zip" } ], "1.46": [ { "comment_text": "", "digests": { "md5": "d7d1f657962f8d0a9de7f44139bc1b2a", "sha256": "ba977e8002ae319e077249f6fc7e628834ce529d2e294db45347e871fc9bdcad" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.46.zip", "has_sig": false, "md5_digest": "d7d1f657962f8d0a9de7f44139bc1b2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33560, "upload_time": "2009-11-30T11:29:52", "url": "https://files.pythonhosted.org/packages/89/da/ca335cf4c6dc5b73d234913e237b69118eff01a7aa00b521d8e79fa023bc/minitage.recipe.cmmi-1.46.zip" } ], "1.47": [ { "comment_text": "", "digests": { "md5": "ec9c29630cf32715eedde0d695b41b55", "sha256": "10e82fd7ea29e54d15e796436bc608bf85161ad5270c3873b30bca8799ab7d5e" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.47.zip", "has_sig": false, "md5_digest": "ec9c29630cf32715eedde0d695b41b55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33606, "upload_time": "2009-12-06T21:24:09", "url": "https://files.pythonhosted.org/packages/d1/a1/0ee1cd087aed3dcdd7503cb511a6a14e6fa28c33b0a2bb5019c689fdfd00/minitage.recipe.cmmi-1.47.zip" } ], "1.48": [ { "comment_text": "", "digests": { "md5": "cafa981d986e150b700ba00d73601a31", "sha256": "0f77d9b584536339b7fff871f7c3eb4531d70ef39eee15028fb970570514f9a0" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.48.zip", "has_sig": false, "md5_digest": "cafa981d986e150b700ba00d73601a31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33616, "upload_time": "2010-02-09T15:06:37", "url": "https://files.pythonhosted.org/packages/89/42/15c1a40366f3477e4a2d9b7372bfec181f115d23c6906eceab5b00b3e138/minitage.recipe.cmmi-1.48.zip" } ], "1.49": [ { "comment_text": "", "digests": { "md5": "5f03112049b12e2a178e08dd778c47b5", "sha256": "2e19578b3dc33ba5743f4a29d685a069d806be69d30e37c7c176da238f718a66" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.49.zip", "has_sig": false, "md5_digest": "5f03112049b12e2a178e08dd778c47b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34618, "upload_time": "2010-10-08T12:35:49", "url": "https://files.pythonhosted.org/packages/38/eb/aaa97eebf28e47fee700ac638d3d5b5e58c26e7f5f2b11ece99749944f96/minitage.recipe.cmmi-1.49.zip" } ], "1.50": [ { "comment_text": "", "digests": { "md5": "2679bf95a159edfe1e8d4a9c456fdd5a", "sha256": "cdd2f96542a3a206f20fbe2a5bdfdf33c6059eb160c24fc89aa4cbea0196d565" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.50.zip", "has_sig": false, "md5_digest": "2679bf95a159edfe1e8d4a9c456fdd5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34856, "upload_time": "2010-10-08T14:44:54", "url": "https://files.pythonhosted.org/packages/d1/12/04d83a960fc79b23658c52303bdb48d6a8288fa3eee485972e69605fb810/minitage.recipe.cmmi-1.50.zip" } ], "1.51": [ { "comment_text": "", "digests": { "md5": "7492ac0965f2e22fcd69854693eb3f05", "sha256": "068a92f88836fd9e5218a647d15b1b6d293612b4778f60136aa5bbd6fc22d62f" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.51.tar.gz", "has_sig": false, "md5_digest": "7492ac0965f2e22fcd69854693eb3f05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26676, "upload_time": "2011-03-09T14:23:24", "url": "https://files.pythonhosted.org/packages/03/a4/a37d82b09b1c69ced9429afc687754dbe287d7e861f3a0f05d4a9760ee41/minitage.recipe.cmmi-1.51.tar.gz" }, { "comment_text": "", "digests": { "md5": "88a5622a341cd49efdcde9fca189b6e6", "sha256": "4f61ba30ddd4dc2df6c94a1ca22d07b3e6296e829982b87d8b158bae5773e405" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.51.zip", "has_sig": false, "md5_digest": "88a5622a341cd49efdcde9fca189b6e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34910, "upload_time": "2010-10-08T15:15:47", "url": "https://files.pythonhosted.org/packages/2e/88/190c548e7f2606ad7d83c852f4b083352ced58f7ff062376e23e45c3c01d/minitage.recipe.cmmi-1.51.zip" } ], "1.53": [ { "comment_text": "", "digests": { "md5": "bf02e2ffeb060182cf4f88484930f0eb", "sha256": "91728c9862794c3376f4d5d47715c786d4a13b5cdcc848cabc71fc144bd36b65" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.53.tar.gz", "has_sig": false, "md5_digest": "bf02e2ffeb060182cf4f88484930f0eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27076, "upload_time": "2011-03-09T15:31:03", "url": "https://files.pythonhosted.org/packages/49/5c/602b6752dbb4a48164cae56d3318a871eacbedc6b0924bc4040065da4f7c/minitage.recipe.cmmi-1.53.tar.gz" } ], "1.54": [ { "comment_text": "", "digests": { "md5": "75be55ba864872a669b87e165e56d67f", "sha256": "ad018559706b328bbd1e6784a456164c951ae3a5198124dba02596507c44b367" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.54.zip", "has_sig": false, "md5_digest": "75be55ba864872a669b87e165e56d67f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35381, "upload_time": "2012-05-09T21:00:37", "url": "https://files.pythonhosted.org/packages/81/6d/1db5d94e385fa4bfb08b7576fc0413b87fee88a7864ab86f6a4e3c17c771/minitage.recipe.cmmi-1.54.zip" } ], "1.55": [ { "comment_text": "", "digests": { "md5": "ecae664abbd034b9fce98236c79df720", "sha256": "f5949d5c3b8b3de3e43400d9f82fff457bde039c6f2a044863cc031a827f5e76" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.55.zip", "has_sig": false, "md5_digest": "ecae664abbd034b9fce98236c79df720", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32386, "upload_time": "2012-12-19T15:58:38", "url": "https://files.pythonhosted.org/packages/f0/c7/82ba957c4c171e4f3cfc21f397aa720683fe9bd0bbaac77a0add45ef2656/minitage.recipe.cmmi-1.55.zip" } ], "1.56": [ { "comment_text": "", "digests": { "md5": "174eed9e92211c20d3460a9e2d903982", "sha256": "fd8f83536f658df4130f9c661bca605fcbb4728abbb594e24c38a1983a65ae93" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.56.zip", "has_sig": false, "md5_digest": "174eed9e92211c20d3460a9e2d903982", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32372, "upload_time": "2012-12-19T16:03:32", "url": "https://files.pythonhosted.org/packages/22/8b/4b9822506c0c2fa9bd2eae5bd1b91d9533e00c4afc9994458d97f3a578a1/minitage.recipe.cmmi-1.56.zip" } ], "1.57": [ { "comment_text": "", "digests": { "md5": "cd6b40e2715006cc6f18a7760a3c27a1", "sha256": "21e1255546cd0879def38dd2737eac39890fce306b0058e9269022a50101e69b" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.57.zip", "has_sig": false, "md5_digest": "cd6b40e2715006cc6f18a7760a3c27a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32466, "upload_time": "2013-02-24T23:03:35", "url": "https://files.pythonhosted.org/packages/40/a9/69596a57236bf3b1279f9bf7b6e45d600085c9c7fca12fe6f4899244842f/minitage.recipe.cmmi-1.57.zip" } ], "1.58": [ { "comment_text": "", "digests": { "md5": "fcd552ef0a5e79c913cc9c443c1e64bb", "sha256": "217f3272476cf4fc01839753d1997e039ccc160f5957d345c0d303df4c3e2816" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.58.zip", "has_sig": false, "md5_digest": "fcd552ef0a5e79c913cc9c443c1e64bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32798, "upload_time": "2013-06-02T00:09:37", "url": "https://files.pythonhosted.org/packages/c3/0d/64769077b030262b1bb22fcafe76a1f874b9f604f3053d00bfac8587ec32/minitage.recipe.cmmi-1.58.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fcd552ef0a5e79c913cc9c443c1e64bb", "sha256": "217f3272476cf4fc01839753d1997e039ccc160f5957d345c0d303df4c3e2816" }, "downloads": -1, "filename": "minitage.recipe.cmmi-1.58.zip", "has_sig": false, "md5_digest": "fcd552ef0a5e79c913cc9c443c1e64bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32798, "upload_time": "2013-06-02T00:09:37", "url": "https://files.pythonhosted.org/packages/c3/0d/64769077b030262b1bb22fcafe76a1f874b9f604f3053d00bfac8587ec32/minitage.recipe.cmmi-1.58.zip" } ] }