Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(485)

Side by Side Diff: tools/fiddle/fiddler.go

Issue 1895143002: experimental/fiddle -> tools/fiddle (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/fiddle/fiddle_test ('k') | tools/fiddle/parse-fiddle-output » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 package main 7 package main
8 8
9 // Example use: 9 // Example use:
10 // git clone https://skia.googlesource.com/skia.git 10 // git clone https://skia.googlesource.com/skia.git
11 // cd skia 11 // cd skia
12 // SKIA=$PWD 12 // SKIA=$PWD
13 // cd experimental/fiddle 13 // cd tools/fiddle
14 // go get github.com/skia-dev/glog 14 // go get github.com/skia-dev/glog
15 // go get go.skia.org/infra/go/util 15 // go get go.skia.org/infra/go/util
16 // go build fiddler.go 16 // go build fiddler.go
17 // # compile prerequisites 17 // # compile prerequisites
18 // ./fiddler "$SKIA" 18 // ./fiddler "$SKIA"
19 // # compile and run a fiddle 19 // # compile and run a fiddle
20 // ./fiddler "$SKIA" draw.cpp | ./parse-fiddle-output 20 // ./fiddler "$SKIA" draw.cpp | ./parse-fiddle-output
21 // # compile and run a different fiddle 21 // # compile and run a different fiddle
22 // ./fiddler "$SKIA" ANOTHER_FIDDLE.cpp | ./parse-fiddle-output 22 // ./fiddler "$SKIA" ANOTHER_FIDDLE.cpp | ./parse-fiddle-output
23 23
24 import ( 24 import (
25 "bytes" 25 "bytes"
26 "fmt" 26 "fmt"
27 "io" 27 "io"
28 "io/ioutil" 28 "io/ioutil"
29 "os" 29 "os"
30 "os/exec" 30 "os/exec"
31 "path" 31 "path"
32 "syscall" 32 "syscall"
33 33
34 "github.com/skia-dev/glog" 34 "github.com/skia-dev/glog"
35 "go.skia.org/infra/go/util" 35 "go.skia.org/infra/go/util"
36 ) 36 )
37 37
38 func fiddlePath() string {
39 return path.Join("tools", "fiddle")
40 }
38 func setResourceLimits() error { 41 func setResourceLimits() error {
39 const maximumTimeInSeconds = 5 42 const maximumTimeInSeconds = 5
40 limit := syscall.Rlimit{maximumTimeInSeconds, maximumTimeInSeconds} 43 limit := syscall.Rlimit{maximumTimeInSeconds, maximumTimeInSeconds}
41 if err := syscall.Setrlimit(syscall.RLIMIT_CPU, &limit); err != nil { 44 if err := syscall.Setrlimit(syscall.RLIMIT_CPU, &limit); err != nil {
42 return err 45 return err
43 } 46 }
44 const maximumMemoryInBytes = 1 << 28 47 const maximumMemoryInBytes = 1 << 28
45 limit = syscall.Rlimit{maximumMemoryInBytes, maximumMemoryInBytes} 48 limit = syscall.Rlimit{maximumMemoryInBytes, maximumMemoryInBytes}
46 return syscall.Setrlimit(syscall.RLIMIT_AS, &limit) 49 return syscall.Setrlimit(syscall.RLIMIT_AS, &limit)
47 } 50 }
(...skipping 21 matching lines...) Expand all
69 return "@" + path.Join(skiaSrc, "cmake", "skia_link_arguments.txt") 72 return "@" + path.Join(skiaSrc, "cmake", "skia_link_arguments.txt")
70 } 73 }
71 74
72 // fiddler compiles the input, links against skia, and runs the executable. 75 // fiddler compiles the input, links against skia, and runs the executable.
73 // @param skiaSrc: the base directory of the Skia repository 76 // @param skiaSrc: the base directory of the Skia repository
74 // @param inputReader: C++ fiddle source 77 // @param inputReader: C++ fiddle source
75 // @param output: stdout of executable sent here 78 // @param output: stdout of executable sent here
76 // @param tempDir: where to place the compiled executable 79 // @param tempDir: where to place the compiled executable
77 func fiddler(skiaSrc string, inputReader io.Reader, output io.Writer, tempDir st ring) error { 80 func fiddler(skiaSrc string, inputReader io.Reader, output io.Writer, tempDir st ring) error {
78 binarypath := path.Join(tempDir, "fiddle") 81 binarypath := path.Join(tempDir, "fiddle")
79 » fiddle_dir := path.Join(skiaSrc, "experimental", "fiddle") 82 » fiddle_dir := path.Join(skiaSrc, fiddlePath())
80 if err := execCommand(inputReader, fiddle_dir, 83 if err := execCommand(inputReader, fiddle_dir,
81 "c++", 84 "c++",
82 compileArgs(skiaSrc), 85 compileArgs(skiaSrc),
83 "-I", fiddle_dir, 86 "-I", fiddle_dir,
84 "-o", binarypath, 87 "-o", binarypath,
85 "-x", "c++", "-", "-x", "none", 88 "-x", "c++", "-", "-x", "none",
86 "fiddle_main.o", 89 "fiddle_main.o",
87 "-lOSMesa", 90 "-lOSMesa",
88 linkArgs(skiaSrc), 91 linkArgs(skiaSrc),
89 ); err != nil { 92 ); err != nil {
(...skipping 10 matching lines...) Expand all
100 // Compile Skia library and fiddle_main.cpp 103 // Compile Skia library and fiddle_main.cpp
101 // @param skiaSrc: the base directory of the Skia repository. 104 // @param skiaSrc: the base directory of the Skia repository.
102 func fiddlerPrerequisites(skiaSrc string) error { 105 func fiddlerPrerequisites(skiaSrc string) error {
103 cmakeDir := path.Join(skiaSrc, "cmake") 106 cmakeDir := path.Join(skiaSrc, "cmake")
104 if err := execCommand(nil, cmakeDir, "cmake", "-G", "Ninja", "."); err ! = nil { 107 if err := execCommand(nil, cmakeDir, "cmake", "-G", "Ninja", "."); err ! = nil {
105 return err 108 return err
106 } 109 }
107 if err := execCommand(nil, cmakeDir, "ninja", "skia"); err != nil { 110 if err := execCommand(nil, cmakeDir, "ninja", "skia"); err != nil {
108 return err 111 return err
109 } 112 }
110 » fiddle_dir := path.Join(skiaSrc, "experimental", "fiddle") 113 » fiddle_dir := path.Join(skiaSrc, fiddlePath())
111 if err := execCommand(nil, fiddle_dir, "c++", compileArgs(skiaSrc), 114 if err := execCommand(nil, fiddle_dir, "c++", compileArgs(skiaSrc),
112 "fiddle_main.h"); err != nil { 115 "fiddle_main.h"); err != nil {
113 return err 116 return err
114 } 117 }
115 return execCommand(nil, fiddle_dir, "c++", compileArgs(skiaSrc), 118 return execCommand(nil, fiddle_dir, "c++", compileArgs(skiaSrc),
116 "-c", "-o", "fiddle_main.o", "fiddle_main.cpp") 119 "-c", "-o", "fiddle_main.o", "fiddle_main.cpp")
117 } 120 }
118 121
119 func main() { 122 func main() {
120 if len(os.Args) < 2 { 123 if len(os.Args) < 2 {
(...skipping 29 matching lines...) Expand all
150 if err != nil { 153 if err != nil {
151 glog.Fatalf("unable to open \"%s\": %v", os.Args [2], err) 154 glog.Fatalf("unable to open \"%s\": %v", os.Args [2], err)
152 } 155 }
153 defer util.Close(inputFile) 156 defer util.Close(inputFile)
154 if err = fiddler(skiaSrc, inputFile, os.Stdout, tempDir) ; err != nil { 157 if err = fiddler(skiaSrc, inputFile, os.Stdout, tempDir) ; err != nil {
155 glog.Fatal(err) 158 glog.Fatal(err)
156 } 159 }
157 } 160 }
158 } 161 }
159 } 162 }
OLDNEW
« no previous file with comments | « tools/fiddle/fiddle_test ('k') | tools/fiddle/parse-fiddle-output » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698