<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="" type="text/css"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:dcterms="http://purl.org/dc/terms/"
         xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
         xmlns:rss="http://purl.org/rss/1.0/"
         xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <rss:channel rdf:about="http://www.cryptelium.net/blog">

        <rss:title>kiorky's blog</rss:title>
        <rss:link>http://www.cryptelium.net/blog</rss:link>

        <rss:description>kiorky's blog</rss:description>
        

        <rss:image rdf:resource="http://www.cryptelium.net/logo.png"/>

        <sy:updatePeriod>daily</sy:updatePeriod>
        <sy:updateFrequency>1</sy:updateFrequency>

        <rss:items>
            <rdf:Seq>
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2010/03/07/minitage.recipe.egg-another-fancy-error-log-about-distributions-requirers"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2010/02/28/minitage-python-and-ucs"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2010/02/27/minitage-ohloh-gives-us-minitage.ohloh"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2010/02/26/python-and-oldies-or-valueerror-year-1876-is-before-1900-the-datetime-strftime-methods-require-year-1900"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2010/02/21/little-minitage.core-improvments"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2010/02/21/snowleopard-revival"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2010/02/21/webservers-flooding-minitage"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2010/02/21/hudson-deployment-made-easy"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/08/13/annoucing-minitage.paste.extras"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/08/11/kill-profils-and-welcome-to-instances"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/08/09/freebsd-revival"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/08/09/new-profils-available-some-improved"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/06/30/stuff-on-bsd"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/06/24/make-mapscript-easy_installable"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/05/24/setting-up-a-buildbot-for-minitage"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/05/10/macosx-revival"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/05/06/minitage-runs-on-linux-64-bits"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/05/05/gentoo-rocks"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/05/03/up-to-plone-3.2.2"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/04/30/zc.testbrowser-recent-works-and-thoughts"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/04/30/dj.paste"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/04/30/minitage-1.0-is-out"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/04/05/freebsd-7.1-and-udma-on-crappy-hard-drive"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/26/minitage-and-branding"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/26/minitage-now-fetchs-over-http-by-default"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/24/aurevoir-caramelle"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/24/reportlab-2.3-and-buildout-or-easy-install-failed"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/17/new-packages-in-minitage"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/17/collective.anonymousbrowser-future"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/17/smplayer-3"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/17/zope3-and-plone32-pasters"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/17/minitage.recipes-rewrite"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/17/buildout.minitagificator"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2009/03/09/minitage-next-works"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2008/10/21/pylons-xmlrpc-and-doctest"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2008/09/26/minitage-and-profils"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2008/08/05/back-in-loggerhead-adventures"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2008/08/04/minitage-week-end-work"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2008/08/03/loggerhead-and-auto-publishing"/>
                
                
                <rdf:li rdf:resource="http://www.cryptelium.net/blog/2008/08/03/blog-opening"/>
                
            </rdf:Seq>
        </rss:items>
    </rss:channel>

    <rss:image rdf:about="http://www.cryptelium.net/logo.png">
        <rss:title>kiorky's blog</rss:title>
        <rss:link>http://www.cryptelium.net/blog</rss:link>
        <rss:url>http://www.cryptelium.net/logo.png</rss:url>
    </rss:image>

    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2010/03/07/minitage.recipe.egg-another-fancy-error-log-about-distributions-requirers">

        <rss:title>minitage.recipe.egg, another fancy error log about distributions requirers</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2010/03/07/minitage.recipe.egg-another-fancy-error-log-about-distributions-requirers</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>When having trouble while installing an egg during the installation phase(easy_install time)</p>
<p>Now the recipe can display some information about which wanted this distribution.</p>
<p>This is even more useful that it support up to 6 dependencies levels from direct to parents !</p>
<p>Here is an example:</p>
<p>&nbsp;</p>
<pre>Processing ssl-for-setuptools-1.10.tar.gz
Unpacking ssl-for-setuptools-1.10 to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10
Unpacking ssl-for-setuptools-1.10/PKG-INFO to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/PKG-INFO
Unpacking ssl-for-setuptools-1.10/setup.py to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/setup.py
Unpacking ssl-for-setuptools-1.10/ssl to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/ssl
Unpacking ssl-for-setuptools-1.10/ssl/2.3.6 to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/ssl/2.3.6
Unpacking ssl-for-setuptools-1.10/ssl/2.3.6/socketmodule.h to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/ssl/2.3.6/socketmodule.h
Unpacking ssl-for-setuptools-1.10/ssl/2.5.1 to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/ssl/2.5.1
Unpacking ssl-for-setuptools-1.10/ssl/2.5.1/socketmodule.h to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/ssl/2.5.1/socketmodule.h
Unpacking ssl-for-setuptools-1.10/ssl/__init__.py to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/ssl/__init__.py
Unpacking ssl-for-setuptools-1.10/ssl/_ssl2.c to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/ssl/_ssl2.c
Unpacking ssl-for-setuptools-1.10/test to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/test
Unpacking ssl-for-setuptools-1.10/test/badcert.pem to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/test/badcert.pem
Unpacking ssl-for-setuptools-1.10/test/badkey.pem to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/test/badkey.pem
Unpacking ssl-for-setuptools-1.10/test/https_svn_python_org_root.pem to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/test/https_svn_python_org_root.pem
Unpacking ssl-for-setuptools-1.10/test/keycert.pem to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/test/keycert.pem
Unpacking ssl-for-setuptools-1.10/test/nullcert.pem to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/test/nullcert.pem
Unpacking ssl-for-setuptools-1.10/test/test_ssl.py to /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/test/test_ssl.py
Running ssl-for-setuptools-1.10/setup.py bdist_egg --dist-dir /tmp/easy_install-Svj7d6/ssl-for-setuptools-1.10/egg-dist-tmp-NfSQin
Traceback (most recent call last):
  File "&lt;string&gt;", line 1, in &lt;module&gt;
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 1714, in main
    with_ei_usage(lambda:
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 1695, in with_ei_usage
    return f()
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 1718, in &lt;lambda&gt;
    distclass=DistributionWithoutHelpCommands, **kw
  File "/usr/lib/python2.6/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/usr/lib/python2.6/distutils/dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 236, in run
    self.easy_install(spec, not self.no_deps)
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 452, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 501, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 680, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 957, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/command/easy_install.py", line 946, in run_setup
    run_setup(setup_script, args)
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/sandbox.py", line 29, in run_setup
    lambda: execfile(
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/sandbox.py", line 70, in run
    return func()
  File "/home/kiorky/minitage/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg/setuptools/sandbox.py", line 31, in &lt;lambda&gt;
    {'__file__':setup_script, '__name__':'__main__'}
  File "setup.py", line 11, in &lt;module&gt;
    def read(rnames):
ValueError: This extension should not be used with Python 2.6 or later (already built in), and has not been tested with Python 2.3.4 or earlier.
    - Failed specs: ssl-for-setuptools==1.10
    - required by:
        - [Requirement.parse('zc.ssl==1.1')]
    - required by:
        - [Requirement.parse('zc.authorizedotnet==1.3')]
    - required by:
        - [Requirement.parse('easyshop.core==0.1a1')]
    - Failed specs: ssl-for-setuptools==1.10
    - required by:
        - [Requirement.parse('zc.ssl==1.1')]
    - required by:
        - [Requirement.parse('zc.authorizedotnet==1.3')]
    - required by:
        - [Requirement.parse('easyshop.core==0.1a1')]
While:
  Installing zopepy.</pre>
<p>&nbsp;</p>
<p>We see at first shot that easyshop give us trouble ! Without, its hard to know which distribution want ssl-for-setuptools :)</p>

          ]]>
        </content:encoded>        

        <dc:date>2010-03-07T20:41:17+01:00</dc:date>

        <dcterms:modified>2010-03-07T20:41:17+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>python</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2010/02/28/minitage-python-and-ucs">

        <rss:title>minitage, python and UCS</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2010/02/28/minitage-python-and-ucs</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>While upgrading my gentoo based laptop after 8monthes of lazy abandonness in profit of exiting projects, i saw that the gentoo's python was forced to use UCS==4.</p>
