Where should espup install the different toolchains? #154
Replies: 10 comments 22 replies
-
Maybe another option: If not option 2 from above sounds good to me |
Beta Was this translation helpful? Give feedback.
-
I'm a bit struggling with the notion of "installing" ESP IDF which is just a GitHub repo, and hence - what is the need to use a dedicated tool like
W.r.t. how Clang should be installed for STD builds... given that the current STD build philosophy is that
My bottom line is that having Perhaps most important is (and sorry for finishing with that rather than starting with that!) is where we would like to position
|
Beta Was this translation helpful? Give feedback.
-
I have a question instead of an answer (sorry :D), and it somewhat ties in with what I think @ivmarkov is getting at. What do we think the future of espup is? In the context of, LLVM upstreaming is a success and Xtensa enabled Clang/LLVM/Rust lands in peoples package managers. Do we still want to use espup for the installation of other things? ESP-IDF sources are mentioned, but I don't think that is particularly valuable at the moment from my usage, I either use cloned sources locally, or let embuild get the sources for me. Regarding #95, this sounds like something ESP-IDF tooling should be doing, IMO espup is Rust tooling. There is no reason why we can't write something that does that in Rust, but does it belong in espup? |
Beta Was this translation helpful? Give feedback.
-
There is also another reason for developing espup. Let me explain different vectors and a different set of user problems. There is a Windows Installer for ESP-IDF: https://github.com/espressif/idf-installer The installer's primary goal is to provide a simple tool to deploy the development stack on the user's machine. Windows is a slightly more complex challenge than one would expect. The installer prepares the environment and mutates it to the state where all essential requirements are fulfilled. The problem with the current installer is technological. It's based on ancient Inno Setup using Pascal for scripting, making it very hard to extend or add complex logic. It's impossible to achieve a similar feature set as we can find in Visual Studio in the smaller, which is pretty versatile. To resolve this problem, we created an idf-env project in Rust to test whether we can develop a binary that can run across multiple OSes and provides the user with a working ESP-IDF environment. We were replacing step-by-step functions in idf-installer by calling idf-env CLI. This proved to be a working solution. There was also an initial deployment of Rust tooling. Based on this positive experience, we decided to create a new tool known as espup, which would focus on Rust in the first place and will be designed better than the original idf-env. Ideally, the tool should phase out more parts of the idf-installer or even replace it entirely. During this research, we found out that some functions are more crucial to Rust users to get the environment running. There are different solutions to the mutation of the user's environment, so some functions are implemented in another way (often better) in espup. Since espup can also deploy ESP-IDF using embuild, it makes the tool a candidate for replacing this functionality in idf-installer or replacing it entirely if GUI is provided. The good question is whether we should put the GUI part into espup since it introduces licensing issues. The original prototype of GUI shows that it's possible to create small binary with multi-platform GUI. The question is whether we should keep it there or move it to a separate project as initially intended. Basically, what is needed from the community/industry is to have some installer with GUI. Right now, it's idf-installer. It would be best to have Rust based installer. The installer does not need to be espup, yet it should reuse maximum functionality from espup by calling CLI or functions in the crate. Having a good visible interface of espup, either CLI/functions is critical because people are often developing their deployment tweaks which we need to be able to foresee in the beginning. One vital part of idf-installer is the ability to operate entirely in Offline mode, where all dependencies are bundled into a single binary. This is extremely important for users behind strict firewalls or without an internet connection. Until now, we could not find a solution in Rust that allows so simple and fast bundling of all binaries and files into a single binary like Inno Setup is doing in idf-installer. Until this point is solved, we will still rely on the idf-installer part to do the bunding part, but most system mutation functions should move to Rust. |
Beta Was this translation helpful? Give feedback.
-
Please, vote on this comment which approach you think we should follow with Look at the discussion comments for more insight into both approaches. I will consider the voting closed on February 6th at 10 AM (CET). |
Beta Was this translation helpful? Give feedback.
-
Now that we've agreed on the future of
|
Beta Was this translation helpful? Give feedback.
-
Sounds good to me
I guess that would be a nice feature and shouldn't make things too complex? I have a few Xtensa Rust toolchains installed on my system but on the other hand it's probably not too common for most users (and also, I don't use
I'd say yes since it's a common thing on Windows - but maybe tell the user what |
Beta Was this translation helpful? Give feedback.
-
I agree, let's defer this to the existing tool. As you said, the user should likely already have this installed, if they don't since we're using
Yup, don't want these being touched on my system please. Python versions can be a can of worms depending on the platform.
Probably a good idea.
As @ivmarkov has pointed out (and I agree) we should probably avoid the
See above. |
Beta Was this translation helpful? Give feedback.
-
Other bits have been answered, but GCC, given that users will need to add it to their path from |
Beta Was this translation helpful? Give feedback.
-
Detailed list of changes in: #182 |
Beta Was this translation helpful? Give feedback.
-
The goal of this discussion is to reevaluate the way we distribute the different components required for both approaches (
std
andno_std
).At the moment, here is what and where we install it:
espup install
will deploy:$RUSTUP_HOME/toolchain/esp
--profile-minimal
only libs) :$HOME/.espressif/tools/
$HOME/.espressif/tools/
espup install -e/--esp-idf-version <VERSION>
will deploy:$RUSTUP_HOME/toolchain/esp
--profile-minimal
only libs):$HOME/.espressif/tools/
$HOME/.espressif/esp-idf-<hash>
$HOME/.espressif/tools/
ldproxy
:$CARGO_HOME/bin/
Here are a few suggestions that have been proposed during the 2023-01-19 Community Meeting:
$RUSTUP_HOME/toolchain/esp
espup
/rust-build
scriptsesp-clang
) in therust-build
artefactsesp-clang
via ESP-IDF (as another tool)LIBCLANG_PATH
Also, it's important to mention, that in the future, we would like
espup
to install standalone products like ESP-IDFAny input or suggestion is more than welcome! @georgik @MabezDev @jessebraham @bjoernQ @JurajSadel @ivmarkov @igrr
Beta Was this translation helpful? Give feedback.
All reactions