When:
Requirements:
How:
git checkout [COMMIT] ; git tag [VERSION] ; git push --tags.When:
Requirements:
runner.py), other, browser, sockets, sanity, binaryen*. (Not all of those are run on all the bots.)How:
incoming branch to master. This should not be done immediately, rather first we should at minimum see that CI and new builds are all green. If a problem occurs, we may only merge to master the minor version update that fixes things.emscripten.org WebsiteThe site is currently hosted in gh-pages branch of the separate site repository. To update the docs, rebuild them and copy them there, that is:
site.make html.cp -R build/html/* \[path-to-a-checkout-of-the-site-repo\]emcc.py help textemcc --help output is generated from the main documentation under site/, so it is the same as shown on the website, but it is rendered to text. After updating emcc.rst in a PR, the following should be done:
site.make clean (without this, it may not emit the right output).make text.If you package Emscripten for users in some manner, the details in the rest of this document should be helpful with understanding versioning and so forth. This section goes into that in more detail.
The core DEPS file in the chromium emscripten-releases contains all the information about versions in all the repos. This is the repo used by our CI to build and test emscripten. How this works is that you look at the DEPS file at a particular git revision. It has lines like these:
'binaryen_revision': '06698d7a32cb4eeb24fea942e83d1b15e86a73e6', 'emscripten_revision': '7224b7930ec2a6abca332300e247619e1aea1719', 'llvm_project_revision': '33ef687d94604aeb73bedbcf3050524465a3439f',
Those are the git hashes in those repos. For building that git commit in emscripten-releases, our CI fetched and built those revisions.
In principle you can build any git hash in that repo. You can look at the CI UI to see if our CI shows green for any hash, and if so, it should be safe to build.
Alternatively, you may want to build our official emscripten release tags, which are the versions the emsdk lets users install. To find the mapping between the emscripten versions and the git hash for the DEPS file, the emsdk has emscripten-releases-tags.txt. All versions listed there should be safe to build, as we check that the CI was green on them.
To see how our CI builds things, the relevant script is build.py. In general, the repos you need to build are LLVM and Binaryen (as emscripten itself doesn't have any binaries to build). (Note: If you are packaging the older fastcomp compiler backend then you must also get the fastcomp and fastcomp-clang repos, and build them together to get LLVM and clang.)
When packaging build results, you need the following executables (when using the wasm backend):
(If you are packaging the older fastcomp backend instead of the wasm backend, you don't need wasm-ld or wasm2js, and you do need llvm-link and opt.)
You also need to set up the ~/.emscripten file for your users. Emscripten will try to do so on first run if such a file does not exist; the simplest thing is to look at those contents, edit the paths as needed if anything is wrong, and then use that file. (You can also look at how the emsdk generates the .emscripten file, which it does at the `activate step.) Some of the key values in that file include:
LLVM_ROOT: The path to the LLVM binaries.BINARYEN_ROOT: The path to binaryen (the binaries are expected in /bin under there; note that despite the name this differs from LLVM_ROOT which points directly to the binaries).NODE_JS: The path to Node.js, which is needed internally.