Open vault-thirteen opened 7 months ago
I think, it should be done in the same way for NodeJs as for Python. Otherwise it is simply a mess :-)
See my comment here https://github.com/emscripten-core/emsdk/issues/1315#issuecomment-1841252657. And PR #1189 for the rational here.
;TLDR; some folks use node to run emscripten output so it not 100% internal to the tools.
Personally I wish we never added node to the PATH either, but some folks were relying on it, so we ended up with this compromise which seems to work for everyone, even though its ugly.
How do I roll back the changes done by the emsdk activate latest --permanent
command ?
I need to bring everything back.
Thank you.
I don't know that emsdk has such a feature. Perhaps a deactivate
subcommand could be added to serve that purpose?
https://emscripten.org/docs/getting_started/downloads.html#uninstalling-the-emscripten-sdk Unfortunately, the documentation offers only to remove the SDK as whole, which is not that I wish. I do not see any deactivation commands.
D:\Temp\1\emsdk>emsdk deactivate
Unknown command 'deactivate' given! Type 'emsdk help' to get a list of commands.
So, we need a deactivation command. I do not see it in the list of commands.
emsdk help
emsdk: Available commands:
emsdk list [--old] [--uses] - Lists all available SDKs and tools and their
current installation status. With the --old
parameter, also historical versions are
shown. If --uses is passed, displays the
composition of different SDK packages and
dependencies.
emsdk update - Updates emsdk to the newest version. If you have
bootstrapped emsdk via cloning directly from
GitHub, call "git pull" instead to update emsdk.
emsdk install [options] <tool 1> <tool 2> <tool 3> ...
- Downloads and installs given tools or SDKs.
Options can contain:
-j<num>: Specifies the number of cores to use when
building the tool. Default: use one less
than the # of detected cores.
--build=<type>: Controls what kind of build of LLVM to
perform. Pass either 'Debug', 'Release',
'MinSizeRel' or 'RelWithDebInfo'. Default:
'Release'.
--generator=<type>: Specifies the CMake Generator to be used
during the build. Possible values are the
same as what your CMake supports and whether
the generator is valid depends on the tools
you have installed. Defaults to 'Unix Makefiles'
on *nix systems. If generator name is multiple
words, enclose with single or double quotes.
--shallow: When installing tools from one of the git
development branches, this parameter can be
passed to perform a shallow git clone instead
of a full one. This reduces the amount of
network transfer that is needed. This option
should only be used when you are interested in
downloading one of the development branches,
but are not looking to develop Emscripten
yourself. Default: disabled, i.e. do a full
clone.
--build-tests: If enabled, LLVM is built with internal tests
included. Pass this to enable running test
other.test_llvm_lit in the Emscripten test
suite. Default: disabled.
--enable-assertions: If specified, LLVM is built with assert()
checks enabled. Useful for development
purposes. Default: Enabled
--disable-assertions: Forces assertions off during the build.
--vs2019/--vs2022: If building from source, overrides to build
using the specified compiler. When installing
precompiled packages, this has no effect.
Note: The same compiler specifier must be
passed to the emsdk activate command to
activate the desired version.
Notes on building from source:
To pass custom CMake directives when configuring
LLVM build, specify the environment variable
LLVM_CMAKE_ARGS="param1=value1,param2=value2"
in the environment where the build is invoked.
See README.md for details.
--override-repository: Specifies the git URL to use for a given Tool. E.g.
--override-repository emscripten-main@https://github.com/<fork>/emscripten/tree/<refspec>
emsdk uninstall <tool/sdk> - Removes the given tool or SDK from disk.
emsdk activate [--permanent] [--system] [--build=type] [--vs2019/--vs2022] <tool/sdk>
- Activates the given tool or SDK in the
environment of the current shell.
- If the `--permanent` option is passed, then the environment
variables are set permanently for the current user.
- If the `--system` option is passed, the registration
is done for all users of the system.
This needs admin privileges
(uses Machine environment variables).
- If a custom compiler version was used to override
the compiler to use, pass the same --vs2019/--vs2022
parameter here to choose which version to activate.
emcmdprompt.bat - Spawns a new command prompt window with the
Emscripten environment active.
Both commands 'install' and 'activate' accept an optional parameter
'--build=type', which can be used to override what kind of installation
or activation to perform. Possible values for type are Debug, Release,
MinSizeRel or RelWithDebInfo. Note: When overriding a custom build type,
be sure to match the same --build= option to both 'install' and
'activate' commands and the invocation of 'emsdk_env', or otherwise
these commands will default to operating on the default build type
which is RelWithDebInfo.
Environment:
EMSDK_KEEP_DOWNLOADS=1 - if you want to keep the downloaded archives.
EMSDK_NOTTY=1 - override isatty() result (mainly to log progress).
EMSDK_NUM_CORES=n - limit parallelism to n cores.
EMSDK_VERBOSE=1 - very verbose output, useful for debugging.
Indeed, there is no such command for deactivating today. We could consider adding one.
However, if you just want to install a different emsdk version I believe the activate
command will take care of removing and replacing any of the old variables and PATH elements that were added before adding its own.
We need a deactivate
command to bring the mess back to order.
emsdk help
emsdk: Available commands:
emsdk list [--old] [--uses] - Lists all available SDKs and tools and their
current installation status. With the --old
parameter, also historical versions are
shown. If --uses is passed, displays the
composition of different SDK packages and
dependencies.
emsdk update - Updates emsdk to the newest version. If you have
bootstrapped emsdk via cloning directly from
GitHub, call "git pull" instead to update emsdk.
emsdk install [options] <tool 1> <tool 2> <tool 3> ...
- Downloads and installs given tools or SDKs.
Options can contain:
-j<num>: Specifies the number of cores to use when
building the tool. Default: use one less
than the # of detected cores.
--build=<type>: Controls what kind of build of LLVM to
perform. Pass either 'Debug', 'Release',
'MinSizeRel' or 'RelWithDebInfo'. Default:
'Release'.
--generator=<type>: Specifies the CMake Generator to be used
during the build. Possible values are the
same as what your CMake supports and whether
the generator is valid depends on the tools
you have installed. Defaults to 'Unix Makefiles'
on *nix systems. If generator name is multiple
words, enclose with single or double quotes.
--shallow: When installing tools from one of the git
development branches, this parameter can be
passed to perform a shallow git clone instead
of a full one. This reduces the amount of
network transfer that is needed. This option
should only be used when you are interested in
downloading one of the development branches,
but are not looking to develop Emscripten
yourself. Default: disabled, i.e. do a full
clone.
--build-tests: If enabled, LLVM is built with internal tests
included. Pass this to enable running test
other.test_llvm_lit in the Emscripten test
suite. Default: disabled.
--enable-assertions: If specified, LLVM is built with assert()
checks enabled. Useful for development
purposes. Default: Enabled
--disable-assertions: Forces assertions off during the build.
--vs2019/--vs2022: If building from source, overrides to build
using the specified compiler. When installing
precompiled packages, this has no effect.
Note: The same compiler specifier must be
passed to the emsdk activate command to
activate the desired version.
Notes on building from source:
To pass custom CMake directives when configuring
LLVM build, specify the environment variable
LLVM_CMAKE_ARGS="param1=value1,param2=value2"
in the environment where the build is invoked.
See README.md for details.
--override-repository: Specifies the git URL to use for a given Tool. E.g.
--override-repository emscripten-main@https://github.com/<fork>/emscripten/tree/<refspec>
emsdk uninstall <tool/sdk> - Removes the given tool or SDK from disk.
emsdk activate [--permanent] [--system] [--build=type] [--vs2019/--vs2022] <tool/sdk>
- Activates the given tool or SDK in the
environment of the current shell.
- If the `--permanent` option is passed, then the environment
variables are set permanently for the current user.
- If the `--system` option is passed, the registration
is done for all users of the system.
This needs admin privileges
(uses Machine environment variables).
- If a custom compiler version was used to override
the compiler to use, pass the same --vs2019/--vs2022
parameter here to choose which version to activate.
emcmdprompt.bat - Spawns a new command prompt window with the
Emscripten environment active.
Both commands 'install' and 'activate' accept an optional parameter
'--build=type', which can be used to override what kind of installation
or activation to perform. Possible values for type are Debug, Release,
MinSizeRel or RelWithDebInfo. Note: When overriding a custom build type,
be sure to match the same --build= option to both 'install' and
'activate' commands and the invocation of 'emsdk_env', or otherwise
these commands will default to operating on the default build type
which is RelWithDebInfo.
Environment:
EMSDK_KEEP_DOWNLOADS=1 - if you want to keep the downloaded archives.
EMSDK_NOTTY=1 - override isatty() result (mainly to log progress).
EMSDK_NUM_CORES=n - limit parallelism to n cores.
EMSDK_VERBOSE=1 - very verbose output, useful for debugging.
Help says that commands are:
emsdk list
emsdk update
emsdk install
emsdk uninstall
emsdk activate
No deactivation command in the list.
If I use emsdk uninstall
will it remove all the mess in my environment variables ?
There is a controversy.
In the issue 1315 (https://github.com/emscripten-core/emsdk/issues/1315) you say that python (EMSDK_PYTHON) is used only for internal purposes and thus it is not added to PATH variable.
But at the same time nodejs (EMSDK_NODE) is used for the same internal purposes but it is actually added to PATH variable.