<p>What an heck while dealing with the 'minitage env' file which mix the system and project environment resulting in a mixin of the system and project python.</p>
<p>Normally, there are no problem, unless your pythons come with different UCS flavors.</p>
<p>Cool thing is that those errors are not silent, and you see them if you are hitted by this flaw :</p>
<pre>&nbsp;&nbsp;&nbsp; ImportError: /bar.egg/module/_foo.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8
or  
&nbsp;&nbsp;&nbsp; ImportError: /bar.egg/module/_foo.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8</pre>
<p>&nbsp;</p>
<p>Making some searches showed me that upstream as in python-dev supports only UCS2 by default (issue discussed on their mailing around 2008) but all distros i am aware of package their distros with UCS==4.</p>
<p>For now, I prefered to stick with upstream (UCS==2), but i think that for the user experience, UCS==4 will be better.</p>
<p>Sad thing is that for existing minitage installations if you want to rebuild your python, do also that:</p>
<pre>rm -rf minitage/eggs/cache/*-Major.minor*egg
rm -rf minitage/eggs/*/.installed.cfg</pre>
<p>To let minitage rebuild any stuff using UCS2.</p>
<p>&nbsp;</p>
<p>See <a class="external-link" href="http://en.wikipedia.org/wiki/Universal_Character_Set">http://en.wikipedia.org/wiki/Universal_Character_Set</a> for reference on UCS.</p>

          ]]>
        </content:encoded>        

        <dc:date>2010-02-28T22:39:24+01:00</dc:date>

        <dcterms:modified>2010-02-28T22:40:56+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>python</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2010/02/27/minitage-ohloh-gives-us-minitage.ohloh">

        <rss:title>minitage &amp; ohloh gives us minitage.ohloh</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2010/02/27/minitage-ohloh-gives-us-minitage.ohloh</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>I refreshed a little the <a class="external-link" href="https://www.ohloh.net/p/minitage">ohloh minitage's</a> related page to have some marketing analysis around minitage basecode.</p>
<p>For this, i wanted to add all repositories, what a heck for 200 repos...</p>
<p>Time to create <a class="external-link" href="http://git.minitage.org/git/minitage/eggs/minitage.ohloh/">minitage.ohloh </a>to create the repositories for me using some fake browser ;-).</p>
<p>This package uses lxml (XPath), zope.testbrowser (fake browser) and urllib (some handmade http requests) to make the work done.</p>
The result is there : <a class="external-link" href="https://www.ohloh.net/p/minitage/enlistments">https://www.ohloh.net/p/minitage/enlistments</a>
<p> with more than 100 repos created :D !</p>
<p>&nbsp;And sorry ohloh Team for flooding ohloh.net :p</p>
<p>.</p>

          ]]>
        </content:encoded>        

        <dc:date>2010-02-27T20:33:51+01:00</dc:date>

        <dcterms:modified>2010-02-27T20:35:22+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        
        
            <dc:subject>ohloh</dc:subject>
        
        
            <dc:subject>marketing</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2010/02/26/python-and-oldies-or-valueerror-year-1876-is-before-1900-the-datetime-strftime-methods-require-year-1900">

        <rss:title>Python and oldies or ValueError: year=1876 is before 1900; the datetime strftime() methods require year &gt;= 1900</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2010/02/26/python-and-oldies-or-valueerror-year-1876-is-before-1900-the-datetime-strftime-methods-require-year-1900</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Calling strftime on a date/datetime instance on py24/py26 will raise a value error like this:</p>
<pre>&gt;&gt;&gt; from datetime import date
&gt;&gt;&gt; date(1800,1,1).strftime('%d%m%Y')
Traceback (most recent call last):
  File "&lt;stdin&gt;", line 1, in &lt;module&gt;
ValueError: year=1800 is before 1900; the datetime strftime() methods require year &gt;= 1900</pre>
<p>Quite annoying heh ?</p>
There is a bug related on the python bugtracker here : <a class="external-link" href="http://bugs.python.org/issue1777412">http://bugs.python.org/issue1777412</a>
<p>&nbsp;</p>
<p>The work here was to integrate the working patch in the bugreport to py24 and py26 python packages which are in minitage.</p>
<p><strong>So now, with minitage's pythons, you can work with very old dates by default !!!</strong></p>
<p>Just issue:</p>
<pre>virtualenv --no-site-packages --distribute minitage
source minitage/bin/activate
minimerge -s
minimerge -v python-2.6 (or 2.4)</pre>
<p>And you can use the following interpreter which support those old ages:</p>
<pre>minitage/python-2.6/parts/part/bin/python</pre>
<p>&nbsp;</p>
<p>And of course the related patch does not break anything:</p>
<pre>$ svn info
URL&nbsp;: http://svn.python.org/projects/python/branches/release24-maint
Révision&nbsp;: 75208
$../parts/part/bin/python Lib/test/test_datetime.py
...
----------------------------------------------------------------------
Ran 230 tests in 0.858s
OK


$ pwd
/home/kiorky/minitage/dependencies/python-2.6/Python-2.6.4
$../parts/part/bin/python Lib/test/test_datetime.py
...
----------------------------------------------------------------------
Ran 245 tests in 0.791s
OK</pre>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2010-02-26T17:40:00+01:00</dc:date>

        <dcterms:modified>2010-02-26T17:52:48+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>python</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2010/02/21/little-minitage.core-improvments">

        <rss:title>little minitage.core improvments</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2010/02/21/little-minitage.core-improvments</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>&nbsp;</p>
<h2><strong>GIVE ME ONLY DEPENDENCIES</strong><br /></h2>
<p>You can know select to build all dependencies but not the package.</p>
<p>For exemple, to build all python-2.4 dependencies but not python-2.4 itself, you can do:</p>
<pre>minimerge -v --only-dependencies python-2.4
</pre>
<p>&nbsp;</p>
<h2><strong>BUILD THIS PYTHON PACKAGE FOR THIS PYTHON</strong></h2>
<p>For 'eggs' packages, the default was to make come in dependencies all python avaiable in minitage and to build the 'site-packages-Major.Minor' part if it was a buildout build..</p>
<p>&nbsp;</p>
<p>It is know rearranged to be a little more subtile.</p>
<p>Look the following:</p>
<pre>minimerge -v mypythonpackage # will be mypythonpackage against all python as usual
minimerge -v mypythonpackage python-2.4# will be mypythonpackage against only python-2.4</pre>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2010-02-21T20:30:12+01:00</dc:date>

        <dcterms:modified>2010-02-21T20:30:12+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2010/02/21/snowleopard-revival">

        <rss:title>Snowleopard revival</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2010/02/21/snowleopard-revival</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Just a little post to say that snowleopard let run minitage.</p>
<p>As a note, you must have all SDK installed, specially the 10.4!</p>

          ]]>
        </content:encoded>        

        <dc:date>2010-02-21T20:17:22+01:00</dc:date>

        <dcterms:modified>2010-02-21T20:17:22+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2010/02/21/webservers-flooding-minitage">

        <rss:title>Webservers flooding minitage</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2010/02/21/webservers-flooding-minitage</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Now, nginx and apache are packaged inside minitage.</p>
<p>&nbsp;</p>
<p>You have :</p>
<ul><li>two templates initiating instance of both webservers in minitage.paste.extras</li><li>the related packages to be build via minitage (nginx-0.8, apache-2.2)</li></ul>
<p>&nbsp;</p>
<p>Enjoy running:</p>
<pre>easy_install -U minitage.paste
paster create -t minitage.instances.nginx myproject #deploy some nginx instance (init scripts, logrotates, docroot)
paster create -t minitage.instances.apacher myproject #deploy some nginx instance (init scripts, logrotates, docroot)</pre>

          ]]>
        </content:encoded>        

        <dc:date>2010-02-21T20:14:35+01:00</dc:date>

        <dcterms:modified>2010-02-21T20:15:44+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2010/02/21/hudson-deployment-made-easy">

        <rss:title>hudson deployment made easy</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2010/02/21/hudson-deployment-made-easy</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>I have added recently the support for standalone tomcat instances and running applications in those tomcat instances.</p>
<p>For example, to initiate a great hudson (contineous integration), you can run the following:</p>
<p>If you are not inside a minitage environment:</p>
<pre>easy_install -U minitage.paste.extras
paster create -t minitage.instances.tomcat myproject # it will ask you for the location of a tomcat extracted tarball
paster create -t minitage.instances.hudson myproject</pre>
<p>And if you are not inside a minitage environment, to deploy in a myproject subdirectory</p>
<pre>easy_install -U minitage.paste.extras
paster create -t minitage.instances.tomcat myproject inside_minitage=no 
paster create -t minitage.instances.hudson myproject inside_minitage=no</pre>
<p>&nbsp;</p>
<p>Requirements:</p>
<ul><li>A tomcat tarball extracted somewhere (CATALINA_BASE for knowsers) <br /></li><li>A java installed somewhere with a JAVA_HOME environment variable pointing to it<br /></li></ul>

          ]]>
        </content:encoded>        

        <dc:date>2010-02-21T20:10:12+01:00</dc:date>

        <dcterms:modified>2010-02-21T20:10:12+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        
        
            <dc:subject>contineous integration</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/08/13/annoucing-minitage.paste.extras">

        <rss:title>Annoucing minitage.paste.extras</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/08/13/annoucing-minitage.paste.extras</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Making more and more complicated instances from server dependencies installed into the minitage tree make me relying on somehow intrusive dependencies.</p>
<p>&nbsp;As i want minitage.paste to depend on barely nothing else that paster and the minitage core,&nbsp; i have splitted such 'instances' in an additionnal egg.</p>
<p>&nbsp;<a class="external-link" href="http://pypi.python.org/pypi/minitage.paste.extras">minitage.paste.extras was born.</a></p>
<p>This package borrow 2 instances at the moment:</p>
<ul><li><strong>minitage.instances.cas</strong>: Install a CAS server</li><li><strong>minitage.instances.openldap</strong>: Install an openldap server</li></ul>
<p>&nbsp;</p>
<p>Those instances make some nice things as generating on the flag SSL certificates for enabling secured connections to your instance(s).</p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-08-13T09:18:56+02:00</dc:date>

        <dcterms:modified>2009-08-13T09:18:56+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/08/11/kill-profils-and-welcome-to-instances">

        <rss:title>Kill profils and welcome to instances</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/08/11/kill-profils-and-welcome-to-instances</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Thanks to my lovely minitage user remarks, i make some frenglish naming with 'profils' in minitage.paste.</p>
<p>Profils have been renamed to instances as it is more relevant.</p>
for example:
<pre>paster create -t minitage.profils.env project</pre>
<p>become:</p>
<pre>paster create -t minitage.instances.env project</pre>

          ]]>
        </content:encoded>        

        <dc:date>2009-08-11T15:31:46+02:00</dc:date>

        <dcterms:modified>2009-08-11T15:32:20+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/08/09/freebsd-revival">

        <rss:title>FreeBSD revival</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/08/09/freebsd-revival</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Lately, i ran and port problematic packages under FreeBSD. All the packages now seem to install without particular problems.</p>
<p>The tested platform is a FreeBSD-7.1 RELEASE 64 bits.</p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-08-09T11:23:24+02:00</dc:date>

        <dcterms:modified>2009-08-09T11:23:24+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>FreeBSD</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/08/09/new-profils-available-some-improved">

        <rss:title>new profils available, some improved</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/08/09/new-profils-available-some-improved</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>In the the last weeks, I carried out some changes to minitage.paste.</p>
<p>Now, there are some new profils out there:</p>
<ul><li>minitage.profils.mysql : a profil to initiate a mysql database right into your project.</li><li>minitage.profils.openldap : a profil to initiate an openldap instance right into your project.</li><li>minitage.profils.pasteinitd: a profil to generate an init script to launch a server configured via Pythonpaste configuration<br /></li></ul>
<p>&nbsp;</p>
<p>There also some changes on the postgresql profile.</p>
<p>Now:</p>
<ul><li>You have your system user admin of the database. But you can connect only via localhost.</li><li>The user created via the paster is only administrator on the database, but not on the database server. He can connect from localhost without password, but he must authenticate from other locations.</li></ul>
<p>&nbsp;</p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-08-09T11:21:22+02:00</dc:date>

        <dcterms:modified>2009-08-11T14:52:31+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/06/30/stuff-on-bsd">

        <rss:title>Stuff on BSD</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/06/30/stuff-on-bsd</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>There is pretty much a long time i wanted to switch my stuff on the BSD License.</p>
<p>More as an habit than a conviction, my source files where header pollutated by the GPL License.</p>
<p>For me, and in my opinion, the GPL is not as free as it claims to.</p>
<p>Why ? Because the final user cannot do what he want with your code.</p>
<p>Some debate will qualify that as communism&nbsp; (GPL) vs anarchy (BSD). I prefer anarchy :).</p>
<p>Of course i use the "modified BSD license" which is compatible with the GPL.</p>
<p>&nbsp;</p>
<p>Some on the concerned:</p>
<ul><li>minitage.core</li><li>dj.paste</li><li>minitage.recipe</li><li>minitage.paste</li><li>cluereleasemanager.paste<br /></li></ul>

          ]]>
        </content:encoded>        

        <dc:date>2009-06-30T08:18:39+02:00</dc:date>

        <dcterms:modified>2009-06-30T08:18:39+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        
        
            <dc:subject>licensing</dc:subject>
        
        
            <dc:subject>bsd gpl</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/06/24/make-mapscript-easy_installable">

        <rss:title>make mapscript easy_installable</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/06/24/make-mapscript-easy_installable</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>As part of a new project deployment plan, we needed to deploy mapscript.</p>
<p>Python-MapScript are the python bindings to the underlying mapserver library.</p>
<p>Where the pain begins is that there is no egg available for it, but an old fashioned distutils distribution;.</p>
<p>&nbsp;</p>
<p>My bits there were to make some quickly egg compatible on most unixes. My will is to make it nicer and be integrated on the mapserver trunk code.</p>
<p>You can find the code there : http://git.minitage.org/git/others/mapscript/</p>
<p>&nbsp;</p>
<p>And play with the egg:</p>
<pre>easy_install mapscript 
</pre>
<p>You must know that mapserver-config must be available in your $PATH.</p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-06-24T22:50:00+02:00</dc:date>

        <dcterms:modified>2009-06-24T22:50:56+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>python</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        
        
            <dc:subject>mapserver</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/05/24/setting-up-a-buildbot-for-minitage">

        <rss:title>Setting up a buildbot for minitage</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/05/24/setting-up-a-buildbot-for-minitage</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>It is now an hassle to build all the minitage dependencies by hand.</p>
<p>Naturally, the idea to set up some tinderbox like buidbot comes to my mind.</p>
<p>More over, i had a though of generating some binaries to avoid the compilation time for users who don't want to/can't compile.</p>
<p>&nbsp;</p>
<p>The lead was to use collective.buildbot, a great recipe to integrate buildbot with zc.buildout deployment.</p>
<p>The result is there : <a class="external-link" href="http://git.minitage.org/git/minitage/buildbot/">http://git.minitage.org/git/minitage/buildbot/</a></p>
<p>The idea was to generate a "collective.buildbot" project per dependency. To achieve that, i made a script to generate those projects from the current official minilays.</p>
<p>Compilation is triggered via manual activation (irc, web) but also by a cron scheduler (nearly each 3 hours)</p>
<p>I made a patch to the recipe to have multiple hours values (* 1,2,3 * * *) cron entries, see <a class="external-link" href="http://git.minitage.org/git/minitage/buildbot/tree/collective.buildbot.multiple.patch">http://git.minitage.org/git/minitage/buildbot/tree/collective.buildbot.multiple.patch</a></p>
<p>&nbsp;</p>
<p>The buildbot can be viewed there : <a class="external-link" href="http://www.minitage.org/buildbot/waterfall">http://www.minitage.org/buildbot/waterfall</a></p>
<p>&nbsp;</p>
<p>Next steps are to finnish the "binaries dealing" in minitage.core and the mirrors setup, and minitage users will be able to use binaries and no compilation anymore :)</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-05-24T14:00:00+02:00</dc:date>

        <dcterms:modified>2009-05-24T14:03:57+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/05/10/macosx-revival">

        <rss:title>MacOSX revival</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/05/10/macosx-revival</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Thanks to a workmate, Jean-Philippe, who shared me a little space of it's Osx Leopard based laptop, i could test minitage on Leopard.</p>
