{"record":{"id":"b415d5e224b74725","repo":"Jguer/yay","slug":"s-s-parse-srcinfo-w","errorCode":null,"errorMessage":"%s %s: parse .SRCINFO: %w","messagePattern":"(.+?) (.+?): parse \\.SRCINFO: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/sync/workdir/aur_preinstall.go","lineNumber":107,"sourceCode":") (settingslua.AURPreInstallEvent, error) {\n\treturn aurPackageEvent(settingslua.EventAURPreInstall, base, path, packages, installed, targets)\n}\n\nfunc aurPackageEvent(eventName, base, path string, packages []settingslua.AURPreInstallPackage,\n\tinstalled mapset.Set[string], targets []map[string]*dep.InstallInfo,\n) (settingslua.AURPreInstallEvent, error) {\n\tdir, pkgbuildPath, srcinfoPath := aurPreInstallPaths(path)\n\n\tpkgbuildBytes, err := os.ReadFile(pkgbuildPath)\n\tif err != nil {\n\t\treturn settingslua.AURPreInstallEvent{},\n\t\t\tfmt.Errorf(\"%s %s: read PKGBUILD: %w\", eventName, base, err)\n\t}\n\n\tsrcinfo, err := gosrc.ParseFile(srcinfoPath)\n\tif err != nil {\n\t\treturn settingslua.AURPreInstallEvent{},\n\t\t\tfmt.Errorf(\"%s %s: parse .SRCINFO: %w\", eventName, base, err)\n\t}\n\n\tif len(packages) == 0 {\n\t\tpackages = packagesFromSRCINFO(srcinfo)\n\t}\n\tslices.SortFunc(packages, func(a, b settingslua.AURPreInstallPackage) int { return cmp.Compare(a.Name, b.Name) })\n\n\treturn settingslua.AURPreInstallEvent{\n\t\tBase:         base,\n\t\tDir:          dir,\n\t\tPKGBUILDPath: pkgbuildPath,\n\t\tSRCINFOPath:  srcinfoPath,\n\t\tPKGBUILD:     string(pkgbuildBytes),\n\t\tVersion:      srcinfo.Version(),\n\t\tLastModified: aurPreInstallLastModified(base, targets),\n\t\tInstalled:    aurPreInstallInstalled(packages, srcinfo, installed),\n\t\tPackages:     packages,\n\t\tSRCINFO:      srcinfoEventData(srcinfo),","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/Jguer/yay/blob/328f4b4939fb35f38c2f7c7ce3b8638a839bafa5/pkg/sync/workdir/aur_preinstall.go#L89-L125","documentation":"Wraps `gosrc.ParseFile` failures when parsing `.SRCINFO` from an AUR package's build directory to populate the pre-install/post-download event data. A malformed or missing .SRCINFO prevents building the event payload.","triggerScenarios":"`aurPackageEvent` calls `gosrc.ParseFile(srcinfoPath)` on `<dir>/.SRCINFO`; the file is absent (regenerated only after makepkg runs), has invalid syntax, or was truncated.","commonSituations":"Stale build directories where .SRCINFO was deleted or never generated, hand-edited .SRCINFO with invalid keys, partial writes from a crashed previous build.","solutions":["Remove the package's build directory in the cache and rerun so makepkg regenerates a fresh .SRCINFO.","If you edited .SRCINFO manually, restore it from the AUR repository (`git checkout -- .SRCINFO` in the build dir).","Read the wrapped cause for the exact parse line/column and fix the syntax."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"if _, err := os.Stat(filepath.Join(dir, \".SRCINFO\")); err != nil {\n    // regenerate by re-cloning or running makepkg --printsrcinfo > .SRCINFO\n}","typeGuard":null,"tryCatchPattern":"srcinfo, err := gosrc.ParseFile(srcinfoPath)\nif err != nil {\n    return fmt.Errorf(\"invalid .SRCINFO for %s: %w\", base, err)\n}","preventionTips":["Never hand-edit .SRCINFO; regenerate it from the repo","Re-clone stale build dirs after interrupted runs","Run a lint pass on .SRCINFO syntax before relying on it"],"tags":["aur","srcinfo","parse-error","filesystem"],"backgroundTag":"invalid-config-value","analyzedSha":"328f4b4939fb35f38c2f7c7ce3b8638a839bafa5","analyzedAt":"2026-09-07T16:45:12.608Z","contentChangedAt":"2026-09-07T16:45:12.608Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}