On Thu, Sep 19, 2024 at 5:20 PM Stephen Smoogen <ssmoo...@redhat.com> wrote: > > > > On Thu, 19 Sept 2024 at 11:07, Ron Olson <tachokni...@gmail.com> wrote: >> >> Hi all- >> >> I’m trying to get Swift packaged for EPEL 10 but have an interesting >> situation that I presume has been seen before, so am hoping for some >> guidance. >> >> Since 5.9 Swift has required a previous version of Swift to build; 5.8 is >> the last version that builds by itself. Now I’d like to package Swift 6 for >> EPEL 10, but because no previous version of Swift exists, I think what I >> have to do is build 5.8, while also applying new patches because of versions >> of things like Python that weren’t an issue when 5.8 was originally built. >> Once 5.8 is hopefully built and available on EPEL 10, then I can build Swift >> 5.10, then build Swift 6. >> >> Am I doing this workflow correctly? When packages depend on previous >> versions of the package do folks do what I’m doing and basically go back to >> the beginning and move forward until the latest version can be built? And >> would I have to start all over again with EPEL 11, 12, etc.? > > > In the past, there are a couple of ways to bootstrap a software language: > 1. Do the work the long way like you list and build a bunch of things over > and over from scratch until you get the one you need. Do this in a sidetag(?) > so it doesn't affect (infect?) the main release. > 2. Work with releng to set up the appropriate 'side area' in koji which will > check in the version of swift from Fedora 39 or 40 which meets your needs. > Use this to build your first level of bootstrap. Have that version 'checked > out' and rebuild the bootstrap to make sure it is viable. Then build the > final one with the bootstrap. > 3. Use various rpm tricks to build a bootstrap of a language compiler which > can be used as a minimal viable compiler. This is dependent on the language > but some will allow you to build something which is just enough to rebuild > itself at a later stage.. put in the rules so that a 'bootstrap' flag can be > sent and it will build that version. Use that to build the next stages. > 4. Combine 1,2,3 because the language is so special it needs all of them. [I > see you older versions of Rust]
I don't know if this would be applicable to swift too, but the way I handled bootstrapping the Rust crate stack in EPEL 10 was by - creating a side-tag for epel10 - tag rawhide builds into the side-tag as necessary to resolve the bootstrap problem - rebuild things from the epel10 branch - untag all tagged-in rawhide builds again - submit side-tag as update via bodhi Unless I miss something (like, is the swift package fundamentally different on EPEL?), that should work here, and it would involve many fewer steps than the other solutions. Fabio -- _______________________________________________ devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue