Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix --user arg when using empy 4 #276

Merged
merged 1 commit into from
Mar 29, 2024
Merged

Conversation

garyservin
Copy link
Contributor

Empy 4.1 added support for extension markup @((...)), which makes rocker fail when using passing the --user argument as the snippet uses @(( in some places.

Without these changes, we get this traceback when using empy 4.1

(rocker_venv) ➜  rocker_venv pip install rocker 
Requirement already satisfied: rocker in ./lib/python3.10/site-packages (0.2.15)
Requirement already satisfied: urllib3 in ./lib/python3.10/site-packages (from rocker) (2.2.1)
Requirement already satisfied: pexpect in ./lib/python3.10/site-packages (from rocker) (4.9.0)
Requirement already satisfied: packaging in ./lib/python3.10/site-packages (from rocker) (24.0)
Requirement already satisfied: docker in ./lib/python3.10/site-packages (from rocker) (7.0.0)
Requirement already satisfied: empy in ./lib/python3.10/site-packages (from rocker) (4.1)
Requirement already satisfied: requests>=2.26.0 in ./lib/python3.10/site-packages (from docker->rocker) (2.31.0)
Requirement already satisfied: ptyprocess>=0.5 in ./lib/python3.10/site-packages (from pexpect->rocker) (0.7.0)
Requirement already satisfied: idna<4,>=2.5 in ./lib/python3.10/site-packages (from requests>=2.26.0->docker->rocker) (3.6)
Requirement already satisfied: charset-normalizer<4,>=2 in ./lib/python3.10/site-packages (from requests>=2.26.0->docker->rocker) (3.3.2)
Requirement already satisfied: certifi>=2017.4.17 in ./lib/python3.10/site-packages (from requests>=2.26.0->docker->rocker) (2024.2.2)
(rocker_venv) ➜  rocker_venv rocker --user ubuntu:22.04
Extension volume doesn't support default arguments. Please extend it.
Active extensions ['user']
Traceback (most recent call last):
  File "/home/gary/rocker_venv/bin/rocker", line 8, in <module>
    sys.exit(main())
  File "/home/gary/rocker_venv/lib/python3.10/site-packages/rocker/cli.py", line 67, in main
    dig = DockerImageGenerator(active_extensions, args_dict, base_image)
  File "/home/gary/rocker_venv/lib/python3.10/site-packages/rocker/core.py", line 303, in __init__
    self.dockerfile = generate_dockerfile(active_extensions, self.cliargs, base_image)
  File "/home/gary/rocker_venv/lib/python3.10/site-packages/rocker/core.py", line 449, in generate_dockerfile
    dockerfile_str += el.get_snippet(args_dict) + '\n'
  File "/home/gary/rocker_venv/lib/python3.10/site-packages/rocker/extensions.py", line 321, in get_snippet
    return empy_expand(snippet, substitutions)
  File "/home/gary/rocker_venv/lib/python3.10/site-packages/rocker/em.py", line 23, in empy_expand
    return em.expand(template, globals=substitution_variables)
  File "/home/gary/rocker_venv/bin/em.py", line 5961, in expand
    result = interp.expand(data, locals, name, dispatcher=None)
  File "/home/gary/rocker_venv/bin/em.py", line 4681, in expand
    self.string(data, locals, dispatcher)
  File "/home/gary/rocker_venv/bin/em.py", line 4830, in string
    while not self.safe(scanner, True, locals, dispatcher):
  File "/home/gary/rocker_venv/bin/em.py", line 4862, in safe
    if dispatcher():
  File "/home/gary/rocker_venv/bin/em.py", line 4843, in safe
    return self.parse(scanner, locals)
  File "/home/gary/rocker_venv/bin/em.py", line 4870, in parse
    token = scanner.one()
  File "/home/gary/rocker_venv/bin/em.py", line 3999, in one
    token.scan(self)
  File "/home/gary/rocker_venv/bin/em.py", line 2648, in scan
    self.subscan(scanner, self.type)
  File "/home/gary/rocker_venv/bin/em.py", line 2664, in subscan
    token = scanner.one()
  File "/home/gary/rocker_venv/bin/em.py", line 3999, in one
    token.scan(self)
  File "/home/gary/rocker_venv/bin/em.py", line 2648, in scan
    self.subscan(scanner, self.type)
  File "/home/gary/rocker_venv/bin/em.py", line 2664, in subscan
    token = scanner.one()
  File "/home/gary/rocker_venv/bin/em.py", line 3995, in one
    raise ParseError("unknown markup sequence: `%s%s`%s" % (self.config.prefix, first, self.factory.addendum(first)))
em.ParseError: unknown markup sequence: `@((`; extension markup `@((...))` invoked with no installed extension

Empy 4.1 added support for extension markup @((...)), which makes rocker
fail when using passing the `--user` argument as the snippet uses @(( in
some places.
@garyservin garyservin requested a review from tfoote as a code owner March 29, 2024 04:20
Copy link
Collaborator

@tfoote tfoote left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fix. This change in API is at least moderately easy to work around.

@tfoote tfoote merged commit 4078d22 into osrf:main Mar 29, 2024
4 checks passed
@garyservin garyservin deleted the fix-user-empy4 branch April 16, 2024 03:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants