-
Notifications
You must be signed in to change notification settings - Fork 2.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
[WIP] New package: dotnet-6.0.100 #32974
Conversation
If it helps, I have been using this new package on my machine without issues so far. Unfortunately, I haven't tested with musl, however. |
Also wanted to mention that this bootstraps from a prebuilt dotnet-sdk since (surprise surprise) Roslyn, the .NET compiler, is self-hosting. I'm hoping this is OK since I did some poking around Void documentation and didn't see anything about bootstrapping from prebuilts. |
There is some discussion here about a full source bootstrap, but it never went anywhere: dotnet/source-build#1930 |
I am working on building on x86_64-musl currently. I am having some issues with part of the build though, I'll post the log here later. I already had to add an additional dependency ( One thing that I need to understand is the architectures this should target. Currently if you pass |
Log as mentioned above. |
imo dotnet is such a beast, it's okay to mark it nocross for now and give it another try later. |
I agree with marking nocross. However, I'm trying to determine if this will build on other archs than x86_64 right now. I'm letting my Rpi3 (so aarch64) give it the ol' college try, but it's taking a while and hanging on some weird things... |
This may not be the best option but would it be possible to consider just making this x86_64 glib only for now while musl and arm64 are worked on? Just a thought. |
5f21c2e
to
f128167
Compare
So I haven't been able to make any progress on getting this working on musl or other architectures. I've updated the template to be x86_64 only for now, and the PR is ready for review. |
Thank you for adding this to the template:
I've confirmed I can get EntityFrameworkCore (using PostgreSQL) working when the above entry in the template is installed in the system. :) Any ETA of when this can be pulled into the package tree? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I went through this and it looks good. Also, I have actually been using this package extensively for over a week now with no issues. Would be great to get this in.
Any word on when this could possibly go in? Also, version 6 is expected to be released next month. Will this package just be updated to 6 or will this require additional steps to ensure nothing breaks during the upgrade? |
I'll have to rebase on 6 once the source-build repo gets support for it. I'll dig around and see if they are expecting to support it soon. |
So I need some help understanding how to make this bootstrap-able. Currently the template will build from a pre-built SDK every time. How would I go about using the previously built version of dotnet to build the next version, seeing as the build-system always uses the latest version causing a cyclic dependency in this case? |
One thing you could do for bootstrapping this is having a virtual package that depends on the newest version, and having a package per version similar to how the linux<x.y> packages work. I've thought about a similar approach for rust, but so far rust is binary bootstrapped and that's apparently not a problem, so I guess having binary bootstrapped dotnet would also be fine. |
f128167
to
43662fd
Compare
Closing as I no longer have a use for this. I did recently push a working dotnet6 template which is available here if anyone wants to take another shot at this. It is likely very difficult; the work going on to get this packaged for Alpine should give some appreciation for the difficulty of this. |
I'm the package maintainer for Alpine's dotnet packaging project. If anyone should want some advice or some notes, feel free to mention me in whatever space that you're working in. I wouldn't wish working on this from scratch for anyone - source-build has a lot of moving parts, which makes it a major PITA. For anything I work on, I like to document my problems as much as possible for future use. Thus, there's a devlog on Alpine's package MR dotnet31 / 5 and 6 available below. It goes in more nuts and bolts of packaging for Alpine, while the Github threads are more dotnet specific. 31: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/28197 |
Is it not possible to build completely from source? Are these prebuilts available for crossbuild and musl? |
It is possible to build dotnet entirely from source, but as dotnet builds upon itsel, you need a bootstrap dotnet compiler. Microsoft provides I encourage anyone to study the |
The most important one is I highly recommend ya'll open up an issue at |
Any chance of revisiting this? It would be kinda cool to get back to #27787 also .. I don't think I can handle the dotnet package as a void newbie, but I can probably get the Pinta one going .. |
That PR is abandoned. Feel free to pick it up, but I am no longer interested in maintaining a pinta package. For the sake of the tracker, consider that PR abandoned. |
WFM .. at this point, stalled on the dotnet, as here .. afaict it's never moved forward .. the pinta section I Suspect I can handle .. not like we're dealing with, like, electron here .. chuckle |
Of note, first release candidate of dotnet7 on Alpine Linux is implemented here: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/39122 |
No promises but I'll try to pick this up again in a couple of weeks when I get back home. IIRC, the main hurdle right now is getting to to build/run on musl. I'll setup a musl machine when I get back home now that they have new images to use. I know that dotnet 7.0 will probably be released by that time so there will be more work to do on this but there is already a good starting point so hopefully it won't be too bad to get it up to speed. And hopefully, we can get someone to fully approve it this time. ;) |
I'm in the processus of getting a bunch of patches for You can follow the state of backporting in dotnet/source-build#3087. The difference between |
A few changes since February:
Good luck! For |
<snip>
That all sounds very promising .. getting cross-platform code going is good for portability, making cross-libc coding that much easier to complete! |
Check out this then. Since dotnet is actually an ecosytem of components packaged together, to figure out crosscompilation it was necessary to identify the core-components to build. Our
The idea is that we just need to feed the tarball SDK to
I don't know how void does its crossbuilding. Alpine crossbuilds via sysroots so our |
So, update. With a little fine tuning, I was able to get dotnet 7 installed on my current Void setup and it is currently working as expected with the limited testing I was able to do. I want to do more testing before I start working on the musl side, then submit it to this repo. I do have a small concern with this. I noticed that when it installs, it only installs the version 7 targeting pack. I am unable to build projects that target dotnet 6. Since 7 just came out, most, if not all, projects will need to be adjusted and tested to run on 7 before running. Based on this, I'm wondering if 6 still needs to be included. If so, what's the best way to approach this? Lastly, should we take this conversation somewhere else, like Discord or someplace? Feels kinda weird to report progress on a closed pull request. Thoughts? Thanks, |
You could open a new pull request and report progress there if that's better? Would have the benefit that you can push your changes there so people can give feedback on that early. As for a chat: Void uses IRC for chat. Topics around packaging stuff is handled in the #xbps channel on libera.chat. If you're looking to access that in a way that's more similar to Discord, I'd recommend using Matrix: https://matrix.to/#/#xbps:libera.chat |
That's what I was planning on doing since it's a new version. I was more worried about the discussions around it.
Ok, I'll check out matrix first. If I don't like it, I'll check the IRC. Thanks, |
FWIW, Alpine ships both .NET 6 and .NET 7 until either are EOL for this very reason. .NET 6 being an LTS, many projects wont update till .NET 8 is out. |
Yeah, I am thinking that should be the way to go. I just don't know the best approach for this. Should I just make separate packages for each version (ex: dotnet6, dotnet7, etc)? Should i just make a regular and lts packages? Thoughts? Thanks, |
We do the former (i.e. dotnet6, dotnet7). Indeed, they are times when 3 versions are supported once (like right now with .NET3.1 .NET 6 and .NET 7). As NET is designed to allow multiple versions to be installed at once, it's the right way to go. The distribution guidelines have been especially useful to us, although rather than name ours dotnet-sdk-6.0 we went for dotnet6-sdk. |
@rmboggs Where are y'all moving the conversation? My changes sometimes only check for Alpine, so if y'all hit issues, they are likely issues that I've already fixed but not for void. Also, how do y'all differentiate musl and non-musl void? Does the RID change? I can imagine that being problematic. |
@ayakael |
@ayakael , Speaking of which, if I need to add musl specific patches to the packages, what it the best way to do that? Are there flags or special names to use for the patch files? Please let me know. |
For those interested, I opened a new issue here to continue this conversation. I'm still fine-tuning dotnet7 and begun updating the dotnet6 template (originally started by @TinfoilSubmarine) so it references the latest version of the 6.0 branch. |
Dotnet 6: Repo |
Testing the changes
New package
Local build testing
Supersedes #27170. I followed the packaging guidelines in the source-build repo. I aligned with the recommended packages list here minus
dotnet-runtime-deps
.[ci skip]