minitage.recipe.fetch 1.43
zc.buildout recipes to compile and install software or python packages and generate scripts or configuration files sponsored by Makina Corpus.
License: BSD
Keywords: development buildout recipe

******************************************************************************
Recipe for compiling and installing software with or without minitage
******************************************************************************

.. contents::

=======================
Introduction
=======================


The egg has those entry point:

    - *fetch*:
      recipe for fetching something, somewhere, with git, http, frp, static, hg, svn or bzr.

You can browse the code on minitage's following resources:

    - http://git.minitage.org/git/minitage/eggs/minitage.recipe.fetch/
    - http://www.minitage.org/trac/browser/minitage/eggs/minitage.recipe.fetch

You can migrate your buldouts without any effort with buildout.minitagificator:

    * http://pypi.python.org/pypi/buildout.minitagificator

======================================
Makina Corpus sponsored software
======================================
|makinacom|_

* `Planet Makina Corpus <http://www.makina-corpus.org>`_
* `Contact us <mailto:python@makina-corpus.org>`_

  .. |makinacom| image:: http://depot.makina-corpus.org/public/logo.gif
  .. _makinacom:  http://www.makina-corpus.com





===============================================
minitage.recipe.fetch
===============================================


Abstract
-----------------
    - This recipe can be used to fetch something from somewhere to some location of your local fileystem
      This something can be either an url or a set of urls.
    - Thus by:

        * git
        * svn
        * ftp, http, file:// (urllib)
        * bazaar
        * mercurial

Specific options
-----------------
Please look for options at : http://pypi.python.org/pypi/minitage.recipe.common#options-shared-by-all-the-recipes

* urls
  See the shared options for more information on how to set them.
* For the static fetcher, you can precise md5sum in the 'revision' field.
* set unpack to automaticly unpack a downloaded archive, like::

    [foo]
    unpack=True

Detailled documentation
-------------------------
The divide url function test::

    - If you dont precise the directory, its the basename of the url::

        >>> divide_url ('http://foo/bar|svn|666||--ignore-externals')
        ('http://foo/bar', 'svn', '666', 'http.foo.bar', '--ignore-externals')

    - Static as a default::

        >>> divide_url ('')
        ('', 'static', '', '', '')

    - arguements can be optionnal::

        >>> divide_url ('http://foo/bar')
        ('http://foo/bar', 'static', '', 'http.foo.bar', '')


Let's create a buildout configuration file::

    >>> rmdir(tempdir)
    >>> mkdir(tempdir)
    >>> cd(tempdir)
    >>> a = [mkdir(d) for d in ('eggs', 'develop-eggs', 'bin', 'src')]
    >>> install_develop_eggs(['minitage.recipe.fetch'])
    >>> install_eggs_from_pathes(['zc.buildout'], sys.path)
    >>> touch('buildout.cfg')
    >>> sh('buildout -o bootstrap')
    buildout -o bootstrap...


Initializing test env.

    >>> if not os.path.exists('foo'):
    ...     mkdir('foo')
    ... else:
    ...     rmdir(foo)
    ...     mkdir('foo')
    >>> touch('foo/configure', data ="""echo configure $@\n""")
    >>> sh('chmod +x foo/configure')
    c...
    >>> touch('foo/Makefile',
    ... data = """
    ... all:
    ... \t@echo all
    ...
    ... install:
    ... \t@echo install
    ...
    ... """)
    >>> sh('tar cfz  foo.tgz foo')
    tar cfz  ...
    <BLANKLINE>


Downloading some urls, files, git checkouts with one in a particular checkout directory and a particular revision::

    >>> data = """
    ... [buildout]
    ... download-cache=${buildout:directory}
    ... parts =
    ...     part
    ... [part]
    ... recipe=minitage.recipe.fetch
    ... urls =file://${buildout:directory}/foo.tgz
    ...        http://git.minitage.org/git/minitage/eggs/minitage.core|git
    ...        http://git.minitage.org/git/minitage/eggs/minitage.recipe|git|e1f30b9d7a89572fa87fe26f8e353304532a281c|minitage.recipe.alt
    ... """
    >>> touch('buildout.cfg', data=data)
    >>> sh('bin/buildout install part')
    bin/buildout install part
    Unused options for buildout: 'download-directory'.
    Installing part.
    minitage.recipe: Start checkouts
    minitage.recipe: Completed dowbload of file:///tmp/buildout.test/foo.tgz in /tmp/buildout.test/parts/part/
    minitage.fetchers.scm: Checkouted /tmp/buildout.test/parts/part/minitage.recipe.alt / http://git.minitage.org/git/minitage/eggs/minitage.recipe (e1f30b9d7a89572fa87fe26f8e353304532a281c) [git].
    minitage.recipe: Completed dowbload of http://git.minitage.org/git/minitage/eggs/minitage.recipe in /tmp/buildout.test/parts/part/minitage.recipe.alt
    minitage.fetchers.scm: Checkouted /tmp/buildout.test/parts/part/http.git.minitage.org.git.minitage.eggs.minitage.core / http://git.minitage.org/git/minitage/eggs/minitage.core (HEAD) [git].
    minitage.recipe: Completed dowbload of http://git.minitage.org/git/minitage/eggs/minitage.core in /tmp/buildout.test/parts/part/http.git.minitage.org.git.minitage.eggs.minitage.core
    minitage.recipe: Finnished checkouts
    <BLANKLINE>
    <BLANKLINE>



=======================
CHANGELOG
=======================

UP
-----

    - fix bug on static fetching, (one upon another, content is removed)
    - fix invalid crossdevice link errors

1.38
------

    - fix develop link

1.37
-----

    - fix api

1.36
-------

    - forgot to version one file

1.35
------

    - splitted out from minitage.recipe