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

[bug] Cannot build a library in a directory containing two parsers. #189

Closed
Freed-Wu opened this issue Feb 17, 2024 · 5 comments
Closed

Comments

@Freed-Wu
Copy link

https://github.com/MichaHoffmann/tree-sitter-hcl has two parsers: hcl and terraform.

>>> Language.build_library("/dev/shm/a.so", ["vendor/tree-sitter-hcl", "vendor/tree-sitter-hcl/dialects/terraform"])
/nix/store/idiaraknw071d20nlqp49s18gbvw4wa0-binutils-2.40/bin/ld: /tmp/tmpl0bxz4f_tree_sitter_language/vendor/tree-sitter-hcl/dialects/terraform/src/scanner.o: in function `string_new':
scanner.c:(.text+0x0): multiple definition of `string_new'; /tmp/tmpl0bxz4f_tree_sitter_language/vendor/tree-sitter-hcl/src/scanner.o:scanner.c:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/wzy/.local/lib/python3.11/site-packages/tree_sitter/__init__.py", line 118, in build_library
    compiler.link_shared_object(
  File "/nix/store/3rv445i5nn55xlkvmk2ai7spv0vrn0c9-python3-3.11.6-env/lib/python3.11/site-packages/setuptools/_distutils/ccompiler.py", line 752, in link_shared_object
    self.link(
  File "/nix/store/3rv445i5nn55xlkvmk2ai7spv0vrn0c9-python3-3.11.6-env/lib/python3.11/site-packages/setuptools/_distutils/unixccompiler.py", line 277, in link
    raise LinkError(msg)
distutils.errors.LinkError: command '/run/current-system/sw/bin/cc' failed with exit code 1
@Freed-Wu
Copy link
Author

Similar bug for https://github.com/postsolar/tree-sitter-purescript and https://github.com/tree-sitter/tree-sitter-haskell.

>>> Language.build_library("/dev/shm/a.so", ["vendor/tree-sitter-purescript", "vendor/tree-sitter-haskell"])
/nix/store/idiaraknw071d20nlqp49s18gbvw4wa0-binutils-2.40/bin/ld: /tmp/tmprbdxway9tree_sitter_language/vendor/tree-sitter-haskell/src/scanner.o: in function `state_new':
scanner.c:(.text+0x1906): multiple definition of `state_new'; /tmp/tmprbdxway9tree_sitter_language/vendor/tree-sitter-purescript/src/scanner.o:scanner.c:(.text+0x1906): first defined here
collect2: error: ld returned 1 exit status
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/wzy/.local/lib/python3.11/site-packages/tree_sitter/__init__.py", line 118, in build_library
    compiler.link_shared_object(
  File "/nix/store/3rv445i5nn55xlkvmk2ai7spv0vrn0c9-python3-3.11.6-env/lib/python3.11/site-packages/setuptools/_distutils/ccompiler.py", line 752, in link_shared_object
    self.link(
  File "/nix/store/3rv445i5nn55xlkvmk2ai7spv0vrn0c9-python3-3.11.6-env/lib/python3.11/site-packages/setuptools/_distutils/unixccompiler.py", line 277, in link
    raise LinkError(msg)
distutils.errors.LinkError: command '/run/current-system/sw/bin/cc' failed with exit code 1

@milahu
Copy link

milahu commented Feb 20, 2024

these are bugs in the parsers

see also
tree-sitter/tree-sitter-html#63
tree-sitter/tree-sitter-html#64

@Freed-Wu
Copy link
Author

Yes, grantjenks/py-tree-sitter-languages@e38ce31 disable some languages.

disabled_langs = [
    "vue",  # html, angular
    "angular",  # html
    "purescript",  # haskell, unison
    "unison",  # haskell
    "svelte",  # org
    "terraform",  # hcl
]

When two parsers define same definitions, the symbols should have a namespace-like prefix.

@milahu
Copy link

milahu commented Feb 20, 2024

@Freed-Wu

re: NixOS/nixpkgs#263630

milahu/nur-packages@48f3c13

this works with all grammars except svelte and vue

@milahu
Copy link

milahu commented Feb 20, 2024

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

No branches or pull requests

2 participants