Skip to content

Commit ea4a68a

Browse files
igorpecovnikclaude
andcommitted
fix: merge only imports release-specific packages, not common
Previous behavior: merge was adding ALL packages from isolated pool, including common packages that were already added by update-main. This caused duplicate processing of common packages. New behavior: merge checks each package to see if it belongs to the specific repo (utils or desktop) before adding it. Common packages are skipped since they're already in the main database. This eliminates redundant work - common packages are processed once by update-main, and only release-specific packages are imported from isolated databases during merge. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 338e91c commit ea4a68a

1 file changed

Lines changed: 25 additions & 3 deletions

File tree

tools/repository/repo.sh

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -806,9 +806,20 @@ merge_repos() {
806806
local isolated_pool="${isolated_db}/pool"
807807
if [[ -d "$isolated_pool" ]]; then
808808
# Find all .deb files for this release in the isolated pool
809+
# IMPORTANT: Only add packages that are actually in this repo, not all packages in pool!
809810
find "$isolated_pool" -name "*.deb" -type f | while read -r deb_file; do
810-
# Add to main repo
811-
run_aptly -config="$main_db_config" repo add -force-replace "${release}-utils" "$deb_file"
811+
# Get package info to check if it belongs to this repo
812+
local deb_name deb_version deb_arch
813+
deb_info=$(dpkg-deb -f "$deb_file" Package Version Architecture 2>/dev/null)
814+
deb_name=$(echo "$deb_info" | sed -n '1s/Package: //p')
815+
deb_version=$(echo "$deb_info" | sed -n '2s/Version: //p')
816+
deb_arch=$(echo "$deb_info" | sed -n '3s/Architecture: //p')
817+
local deb_key="${deb_name}_${deb_version}_${deb_arch}"
818+
819+
# Check if this package is in the utils repo
820+
if echo "$packages" | grep -q "^${deb_key}$"; then
821+
run_aptly -config="$main_db_config" repo add -force-replace "${release}-utils" "$deb_file"
822+
fi
812823
done
813824
fi
814825
fi
@@ -833,7 +844,18 @@ merge_repos() {
833844
local isolated_pool="${isolated_db}/pool"
834845
if [[ -d "$isolated_pool" ]]; then
835846
find "$isolated_pool" -name "*.deb" -type f | while read -r deb_file; do
836-
run_aptly -config="$main_db_config" repo add -force-replace "${release}-desktop" "$deb_file"
847+
# Get package info to check if it belongs to this repo
848+
local deb_name deb_version deb_arch
849+
deb_info=$(dpkg-deb -f "$deb_file" Package Version Architecture 2>/dev/null)
850+
deb_name=$(echo "$deb_info" | sed -n '1s/Package: //p')
851+
deb_version=$(echo "$deb_info" | sed -n '2s/Version: //p')
852+
deb_arch=$(echo "$deb_info" | sed -n '3s/Architecture: //p')
853+
local deb_key="${deb_name}_${deb_version}_${deb_arch}"
854+
855+
# Check if this package is in the desktop repo
856+
if echo "$packages" | grep -q "^${deb_key}$"; then
857+
run_aptly -config="$main_db_config" repo add -force-replace "${release}-desktop" "$deb_file"
858+
fi
837859
done
838860
fi
839861
fi

0 commit comments

Comments
 (0)