{"record":{"id":"aa69b309deb14eb7","repo":"Morganamilo/paru","slug":"could-not-find-srcinfo-for","errorCode":null,"errorMessage":"could not find .SRCINFO for '{}'","messagePattern":"could not find \\.SRCINFO for '(.+?)'","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/install.rs","lineNumber":207,"sourceCode":"            }\n        }\n\n        download::new_aur_pkgbuilds(config, bases, &self.srcinfos).await?;\n\n        for base in &bases.bases {\n            if self.srcinfos.contains_key(base.package_base()) {\n                continue;\n            }\n            let path = config.build_dir.join(base.package_base()).join(\".SRCINFO\");\n            if path.exists() {\n                if let Entry::Vacant(vacant) = self.srcinfos.entry(base.package_base().to_string())\n                {\n                    let srcinfo = Srcinfo::from_path(path)\n                        .with_context(|| tr!(\"failed to parse srcinfo for '{}'\", base))?;\n                    vacant.insert(srcinfo);\n                }\n            } else {\n                bail!(tr!(\"could not find .SRCINFO for '{}'\", base.package_base()));\n            }\n        }\n        Ok(())\n    }\n\n    fn chroot_install(&self, config: &Config, build: &[Base], repo_targs: &[String]) -> Result<()> {\n        if !config.chroot {\n            return Ok(());\n        }\n\n        if !config.args.has_arg(\"w\", \"downloadonly\") {\n            let mut targets = Vec::new();\n\n            let iter = build.iter().filter(|b| {\n                !self\n                    .failed\n                    .iter()\n                    .any(|f| b.package_base() == f.package_base())","sourceCodeStart":189,"sourceCodeEnd":225,"githubUrl":"https://github.com/Morganamilo/paru/blob/9ac3578807a87858651e81a02586ceb947686e7c/src/install.rs#L189-L225","documentation":"download_pkgbuilds expects each requested package to have a .SRCINFO file available locally (after cloning) so it can parse package metadata. If the expected .SRCINFO path does not exist, it bails with \"could not find .SRCINFO for '<pkgbase>'\".","triggerScenarios":"During prepare_build's download step, the cloned/downloaded package directory lacks a .SRCINFO file where the code looks for one — e.g. the download produced an empty or partial directory, or the package on the AUR is malformed.","commonSituations":"AUR package deleted mid-operation; interrupted or failed git clone leaving no .SRCINFO; stale cache directory missing files after an AUR helper upgrade; package that genuinely never had a valid .SRCINFO.","solutions":["Clear the cached clone directory for that package (usually ~/.cache/<helper>/<pkgbase>) and retry","Verify the package still exists and has .SRCINFO on the AUR","Re-run with a fresh clone so the download step completes fully","Check disk space and permissions on the cache directory"],"exampleFix":"// before\nrm -rf ~/.cache/paru/paru.db\n// after (remove just the broken package clone)\nrm -rf ~/.cache/paru/<pkgbase> && paru -S <pkgbase>","handlingStrategy":"validation","validationCode":"let path = cache_dir.join(format!(\"{pkgbase}/.SRCINFO\"));\nif !path.exists() {\n    eprintln!(\"missing .SRCINFO for {pkgbase}; clearing cache clone\");\n    std::fs::remove_dir_all(cache_dir.join(pkgbase)).ok();\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Clear the per-package cache clone when errors mention missing files","Verify the package still exists on the AUR before installing","Avoid interrupting clones mid-download; retry after interruptions","Check cache directory permissions and free disk space"],"tags":["srcinfo","file-not-found","aur","cache"],"backgroundTag":"file-not-found","analyzedSha":"9ac3578807a87858651e81a02586ceb947686e7c","analyzedAt":"2026-09-12T04:57:59.861Z","contentChangedAt":"2026-09-12T04:57:59.861Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}