From f222d22e461f2337dc16472bbc4e96862c33164f Mon Sep 17 00:00:00 2001 From: Hyokeun Jeon Date: Tue, 12 Jan 2021 16:12:50 +0900 Subject: [PATCH] Support user-defined build order list, --preordered-list argument. Build time can be improved: - by queuing the packages which have higher no. of rdepends first. - by critical build path first. Change-Id: Ibe2937ed204dbe9c85dfb9936454b3d4ebffd38f --- depanneur | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/depanneur b/depanneur index 2be73b0..4487699 100755 --- a/depanneur +++ b/depanneur @@ -193,6 +193,8 @@ my $reverse_off = 0; #disable reverse dependency my $reverse_on = 1; #enable reverse dependency my $export_only = 0; # only export, not building my $tarfile = 0; # generate tar file for dependence & reverse dependence xml file +my $preordered_list = ""; # List of ordered packages to support user defined build order calculation + GetOptions ( "repository=s" => \@repos, "arch=s" => \$arch, @@ -250,6 +252,7 @@ GetOptions ( "depends" => \$depends, "export-only" => \$export_only, "tarfile" => \$tarfile, + "preordered-list=s" => \$preordered_list, ); if ( $help ) { @@ -2927,6 +2930,33 @@ if ($debug) { print "\n"; } } + +if ($preordered_list ne "") { + my @build_order_new = (); + my @preordered_bins = (); + + my @items = split(',', $preordered_list); + chomp(@items); + push @preordered_bins, @items; + + foreach my $p (@preordered_bins) { + if ( !(grep $_ eq $p, @build_order_new) && + (grep $_ eq $p, @build_order) ) { + push(@build_order_new, $p); + } + } + foreach my $p (@build_order) { + if (!(grep $_ eq $p, @build_order_new)) { + push(@build_order_new, $p); + } + } + + if (scalar @build_order == scalar @build_order_new) { + info("Re-define order... (" . scalar @build_order . ")"); + @build_order = @build_order_new; + } +} + # Main process loop # Every loop, first update package information # include dependencies if there is new package -- 2.34.1