• Kirill Smelkov's avatar
    Fix regression when updating a part with several unicode paths in __buildout_installed__ · 5af11468
    Kirill Smelkov authored
    Commit 57f3dd73 (Write .installed.cfg only once, in safe way and only if
    there's any change) changed the way how __buildout_installed__ is read
    and then written back on part upgrade.
    
    In particular, before it was always:
    
        on install:
        - get [] of installed parts from recipe.install()
    
        on update:
        - read __buildout_installed__
        - split it by \n
    
        on write back for both:
        - join by \n
        - write to __buildout_installed__
    
    but after that patch on-update stopped doing that split by \n and on
    writeback the code checks for installed_files to be string and does not
    split it if it is.
    
    Except the check does not work for unicode strings. Look e.g. what
    currently happens with fluentd:
    
    After first install it is
    
    __buildout_installed__ =
    !py!u'/srv/slapgrid/slappart6/srv/runner/software/73a7bf66fea06c703a70faaced67dabf/parts/fluentd\n/srv/slapgrid/slappart6/srv/runner/software/73a7bf66fea06c703a70faaced67dabf/bin/fluent-cat\n/srv/slapgrid/slappart6/srv/runner/software/73a7bf66fea06c703a70faaced67dabf/bin/fluent-gem\n/srv/slapgrid/slappart6/srv/runner/software/73a7bf66fea06c703a70faaced67dabf/bin/fluent-debug\n/srv/slapgrid/slappart6/srv/runner/software/73a7bf66fea06c703a70faaced67dabf/bin/fluentd\n/srv/slapgrid/slappart6/srv/runner/software/73a7bf66fea06c703a70faaced67dabf/bin/gem'
    
    but after update it becomes
    
    __buildout_installed__ =
    !py!u'/\ns\nr\nv\n/\ns\nl\na\np\ng\nr\ni\nd\n/\ns\nl\na\np\np\na\nr\nt\n6\n/\ns\nr\nv\n/\nr\nu\nn\nn\ne\nr\n/\ns\no\nf\nt\nw\na\nr\ne\n/\n7\n3\na\n7\nb\nf\n6\n6\nf\ne\na\n0\n6\nc\n7\n0\n3\na\n7\n0\nf\na\na\nc\ne\nd\n6\n7\nd\na\nb\nf\n/\np\na\nr\nt\ns\n/\nf\nl\nu\ne\nn\nt\nd\n\n\n/\ns\nr\nv\n/\ns\nl\na\np\ng\nr\ni\nd\n/\ns\nl\na\np\np\na\nr\nt\n6\n/\ns\nr\nv\n/\nr\nu\nn\nn\ne\nr\n/\ns\no\nf\nt\nw\na\nr\ne\n/\n7\n3\na\n7\nb\nf\n6\n6\nf\ne\na\n0\n6\nc\n7\n0\n3\na\n7\n0\nf\na\na\nc\ne\nd\n6\n7\nd\na\nb\nf\n/\nb\ni\nn\n/\nf\nl\nu\ne\nn\nt\n-\nc\na\nt\n\n\n/\ns\nr\nv\n/\ns\nl\na\np\ng\nr\ni\nd\n/\ns\nl\na\np\np\na\nr\nt\n6\n/\ns\nr\nv\n/\nr\nu\nn\nn\ne\nr\n/\ns\no\nf\nt\nw\na\nr\ne\n/\n7\n3\na\n7\nb\nf\n6\n6\nf\ne\na\n0\n6\nc\n7\n0\n3\na\n7\n0\nf\na\na\nc\ne\nd\n6\n7\nd\na\nb\nf\n/\nb\ni\nn\n/\nf\nl\nu\ne\nn\nt\n-\ng\ne\nm\n\n\n/\ns\nr\nv\n/\ns\nl\na\np\ng\nr\ni\nd\n/\ns\nl\na\np\np\na\nr\nt\n6\n/\ns\nr\nv\n/\nr\nu\nn\nn\ne\nr\n/\ns\no\nf\nt\nw\na\nr\ne\n/\n7\n3\na\n7\nb\nf\n6\n6\nf\ne\na\n0\n6\nc\n7\n0\n3\na\n7\n0\nf\na\na\nc\ne\nd\n6\n7\nd\na\nb\nf\n/\nb\ni\nn\n/\nf\nl\nu\ne\nn\nt\n-\nd\ne\nb\nu\ng\n\n\n/\ns\nr\nv\n/\ns\nl\na\np\ng\nr\ni\nd\n/\ns\nl\na\np\np\na\nr\nt\n6\n/\ns\nr\nv\n/\nr\nu\nn\nn\ne\nr\n/\ns\no\nf\nt\nw\na\nr\ne\n/\n7\n3\na\n7\nb\nf\n6\n6\nf\ne\na\n0\n6\nc\n7\n0\n3\na\n7\n0\nf\na\na\nc\ne\nd\n6\n7\nd\na\nb\nf\n/\nb\ni\nn\n/\nf\nl\nu\ne\nn\nt\nd\n\n\n/\ns\nr\nv\n/\ns\nl\na\np\ng\nr\ni\nd\n/\ns\nl\na\np\np\na\nr\nt\n6\n/\ns\nr\nv\n/\nr\nu\nn\nn\ne\nr\n/\ns\no\nf\nt\nw\na\nr\ne\n/\n7\n3\na\n7\nb\nf\n6\n6\nf\ne\na\n0\n6\nc\n7\n0\n3\na\n7\n0\nf\na\na\nc\ne\nd\n6\n7\nd\na\nb\nf\n/\nb\ni\nn\n/\ng\ne\nm'
    
    Correct the check to take unicode strings into account.
    
    /cc @jm
    /reviewed-by @kazuhiko
    5af11468
Name
Last commit
Last update
bootstrap Loading commit data...
doc Loading commit data...
slapos.extension.strip_ Loading commit data...
specifications Loading commit data...
src/zc Loading commit data...
z3c.recipe.scripts_ Loading commit data...
zc.recipe.egg_ Loading commit data...
.bzrignore Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
00.REPOSITORY.README.txt Loading commit data...
CHANGES.SlapOS.txt Loading commit data...
CHANGES.txt Loading commit data...
COPYRIGHT.txt Loading commit data...
DEVELOPERS.txt Loading commit data...
LICENSE.txt Loading commit data...
MANIFEST.in Loading commit data...
Makefile Loading commit data...
README.txt Loading commit data...
SYSTEM_PYTHON_HELP.txt Loading commit data...
buildout.cfg Loading commit data...
dev.py Loading commit data...
networkcached.cfg Loading commit data...
setup.py Loading commit data...
test_all_pythons.cfg Loading commit data...
todo.txt Loading commit data...