<p>I was surprised to not see a lot of breakages. Most of the packages build fine right now.</p>
<p>I was just anooyed with 'MACOSX_DEPLOYMENT_TARGET' bugs i introduced with previous minitage versions, where i didnt know already all the impact of using it.</p>
<p>So, now, is minitage ready for mac ?</p>
<p>I think, Yes as almost everything inside minitage can install without problems. But ..., it needs to be tested a lot more :)</p>
<p>And think, that you must run OSX Leopard. Prior versions of MacOSX wont be supported. Indeed, i need some linker features which need a lot of rewrites of minitage composants&nbsp; to be compliant with the old mac linker. (-Wl,-rpath -Wl,... -&gt; -rpath something). Whereas, now, a lot can be fixed in one place, the project has history and there is a lot of places to fix and test to rewrite this "flag issue". But if you want, port it ;)</p>
<p>One recommandation if you use minitage on OSX is to use the boostrapper to get the base python compiled with the right options.</p>
<p>If you get some obscure&nbsp; errors like:</p>
<pre>distutils.errors.DistutilsPlatformError: $MACOSX_DEPLOYMENT_TARGET mismatch: now "10.3" but "10.5" during configure
</pre>
<p>use the bootstrapper ;)</p>
<p>&nbsp;You ll need also xcode and some tools installed, see on the minitage installation documentation :<a class="external-link" href="http://minitage.org/installation.html"> http://minitage.org/installation.html</a></p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-05-10T22:25:00+02:00</dc:date>

        <dcterms:modified>2009-05-13T16:29:46+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>osx</dc:subject>
        
        
            <dc:subject>mac</dc:subject>
        
        
            <dc:subject>leopard</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/05/06/minitage-runs-on-linux-64-bits">

        <rss:title>minitage runs on linux 64 bits</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/05/06/minitage-runs-on-linux-64-bits</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>I finnished ysterday to make the neccessary patches to make compile all dependencies on the minitage tree on linux 64 bits.</p>
<p>The guest OS is a debian etch 64.</p>
<p>There were some trivial fixes, mainly the whole packages compiled without any problems.</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-05-06T11:12:03+02:00</dc:date>

        <dcterms:modified>2009-05-06T11:12:03+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/05/05/gentoo-rocks">

        <rss:title>gentoo rocks</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/05/05/gentoo-rocks</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>One reason among others&nbsp; why i love gentoo.</p>
<p>&nbsp;</p>
<ul><li>I got some troubles packaging a package on minitage for its x64 port.</li><li>I looked the gentoo's relevant ebuild.</li><li>I found some interresting patch, i integrated it on the libjpeg buildout.</li><li>I launched the minimerge dance, Et voila, bug resolved !</li></ul>
<p>&nbsp;</p>
<p>Thx gentoo and thx gentoo developpers :-)</p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-05-05T21:19:55+02:00</dc:date>

        <dcterms:modified>2009-05-05T21:19:55+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>gentoo</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/05/03/up-to-plone-3.2.2">

        <rss:title>up to plone 3.2.2</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/05/03/up-to-plone-3.2.2</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>This website just got updated to latest plone available... There may be bugs with quills ... :)</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-05-03T17:23:53+02:00</dc:date>

        <dcterms:modified>2009-05-03T17:23:53+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>plone</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/04/30/zc.testbrowser-recent-works-and-thoughts">

        <rss:title>zc.testbrowser recent works and thoughts</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/04/30/zc.testbrowser-recent-works-and-thoughts</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>I worked recently on merging my collective.anonymousbrowser back to zc.testbrowser.</p>
<p>It's definitivly seems to run fine <strong>with python &gt;= 2.5.</strong></p>
<p>Points of the merge were large:</p>
<ul><li>Integrate the proxy balancing capability</li><li>Integrate the user agent faking capability<br /></li><li>Add tests where it was missing</li><li>Improve the "real" class <br /></li><li>Make the real class mozrunner powered, that's free you to configure a firefox, and just let the code configure a default profile for you.</li><li>Integrate the existing "screenshot" javascript function as a class method. Thats enables you to do browser.screenshot() and that makes a screenshot of the running firefox.<br /></li></ul>
<p>&nbsp;</p>
<p>But, something i hadn't tested, ..., was the python 2.4 support. Both zc.testbrowser and mozrunner have problems with it...</p>
<p>I will try to make the next commits fix that if possible.</p>
<p>&nbsp;</p>
<p>As it's not yet officially released., you can try the code there:</p>
<p>&nbsp;&nbsp; svn://svn.zope.org/repos/main/zc.testbrowser/branches/fastreal_screenshots_mozrunner_proxys</p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-04-30T21:32:32+02:00</dc:date>

        <dcterms:modified>2009-04-30T21:32:32+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>zope</dc:subject>
        
        
            <dc:subject>zc.testbrowser</dc:subject>
        
        
            <dc:subject>zope3</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/04/30/dj.paste">

        <rss:title>A new paster's http factory on fire: dj.paste</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/04/30/dj.paste</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>I made for a workmate yet another django paste's http factory.</p>
<p>The goals were to integrate its way to work, with setting some DJANGO_SETTINGS_MODULE key in the environment and launch the "bidule", and letz play.</p>
<p>The challenge was, ..., to be simple or this workmate will never use this stuff. She was used to tell only about django-admin runserver :).</p>
<p>One part of the challenge was to show some interessant things that we can do with paste configurations, like having different but closer configurations for production or development mode.</p>
<p>Thus, including showing the nice "WebError#eval" application where you can debug your messy code though the web with an interactive debugger.</p>
<p>&nbsp;</p>
<p>But, right to the topic, the dj.paste stuff:</p>
<blockquote>
<ul><li>It enables you to have multiple tracs in the same pipeline</li><li>You can integrate it in an exiting paste configuration, it's the goal after all :)</li><li>It 's simple to use, an a sample paste configuration can be:<br /></li></ul>
<pre class="literal-block">[composite:main]<br />use = egg:Paste#urlmap<br />/ = foo<br /><br />[app:foo]<br />use=egg:dj.paste<br />django_settings_module=foo.settings<br /></pre>
</blockquote>

          ]]>
        </content:encoded>        

        <dc:date>2009-04-30T21:25:00+02:00</dc:date>

        <dcterms:modified>2009-05-03T13:01:58+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>makina corpus</dc:subject>
        
        
            <dc:subject>paster</dc:subject>
        
        
            <dc:subject>django</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/04/30/minitage-1.0-is-out">

        <rss:title>minitage 1.0 is out</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/04/30/minitage-1.0-is-out</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>I did not find the time earlier to post about it.</p>
<p>Minitage 1.0 is out for a week now.</p>
<h2><strong>What you can find there ?</strong></h2>
<ol>                                                    
    <li>Documentation has been drasticly improved<br />See by yourself:<br />
<ul>
            <li><a href="http://www.minitage.org">minitage</a></li><li><a href="http://pypi.python.org/pypi/minitage.recipe">minitage.recipe</a></li>
            <li><a href="http://pypi.python.org/pypi/buildout.minitagificator">buildout.minitagificator</a></li>
            <li><a href="http://pypi.python.org/pypi/dj.paste">dj.paste</a></li>
            
            <li><a href="http://pypi.python.org/pypi/minitage.recipe">minitage.paste<br /></a></li>
            <li><a href="http://pypi.python.org/pypi/minitage.core">minitage.core</a></li></ul>
</li>
    <li><a href="http://trac.minitage.org">Trac</a> got Git support</li>
    <li>There are cgit and gitweb instances configured against all minitage repositories<br /></li>
    <li>A lot of bugfixes, as always</li>
    <li>Recipes have been rewritten a bit to stick to zc.recipe.* implementations</li>
    <li>minitage.recipe egg based recipes got a fresh touch:</li>
<ul>
        <li>They do not totally rely any more on easy_install dependency system, just on their declared dependencies (extras are also supported). Thas was something i disliked with zc.recipe.egg, potentially, the easy_install call can install something, which we
            would'nt. And also, in some cases, the extras requirement could be wiped out. All are bugs reported upstream on the zc.buildout launchpad bugtracker.</li>
        <li>Their installer should now try not to look in the site-packages first, but rather the eggs cache to avoid conflict errors. <br /></li>
        <li>I also implemented an adaptation of the zc.buildout redo_pyc function which seems to be somehow slow.<br /></li></ul>
