Răsfoiți Sursa

build: Generate gui.files.go on the fly, remove from repo

Jakob Borg 9 ani în urmă
părinte
comite
6be4b49999
4 a modificat fișierele cu 42 adăugiri și 19 ștergeri
  1. 0 1
      .gitattributes
  2. 1 0
      .gitignore
  3. 41 4
      build.go
  4. 0 14
      lib/auto/gui.files.go

+ 0 - 1
.gitattributes

@@ -5,5 +5,4 @@
 vendor/**   -text=auto
 
 # Diffs on these files are meaningless
-gui.files.go    -diff
 *.svg           -diff

+ 1 - 0
.gitignore

@@ -14,3 +14,4 @@ coverage.xml
 syncthing.sig
 RELEASE
 deb
+lib/auto/gui.files.go

+ 41 - 4
build.go

@@ -115,7 +115,7 @@ func main() {
 			bench("./lib/...", "./cmd/...")
 
 		case "assets":
-			assets()
+			rebuildAssets()
 
 		case "xdr":
 			xdr()
@@ -184,6 +184,8 @@ func setup() {
 }
 
 func test(pkgs ...string) {
+	lazyRebuildAssets()
+
 	setBuildEnv()
 	useRace := runtime.GOARCH == "amd64"
 	switch runtime.GOOS {
@@ -200,11 +202,15 @@ func test(pkgs ...string) {
 }
 
 func bench(pkgs ...string) {
+	lazyRebuildAssets()
+
 	setBuildEnv()
 	runPrint("go", append([]string{"test", "-run", "NONE", "-bench", "."}, pkgs...)...)
 }
 
 func install(pkg string, tags []string) {
+	lazyRebuildAssets()
+
 	cwd, err := os.Getwd()
 	if err != nil {
 		log.Fatal(err)
@@ -223,6 +229,8 @@ func install(pkg string, tags []string) {
 }
 
 func build(pkg string, tags []string) {
+	lazyRebuildAssets()
+
 	binary := "syncthing"
 	if goos == "windows" {
 		binary += ".exe"
@@ -406,11 +414,42 @@ func setBuildEnv() {
 	os.Setenv("GO15VENDOREXPERIMENT", "1")
 }
 
-func assets() {
+func rebuildAssets() {
 	setBuildEnv()
 	runPipe("lib/auto/gui.files.go", "go", "run", "script/genassets.go", "gui")
 }
 
+func lazyRebuildAssets() {
+	if shouldRebuildAssets() {
+		rebuildAssets()
+	}
+}
+
+func shouldRebuildAssets() bool {
+	info, err := os.Stat("lib/auto/gui.files.go")
+	if err != nil {
+		// If the file doesn't exist, we must rebuild it
+		return true
+	}
+
+	// Check if any of the files in gui/ are newer than the asset file. If
+	// so we should rebuild it.
+	currentBuild := info.ModTime()
+	assetsAreNewer := false
+	filepath.Walk("gui", func(path string, info os.FileInfo, err error) error {
+		if err != nil {
+			return err
+		}
+		if assetsAreNewer {
+			return nil
+		}
+		assetsAreNewer = info.ModTime().After(currentBuild)
+		return nil
+	})
+
+	return assetsAreNewer
+}
+
 func xdr() {
 	runPrint("go", "generate", "./lib/discover", "./lib/db", "./lib/protocol", "./lib/relay/protocol")
 }
@@ -429,8 +468,6 @@ func translate() {
 func transifex() {
 	os.Chdir("gui/default/assets/lang")
 	runPrint("go", "run", "../../../../script/transifexdl.go")
-	os.Chdir("../../../..")
-	assets()
 }
 
 func clean() {

Fișier diff suprimat deoarece este prea mare
+ 0 - 14
lib/auto/gui.files.go


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff