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

Joel Grunbaum
yesterday 644280c8d9e4245f235a5f844809d3fc79ab3155
Skip trying to build packages in repos
3 files modified
33 ■■■■ changed files
src/archbuild/builder.py 7 ●●●●● patch | view | raw | blame | history
src/archbuild/cli.py 2 ●●●●● patch | view | raw | blame | history
src/archbuild/resolver.py 24 ●●●● patch | view | raw | blame | history
src/archbuild/builder.py
@@ -421,6 +421,13 @@
        # Resolve dependencies
        build_order = await self.resolver.resolve([package])
        if package not in build_order.packages:
            logger.info(f"Package {package} does not need to be built")
            return BuildResult(
                package=package,
                status=BuildStatus.SKIPPED,
            )
        # Build dependencies first
        results: list[BuildResult] = []
        for dep in build_order:
src/archbuild/cli.py
@@ -136,6 +136,8 @@
                    if result.status == BuildStatus.SUCCESS:
                        repo.add_packages(result)
                        console.print(f"[green]✓[/] {package} added successfully")
                    elif result.status == BuildStatus.SKIPPED:
                        console.print(f"[yellow]⏭[/] {package} skipped (already in official repos or installed)")
                    else:
                        console.print(f"[red]✗[/] {package} failed: {result.error}")
src/archbuild/resolver.py
@@ -78,7 +78,7 @@
        """Refresh cache of packages available from official repos."""
        try:
            result = subprocess.run(
                ["pacman", "-Ssq"],
                ["pacman", "-Slq"],
                capture_output=True,
                text=True,
                check=True,
@@ -270,13 +270,27 @@
        Raises:
            ValueError: If package not found or circular dependency
        """
        logger.info(f"Resolving dependencies for: {', '.join(package_names)}")
        # Filter out packages already in official repos or installed
        aur_package_names = []
        for name in package_names:
            if self.is_in_official_repos(name):
                logger.info(f"Package {name} found in official repositories, skipping AUR lookup")
                continue
            if self.is_installed(name):
                logger.info(f"Package {name} is already installed, skipping AUR lookup")
                continue
            aur_package_names.append(name)
        if not aur_package_names:
            return BuildOrder()
        logger.info(f"Resolving dependencies for: {', '.join(aur_package_names)}")
        # Fetch requested packages
        packages_list = await self.aur_client.get_packages(package_names)
        if len(packages_list) != len(package_names):
        packages_list = await self.aur_client.get_packages(aur_package_names)
        if len(packages_list) != len(aur_package_names):
            found = {p.name for p in packages_list}
            missing = set(package_names) - found
            missing = set(aur_package_names) - found
            raise ValueError(f"Packages not found in AUR: {missing}")
        # Build dependency graph