--profiling-reference option
authorHyokeun Jeon <hyokeun.jeon@samsung.com>
Tue, 23 Mar 2021 06:51:17 +0000 (15:51 +0900)
committerHyokeun Jeon <hyokeun.jeon@samsung.com>
Tue, 23 Mar 2021 06:51:17 +0000 (15:51 +0900)
depanneur

index 36b996f15d35c62cd70166d2519287c1890ca356..4ac62ec7f7590901e883f39059ba83058477de4b 100755 (executable)
--- a/depanneur
+++ b/depanneur
@@ -195,6 +195,7 @@ 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 = "";
+my $profiling_reference = "";
 
 GetOptions (
     "repository=s" => \@repos,
@@ -255,6 +256,7 @@ GetOptions (
     "export-only" => \$export_only,
     "tarfile" => \$tarfile,
     "preordered-list=s" => \$preordered_list,
+    "profiling-reference=s" => \$profiling_reference,
     );
 
 if ( $help ) {
@@ -2584,51 +2586,50 @@ sub prepare_preorder_list {
 
     my_system("rm -rf bsr_profiling_report");
 
-    my $preview_command = "bsr preview -a $arch --verbose --depsnumbersort ";
-    my $dep_xml_file = "$depends_dir/$dist/$arch/$dist\_$arch\_pkgdepends.xml";
-    if (-e $dep_xml_file) {
-        $preview_command = $preview_command . " -x \"$dep_xml_file\" ";
-    }
+    my @preview_orders = ();
 
-    # Get candidate repos
-    my $candidate_ref = "";
-    foreach my $r (@package_repos) {
-        if (index($r, "base") != -1 || (index($r, "/debug") != -1)) {
-            next;
-        }
-        $candidate_ref = $r;
-    }
-    if ($candidate_ref ne "") {
-        $preview_command = $preview_command . " -r \"$candidate_ref\" --criticalsort ";
+    if ($preordered_list ne "") {
+        @preview_orders = split(',', $preordered_list)
     }
 
-    info("");
-    info($preview_command);
-    info("");
+    if ($profiling_reference ne "") {
+        my $preview_command = "bsr reorder -j $profiling_reference --verbose ";
+        my_system($preview_command);
+
+        info("");
+        info($preview_command);
+        info("");
 
-    my_system($preview_command);
+        my $preview_config = "";
+        if (-f ".bsr.preview.yaml") {
+            $preview_config = LoadFile(".bsr.preview.yaml");
+            unlink ".bsr.preview.yaml";
+            if ($preview_config
+                && $preview_config->{preview}
+                && $preview_config->{preview}->{packages}
+                && @{$preview_config->{preview}->{packages}} > 0) {
 
-    #.bsr.preview.yaml
+                info("We have preview orders... " . @{$preview_config->{preview}->{packages}});
 
-    my $preview_config = "";
-    $preordered_list = "";
-    if (-f ".bsr.preview.yaml") {
-        $preview_config = LoadFile(".bsr.preview.yaml");
-        unlink ".bsr.preview.yaml";
-        if ($preview_config
-            && $preview_config->{preview}
-            && $preview_config->{preview}->{packages}
-            && @{$preview_config->{preview}->{packages}} > 0) {
-            $preordered_list = join ",", @{$preview_config->{preview}->{packages}};
+                foreach my $p (@{$preview_config->{preview}->{packages}}) {
+                    if ( !(grep $_ eq $p, @preview_orders) ) {
+                        push @preview_orders, $p;
+                    }
+                }
+
+            } else {
+                $preview_config = "";
+                info("Empty config");
+            }
         } else {
             $preview_config = "";
+            info("No .bsr.preview.yaml file found");
         }
-    } else {
-        $preview_config = "";
     }
 
-    # Remove depends directory
-    my_system("rm -rf $depends_dir");
+    if (@preview_orders) {
+        $preordered_list = join ",", @preview_orders;
+    }
 }
 
 sub profiling_report {
@@ -2835,9 +2836,8 @@ info("package dependency resolving ...");
 update_pkgdeps($reverse_on);
 update_pkgrdeps();
 
-generate_depends_xmlfile();
-
 if ($depends) {
+    generate_depends_xmlfile();
     exit 0;
 }
 
@@ -3014,6 +3014,7 @@ if ($preordered_list ne "") {
     }
 }
 
+
 # Main process loop
 # Every loop, first update package information
 # include dependencies if there is new package