On Wed, Jul 02, 2025 at 10:06:45PM +0100, Jon Turney via Cygwin-apps wrote: > > So, to follow on from the points raised in the thread ending [1], and > perhaps start a discussion: > > Having developers build executable packages locally and then upload them > doesn't really meet contemporary standards. > > Given my druthers, I'd just disable sftp package uploads right now, and make > you all use the janky "build service" I hacked together in a few spare > weekends. > > Amongst the advantages this has: > > * Ensures that the packaging git repo is updated when the package is. > > * Ensures that the source package is complete; and that the build works and > is repeatable. > > * Ensures that the package is built in a sterile environment. > > * Ensures that the package is serially developed in the git main branch (so > when someone does a NMU, they don't also need to remember to explicitly > communicate any changes made to the maintainer so they don't drop off again > in the next release...) > > * Transparency about, and some degree of auditability on how, the contents > of the install package are generated. > > * The way we provide a chrooted sftp session for uploads is weird and > non-standard and this means sourceware no longer has to support it. > > (A related consideration is that this probably also helps if/when we want to > start providing arm64 packages (which will otherwise entail all the problems > we had when x86_64 started being a thing - but at least in that case, most > maintainers had the necessary hardware, if not the needed OS) - The > alternative seems to be providing numerous cross-build packages, which > doesn't seem like a good use of anyone's time...) > > > Unfortunately, there are some issues with my half-assed replacement: > > * It relies on free CI services (GitHub and AppVeyor) to do the actual > builds, which might be withdrawn or start charging. > > * In particular, github requires an account to view the logs, which is a > sticking point for some people. > > * There's a number of problems with the current implementation: For a start > it's a synchronous daisy-chain of actions, which isn't tolerant of > intermittent connectivity or other transient problems. > > * The "tokens" which can specified to control options in it are an ad-hoc > mess. Idk what the ideal solution is, but the names of those options all > need rethinking for a start... > > * If you want to rebuild A and then B which requires the new B, you have to > guess when to submit the build for B. (perhaps it needs private access to > the repo rather than using a mirror, to ensure the copy it's looking at is > up to date, but even then...) > > * Some packages have circular dependencies, requiring some bootstrapping > build of package A, using that to build B, before returning to rebuild > package A properly with B available. This is completely unaccounted for in > the current model of doing things. > > * There are a couple of packagers using their own handcrafted packaging > rather than cygport. > > I'll be reaching out the those soon to discuss what can (reasonably) be done > to accommodate them. > > > Any questions/thoughts/concerns? > > > [1] https://cygwin.com/pipermail/cygwin-apps/2025-June/044388.html
Anecdote (n=1): for a long time, I manually built packages as I did not realize that the automated system was both available to me, as well as easy to use. I now use the automated system to build lighttpd for Cygwin. > Any questions/thoughts/concerns? I agree with you and suggest that "stop sftp package uploads" is not a question to be asked, but rather a question of how to roll the change out. Initially, I recommend forcing use of the automated system on everyone, but with a procedure to request access to the (current) manual process. This will limit the accounts/packages which can build manually, and can also help identify any as-yet-unknown shortcomings of the automated system. It will also help identify less-well-written software; circular dependencies are bad, m'kay? :) The automated system does not prevent people from building and testing manually before pushing the intended changes to the package git repo. Cheers, Glenn