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

yarn fails with "undefined exported symbol" #82

Open
wolfmanstout opened this issue Jun 10, 2024 · 11 comments · May be fixed by #86
Open

yarn fails with "undefined exported symbol" #82

wolfmanstout opened this issue Jun 10, 2024 · 11 comments · May be fixed by #86

Comments

@wolfmanstout
Copy link

I need to bump the kotlin tree-sitter version (I'm working on adding support to Cursorless). I just cloned this for the first time, along with a fresh clone of emscripten (which I did activate) and I'm getting the following build failure:

~/projects/vscode-parse-tree$ yarn
yarn install v1.22.22
$ make web-tree-sitter
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 2902k    0 2902k    0     0  3340k      0 --:--:-- --:--:-- --:--:-- 3340k
emcc: error: undefined exported symbol: "__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm" [-Wundefined] [-Werror]
make: *** [Makefile:59: vendor/web-tree-sitter/README.md] Error 1
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

I'm doing all this on WSL with an LTS installation of node/npm and a fresh installation of yarn. I see a similar closed bug but I'm not sure what the fix is: #30

@wolfmanstout
Copy link
Author

Some more investigation indicates that I can reproduce this within a separate tree-sitter clone with ./script/build-wasm, but only if I check out the commit listed in in tree-sitter-version. tree-sitter builds fine at HEAD.

If I update tree-sitter-version here, I hit issues later in the build:

gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.<anonymous> (/home/jwstout/.nvm/versions/node/v20.14.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
gyp ERR! System Linux 5.15.146.1-microsoft-standard-WSL2
gyp ERR! command "/home/jwstout/.nvm/versions/node/v20.14.0/bin/node" "/home/jwstout/.nvm/versions/node/v20.14.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/jwstout/projects/vscode-parse-tree/node_modules/tree-sitter-clojure

@wolfmanstout
Copy link
Author

I updated to the latest Ubuntu LTS (22.04.04, Jammy) on WSL, which includes a later Python version (3.10), and the build completes, but only if I update tree-sitter-version (otherwise it fails with the originally reported error). So I guess we could bump the tree-sitter-version and close this out? Not sure what testing needs to be done.

@wolfmanstout
Copy link
Author

I tried bumping tree-sitter-version to HEAD and Cursorless failed a bunch of tests. I did a little more research to understand why I wasn't able to compile with the current tree-sitter-version. It turns out that each tree-sitter version is only guaranteed to work with a specific emscripten version. If you look at the tree-sitter repository at the pinned version, you can see that version is currently 3.1.37:
https://github.com/tree-sitter/tree-sitter/blob/6bbb50bef8249e6460e7d69e42cc8146622fa4fd/cli/emscripten-version#L1C1-L1C7

Hence, what I did was run:

emsdk install 3.1.37
emsdk activate 3.1.37

And now it builds.

I'm not sure what you want to do with this bug. At the very least it seems like a good idea to update the README to explain to users how to find the right emscripten version and activate it.

@pokey
Copy link
Member

pokey commented Jun 12, 2024

I'm doing the upgrade now; been a battle, but I'm pretty close. Stay tuned

@pokey
Copy link
Member

pokey commented Jun 12, 2024

(see #84)

@wolfmanstout
Copy link
Author

Thanks! Still would be good to document the emsdk stuff better so future contributors don't run into the same problems I did. I can send a PR to update the readme if you want.

@pokey
Copy link
Member

pokey commented Jun 13, 2024

That would be awesome

@pokey
Copy link
Member

pokey commented Jun 14, 2024

ok we're now on tree-sitter version tree-sitter/tree-sitter@604d38e as of vscode-parse-tree version 0.31.0

@pokey
Copy link
Member

pokey commented Jun 17, 2024

fwiw looks like that emscripten version file has moved. Here's where it is for the version of tree-sitter we're currently on https://github.com/tree-sitter/tree-sitter/blob/604d38e6b327ed33877e1285680b505b9484a71c/cli/loader/emscripten-version

also just wanted to confirm whether this issue is fixed for you?

@wolfmanstout
Copy link
Author

Thanks for the heads up about the file move. Yes this issue is fixed for me. Feel free to close now or after I send the docs improvement when I find time.

@pokey
Copy link
Member

pokey commented Jun 17, 2024

Great. Sure, I'll leave it open until docs fix lands

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 a pull request may close this issue.

2 participants