-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
ghdl: add split package #6688
ghdl: add split package #6688
Conversation
Eep. Why is it different between mingw32 and mingw64? |
Is there a release archive for the source rather than a commit? |
@elieux, see first message in #5757. The summary is that GHDL is a particular tool. It is a VHDL simulator and synthesizer, which is shaped after a "compiler". As such, it supports three different backends: mcode, LLVM and GCC.
Should work, but I could not build:
Might work in the future:
Hence, my first proposal was to contribute Note that MINGW32 mcode and MINGW64 llvm are part of GHDL's CI workflow, and have been intensively tested for months: https://github.com/ghdl/ghdl/blob/master/.github/workflows/push.yml#L62-L65.
All GitHub repos can be retrieved as an archive, instead of using git. For example: https://github.com/ghdl/ghdl/archive/e2d751d6.zip or https://github.com/ghdl/ghdl/archive/e2d751d6.tar.gz. However, I think that those might be rate-limited. Alternatively, I think that https://codeload.github.com/ghdl/ghdl/tar.gz/e2d751d6 is not rate limited. Nevertheless, if you mean some tagged/labeled release, instead of an "arbitrary" commit SHA, I'd argue in favour of not doing so. See ghdl/ghdl#1213 (comment). The summary is that GHDL is tagged once a year, but those tagged commits are not significantly different from any other. GHDL is mostly a single man show and it has a rolling development model: each issue/bug is solved with a matching test. For example, at the moment the latest stable release would need to be patched to work with LLVM 10. But that is already fixed in the selected commit SHA for this PR. Note that this same approach is used by other packagers at Fedora or Arch. |
Thanks for the detailed response.
Let's hope they work in the future.
Well, having a single recipe that essentially does a different package for each architecture isn't so much different IMO. But if you set a common
https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/ghdl says otherwise; am I missing something? We used to have more
I see there are 841 patches since v0.37. Are there many important patches in there? If there are, can we make up a good versioning scheme or something? |
MINGW32 llvm might be straightforward: #5757 (comment) I wanted to try fixing that after having an initial package released.
Agree. However, having a single recipe allows to pass CI tests, while separated packages do not.
I would like to allow installing multiple versions in the future. mcode and LLVM have different advantages, the former is faster for analysis and the latter for execution. Hence, it makes sense to use mcode for e.g. language server features or synthesis, and use LLVM for simulation. Now there would be no problem with a common provides (and name). However, when MINGW32 LLVM is added, there would be two variants. I am thinking that the current split package does not account for it. Shall I add a common
I believe that is the latest package that was aded to "official" repos, and the packager was forced to use the latest stable release due to Arch's policies. That motivated several discussions similar to the one we are having here: https://github.com/ghdl/ghdl/issues?q=author%3AFFY00+ However, as seen in ghdl/ghdl#507, packages in AUR are different. The packages maintained by @marzoul are "arbitrary" commits: https://aur.archlinux.org/packages/?O=0&SeB=nd&K=ghdl&outdated=&SB=n&SO=a&PP=50&do_Search=Go In Fedora: see ghdl/ghdl#888 and https://src.fedoraproject.org/rpms/ghdl/blob/master/f/ghdl.spec. Note that the version used in Fedora is
I understand that, and I want to put it clear: I am asking for an exception. As such, I am doing my best to justify why such exception should be acceptable in the case of GHDL.
I think this is negligible. I will update it to use the archive instead, but I agree that the critical point is versioning. Regarding
The point is that GHDL has been in development for 15-20 years. But for most of it, the target was simulation only. 1-2 years ago, the author decided to implement synthesis features and to plug it to yosys to allow open source synthesis of VHDL projects. Together with nextpnr and other projects (icestorm, prjtrellis, prjxray), it is possible for first time in 30+ years to configure FPGAs using open source tooling only. A few weeks ago, Google announced https://github.com/google/skywater-pdk, which allows all the way down to silicon. The activity has been growing and Tristan (the author) has been doing an astonishing effort: https://github.com/ghdl/ghdl/graphs/contributors Hence, yes, potentially at least 50% of those 841 commits are patches. Specially since microwatt was synthetized in January, a lot of effort has gone into fixing memory inference. At the same time, many vendor tools are lacking VHDL 2008 support. GHDL can be effectively used as a pre-processor to convert modern VHDL code to an older version, so that vendor tools accept it. This allows to use modern language features with devices not yet supported by the fully open source toolchain. Again, each of the commits related to VHDL 2008 features is likely to be a bugfix or fix for a missing (corner) case.
Potentially, we could release a new version every few days or every week. Tristan (the author) is so responsive, he fixes issues in less than 24h: https://www.youtube.com/watch?v=LiCQzQsLFqA&feature=youtu.be&t=196 Hence, I agree with him that following semantic versioning strictly and tagging every new/breaking change can be a lot of unproductive work. The only viable solution I see is to somehow automate it by calendar/schedule. For example: every first monday of each month pick the commit SHA of the latest succesful CI run. That's why I would like to coordinate with other packagers to decide some intermediate "unofficial release candidates", meaning that @marzoul, @sharkcz and me agree on using the same set of commit SHAs between releases of GHDL. However, I am not a maintainer of any package yet, so I don't see myself in a position to "demand" that to them. See other related efforts: ghdl/ghdl#901 and eine/ghdl-packaging. |
You argue well. Unless anyone else voices a complaint, I'm convinced to merge once we pin down the technicalities:
As you can see in official Arch Linux recipe and AUR recipes, the actual package names include the backend and on top of that they all provide I think we should build differently named packages (
Good point. Let's not add
And we'll have to remove I understand this might be a hassle, but the general spirit should IMHO be that this is a badly versioned package we have to work around rather than a Git package with special privileges.
... and tag that commit. :) |
If I don't get it wrong, you mean that
With "differently named packages" you mean two different PKGBUILD files? Or is it possible to generate
Indeed, if a tarball is used, there is no possibility to use git.
Agree.
I need to discuss that. For now, I was thinking about taking SHAs with some defined logic/criteria. |
Right, I didn't think this through completely at first. I mean one file like this:
|
It's used in general to resolve additional names to a package. It could be more packages providing the same tool (e.g. any |
@elieux, I updated the PR according to your last comments. I was unsure about the following content:
I assume those Apart from that, I reverted this PR to a draft, because I used |
Correct. |
If I change line 15 to
|
I wanted to have proper snapshot tags working upstream before having this merged, but it seems it's going to take longer than expected. Since this package is already working regardless, I'd like to have it merged. @elieux, should it be converted into a |
Co-authored-by: Tim Stahlhut <[email protected]>
* generate a proper version * restructure package() so makepkg --printsrcinfo can parse it * use a shared pkgbase for both packages
@eine OK with my changes? |
@lazka, LGTM! |
Co-authored-by: Tim Stahlhut [email protected]
This PR contributes an split package for GHDL: mcode on MINGW32, and LLVM on MINGW64. See #5757.
Close #6686