saltstack-formulas / php-formula

http://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html
Other
57 stars 231 forks source link

fix(map.jinja): Fix useflags regex #205

Closed mgomersbach closed 4 years ago

mgomersbach commented 4 years ago

PR progress checklist (to be filled in by reviewers)


What type of PR is this?

Primary type

Secondary type

Does this PR introduce a BREAKING CHANGE?

No.

Related issues and/or pull requests

Describe the changes you're proposing

When using version inside useflag, the sls_block macro with ebuildpkg regex result in a range error. Replacing the version argument with uses seem to work as escapes don't really work there.

Pillar / config required to test the proposed changes

Current master branch has non working targets

Debug log showing how the proposed changes work

----------
          ID: php_install_imagick_dev-php-pecl-imagick
    Function: pkg.installed
        Name: dev-php/pecl-imagick
      Result: False
     Comment: An exception occurred in this state: Traceback (most recent call last):
                File "/usr/lib64/python3.6/site-packages/salt/state.py", line 1933, in call
                  **cdata['kwargs'])
                File "/usr/lib64/python3.6/site-packages/salt/loader.py", line 1951, in wrapper
                  return f(*args, **kwargs)
                File "/usr/lib64/python3.6/site-packages/salt/states/pkg.py", line 1563, in installed
                  **kwargs)
                File "/usr/lib64/python3.6/site-packages/salt/states/pkg.py", line 651, in _find_install_targets
                  for name, version in desired.items()
                File "/usr/lib64/python3.6/site-packages/salt/states/pkg.py", line 652, in <listcomp>
                  if not (name in cur_pkgs and (version is None or _fulfills_version_string(cur_pkgs[name], version)))
                File "/usr/lib64/python3.6/site-packages/salt/states/pkg.py", line 216, in _fulfills_version_string
                  fullfills_all = fullfills_all and _fulfills_version_spec([installed_version], operator, version_string, ignore_epoch=ignore_epoch)
                File "/usr/lib64/python3.6/site-packages/salt/states/pkg.py", line 234, in _fulfills_version_spec
                  if (oper == '==' and fnmatch.fnmatch(ver, desired_version)) \
                File "/usr/lib64/python3.6/fnmatch.py", line 36, in fnmatch
                  return fnmatchcase(name, pat)
                File "/usr/lib64/python3.6/fnmatch.py", line 70, in fnmatchcase
                  match = _compile_pattern(pat)
                File "/usr/lib64/python3.6/fnmatch.py", line 46, in _compile_pattern
                  return re.compile(res).match
                File "/usr/lib64/python3.6/re.py", line 233, in compile
                  return _compile(pattern, flags)
                File "/usr/lib64/python3.6/re.py", line 301, in _compile
                  p = sre_compile.compile(pattern, flags)
                File "/usr/lib64/python3.6/sre_compile.py", line 562, in compile
                  p = sre_parse.parse(p, flags)
                File "/usr/lib64/python3.6/sre_parse.py", line 855, in parse
                  p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
                File "/usr/lib64/python3.6/sre_parse.py", line 416, in _parse_sub
                  not nested and not items))
                File "/usr/lib64/python3.6/sre_parse.py", line 765, in _parse
                  p = _parse_sub(source, state, sub_verbose, nested + 1)
                File "/usr/lib64/python3.6/sre_parse.py", line 416, in _parse_sub
                  not nested and not items))
                File "/usr/lib64/python3.6/sre_parse.py", line 553, in _parse
                  raise source.error(msg, len(this) + 1 + len(that))
              sre_constants.error: bad character range 7-3 at position 20
     Started: 14:28:26.927898
    Duration: 6321.149 ms
     Changes:   

Documentation checklist

Testing checklist

Additional context

Before it got moved from ng namespace, I created a lot of this mess.

myii commented 4 years ago

Sorry for the delay @mgomersbach. We don't have a suitable test environment for Gentoo and it doesn't seem easy to achieve, either.

So this continues from #156. I understand the need for the changes (i.e. version) but I'm not quite sure what the changes achieve.

mgomersbach commented 4 years ago

Sorry for the delay @mgomersbach. We don't have a suitable test environment for Gentoo and it doesn't seem easy to achieve, either.

I know, Gentoo is not high profile, so any support at all is greatly appreciated.

So this continues from #156. I understand the need for the changes (i.e. version) but I'm not quite sure what the changes achieve.

* Of course, it shouldn't be referring to `version` but what exactly is `uses`?

"uses" is from the ebuildpkg module.

Most features listed here come from compiles the package "dev-lang/php" with a useflag. And external ones have useflags with versions in it. A dash between numbers in the useflag (like: [php_targets_php7-3] ) generates a error like in the error report. Somewhere it gets interpreted as regex syntax, and was not able to generate the right escape sequence around it.

myii commented 4 years ago

Merged, thanks for the contribution @mgomersbach.

I know, Gentoo is not high profile, so any support at all is greatly appreciated.

Not a problem, this PR has stimulated some discussion about how to get tests running on Gentoo. It would be great if you could bring any of your suggestions, such as how to install a specific version of Salt:

"uses" is from the ebuildpkg module.

Great, that's exactly what I needed to know. At least we have some reference to that now in this discussion.

saltstack-formulas-travis commented 4 years ago

:tada: This PR is included in version 1.2.3 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket: