Drop wuffs-c genrelease's exec of the C-formatter
genrelease essentially concatenates the individual packages' generated C
files, which should already be formatted.
----
$ # Before.
$ time wuffs gen > /dev/null
real 0m2.622s
user 0m2.457s
sys 0m0.266s
$ # After.
$ time wuffs gen > /dev/null
real 0m1.433s
user 0m1.335s
sys 0m0.191s
----
diff --git a/cmd/wuffs-c/release.go b/cmd/wuffs-c/release.go
index 197a8b6..01faf4e 100644
--- a/cmd/wuffs-c/release.go
+++ b/cmd/wuffs-c/release.go
@@ -20,23 +20,15 @@
"fmt"
"io/ioutil"
"os"
- "os/exec"
"path/filepath"
"sort"
"strings"
- "time"
cf "github.com/google/wuffs/cmd/commonflags"
)
func doGenrelease(args []string) error {
- // printTimings set true will print the time taken for the cformatter and
- // other work.
- const printTimings = false
- now := time.Now()
-
flags := flag.FlagSet{}
- cformatterFlag := flags.String("cformatter", cf.CformatterDefault, cf.CformatterUsage)
commitDateFlag := flags.String("commitdate", "", "git commit date the release was built from")
gitRevListCountFlag := flags.Int("gitrevlistcount", 0, `git "rev-list --count" that the release was built from`)
revisionFlag := flags.String("revision", "", "git revision the release was built from")
@@ -45,9 +37,6 @@
if err := flags.Parse(args); err != nil {
return err
}
- if !cf.IsAlphaNumericIsh(*cformatterFlag) {
- return fmt.Errorf("bad -cformatter flag value %q", *cformatterFlag)
- }
if (*gitRevListCountFlag < 0) || (0x7FFFFFFF < *gitRevListCountFlag) {
return fmt.Errorf("bad -gitrevlistcount flag value %d", *gitRevListCountFlag)
}
@@ -103,54 +92,35 @@
}
sort.Strings(h.filesList)
- unformatted := bytes.NewBuffer(nil)
- unformatted.WriteString("#ifndef WUFFS_INCLUDE_GUARD\n")
- unformatted.WriteString("#define WUFFS_INCLUDE_GUARD\n\n")
- unformatted.WriteString(grSingleFileGuidance[1:]) // [1:] skips the initial '\n'.
- unformatted.WriteString(grPragmaPush[1:]) // [1:] skips the initial '\n'.
+ out := bytes.NewBuffer(nil)
+ out.WriteString("#ifndef WUFFS_INCLUDE_GUARD\n")
+ out.WriteString("#define WUFFS_INCLUDE_GUARD\n\n")
+ out.WriteString(grSingleFileGuidance[1:]) // [1:] skips the initial '\n'.
+ out.WriteString(grPragmaPush[1:]) // [1:] skips the initial '\n'.
h.seen = map[string]bool{}
for _, f := range h.filesList {
- if err := h.gen(unformatted, f, 0, 0); err != nil {
+ if err := h.gen(out, f, 0, 0); err != nil {
return err
}
}
- unformatted.Write(grImplStartsHere[1:]) // [1:] skips the initial '\n'.
- unformatted.WriteString("\n")
+ out.Write(grImplStartsHere[1:]) // [1:] skips the initial '\n'.
+ out.WriteString("\n")
h.seen = map[string]bool{}
for _, f := range h.filesList {
- if err := h.gen(unformatted, f, 1, 0); err != nil {
+ if err := h.gen(out, f, 1, 0); err != nil {
return err
}
}
- unformatted.Write(grImplEndsHere)
- unformatted.WriteString(grPragmaPop)
- unformatted.WriteString("#endif // WUFFS_INCLUDE_GUARD\n")
+ out.Write(grImplEndsHere)
+ out.WriteString(grPragmaPop)
+ out.WriteString("#endif // WUFFS_INCLUDE_GUARD\n")
- if printTimings {
- fmt.Fprintf(os.Stderr, "%8d milliseconds collecting the C code\n",
- time.Since(now).Milliseconds())
- now = time.Now()
- }
-
- if *cformatterFlag == "" {
- os.Stdout.Write(unformatted.Bytes())
- return nil
- }
-
- cmd := exec.Command(*cformatterFlag, "-style=Chromium")
- cmd.Stdin = unformatted
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- err := cmd.Run()
- if printTimings {
- fmt.Fprintf(os.Stderr, "%8d milliseconds formatting the C code via %q\n",
- time.Since(now).Milliseconds(), *cformatterFlag)
- }
- return err
+ os.Stdout.Write(out.Bytes())
+ return nil
}
var (
diff --git a/cmd/wuffs/gen.go b/cmd/wuffs/gen.go
index 61133e6..5bb1619 100644
--- a/cmd/wuffs/gen.go
+++ b/cmd/wuffs/gen.go
@@ -110,7 +110,7 @@
if genlib {
return h.genlibAffected()
}
- return genrelease(wuffsRoot, langs, v, *cformatterFlag)
+ return genrelease(wuffsRoot, langs, v)
}
type genHelper struct {
diff --git a/cmd/wuffs/release.go b/cmd/wuffs/release.go
index 902555b..ada21ac 100644
--- a/cmd/wuffs/release.go
+++ b/cmd/wuffs/release.go
@@ -24,13 +24,13 @@
cf "github.com/google/wuffs/cmd/commonflags"
)
-func genrelease(wuffsRoot string, langs []string, v cf.Version, cformatter string) error {
+func genrelease(wuffsRoot string, langs []string, v cf.Version) error {
revision := runGitCommand(wuffsRoot, "rev-parse", "HEAD")
commitDate := runGitCommand(wuffsRoot, "show",
"--quiet", "--date=format-local:%Y-%m-%d", "--format=%cd")
gitRevListCount := runGitCommand(wuffsRoot, "rev-list", "--count", "HEAD")
for _, lang := range langs {
- filename, contents, err := genreleaseLang(wuffsRoot, revision, commitDate, gitRevListCount, v, cformatter, lang)
+ filename, contents, err := genreleaseLang(wuffsRoot, revision, commitDate, gitRevListCount, v, lang)
if err != nil {
return err
}
@@ -41,7 +41,7 @@
return nil
}
-func genreleaseLang(wuffsRoot string, revision string, commitDate, gitRevListCount string, v cf.Version, cformatter string, lang string) (filename string, contents []byte, err error) {
+func genreleaseLang(wuffsRoot string, revision string, commitDate, gitRevListCount string, v cf.Version, lang string) (filename string, contents []byte, err error) {
qualFilenames, err := findFiles(filepath.Join(wuffsRoot, "gen", lang), "."+lang)
if err != nil {
return "", nil, err
@@ -57,9 +57,6 @@
if gitRevListCount != "" {
args = append(args, "-gitrevlistcount", gitRevListCount)
}
- if lang == "c" {
- args = append(args, "-cformatter", cformatter)
- }
args = append(args, qualFilenames...)
stdout := &bytes.Buffer{}
diff --git a/cmd/wuffs/test.go b/cmd/wuffs/test.go
index bb4725f..fd85e3d 100644
--- a/cmd/wuffs/test.go
+++ b/cmd/wuffs/test.go
@@ -116,7 +116,7 @@
return err
}
}
- if err := genrelease(wuffsRoot, langs, cf.Version{}, *cformatterFlag); err != nil {
+ if err := genrelease(wuffsRoot, langs, cf.Version{}); err != nil {
return err
}
}