mirror of https://github.com/Chizi123/Arch-autobuild-repo.git

Joel Grunbaum
yesterday f250049cca24d7178cb52569c1da4273884e5aa8
src/archrepobuild/builder.py
@@ -494,11 +494,12 @@
                error=str(e),
            )
    async def add_package(self, package: str) -> BuildResult:
    async def add_package(self, package: str, include_repo: bool = False) -> BuildResult:
        """Add and build (or download) a new package with dependencies.
        Args:
            package: Package name
            include_repo: Whether to check the managed repository for existing packages
        Returns:
            BuildResult for the main package
@@ -506,7 +507,8 @@
        logger.info(f"Adding package: {package}")
        # Resolve dependencies
        build_order = await self.resolver.resolve([package])
        exclude_repo = None if include_repo else self.config.repository.name
        build_order = await self.resolver.resolve([package], exclude_repo=exclude_repo)
        # Filter build order: skip managed repo, download others, build AUR
        final_results: list[BuildResult] = []
@@ -514,10 +516,14 @@
            repo = self.resolver.is_in_repos(pkg_name)
            
            if repo == self.config.repository.name:
                logger.info(f"Package {pkg_name} already in managed repository, skipping")
                if pkg_name == package:
                    return BuildResult(package=package, status=BuildStatus.SKIPPED)
                continue
                if include_repo:
                    logger.info(f"Package {pkg_name} already in managed repository, skipping")
                    if pkg_name == package:
                        return BuildResult(package=package, status=BuildStatus.SKIPPED)
                    continue
                else:
                    # Treat as not in repo to force rebuild from AUR
                    repo = None
            if repo:
                logger.info(f"Package {pkg_name} found in {repo}, downloading...")
@@ -530,9 +536,10 @@
            if result.status == BuildStatus.SUCCESS:
                if self.repo:
                    logger.info(f"Adding {pkg_name} to repository")
                    self.repo.add_packages(result)
                    # Refresh resolver cache to recognize the newly added package
                    added = self.repo.add_packages(result)
                    if added:
                        logger.info(f"Added to repository: {', '.join(added)}")
                    # Refresh resolver cache to recognize the newly added packages
                    self.resolver._refresh_pacman_cache(sync=True)
            elif result.status == BuildStatus.FAILED:
                logger.error(f"Failed to process {pkg_name}, aborting")