Jon Turney [Sun, 19 Jun 2022 12:11:44 +0000 (13:11 +0100)]
Don't retain obsolete packages
Don't retain obsolete packages over a certain age threshold (when they
are effectively just adding an obsolete: to another package).
This is safe, as commit 17dc61e9 (persisting missing_obsoletes) ensures
that if the obsoletion was old-style (and thus only recorded in the
obsoleted package, with the new-style obsoletes: hint in the obsoleteing
package being synthesized by commit eca3a88d), the fact of that
obsoletion isn't forgotten once the obsolete package itself is removed.
Jon Turney [Wed, 17 Apr 2024 22:08:31 +0000 (23:08 +0100)]
Be a bit more aggressive about expiring old soversions
Allow the source package responsible for the old soversion to be
completely expired if it wouldn't normally be kept, and all of it's
install packages have no external rdepends.
Jon Turney [Sat, 17 Feb 2024 19:26:03 +0000 (19:26 +0000)]
Don't update setup.ini if we can't sign it
Check with gpg-agent if the signing key(s) are available, and don't
update setup.ini if we can't sign it.
Also, since we want to do some logging about keygrips before we
daemonize, move logging_setup earlier, and don't close the file
descriptors it opens when we darmonize.
Jon Turney [Thu, 11 Apr 2024 23:02:12 +0000 (00:02 +0100)]
Add the ability to ingest arch-tagged package filenames
Change to deriving the name of the listing file from package name and
version, rather than from the tar archive filename, because that would
include the arch tag.
That exposes an interesting anomaly: We are ignoring any version:
override when generating the listing filename. Since it's taken into
account where the link is made to that file on the package summary page,
that seems like a bug which this change accidentally fixes.
Jon Turney [Fri, 16 Sep 2022 15:38:33 +0000 (16:38 +0100)]
Separate collect and read package files steps
This is necessary when different versions of a src package might exist
in both arch/ and src/ paths.
Update test data for change to Package() repr, as we no longer have
pkgpath, just then package name
This is preparatory work for allowing a couple of things: putting new
source packages in src/ (without moving the existing ones under arch/),
re-structuring the data model so that arch is inside package, rather
than containing a collection of them.
This improves package authorization so it's possible for a package can
replace parts of another package (without needing rearrangement of the
package locations), by requiring authorization for *all* paths at which
a package exists.
Change to using a class rather than named tuple to hold scan results, so
it can be mutable in uploads.auth_check()
Also: drop no longer needed use of a defaultdict for holding packages in
uploads.scan()
Jon Turney [Tue, 9 Apr 2024 20:16:58 +0000 (21:16 +0100)]
Add some more old-style obsoletion upgrade information
These packages weren't being noticed before as being "obsolete, but no
replacement" due to the way split() can produce a list containing an
empty string, rather than an empty list.
Jon Turney [Tue, 9 Apr 2024 22:35:06 +0000 (23:35 +0100)]
Fix a bug in 'remove obsoleting package from depends of package it obsoletes'
Fix a bug in 'remove obsoleting package from depends of package it
obsoletes' code. This wasn't applying correctly if the dependency
wasn't the first one, and left extraneous whitespace when it was.
Jon Turney [Sat, 6 Apr 2024 16:19:48 +0000 (17:19 +0100)]
Produce a subreport for each solib
Initially I wanted to put this information directly into the solib
report, but some sort of disclosure widget which spans the whole table
width is hard to do in just HTML.
Jon Turney [Sun, 17 Mar 2024 13:46:28 +0000 (13:46 +0000)]
Use inotify to detect when there's work to be done
Rather than signals (which can only be sent by the same uid), use
inotify to detect when there's work to process in upload or staging
directory, or when a change has been made in the relarea.
Jon Turney [Sat, 9 Mar 2024 12:27:25 +0000 (12:27 +0000)]
Tolerate package html directories being owned by someone else
As a consequence of the cygwin-admin/cygwin split, we might not own an
existing package listing/summary HTML directory. Ignore any error trying
to set permissions in that case.
Jon Turney [Wed, 22 Nov 2023 14:07:40 +0000 (14:07 +0000)]
Store first msgid for announce of a srcpackage
Store the first msgid allocated for a srcpackage announce, so we can set
in-reply-to and thus allow threading of subsequent announces for that
package.
Jon Turney [Fri, 20 Oct 2023 16:37:09 +0000 (17:37 +0100)]
Use source package of actual version, not best version in vaulting
Use the source package of the actual version being considered, not the
best version, when determining if a package is owned by a source package
to be vaulted.
(Source package can change between versions, if sources are split or
merged)
Jon Turney [Sat, 14 Oct 2023 20:34:10 +0000 (21:34 +0100)]
Expire python2 modules
For the first time, we are expiring obsolete packages just because they
are obsolete, so it is time for the previous commit, to ensure we retain
any obsolete: hints they might have caused to be generated.
Jon Turney [Sun, 13 Aug 2023 14:20:44 +0000 (15:20 +0100)]
Try to add relevant changelog excerpt to announce message
Look for a relevant section of changelog in README, between '----'
delimiters, starting with one also containing the version, to add to the
generated announce message.
Jon Turney [Sun, 12 Feb 2023 23:15:34 +0000 (23:15 +0000)]
Rework how 'OBSOLETE' is handled in package list
Previously, we'd do some rearrangement of the release area, so the
obsoleted package would be moved under the obsoleting package, so it
didn't need to exist at all in the package list and we could safely
ignore it.
We don't need or want to bother with that now, so let obsolete packages
paths exist.
Future work: This needs some thought about how we want to work. Perhaps
prohibit uploads? Perhaps error if the package marked OBSOLETE isn't
actually obsoleted by something?