-
Notifications
You must be signed in to change notification settings - Fork 356
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
Dropping support for GNAT compiler #1599
Comments
For context, we are talking about the scripts currently located in However, despite being written in powershell, those scripts used MSYS2 under the hood. Some months ago, PKGBUILD recipes were written (now located in At the same time, we have recently been testing how to use MSYS2 packages outside of MSYS2. Patrick has successfully used either mcode or LLVM builds in PyCharm using CPython and pyGHDL. The procedure for getting a zipfile from MSYS2 packages is not automated yet; however, the zipfiles generated through powershell/appveyor scripts do have the same issue. As a matter of fact, initial versions of #929 first tried to adapt AppVeyor is still left as it was 2 years ago, but the deploy stage was removed. This means that zipfiles are no longer pushed to releases by AppVeyor. At the same time, AppVeyor is still running the same testsuites that existed 2 years ago, but not the "new" Therefore:
By using the recipes on AppVeyor, we would be using it for redundancy, which I believe is the only reason to keep it. We might have kept Travis for redundancy too, if their new pricing policy was not problematic.
I don't like windows installers, nor self-executing zips. I always download portable versions of the tools, unless the tools do explicitly need to set something on the system. Hence, I do understand why some users might want to have an installer that extracts GHDL to some "expected" location and sets one or a few envvars. However, my approach and recommendation is to use GHDL has a Unix look and feel, and it's better used in a Unix ecosystem together with other open source EDA tooling. Being exposed to use bash won't make any harm to windows users. Furthermore, hdl/MINGW-packages is an on-going effort for providing EDA tooling to Windows users through MSYS2. Precisely Therefore, my idea of an installer would be similar to "Ninite". Let the user select which of those 15 tools wants to have packaged into a self-extracting file. Then, extract a new clean MSYS2, update it, install the desired packages (which will pull dependencies automatically), zip it, add the self-extracting script, and profit. The main advantage of this approach is we don't need to deal with finding the specific DLLs that each tools needs, in order to create standalone zipfiles for each of them. We just use the proven and known MSYS2 features, but we "hide" them so that users don't need to learn bash if they really don't want to. Further thoughts about this:
I believe that distributing GHDL via Chocolatey or NuGet is trivial, once an standalone zipfile is available. It's just a matter of keeping a file with metadata and someone remembering to update/push it. However, we don't have a maintainable procedure for automatically creating standalone zipfiles yet. I honestly did never use Chocolatey / NuGet, as I don't see what value do they provide over Ninite + MSYS2 + Docker (which is what I use). I'd be glad to be illustrated. |
Maybe I was unclear. I don't want to write this installer, I did it already some years ago and it was shipped with e.g. GHDL v0.35. See I'm asking about keeping this feature only from former PowerShell based compile flow. Many people prefer simple program installations (so programs for a few MB in size) via NuGet (PuTTY, WinSCP, MSYS2, Python3, Notepad++, ...). Compared to MSYS2 / Pacman, these are the advantages:
|
I believe that the zipfiles installed by Therefore, we can keep the powershell installer (I'm good with that), but it won't be actually usable until we solve how to add DLLs to the zipfiles it consumes. Manually maintaining the list of DLLs that need to be copied is what I want to avoid by using pacman as an installer.
Existing
We can work around the lack of ZST support on Windows, by providing the content as zipfiles. The problem is unrelated to the package manager of choice, but to the manager not being able to understand the metadata describing the dependencies.
MSYS2 can only grow in size, if you let it do so. The installer is 80-90 MB, 320-330 MB after extracting it, and 350-370 MB (unzipped, 165 MB zipped) after running The powershell installer can then use that zipfile, set envvars, etc. as if it had nothing to do with MSYS2. Just a bunch of binaries and DLLs in an arbitray location. If we later find how to further prune that zipfile programmatically, that'd be nice. But I don't think it's a problem given the average size of any engineering tool on Windows.
As said, I'm not proposing users to intercat with
As correct as that might be, I don't know anyone who uses it and having something installed already doesn't mean users should use it (e.g. Internet Explorer). Hence, I don't have any interest in supporting NuGet. I do have interest in providing a zipfile which can be used without users being aware that MSYS2 exists, neither them having to interact with pacman.
I do believe it can. MSYS2 tools are native Windows applications. You can do whatever you would do from powershell or the command-line. The difference is syntax only. In extreme cases, you can explicitly call powershell from MSYS2. Therefore post-install steps can be used for this.
On behalf of honesty, I must say that any zipfile for GHDL with LLVM backend will be larger than those 400 MB I said above. That is because MSYS2 does not provide split packages for runtime and build LLVM libs. Therefore, when the runtime dependencies are installed, many non necessary assets are retrieved. Still, It's 1.8 GB unzipped and 730 MB zipped. It's an order of magnitude larger than the most optimal zipfile we might get; but an order of magnitude below Vivado or Matlab. Moreover, I think it would be sensible to discuss with MSYS2 maintainers whether large packages such as LLVM can be split. |
After talking to @Paebbels, there was a misunderstanding. I thought he was referring to zipfiles in v0.37, v0.36, v0.35, etc. and that all of them were created using the same procedure. However, that was/is not the case. v0.35 was built manually using GNAT and the powershell scripts discussed above. Next releases are the ones generated by AppVeyor which I was referring to as being equivalent to MSYS2's. |
Currently GHDL is compiled for Windows with MinGW and we can proof it works fine with mcode and llvm backends. Compiling GHDL with GNAT (Ada compiler from Ada Core) is hard to maintain. The current scripts are outdated and don't support latest PowerShell versions. See #732. These scripts are also not used in CI runs.
Should we drop PowerShell based compile scripts?
compile.ps1
compile-ghdl.ps1
compile-libraries.ps1
shared.psm1
We might want to keep the installer script. This would allow us to ship a
*.ps1
file with an internal ZIP container that self-extracts and copies contents to right places.This functionality exists and is easier to maintain then a MSI file.
Alternatively we could consider shipping GHDL via Chocolaty / NuGet.
/cc @umarcor
The text was updated successfully, but these errors were encountered: