From 644280c8d9e4245f235a5f844809d3fc79ab3155 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Sun, 08 Feb 2026 00:22:16 +0000
Subject: [PATCH] Skip trying to build packages in repos

---
 src/archbuild/cli.py      |    2 ++
 src/archbuild/resolver.py |   24 +++++++++++++++++++-----
 src/archbuild/builder.py  |    7 +++++++
 3 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/src/archbuild/builder.py b/src/archbuild/builder.py
index 597f495..2a478ae 100644
--- a/src/archbuild/builder.py
+++ b/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:
diff --git a/src/archbuild/cli.py b/src/archbuild/cli.py
index a05b9ba..0640974 100644
--- a/src/archbuild/cli.py
+++ b/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}")
 
diff --git a/src/archbuild/resolver.py b/src/archbuild/resolver.py
index 1b89a98..0a11e63 100644
--- a/src/archbuild/resolver.py
+++ b/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

--
Gitblit v1.10.0