@@ -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