<li>Welcome to the buildout.minitagificator egg which help minitage to conquer the world with replacing some well known recipes with their equivalent minitage implementations with some violent monkey patches. It's a buildout extension.<br /></li>
    <li>The "static fetcher" has been improved and bug fixed</li>
    <li>There some new cool API functions like a search function which take regexes to look for minibuilds in the available minilays<br /></li>
    <li>minitage.paste got a great step forward with all pastes</li>
    <li>All templates now have now minitage layout as an optionnal dependency.
        That means that you do not need minitage to generate templates, however, the normal use is to use them in minitage.
<ul>
            <li>Plone32 template:
<ul>
                    <li>Predefined set of products to install</li>
                    <li>A developper mode where you have aditionnal tools installed (ptprofiler, collective.autorestart on linux, and so on) and debug mode turned on by default</li>
                    <li>wsgi configuration and launchers</li>
                    <li>A working filesystemstorage integration</li>
                    <li>You can use either RelStorage, ZEO or classical ZODB access<br /></li>
                    <li>You can give to paster whatever you want to custom the buildout generation by some predefined keys.</li></ul>
</li>
            <li>Zope3 template:
<ul>
                    <li>wsgi configuration and launchers (paster and Zdaemon based)<br /></li>
                    <li>You can use either RelStorage, ZEO or classical ZODB access</li>
                    <li>You can give to paster whatever you want to custom the buildout generation by some predefined keys.</li></ul>
</li>
            <li>Django template:
<ul>
                    <li>wsgi configuration and launchers</li>
                    <li>GeoDjango support</li><li>dj.paste (http://pypi.python.org/pypi/dj.paste) integration. This paster factory enables you to have multiple django instances in the same pipeline<br /></li>
                    <li>A basic application created when you generate your project to quickstart.</li>
                    <li>You can give to paster whatever you want to custom the buildout generation by some predefined keys.</li></ul>
</li>
            <li>Nearly all templates which have WSGI support got Spawning integration. Spawning is an über performant python based WSGI server.<br /></li>
            <li>postgresql, varnish, varnish2, and env profils:
<ul>
                    <li>Can run now without minitage or any project installed</li></ul>
</li>
            <li>The new paste-initd profil:
<ul>
                    <li>it generates an initscript wrapper to trigger a "paster serve" from some paste configuration of your choice</li></ul>
</li></ul>
</li></ol>
<h2>What are the minitage projects and profiles, after all ?</h2>
<p>All are paster (see PasteScripts on pypi) templates.</p>
<p>Projects target to quickstart an application or a project like a plone3 or a django website.</p>
<p>Profiles, on the other side, are a piece of integration, targeted to be in general integrated into a minitage based project. That can be a postgresql database instance, or a shell environement file with has all minitage dependencies, that you can source when
    playing with your project.</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-04-30T21:12:22+02:00</dc:date>

        <dcterms:modified>2009-04-30T21:12:22+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>zope3</dc:subject>
        
        
            <dc:subject>postgresql</dc:subject>
        
        
            <dc:subject>pylons</dc:subject>
        
        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>django</dc:subject>
        
        
            <dc:subject>zope</dc:subject>
        
        
            <dc:subject>plone</dc:subject>
        
        
            <dc:subject>paster</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/04/05/freebsd-7.1-and-udma-on-crappy-hard-drive">

        <rss:title>Freebsd 7.1 and UDMA on crappy hard drive.</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/04/05/freebsd-7.1-and-udma-on-crappy-hard-drive</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>I have a crappy hard drive which claims to be UDMA-66 compatible, however, its an old PIO4 based one ...</p>
<p>After successfully upgrading the system to Freebsd 7.1 this week end, at 3.30AM, i can't boot :(</p>
<p>The driver want to go UDMA, the disk doesn't understand.</p>
<p>No mean in the bios to force that... And no more internet because this box is the home router !</p>
<p>What to do ?</p>
<p>Go to use my 3G phone to get my ISP DNS because ... the funny "freebox" is customizable throught the web, on the free.fr website.</p>
<p>You have no local access on it.</p>
<p>&nbsp;</p>
<p>So now, i have some route and DNS setted up, i can go to read</p>
<pre>man loader(8)
man ata(4)

</pre>
<p>And now, i know some interresting new things:</p>
<p>Disable dma:</p>
<pre>set hw.ata.ata_dma=0</pre>
<p>Prompt for root partition when the partition location changed:</p>
<pre>set boot_askname</pre>

          ]]>
        </content:encoded>        

        <dc:date>2009-04-05T22:02:31+02:00</dc:date>

        <dcterms:modified>2009-04-05T22:02:31+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>FreeBSD</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/26/minitage-and-branding">

        <rss:title>minitage and branding</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/26/minitage-and-branding</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>A teamate wanted to have a binary like the package manager he was used to use.</p>
<p>Its done, now instead of calling minimerge, you can use either:</p>
<blockquote>
<ul><li>minimerge</li><li>yasty</li><li>apty</li><li>pacmerge<br /></li></ul>
</blockquote>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-26T19:09:16+01:00</dc:date>

        <dcterms:modified>2009-03-26T19:09:16+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/26/minitage-now-fetchs-over-http-by-default">

        <rss:title>minitage now fetchs over http by default</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/26/minitage-now-fetchs-over-http-by-default</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>During last weeks, i have switched to git minitage, and by default all come from it.</p>
<p>The failure here is that my git fetcher is not very sympathic with older versions of git (&lt;1.5).</p>
<p>But on debian and red hat legacy, it's a pain in the ass to have relativly new stuff !!!</p>
<p>To resolve that, with workmates, we come to the decision to fetch packages over http.</p>
<p>&nbsp;</p>
<p>And now, it's done. Minimerge codebase is 'HttpCompliant' in sense that defaults minilays and packages are fetched via the minitage static fetcher.</p>
<p>This one just use urllib, and you can even set proxies in your minimerge.cfg</p>
<p>&nbsp;</p>
<p>To be up-to-date:</p>
<pre>easy_install -U minitage.core
mv etc/minimerge.cfg etc/minimerge.cfg.old
cd minilays
mkdir ../old
mv meta misc eggs dependencies ../old
minimerge -s
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-26T19:03:48+01:00</dc:date>

        <dcterms:modified>2009-03-26T19:03:48+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/24/aurevoir-caramelle">

        <rss:title>Aurevoir Caramelle</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/24/aurevoir-caramelle</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>&nbsp;</p>
<p><img class="image-inline" src="uploads/light_img_1768.jpg/image_preview" alt="Caramelle_" />&nbsp;&nbsp; This afternoon, Caramelle died from a fulgurant flue after 2 years of happy pouic pouics.</p>
<p>I was going to the vet when she died, and it must have been terrible for her.</p>
<p>And that, one hour after the starting of the symptoms.</p>
<p>&nbsp;</p>
<p>R.I.P. Caramelle.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-24T21:45:00+01:00</dc:date>

        <dcterms:modified>2009-03-24T21:58:40+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>life</dc:subject>
        
        
            <dc:subject>animals</dc:subject>
        
        
            <dc:subject>cobaye</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/24/reportlab-2.3-and-buildout-or-easy-install-failed">

        <rss:title>reportlab 2.3 and buildout or easy_install failed.</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/24/reportlab-2.3-and-buildout-or-easy-install-failed</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>For those who get annonying troubles installing reportlab 2.3 with the<br />distribution available on pypi, i made another distribution [1].<br />To achieve this, i have just done a checkout from their svn TAG (2.3) and<br />re-executed the sdist dance.<br /><br />The troubles i had personnaly was something like that :</p>
<pre>	"/usr/bin/ld: cannot find -l_renderPM_libart"
</pre>
<p>Here is a sample buildout using either minitage.recipe:egg or zc.recipe.egg to<br />install it:</p>
<pre>[buildout]
versions=versions
parts=
    eggs
    zceggs
[versions]
reportlab=2.3

[eggs]
recipe=minitage.recipe:egg
eggs=
    reportlab
find-links=
    <a class="moz-txt-link-freetext" href="http://distfiles.minitage.org/public/externals/minitage/">http://distfiles.minitage.org/public/externals/minitage/</a>

