When:
Requirements:
master branch.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:
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.make install EMSCRIPTEN_SITE=\[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.
You can use make install or make dist to produce a cut down version of emscripten suitable for end users. This mostly excludes certain parts of the source tree that are only relevant to emscripten developers.
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.If you package emscripten and don't want the ports system to be used, you can simply delete the tools/ports/ directory.