antlr4-tools
antlr4-tools copied to clipboard
antlr4 isn't robust with slow links.
I've noticed this on my machines and now over in github actions build for grammars-v4. When the link is bad, the antlr4
tool fails.
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/antlr4_tool_runner.py", line 26, in latest_version
with urlopen(f"https://search.maven.org/solrsearch/select?q=a:antlr4-master+g:org.antlr") as response:
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 525, in open
response = meth(req, response)
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 634, in http_response
response = self.parent.error(
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 563, in error
return self._call_chain(*args)
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 496, in _call_chain
result = func(*args)
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/urllib/request.py", line 643, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 504: Gateway Time-out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.10.11/x64/bin/antlr4", line 8, in <module>
sys.exit(tool())
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/antlr4_tool_runner.py", line 131, in tool
args, version = get_version_arg(args)
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/antlr4_tool_runner.py", line 123, in get_version_arg
version = latest_version()
File "/opt/hostedtoolcache/Python/3.10.11/x64/lib/python3.10/site-packages/antlr4_tool_runner.py", line 36, in latest_version
version_dirs = list(filter(lambda directory: re.match(r"[0-9]+\.[0-9]+\.[0-9]+", directory), os.listdir(mvn_repo)))
FileNotFoundError: [Errno 2] No such file or directory: '/home/runner/.m2/repository/org/antlr/antlr4'
Could not get latest version number, attempting to fall back to latest downloaded version...
Build failed
Build completed, time: 00:01:02.4911135
./fortran/fortran90 failed
finished in 00:01:02.5069344
Write-Error: /home/runner/work/grammars-v4/grammars-v4/_scripts/test.ps1:384
Line |
384 | Test-AllGrammars -Target $target -PreviousCommit $pc -CurrentComm …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Failed grammars: ./fortran/fortran90
This is happening because it is trying to get the latest version of the Antlr tool. https://github.com/antlr/antlr4-tools/blob/787e7a500e56d17566086b5d5c04eeea84a387e8/antlr4_tool_runner.py#L26
I can program around this by looking at the output of the tool and grep'ing for some string that says the link is bad. But, the better way would be to loop over the call (maybe 5 times) and catching link errors.