@@ -9,10 +9,12 @@ package gen_tasks_logic
9
9
*/
10
10
11
11
import (
12
+ "bytes"
12
13
"encoding/json"
13
14
"fmt"
14
15
"io/ioutil"
15
16
"os"
17
+ "os/exec"
16
18
"path"
17
19
"path/filepath"
18
20
"regexp"
@@ -1519,7 +1521,40 @@ func (b *builder) perf(name string, parts map[string]string, compileTaskName str
1519
1521
recipe = "perf_skottiewasm_lottieweb"
1520
1522
isolate = "lottie_web.isolate"
1521
1523
}
1522
- task := b .kitchenTask (name , recipe , isolate , "" , b .swarmDimensions (parts ), EXTRA_PROPS , OUTPUT_PERF )
1524
+ doUpload := strings .Contains (name , "Release" ) && b .doUpload (name )
1525
+ extraProps := map [string ]string {}
1526
+ for k , v := range EXTRA_PROPS {
1527
+ extraProps [k ] = v
1528
+ }
1529
+ if recipe == "perf" {
1530
+ nanoFlagsScript := filepath .Join (CheckoutRoot (), "infra" , "bots" , "recipe_modules" , "vars" , "resources" , "nanobench_flags.py" )
1531
+ args := []string {
1532
+ nanoFlagsScript ,
1533
+ "--bot" , name ,
1534
+ "--parts" , marshalJson (parts ),
1535
+ "--revision" , specs .PLACEHOLDER_REVISION ,
1536
+ "--issue" , specs .PLACEHOLDER_ISSUE ,
1537
+ "--patchset" , specs .PLACEHOLDER_PATCHSET ,
1538
+ "--patch_storage" , specs .PLACEHOLDER_PATCH_STORAGE ,
1539
+ }
1540
+ if doUpload {
1541
+ args = append (args , "--do_upload" )
1542
+ }
1543
+ out , err := exec .Command ("python" , args ... ).CombinedOutput ()
1544
+ if err != nil {
1545
+ glog .Fatal (err )
1546
+ }
1547
+ var res struct {
1548
+ NanoFlags []string `json:"nanobench_flags"`
1549
+ NanoProps map [string ]string `json:"nanobench_properties"`
1550
+ }
1551
+ if err := json .NewDecoder (bytes .NewBuffer (out )).Decode (& res ); err != nil {
1552
+ glog .Fatal (err )
1553
+ }
1554
+ extraProps ["nanobench_flags" ] = marshalJson (res .NanoFlags )
1555
+ extraProps ["nanobench_properties" ] = marshalJson (res .NanoProps )
1556
+ }
1557
+ task := b .kitchenTask (name , recipe , isolate , "" , b .swarmDimensions (parts ), extraProps , OUTPUT_PERF )
1523
1558
task .CipdPackages = append (task .CipdPackages , pkgs ... )
1524
1559
if ! strings .Contains (name , "LottieWeb" ) {
1525
1560
// Perf.+LottieWeb doesn't require anything in Skia to be compiled.
@@ -1562,7 +1597,7 @@ func (b *builder) perf(name string, parts map[string]string, compileTaskName str
1562
1597
b .MustAddTask (name , task )
1563
1598
1564
1599
// Upload results if necessary.
1565
- if strings . Contains ( name , "Release" ) && b . doUpload ( name ) {
1600
+ if doUpload {
1566
1601
uploadName := fmt .Sprintf ("%s%s%s" , PREFIX_UPLOAD , b .jobNameSchema .Sep , name )
1567
1602
extraProps := map [string ]string {
1568
1603
"gs_bucket" : b .cfg .GsBucketNano ,
0 commit comments