[zceggs]
recipe=zc.recipe.egg
eggs=
    reportlab
find-links=
    <a class="moz-txt-link-freetext" href="http://distfiles.minitage.org/public/externals/minitage/">http://distfiles.minitage.org/public/externals/minitage/</a></pre>
<p>[1] <a class="moz-txt-link-freetext" href="http://distfiles.minitage.org/public/externals/minitage/reportlab-2.3.tar.gz">http://distfiles.minitage.org/public/externals/minitage/reportlab-2.3.tar.gz</a></p>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-24T15:25:59+01:00</dc:date>

        <dcterms:modified>2009-03-24T15:25:59+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>zope3</dc:subject>
        
        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>reportlab</dc:subject>
        
        
            <dc:subject>zope</dc:subject>
        
        
            <dc:subject>plone</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/17/new-packages-in-minitage">

        <rss:title>New packages in minitage</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/17/new-packages-in-minitage</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>I recently add some GIS packages (pgrouting) and their dependencies.</p>
<p>&nbsp;</p>
<p>Here is a little list of what minitage can offer to you:</p>
<ul><li>bzip2, zlib</li><li>cmake, scons<br /></li><li>libwww, curl, libssh, openssl, <br /></li><li>git, subversion, mercurial, bazaar<br /></li><li>gdal, geos, pgrouting<br /></li><li>postgresql, postgis</li><li>openldap</li><li>python's, PIL, psycopg<br /></li><li>libxml, libxslt and expat</li><li>libtiff, libjpeg, libpng, libgif</li><li>etc.</li></ul>
<p>&nbsp;</p>
<p>And next to come:</p>
<ul><li>CGAL</li><li>GAUL<br /></li></ul>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-17T02:26:03+01:00</dc:date>

        <dcterms:modified>2009-03-17T02:42:16+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/17/collective.anonymousbrowser-future">

        <rss:title>collective.anonymousbrowser future</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/17/collective.anonymousbrowser-future</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>As a part of a recent discussion i had on irc with Stephan Richter, one of my next works will be to merge zc.testbrowser with collective.anonymousbrowser.</p>
<p>I worked on collective.anonymousbrowser to allow the use of proxys and proxy balancing over zc.testbrowser proxys.</p>
<p>Another interressant feature fir the project was also to retry urls if there were errors.</p>
<p>I made also some bugfix and improvments on the zc.testbrowser.real.Browser side like using mozrunner to control firefox, loading directly the js file if we are local..</p>
<p>What i want to do now is to port all the interresting things back to zc.testbrowser.</p>
<p>Hope i will have time for that this week.</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-17T02:16:19+01:00</dc:date>

        <dcterms:modified>2009-03-17T02:16:19+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>zope</dc:subject>
        
        
            <dc:subject>zc.testbrowser</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/17/smplayer-3">

        <rss:title>smplayer &lt;3</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/17/smplayer-3</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Just an entry to thank smplayer developers for their great piece of software!</p>
<p>/me just got another subtitle&nbsp; via the opensubtitles.org smplayer's menu entry.</p>
<p>I really need this feature as i am not already fluent in japanese :(</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-17T02:08:12+01:00</dc:date>

        <dcterms:modified>2009-03-17T03:28:10+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>media</dc:subject>
        
        
            <dc:subject>smplayer</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/17/zope3-and-plone32-pasters">

        <rss:title>Zope3 and plone32 pasters</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/17/zope3-and-plone32-pasters</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>As a really important part for minitage to conquer the world, minitage paster templates must rock.</p>
<p>So feel free to install and test the brand new zope3 template.</p>
<p>In an activated minitage instance:</p>
<pre>easy_install minitage.paste
paster create -t minitage.zope3 z3
minimerge z3
cd zope/z3
bin/z3-ctl fg
</pre>
<p>Plone32 was written before the recipes rewrite, it should work but i must revisite it. Should be alvalaible tomorow!</p>
<p>If you didnt know minitage.paste, you can also check the other templates and projects</p>
<pre>paster create --list-templates|grep minitage</pre>
<p>And visit the pypi and minitage.org page :)</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-17T01:57:39+01:00</dc:date>

        <dcterms:modified>2009-03-17T01:59:47+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>zope3</dc:subject>
        
        
            <dc:subject>plone</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/17/minitage.recipes-rewrite">

        <rss:title>minitage.recipes rewrite</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/17/minitage.recipes-rewrite</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>To follow zc.buildout new changes, i have decided to make all minitage recipes more "zc.recipes" compliant.</p>
<p>Now, those recipes share the same API and you an use them "really" as the original zc.recipes..</p>
<p>Another iinterresting point is that i never liked the way to compute dependencies.<br />Another point was to allow easy_install to get automaticly our stuff out. <br />To correct all that weird, i have rewritten the dependencies calculation not to let easy_install <br />do anything but install one thing at a time, and with versions and extras checks.</p>
<p>A part of the improvments:</p>
<blockquote>
<ul><li>versions are really fixed, imperative way.<br /></li><li>dependencies are better handled</li><li>egg's extras requirements (like something.foo [test, zcml]) are really well installed with all their dependencies</li><li>develop eggs get also their dependencies</li></ul>
</blockquote>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-17T01:51:26+01:00</dc:date>

        <dcterms:modified>2009-03-17T02:00:25+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/17/buildout.minitagificator">

        <rss:title>buildout.minitagificator rocks!</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/17/buildout.minitagificator</rss:link>       

        

        <content:encoded>
          <![CDATA[
          <p>You can now check out and test buildout.minitagicator.</p>
<p>This is a little extension for buildout that enables you to override/monkey patch some buildout stuff to use minitage internals instead.</p>
<p>If you like minitage, if you like the minitage recipes, you ll enjoy it!</p>
<p>See <a class="external-link" href="http://pypi.python.org/pypi/buildout.minitagificator">http://pypi.python.org/pypi/buildout.minitagificator</a> for more information :)</p>
          ]]>
        </content:encoded>        

        <dc:date>2009-03-17T01:45:00+01:00</dc:date>

        <dcterms:modified>2009-03-17T03:32:30+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2009/03/09/minitage-next-works">

        <rss:title>Minitage next works</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2009/03/09/minitage-next-works</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>There some points i have added to minitage since october:</p>
