Skip to content

Commit 975fb18

Browse files
committed
fix build priority
1 parent c18dfe9 commit 975fb18

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

lilac

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,6 @@ class BuildSorter:
236236
new = self.sorter.get_ready()
237237
while new:
238238
self.ready += [x for x in new if x in build_reasons]
239-
self.ready.sort(key = self.priority_func)
240239
self.sorter.done(*[x for x in new if x not in build_reasons])
241240
new = self.sorter.get_ready()
242241
logger.debug('ready-to-build packages: %s', self.ready)
@@ -315,10 +314,19 @@ def try_pick_some(
315314
return []
316315

317316
rusages = db.get_pkgs_last_rusage(ready_to_build)
318-
ready_to_build.sort(key=lambda pkg: (r := rusages.get(pkg)) and r.cputime or 3600)
317+
318+
def sort_key(pkg):
319+
p = buildsorter.priority_func(pkg)
320+
r = (r := rusages.get(pkg)) and r.cputime or 3600
321+
return (p, r)
322+
ready_to_build.sort(key=sort_key)
319323
if cpu_ratio < 1.0:
320324
# low cpu usage, build a big package
321-
ready_to_build.insert(0, ready_to_build.pop())
325+
p = buildsorter.priority_func(ready_to_build[0])
326+
for idx, pkg in enumerate(ready_to_build):
327+
if buildsorter.priority_func(pkg) != p:
328+
break
329+
ready_to_build.insert(0, ready_to_build.pop(idx))
322330
else:
323331
logger.info('high cpu usage, preferring low-cpu-usage builds')
324332

@@ -343,9 +351,11 @@ def try_pick_some(
343351

344352
if not ret:
345353
if starving:
346-
ready_to_build.sort(
347-
key=lambda pkg: (r := rusages.get(pkg)) and r.memory or 10 * 1024**3,
348-
)
354+
def sort_key(pkg):
355+
p = buildsorter.priority_func(pkg)
356+
r = (r := rusages.get(pkg)) and r.memory or 10 * 1024**3
357+
return (p, r)
358+
ready_to_build.sort(key=sort_key)
349359
logger.info('insufficient memory, starting only one build')
350360
for pkg in ready_to_build:
351361
to_build = check_buildability(pkg, repo, buildsorter, failed)

0 commit comments

Comments
 (0)