BSR sandbox/hyokeun/new-work
authorhyokeun.jeon <hyokeun.jeon@samsung.com>
Thu, 15 Apr 2021 14:30:07 +0000 (23:30 +0900)
committerhyokeun.jeon <hyokeun.jeon@samsung.com>
Thu, 15 Apr 2021 15:13:58 +0000 (00:13 +0900)
Change-Id: I502c039d0b30e68bdaa5cd4868aa77d1a84ad1f6

debian/changelog
debian/control
depanneur

index 984ac384a00f6e5d1aa03c05543d5ac68a268fae..3685f385aae9f568e9c1560268e0d1b617ea5317 100644 (file)
@@ -1,3 +1,10 @@
+depanneur (0.16.10.bsr.01) unstable; urgency=high
+
+  * Upgrade to 0.16.10.bsr.01
+  * BSR
+
+ -- Hyokeun Jeon <hyokeun.jeon@samsung.com>  Thu, 15 Apr 2021 23:00:00 +0800
+
 depanneur (0.16.9) unstable; urgency=high
 
   * Upgrade to 0.16.10
index 24be4a03dd6e38d3344ef8c9dc96681b8c66cf87..7e74f11babebdbdf8945bd220e0452f0c37e22fc 100644 (file)
@@ -9,7 +9,7 @@ Homepage: http://www.tizen.org
 Package: depanneur
 Architecture: all
 Depends: ${perl:Depends},
- build (>= 20160629-tizen20210323),
+ build (>= 20160629-tizen20210414),
  libyaml-perl,
  createrepo-c,
  libjson-perl,
index d1b156bf5ac997915879561399b3f1d3c9bf8363..2c1dc45d4e5c398bdc8efedfc1f6284552acd39e 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 = ""; # List of ordered packages to support user defined build order calculation
+my $profiling = ""; # Reference profiling report location. If set reports will be generated
 
 GetOptions (
     "repository=s" => \@repos,
@@ -255,6 +256,7 @@ GetOptions (
     "export-only" => \$export_only,
     "tarfile" => \$tarfile,
     "preordered-list=s" => \$preordered_list,
+    "profiling=s" => \$profiling,
     );
 
 if ( $help ) {
@@ -2389,9 +2391,9 @@ sub build_report
     info("build logs can be found in:\n     $localrepo/$dist/$arch/logs");
     info("build roots located in:\n     $scratch_dir.*");
     if (%errors || %expansion_errors || @export_errors || ($succeeded_packages == 0 && @skipped == 0)) {
-        exit 1;
+        return 1;
     }
-
+    return 0;
 }
 
 #---------------------------------------------------------------------
@@ -2451,6 +2453,7 @@ sub update_pkgrdeps {
 }
 
 sub generate_depends_xmlfile() {
+
     #if there is no dependence relation, skip!
     if (0 == scalar (keys %pkgdeps))
     {
@@ -2677,6 +2680,56 @@ sub dir_wanted {
        }
 }
 
+sub prepare_preorder_list {
+    my @preview_orders = ();
+    my_system("rm -rf bsr_profiling_report");
+    if ($preordered_list ne "") {
+        @preview_orders = split /[:,\s\/]+/, $preordered_list;
+    }
+    if ($profiling ne "" && `which bsr`) {
+        my $preview_command = "bsr reorder -j $profiling ";
+        if ($debug == 1) {
+            $preview_command = $preview_command . " --verbose ";
+        }
+        my_system($preview_command);
+        if (-f ".bsr.preview.yaml") {
+            my $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) {
+                foreach my $p (@{$preview_config->{preview}->{packages}}) {
+                    if ( !(grep $_ eq $p, @preview_orders) ) {
+                        push @preview_orders, $p;
+                    }
+                }
+            }
+        }
+    }
+    if (@preview_orders) {
+        $preordered_list = join ",", @preview_orders;
+    }
+}
+
+sub profiling_report {
+    if ($profiling eq "" || ! `which bsr`) {
+        return;
+    }
+    generate_depends();
+
+    my $report_command = "bsr report -a $arch --depsnumbersort -j $profiling ";
+    if ($debug == 1) {
+        $report_command = $report_command . " --verbose ";
+    }
+    my $dep_xml_file = "$depends_dir/$dist/$arch/$dist\_$arch\_pkgdepends.xml";
+    if (-e $dep_xml_file) {
+        $report_command = $report_command . " -x \"$dep_xml_file\" ";
+    }
+    $report_command = $report_command . " -k \"$localrepo/$dist/$arch/logs\" ";
+    my_system($report_command);
+    my_system("mv bsr_profiling_report $localrepo/$dist/$arch/");
+}
+
 # MAIN
 if ($depends) {
     info("start generate packages depends from: " . $package_path . " ($style)");
@@ -2852,6 +2905,8 @@ info("package dependency resolving ...");
 update_pkgdeps($reverse_on);
 update_pkgddeps();
 
+prepare_preorder_list();
+
 my @bins = get_binary_list();
 if (@bins) {
     my @tobuild = ();
@@ -3168,8 +3223,7 @@ while (! $TERM) {
 while ((threads->list() > 0)) {
     sleep(1);
 }
-
 update_repo();
-build_report();
-
-exit 0
+my $build_status = build_report();
+profiling_report();
+exit $build_status