On Thu, May 17, 2018 at 01:16:17AM +0300, Niko Tyni wrote:
> On Sun, May 13, 2018 at 04:52:06PM +0200, gregor herrmann wrote:
> > Source: libmarc-transform-perl
> > Version: 0.003006-2
> > Severity: serious
> > Tags: upstream buster sid
> > Justification: fails to build from source
> 
> > libmarc-transform-perl's testsuite fails, both during build and
> > autopkgtest, with libyaml-perl >= 1.25-1:
> > 
> > 
> >     perl Build test --verbose 1
> > Hexadecimal number > 0xffffffff non-portable at (eval 28) line 1.
> > Number found where operator expected at (eval 29) line 8, near ""I want) 
> > {$boolcond=1;$boolcondint=1; eval{ create("605"
> >     (Missing operator before 605?)
> 
> This regressed with
> 
>  
> https://github.com/ingydotnet/yaml-pm/commit/a2231746743e9bb2939c063ab440ac658c226c4e

It looks to me like this is something that needs to be fixed in
MARC::Transform. It is about YAML quoting: documents like

---
foo: bar "foobar #"

get parsed differently with the new YAML.pm than the old one.
AFAICS MARC::Transform uses the hash sign as an escape character
and relies on the old behaviour.

  # old
  % perl -MYAML=Load -le 'print Load(qq(---\nfoo: bar "foobar #"))->{foo}'
  bar "foobar #"

  # new
  % perl -MYAML=Load -le 'print Load(qq(---\nfoo: bar "foobar #"))->{foo}'
  bar "foobar

The new behaviour seems to be consistent with YAML::XS, YAML::Tiny and
yaml.py in python3.

  % perl -MYAML::XS=Load -le 'print Load(qq(---\nfoo: bar "foobar #"))->{foo}'
  bar "foobar

  % perl -MYAML::Tiny=Load -le 'print Load(qq(---\nfoo: bar "foobar #"))->{foo}'
  bar "foobar

  % python3
  Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
  [GCC 7.3.0] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import yaml
  >>> print(yaml.load('---\nfoo: bar "foobar #"')['foo'])
  bar "foobar

-- 
Niko Tyni   nt...@debian.org

Reply via email to