summarylogtreecommitdiffstats
path: root/0002-sync-filter-deps.patch
blob: 11e322fb792896fc21282b9e46a764dec295375a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
From 3c818fccc3b431d7aea4198e82cd1ccda1e43e5c Mon Sep 17 00:00:00 2001
From: Alad Wenter <alad@archlinux.org>
Date: Thu, 28 Apr 2022 14:44:28 +0200
Subject: [PATCH] sync: filter dependency graph by pkgname, not depends

Before filtering, the dependency graph is in the format:

  $pkgname  $depends    $pkgbase

Since revision 01af4500d77ac1bce6105089603051b4ad554c92, this graph is
filtered (e.g. by packages already in the local repository) by $depends.
In some cases, this does not filter all targets.

For example, when uprading r-cli and r-testthat, aur-sync would build 7
targets instead of 2:

  # cut -f1-3 $tmp/depends
  ...
  r-tibble r-vctrs r-tibble
  r-pillar r-vctrs r-pillar
  r-vctrs r-vctrs r-vctrs
  r-vctrs r r-vctrs
  r-vctrs r-cli r-vctrs
  r-vctrs r-glue  r-vctrs
  r-vctrs r-rlang r-vctrs
  ...

  # after filtering r-vctrs from $2
  # r-vctrs is still a target!
  ...
  r-vctrs r r-vctrs
  r-vctrs r-cli r-vctrs
  r-vctrs r-glue  r-vctrs
  r-vctrs r-rlang r-vctrs
  ...
---
 lib/aur-sync               | 16 ++++++++--------
 makepkg/aurutils.changelog |  3 ++-
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/lib/aur-sync b/lib/aur-sync
index 6bb0d5559..6d3e93a4e 100755
--- a/lib/aur-sync
+++ b/lib/aur-sync
@@ -44,21 +44,21 @@ select_pkgbase() {
 # argv[1]: $1 pkgname (possibly empty, #910)
 # argv[2]: $1 pkgname $2 pkgver
 select_ignores() {
-    awk -v target="$1" 'ARGV[1] == FILENAME {
+    awk 'ARGV[1] == FILENAME {
         map[$1] = 1
         next
     }
-    !($target in map) {
+    !($1 in map) {
         print
-    }' "${@:2}"
+    }' "$@"
 }
 
 # argv[1]: $1 pkgname $2 depends[<>=]
 tr_ver() {
-    awk -v target="$1" '{
-        sub(/[<>=].*/, "", $target)
+    awk '{
+        sub(/[<>=].*/, "", $2)
         print
-    }' "${@:2}"
+    }' "$@"
 }
 
 complement() {
@@ -285,7 +285,7 @@ fi >&2
 
 # db_info: $1 pkgname $2 pkgver
 ( set -o pipefail
-  aur repo "${repo_args[@]}" --list -d "$db_name" -r "$db_root" | select_ignores 1 igni -
+  aur repo "${repo_args[@]}" --list -d "$db_name" -r "$db_root" | select_ignores igni -
 ) >db_info
 
 { if (( $# )); then
@@ -344,7 +344,7 @@ cut -f2,5 --complement depends | sort -u >pkginfo
 } >filter
 
 # $1 pkgname $2 depends $3 pkgbase, filter by $2 (depends and self)
-cut -f1-3 depends | tr_ver 2 | select_ignores 2 filter - | lib32 - >graph_0
+cut -f1-3 depends | tr_ver | select_ignores filter - | lib32 - >graph_0
 
 # XXX a flat file is needed for aur-{graph,fetch,view}. `ninja` requires the
 # build files to be present before dependency resolution (with `ninja -n`) can