From 1af9f9022d22c6b11a1457f46aefc0828820d36b Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 21 Oct 2026 10:00:55 +0200 Subject: Repository: wrapped ChangeLog items, drop overtaken reloads gen_repos_files puts a long package path alone on an indented line, its text on the next: 78 of 546 packages showed no ChangeLog. A Refresh overtaken by a later one no longer overwrites the newer scan. Co-Authored-By: Claude Opus 5.5 --- sb_builder/repository.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'sb_builder') diff --git a/sb_builder/repository.py b/sb_builder/repository.py index 3cead0d..29f4291 100644 --- a/sb_builder/repository.py +++ b/sb_builder/repository.py @@ -32,7 +32,8 @@ from .packages import OVERLAYS, table from .ui import SP, action, chip, group_label, search_field PKGFILE = re.compile(r"^(?P.+)-(?P[^-]+)-(?P[^-]+)-(?P[^-]+)\.t[gx]z$") -ITEM = re.compile(r"^([^/\s]+/[^/\s]+)/[^/\s]+\.t[gx]z:\s*(.*)$") # category/pkg/file: text +# category/pkg/file: text; a long one is indented, its text on the next line +ITEM = re.compile(r"^\s*([^/\s]+/[^/\s]+)/[^/\s]+\.t[gx]z:\s*(.*)$") MONTHS = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split() @@ -91,7 +92,7 @@ def changelog(text): out.setdefault(m.group(1), []).append((when, parts)) elif parts is not None and line.startswith(" ") and line.strip(): parts.append(line.strip()) - return {k: [(t, " ".join(p)) for t, p in v] for k, v in out.items()} + return {k: [(t, " ".join(p).strip()) for t, p in v] for k, v in out.items()} def scan(path): @@ -203,7 +204,7 @@ def detail_html(r): class RepositoryTab(QWidget): packages_requested = pyqtSignal(str) # package to show in the Packages tab - scanned = pyqtSignal(object, str) # scan() result or None, error; from the loader thread + scanned = pyqtSignal(int, object, str) # reload number, scan() or None, error; from the thread def __init__(self, cfg, parent=None): super().__init__(parent) @@ -258,6 +259,7 @@ class RepositoryTab(QWidget): self.actions = [] # nothing to change here: Publish lives in Packages self.view_actions = [action(self, "Refresh", "view-refresh", SP.SP_BrowserReload, self.reload)] self.loaded = False + self.generation = 0 self.stats = QLabel(wordWrap=True) self.count = QLabel() @@ -275,15 +277,19 @@ class RepositoryTab(QWidget): self.loaded = True self.stats.setText("loading…") path = self.cfg["repository"]["path"] + self.generation += 1 + gen = self.generation def work(): try: - self.scanned.emit(scan(path), "") + self.scanned.emit(gen, scan(path), "") except OSError as e: - self.scanned.emit(None, str(e)) + self.scanned.emit(gen, None, str(e)) threading.Thread(target=work, daemon=True).start() - def _loaded(self, data, err): + def _loaded(self, gen, data, err): + if gen != self.generation: + return # an older Refresh, overtaken self.model.set_rows(data["rows"] if data else []) self.stats.setText(err or summary(data)) self.update_count() -- cgit v1.2.3