Issue #19128 has been updated by Matthaus Owens.
Released in Puppet 3.2.0-rc1 ---------------------------------------- Bug #19128: "puppet module build" doesn't escape PSON correctly https://projects.puppetlabs.com/issues/19128#change-89565 * Author: Pierre Carrier * Status: Closed * Priority: High * Assignee: Ryan Coleman * Category: module tool * Target version: 3.2.0 * Affected Puppet version: 3.1.0 * Keywords: * Branch: https://github.com/puppetlabs/puppet/pull/1589 ---------------------------------------- Erik Dalén's modules are incompatible with ruby 1.9.3p327 and puppet 3.1.0 because he's Swedish. As soon as I specify `[main] modulepath = /Users/pierre/repos/spotify-puppet/modules in ~/.puppet/puppet.conf`, Puppet gets unhappy: % puppet help /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/pure/parser.rb:154:in `rescue in parse_string': Caught Encoding::CompatibilityError: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string) (PSON::GeneratorError) from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/pure/parser.rb:133:in `parse_string' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/pure/parser.rb:229:in `parse_object' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/pure/parser.rb:98:in `parse' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/common.rb:133:in `parse' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/module.rb:55:in `has_metadata?' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/module.rb:45:in `initialize' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:141:in `new' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:141:in `block (2 levels) in <class:Environment>' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:139:in `collect' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:139:in `block in <class:Environment>' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/cacher.rb:60:in `block in cached_value' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/cacher.rb:58:in `cached_value' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/cacher.rb:31:in `block in cached_attr' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:96:in `each_plugin_directory' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/command_line.rb:124:in `run' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/command_line.rb:86:in `execute' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/bin/puppet:4:in `<top (required)>' from /Users/pierre/.gem/ruby/1.9.3/bin/puppet:23:in `load' from /Users/pierre/.gem/ruby/1.9.3/bin/puppet:23:in `<main>' zsh: exit 1 puppet help/Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/pure/parser.rb:154:in `rescue in parse_string': Caught Encoding::CompatibilityError: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string) (PSON::GeneratorError) from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/pure/parser.rb:133:in `parse_string' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/pure/parser.rb:229:in `parse_object' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/pure/parser.rb:98:in `parse' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/external/pson/common.rb:133:in `parse' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/module.rb:55:in `has_metadata?' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/module.rb:45:in `initialize' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:141:in `new' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:141:in `block (2 levels) in <class:Environment>' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:139:in `collect' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:139:in `block in <class:Environment>' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/cacher.rb:60:in `block in cached_value' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/cacher.rb:58:in `cached_value' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/cacher.rb:31:in `block in cached_attr' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/node/environment.rb:96:in `each_plugin_directory' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/command_line.rb:124:in `run' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/lib/puppet/util/command_line.rb:86:in `execute' from /Users/pierre/.rubies/1.9.3-p327/lib/ruby/gems/1.9.1/gems/puppet-3.1.0/bin/puppet:4:in `<top (required)>' from /Users/pierre/.gem/ruby/1.9.3/bin/puppet:23:in `load' from /Users/pierre/.gem/ruby/1.9.3/bin/puppet:23:in `<main>' zsh: exit 1 puppet help I decided not to investigate the PSON code as it's past bedtime. But from my understanding, the PSON parser.rb expects `\u????` sequences for non-ASCII characters and rejects inline Unicode characters. The PSON generator.rb seems supposed to take care of the escaping, so his `Modulefile`s are OK. I reproduced the issue by regenerating `metadata.json` with my versions, ruby 1.9.3p327 and puppet 3.1.0 (GNU grep needed for this): puppet-puppetdbquery % puppet module buildNotice: Building /Users/pierre/repos/puppet-puppetdbquery for release Module built: /Users/pierre/repos/puppet-puppetdbquery/pkg/dalen-puppetdbquery-0.1.0.tar.gz % tar xfO pkg/dalen-puppetdbquery-0.1.0.tar.gz dalen-puppetdbquery-0.1.0/metadata.json|grep -P '[\x80-\xff]' "author": "Erik Dalén <[email protected]>", -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://projects.puppetlabs.com/my/account -- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/puppet-bugs?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
