From 4400ebc31e5ad90830442e217d5c6246db112228 Mon Sep 17 00:00:00 2001 From: Peter Dyer Date: Mon, 2 Apr 2018 19:16:49 +0100 Subject: [PATCH] Skip SRCINFOs that cannot be parsed during gendb Install will still abort if a SRCINFO cannot be parsed. --- install.go | 18 +++++++++++++++++- vcs.go | 7 +++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/install.go b/install.go index 53dabe1a..967077e7 100644 --- a/install.go +++ b/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 + "/" diff --git a/vcs.go b/vcs.go index 02bcb05d..293ede12 100644 --- a/vcs.go +++ b/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)