Ver código fonte

Skip SRCINFOs that cannot be parsed during gendb

Install will still abort if a SRCINFO cannot be parsed.
Peter Dyer 7 anos atrás
pai
commit
4400ebc31e
2 arquivos alterados com 22 adições e 3 exclusões
  1. 17 1
      install.go
  2. 5 2
      vcs.go

+ 17 - 1
install.go

@@ -72,7 +72,6 @@ func install(parser *arguments) error {
 		parser.targets.set(name)
 	}
 
-
 	requestTargets = parser.targets.toSlice()
 
 	if len(dt.Missing) > 0 {
@@ -493,6 +492,23 @@ func parseSRCINFOFiles(pkgs []*rpc.Pkg, srcinfos map[string]*gopkg.PKGBUILD, bas
 	return nil
 }
 
+func tryParsesrcinfosFile(pkgs []*rpc.Pkg, srcinfos map[string]*gopkg.PKGBUILD, bases map[string][]*rpc.Pkg) {
+	for k, pkg := range pkgs {
+		dir := config.BuildDir + pkg.PackageBase + "/"
+
+		str := bold(cyan("::") + " Parsing SRCINFO (%d/%d): %s\n")
+		fmt.Printf(str, k+1, len(pkgs), formatPkgbase(pkg, bases))
+
+		pkgbuild, err := gopkg.ParseSRCINFO(dir + ".SRCINFO")
+		if err != nil {
+			fmt.Printf("cannot parse %s skipping: %s\n", pkg.Name, err)
+			continue
+		}
+
+		srcinfos[pkg.PackageBase] = pkgbuild
+	}
+}
+
 func parseSRCINFOGenerate(pkgs []*rpc.Pkg, srcinfos map[string]*gopkg.PKGBUILD, bases map[string][]*rpc.Pkg) error {
 	for k, pkg := range pkgs {
 		dir := config.BuildDir + pkg.PackageBase + "/"

+ 5 - 2
vcs.go

@@ -44,10 +44,13 @@ func createDevelDB() error {
 	bases := getBases(infoMap)
 
 	downloadPkgBuilds(info, sliceToStringSet(remoteNames), bases)
-	err = parseSRCINFOFiles(info, srcinfosStale, bases)
+	tryParsesrcinfosFile(info, srcinfosStale, bases)
 
 	for _, pkg := range info {
-		pkgbuild := srcinfosStale[pkg.PackageBase]
+		pkgbuild, ok := srcinfosStale[pkg.PackageBase]
+		if !ok {
+			continue
+		}
 
 		for _, pkg := range bases[pkg.PackageBase] {
 			updateVCSData(pkg.Name, pkgbuild.Source)