<ul><li>I moved minilays, dependencies and code on git because mercurial forest extensions really lacks maintenance</li><li>I have done some maintenance over minitage.paste's templates (plone25, env, postgresql for postgresql-8.3) and added some (plone32svn, pylons)</li><li>minitage.recipe received a lot of bugfixes and enhancements like the minitage.recipe:fetch entry point</li><li>minitage.core has also been bugfixed specially for the git wave</li><li>eggs have been buildoutified and testrunnerified<br /></li></ul>
<p>&nbsp;</p>
<p>Those are the features i ll release on the next days:</p>
<ul><li>A brand new plone 32 paster</li><li>A revisited zope3 paster</li><li>minitage.recipe:eggs now support develop eggs dependencies installation</li><li>minitage.recipe:eggs now has the same options and API that zc.recipe.egg for their common parts<br /></li><li>minitage.recipe:scripts calls minitage.recipe:eggs prior to the script generation, there is no need anymore to have too redundant parts in buildouts<br /></li><li>minitage.buildout extension is a buildout extension that monkey patches zc.recipe.egg with minitage.recipe.egg</li><li>the bootstrapper script is refreshed :</li>
<ul><li>update all sotfwares to lastest versions <br /></li><li>includes git-1.6 which is required for minitage to fetch its core packages</li></ul>
</ul>
<p>&nbsp;</p>
<p>TODO as an though for contributors:</p>
<ul><li>update doc for git changes</li><li>update doc to explain how to move an existing buildout to a minitage compliant one</li><li>documente the recipes<br /></li></ul>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2009-03-09T22:04:55+01:00</dc:date>

        <dcterms:modified>2009-03-09T22:06:29+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2008/10/21/pylons-xmlrpc-and-doctest">

        <rss:title>Pylons, xmlrpc and doctest</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2008/10/21/pylons-xmlrpc-and-doctest</rss:link>       

        <rss:description>How to make some doctests with pylons and an xmlrpc controller</rss:description>

        <content:encoded>
          <![CDATA[
          
<p>I m actually developping some application around XMLRPC protocol at work.</p>
<p>We are using Pylons for the framework part, and i played this afternoon at setting up some testing environnement for doing doctests.</p>
<p><strong>This test is a proof of concept, it 's code extracted from our internal application, it's just a starter for you. The whole is working with some tweaks.</strong></p>
<p><strong><br /></strong></p>
<p><strong>controllers/mycontroller.py</strong>, a simple controller doing simple stuff</p>
<pre>class MyController(XMLRPCController):
    """controller."""                           

    def index(self):
        return '\_o&lt;'</pre>
<p>&nbsp;</p>
<p><strong>lib/base.py</strong>, Please add the  XMLRPCController import</p>
<pre>lib/base.py:from pylons.controllers import WSGIController, XMLRPCController</pre>
<p>&nbsp;</p>
<p>Then, we are setted up to continue with tests</p>
<p>First of all, the doctest boilerplate:</p>
<p><strong>tests/test_doctest_files.py</strong></p>
<pre>import doctest
from doctest import DocFileSuite

from myproject.tests import setUp, tearDown
flags = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE | doctest.REPORT_ONLY_FIRST_FAILURE)

def test_suite():
    return DocFileSuite(
        "test.txt",     
        setUp = setUp,  
        tearDown = tearDown,
        optionflags = flags 
    )</pre>
<p>&nbsp;</p>
<p>setUp and tearDown will have a central place as they are intialising the application.</p>
<p>As we can't use<em> paste.fixture.TestApp objects</em> with XMLRPC because it <strong>does not bind</strong> everywhere, the idea is</p>
<ul><li>launch the server somewhere in a thread<br /></li><li>use it later, as usual throught xmlrplib. <br /></li><li>We will even declare it as a global to ease the doctests writings.</li><li>We also add a wrapper to url_for to return the host to bind to.</li></ul>
<strong>tests/__init__.py</strong>
<pre>import os
import sys
import re
import threading
from ConfigParser import ConfigParser
from unittest import TestCase

import paste.fixture
import paste.script.appinstall
from paste.deploy import loadapp
from paste.httpserver import serve
from routes.util import url_for

here_dir = os.path.dirname(os.path.abspath(__file__))
conf_dir = os.path.dirname(os.path.dirname(here_dir))
test_file = os.path.join(here_dir, 'test.ini')

cmd = paste.script.appinstall.SetupCommand('setup-app')

cmd.run([test_file])

def setUp(test, *args, **kwargs):
    print "\t-----------------------------------------------------------------"
    print "\t---    Setting up database test environment, please stand by. ---"
    print "\t-----------------------------------------------------------------"
    config = ConfigParser()
    config.read(
        os.path.join(os.path.dirname(sys.argv[0]), '..', 'etc', 'config.ini')
    )

    infos = ConfigParser()
    infos.read(test_file)
    sinfos = infos._sections['server:main']
    wsgiapp = loadapp('config:test.ini', relative_to = here_dir)
    server = test.globs['server'] = serve(wsgiapp,





    t = threading.Thread(target=server.serve_forever)
    t.setDaemon(True)
    t.start()
    test.globs['app'] = paste.fixture.TestApp(wsgiapp)
    def url_for_wrapper(*args, **kwargs):
        lkwargs = {'protocol': 'http' ,'host':  "%s:%s" % (server.server_name, server.server_port)}
        lkwargs.update(kwargs)
        return url_for(*args, **lkwargs)
    test.globs['url_for'] = url_for_wrapper
    test.globs['url_for_orig'] = url_for

def tearDown(test):
    test.globs['server'].server_close()

class TestController(TestCase):
    def __init__(self, *args, **kwargs):
        wsgiapp = loadapp('config:test.ini', relative_to = here_dir)
        self.app = paste.fixture.TestApp(wsgiapp)
        TestCase.__init__(self, *args, **kwargs)


</pre>
<p>&nbsp;</p>
<p>And finally, letz play with our doctest</p>
<p><strong>tests/text.txt</strong></p>
<pre>&gt;&gt;&gt; create_url = url_for(controller='mycontroller')

&gt;&gt;&gt; import xmlrpclib
&gt;&gt;&gt; s = xmlrpclib.Server(create_url)
&gt;&gt;&gt; s.index()
'\\_o&lt;'


</pre>

          ]]>
        </content:encoded>        

        <dc:date>2008-10-21T22:40:00+02:00</dc:date>

        <dcterms:modified>2009-03-09T21:31:16+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>makina corpus</dc:subject>
        
        
            <dc:subject>tests</dc:subject>
        
        
            <dc:subject>pylons</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2008/09/26/minitage-and-profils">

        <rss:title>Minitage, projects and profils</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2008/09/26/minitage-and-profils</rss:link>       

        <rss:description>A short introduction to minitage paster templates</rss:description>

        <content:encoded>
          <![CDATA[
          
<p>A little but wonderfull tool in the python world is paster.</p>
<p>It permits you to generate with some code logics a full set of files.</p>
<p>You can for example create a buildout, apache configurations files and etc.</p>
<p>The documentation for profils are in the official minitage documentation : <a class="external-link" href="http://www.minitage.org/doc/rst/">http://www.minitage.org/doc/rst/</a></p>
<p>&nbsp;</p>
<p>What is interesting there is that i use it into minitage to generate stuff inside.</p>
<p>There are 2 main sort of templates:</p>
<ul><li>Profils: Something relative to a project, a database, a ldap instance (not finnished atm.), a varnish instance... Profils are applied onto an existing project !<br /></li><li>Projects: A project and a minibuild referencing to it, a zope project, a turbogears project ...</li></ul>
<p>&nbsp;</p>
<p>To get those templates in a minitage instance:</p>
<pre>source minitage/bin/activate
easy_install -U minitage.paste
paster create --list-templates</pre>
<p>&nbsp;After you can for example create a plone31 projet:</p>
<pre>paster create -t minitage.plone31zeo myproject</pre>
<p>&nbsp;And after that, because plone is slow, put inside a varnish instance</p>
<pre>paster create -t minitage.profils.varnish myproject</pre>
<p>&nbsp;Because you need svn 1.5 but it is not packaged on your debian potatoe, just reference it in the dependencies part of your project minibuild:</p>
<pre>dependencies=...pilwotk-1.1.6.4 ...<strong>
</strong>install_method=buildout
src_uri=http://hg.foo.net/myproject
src_type=hg
category=zope
homepage=http://foo.net
description= a plone 3.1 buildout for myproject</pre>
<p>And install the minitage.env template:</p>
<pre>paster create -t minitage.profils.env myproject</pre>
<p>&nbsp;This profil will create for you a small bash script that will change your environnemnent according to 'myproject' needs. PATH, LD_LIBRARY_PATH and so will be feeded with all minitage dependencies. That will enable you to use svn-1.5 when you source it (like source bin/activate)</p>
<pre>source zope/myproject/sys/share/minitage/minitage.env
which svn
/minitage/dependencies/subversion-1.5/parts/part/bin/svn</pre>
<p>Another interresting integrations are the zope3 and tubogears projects.</p>
<ul><li>Zope3 template realisation allowed me to make some fixes in the minitage.recipe:scripts recipe. Now, this one generates for you great launchers scripts which include ALL their respective dependencies.<br /></li><li>Something particular with tubogears is that i must have done some overhead over buildout.</li></ul>
<p>You can see the full documentation there :&nbsp;<a class="external-link" href="http://www.minitage.org/doc/rst/tg_project.html">http://www.minitage.org/doc/rst/tg_project.html</a></p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2008-09-26T15:00:00+02:00</dc:date>

        <dcterms:modified>2009-03-17T02:02:49+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2008/08/05/back-in-loggerhead-adventures">

        <rss:title>back in loggerhead adventures</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2008/08/05/back-in-loggerhead-adventures</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>Testing the<strong> 'serve-branches'</strong> script, as mwh asked me on the previous bug report, i have now something pretty cool :)</p>
<p>So, something nice is that i have dropped away the ugly patch.</p>
<p>see : <a class="external-link" href="http://bzr.cryptelium.net">http://bzr.cryptelium.net</a> in action.</p>
<p>&nbsp;</p>
<p>What's next?</p>
<p>Michael Hudson, the main developper, told me that the idea is to drop away the loggerhead.conf and to use <strong>serve-branches</strong> as the main thing to use.</p>
<p>That's a good idea. Usage is simple, nothing to worry about configuration, it just does publishing after all.</p>
<p>&nbsp;</p>
<p>Little bits i can see as improvments (always reported/planned):</p>
<ul><li>a breadcrumb in repo view to browse back</li><li>Maybe some sort of ajaxified navigator to have the whole tree from the homepage<br /></li></ul>

          ]]>
        </content:encoded>        

        <dc:date>2008-08-05T00:38:51+02:00</dc:date>

        <dcterms:modified>2008-08-05T00:38:51+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>loggerhead</dc:subject>
        
        
            <dc:subject>bazaar</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2008/08/04/minitage-week-end-work">

        <rss:title>Minitage Week end work</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2008/08/04/minitage-week-end-work</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>What i had done on minitage this week end:</p>
<p>&nbsp;</p>
<h2>Minitage.paste</h2>
<ul><li>Improved varnish configuration</li><li>A new plone profile to be directly mapped to a zeo instance</li></ul>
<p>&nbsp;</p>
<h2>Minitage.recipe</h2>
<ul><li>Pyc are now just regenerated when eggs are moved into the cache. Thanks to Jim Fulton and the appropriate zc.buildout's function i have borrowed :p</li><li>easy_install method was refactored a bit.</li><li>eggs install method code is now rock solid until the next bug. <br /></li></ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Thoughts</h2>
<ul><li>For a long time, i think to cache authenticated content though a http proxy-cache. This can be done with the coordination of the plone cachesetup product and varnish. This will be certainly a next improvment to the varnish template. As i will study a cache solution, next week, in my daly work, it will be normally quickly updated :)<br /></li></ul>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2008-08-04T00:25:00+02:00</dc:date>

        <dcterms:modified>2008-08-04T00:26:04+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>minitage</dc:subject>
        
        
            <dc:subject>makina corpus</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2008/08/03/loggerhead-and-auto-publishing">

        <rss:title>loggerhead and auto publishing</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2008/08/03/loggerhead-and-auto-publishing</rss:link>       

        <rss:description>Setting up auto publishing and ui into loggerhead.dev</rss:description>

        <content:encoded>
          <![CDATA[
          
<p>Althought i was playing in the wonderfull world of mercurial, i 'm trying out bazaar and its tools.</p>
<p>The goal of the week end was to set up some repositories and a source browser on top of them.</p>
<p>In bazaar world, there is not much choice to achieve that. In other terms, you re really encouraged to use loggerhead.</p>
<p>&nbsp;</p>
<p>So, i began to set up a repository, file access and so on... Then look at the loggerhead documentation. Great, there is some sort of auto publishing feature.</p>
<p>This is a mechanism like our beloved mercurial's hgwebdir.cgi to autopublish branches inside a top level directory.</p>
<p>&nbsp;</p>
<h2>Installation<br /></h2>
<p>So, the procedure i used was really simple:</p>
<p>Grab it</p>
<pre>bzr branch http://bazaar.launchpad.net/%7Eloggerhead-team/loggerhead/trunk/ loggerhead.dev</pre>
<p>Edit and point to my top level directory</p>
<pre>cp loggerhead.conf* loggerhead.conf

vi loggerhead.conf
</pre>
<p>Set up a gentoo init script to start it and schedule for starting after apache2</p>
<pre>$ cat /etc/init.d/loggerhead
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

depend() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; need net apache2
}

start() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebegin "Starting $server_name server"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start-stop-daemon --start&nbsp; --user $user&nbsp; --quiet --background \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -p $pid_file -m&nbsp; --exec "$py"&nbsp; --&nbsp; "$start_cmd"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eend $?
}

stop() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebegin "Stopping $server_name&nbsp; server"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "$py"&nbsp; --&nbsp; "$stop_cmd"&nbsp; 2&gt;&amp;1 &gt;&gt; /dev/null
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eend $?
}

$ cat /etc/conf.d/loggerhead
start_cmd=/path/loggerhead.dev/start-loggerhead
stop_cmd=/path/loggerhead.dev/stop-loggerhead
pid_file="/path/loggerhead.dev/loggerhead.pid"
user="apache"
py=`which python`
server_name="Loggerhead"</pre>
<p>&nbsp;Configure apache for serving both bazaar and loggerhead on the same vhost</p>
<pre>...
Vhost basic and directories directives
...
# setting an alias to point to the bazaar directory

Alias /repos/ /path/repos/


RewriteEngine on

# mapping to /repos  if we are not browsing on loggerhead or if we are directly "branching"
RewriteCond  %{REQUEST_URI}  !^(/repos/.*)$
RewriteCond  %{REQUEST_URI}  ^(.*\.bzr.*)$
RewriteRule  ^/(.*)$         /repos/$1   [R,L]

# mapping to loggerhead otherwise
RewriteCond  %{REQUEST_URI}  !^(.*\.bzr.*)$
RewriteCond  %{REQUEST_URI}  !^(/repos/.*)$
RewriteCond  %{REQUEST_URI}  !^(/icons/.*)$
RewriteRule  ^/(.*)          http://bzr.cryptelium.net:1337/$1 [P]
RewriteCond  %{REQUEST_URI}  !^(.*\.bzr.*)$
RewriteCond  %{REQUEST_URI}  !^(/repos/.*)$
RewriteCond  %{REQUEST_URI}  !^(/icons/.*)$
RewriteRule  ^/(.*)/$        http://bzr.cryptelium.net:1337/$1 [P]

# The two [P] RewriteRules are just ProxyPass rules which allow to redirect to the loggerhead server.
</pre>
<p>&nbsp;</p>
<h2>Are we done yet ?</h2>
<p>Unfortunatly not.</p>
<p>Loggerhead is stupid and will not publish two branches with same name.</p>
<p>Another thing is that it will take the branch name for display in UI.</p>
<p>I REALLLY do not like that. I prefer to see full pathes in the UI. That helps my little brain with tree view focus to function properly.</p>
<p>&nbsp;</p>
<h3>Why ?<br /></h3>
<p>This cannot be served (just b/c will be):</p>
<pre>a/c
b/c
</pre>
<p>&nbsp;</p>
<pre>b/c/d
</pre>
<p>Results in</p>
<pre>d</pre>
<p>&nbsp;</p>
<h3>Fix ?<br /></h3>
<p>For my own use, i make my own fix :)</p>
<p>But i upstreamed the result there:<a class="external-link" href="https://bugs.launchpad.net/loggerhead/+bug/254411">https://bugs.launchpad.net/loggerhead/+bug/254411</a></p>
<p>This allows me to publish my repositories with path views :)</p>
<p>&nbsp;</p>
<h3>Result<br /></h3>
<p><a class="external-link" href="http://bzr.cryptelium.net/">http://bzr.cryptelium.net/</a></p>
<p>&nbsp;</p>

          ]]>
        </content:encoded>        

        <dc:date>2008-08-03T23:40:00+02:00</dc:date>

        <dcterms:modified>2009-03-17T02:01:47+01:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>loggerhead</dc:subject>
        
        
            <dc:subject>bazaar</dc:subject>
        

    </rss:item>

    
    

    <rss:item rdf:about="http://www.cryptelium.net/blog/2008/08/03/blog-opening">

        <rss:title>Blog opening</rss:title>

        <rss:link>http://www.cryptelium.net/blog/2008/08/03/blog-opening</rss:link>       

        

        <content:encoded>
          <![CDATA[
          
<p>There is a long time i must have done that.</p>
<p>IT s done now, my blog is open :)</p>
<p>Stay tuned for new entries.</p>
<p>&nbsp;</p>
<p>What will may be next:</p>
<ul><li>Plone customization</li><li>Refactor logo and design of this bare plone.<br /></li><li>Integration with cryptelium services</li><li>Cofee and tea<br /></li></ul>

          ]]>
        </content:encoded>        

        <dc:date>2008-08-03T20:41:38+02:00</dc:date>

        <dcterms:modified>2008-08-04T01:13:50+02:00</dcterms:modified>

        <dc:creator>kiorky</dc:creator>

        

        
            <dc:subject>main</dc:subject>
        

    </rss:item>

    

</rdf:RDF>
