Charm compose

Marco Ceppi marco.ceppi at canonical.com
Wed Oct 7 13:37:01 UTC 2015


Hi Merlijn,

Thanks for taking some time to test our newest feature, charm layers! I
went ahead and tried to duplicate your conditions and ran
http://paste.ubuntu.com/12704459/ which seemed to work for me. I'd like to
get down to the bottom of this, could you let me know what version of
Ubuntu you're running and the output of `pip --version`? Also, as a note
going forward the `charm compose` command has been renamed `charm generate`
and the former will be going away in the next few charm tool releases.

Thanks!
Marco Ceppi

On Wed, Oct 7, 2015 at 4:42 AM Merlijn Sebrechts <
merlijn.sebrechts at gmail.com> wrote:

> Looking through the source code of composer, it seems that if you specify
> "layer:xyz", it tries to download that layer. Changing tengu
> composer.yaml to "includes: ['juju']" fixes this issue. Now I get a new
> error:
>
> *Traceback (most recent call last):*
> *  File "/usr/bin/charm-compose", line 9, in <module>*
> *    load_entry_point('charm-tools==1.7.1', 'console_scripts',
> 'charm-compose')()*
>
> *  File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
> line 473, in main*
> *    composer()*
> *  File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
> line 398, in __call__*
> *    self.generate()*
> *  File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
> line 364, in generate*
> *    self.exec_plan(self.plan, self.layers)*
> *  File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
> line 342, in exec_plan*
> *    tactic()*
> *  File "/usr/lib/python2.7/dist-packages/charmtools/compose/tactics.py",
> line 410, in __call__*
> *    spec)).throw_on_error()()*
> *  File "/usr/lib/python2.7/dist-packages/charmtools/utils.py", line 192,
> in __call__*
> *    result.throw_on_error()*
> *  File "/usr/lib/python2.7/dist-packages/charmtools/utils.py", line 149,
> in throw_on_error*
> *    self.exit_code, self.command, output=self.output)*
> *subprocess.CalledProcessError: Command '('pip', 'install', '-t',
> Path(u'/tmp/tmpUUEfVc'), u'charms.reactive>=0.1.0,<2.0.0')' returned
> non-zero exit status 1*
>
>
>
> Running this command manually shows a more informative error:
>
> *merlijn at travers:~/test/piptest$ pip install -t `pwd` "charms.reactive"*
> *Downloading/unpacking charms.reactive*
> *  Downloading charms.reactive-0.3.4.tar.gz*
> *  Running setup.py (path:/tmp/pip-build-BZsLa7/charms.reactive/setup.py)
> egg_info for package charms.reactive*
>
> *Downloading/unpacking six (from charms.reactive)*
> *  Downloading six-1.10.0-py2.py3-none-any.whl*
> *Downloading/unpacking pyaml (from charms.reactive)*
> *  Downloading pyaml-15.8.2.tar.gz*
> *  Running setup.py (path:/tmp/pip-build-BZsLa7/pyaml/setup.py) egg_info
> for package pyaml*
>
> *Downloading/unpacking charmhelpers>=0.5.0 (from charms.reactive)*
> *  Downloading charmhelpers-0.5.0.tar.gz (121kB): 121kB downloaded*
> *  Running setup.py (path:/tmp/pip-build-BZsLa7/charmhelpers/setup.py)
> egg_info for package charmhelpers*
>
> *Downloading/unpacking PyYAML (from pyaml->charms.reactive)*
> *  Downloading PyYAML-3.11.tar.gz (248kB): 248kB downloaded*
> *  Running setup.py (path:/tmp/pip-build-BZsLa7/PyYAML/setup.py) egg_info
> for package PyYAML*
>
> *Downloading/unpacking netaddr (from charmhelpers>=0.5.0->charms.reactive)*
> *  Downloading netaddr-0.7.18-py2.py3-none-any.whl (1.5MB): 1.5MB
> downloaded*
> *Downloading/unpacking Tempita (from charmhelpers>=0.5.0->charms.reactive)*
> *  Downloading Tempita-0.5.2.tar.gz*
> *  Running setup.py (path:/tmp/pip-build-BZsLa7/Tempita/setup.py) egg_info
> for package Tempita*
>
> *Downloading/unpacking Jinja2 (from charmhelpers>=0.5.0->charms.reactive)*
> *  Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB): 263kB downloaded*
> *Downloading/unpacking MarkupSafe (from
> Jinja2->charmhelpers>=0.5.0->charms.reactive)*
> *  Downloading MarkupSafe-0.23.tar.gz*
> *  Running setup.py (path:/tmp/pip-build-BZsLa7/MarkupSafe/setup.py)
> egg_info for package MarkupSafe*
>
> *Installing collected packages: charms.reactive, six, pyaml, charmhelpers,
> PyYAML, netaddr, Tempita, Jinja2, MarkupSafe*
> *  Running setup.py install for charms.reactive*
> *    error: can't combine user with prefix, exec_prefix/home, or
> install_(plat)base*
> *    Complete output from command /usr/bin/python -c "import setuptools,
> tokenize;__file__='/tmp/pip-build-BZsLa7/charms.reactive/setup.py';exec(compile(getattr(tokenize,
> 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))"
> install --record /tmp/pip-r65pbi-record/install-record.txt
> --single-version-externally-managed --compile --user --home=/tmp/tmpl0SSvH:*
> *    running install*
>
> *error: can't combine user with prefix, exec_prefix/home, or
> install_(plat)base*
>
> *----------------------------------------*
> *Cleaning up...*
> *Command /usr/bin/python -c "import setuptools,
> tokenize;__file__='/tmp/pip-build-BZsLa7/charms.reactive/setup.py';exec(compile(getattr(tokenize,
> 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))"
> install --record /tmp/pip-r65pbi-record/install-record.txt
> --single-version-externally-managed --compile --user --home=/tmp/tmpl0SSvH
> failed with error code 1 in /tmp/pip-build-BZsLa7/charms.reactive*
> *Storing debug log for failure in /home/merlijn/.pip/pip.log*
>
>
>
>
> I'm stuck. Any idea how to continue?
>
>
>
> 2015-10-07 9:38 GMT+02:00 Merlijn Sebrechts <merlijn.sebrechts at gmail.com>:
>
>> Hi all!
>>
>>
>> Since I have a few Charms that will install Juju, I'd like to put the
>> "install Juju" part in a layer, and use Charm compose to avoid duplication
>> of code.
>>
>> I have encountered a few problems trying to use Charm compose. This is my
>> directory structure:
>>
>> JUJU_REPOSITORY
>>     |-----trusty
>>     |-----layers
>>
>> ├── juju
>> │   ├── composer.yaml
>> │   ├── config.yaml
>> │   ├── metadata.yaml
>> │   ├── reactive
>> │   │   └── juju.py
>> │   ├── README.md
>> │   └── templates
>> │       ├── environments.yaml
>> │       └── juju.sh
>> └── tengu
>>     ├── composer.yaml
>>     ├── reactive
>>     │   └── tengu.py
>>     └── templates
>>
>> tengu composer.yaml: includes: ['layer:juju']
>> juju composer.yaml: includes: ['layer:basic']
>>
>> When I run "charm compose tengu" I get the following error:
>>
>>
>> Traceback (most recent call last):
>>   File "/usr/bin/charm-compose", line 9, in <module>
>>     load_entry_point('charm-tools==1.7.1', 'console_scripts',
>> 'charm-compose')()
>>   File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
>> line 468, in main
>>     composer()
>>   File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
>> line 393, in __call__
>>     self.generate()
>>   File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
>> line 357, in generate
>>     layers = self.fetch()
>>   File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
>> line 193, in fetch
>>     return self.fetch_deps(layer)
>>   File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
>> line 197, in fetch_deps
>>     self.fetch_dep(layer, results)
>>   File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
>> line 234, in fetch_dep
>>     base_layer = Layer(base, self.deps).fetch()
>>   File "/usr/lib/python2.7/dist-packages/charmtools/compose/__init__.py",
>> line 81, in fetch
>>     self.directory = path(fetcher.fetch(self.target_repo))
>>   File "/usr/lib/python2.7/dist-packages/charmtools/compose/fetchers.py",
>> line 85, in fetch
>>     path(res).rename(target)
>>   File "/usr/lib/python2.7/dist-packages/path.py", line 1148, in rename
>>     os.rename(self, new)
>> OSError: [Errno 2] No such file or directory
>>
>>
>> What could be going wrong here?
>>
>>
>>
>>
>> Kind regards
>> Merlijn
>>
>
> --
> Juju mailing list
> Juju at lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/juju
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju/attachments/20151007/a5e3d3c6/attachment.html>


More information about the Juju mailing list