A. Wilcox: 3 list: Detect orphaned packages correctly list: Detect orphaned packages correctly None 3 files changed, 6 insertions(+), 6 deletions(-)
Hi, Applied. Thanks! On Wed, 1 May 2019 08:59:16 -0500 "A. Wilcox" <AWilcox@Wilcox-Tech.com> wrote:
Copy & paste the following snippet into your terminal to import this patchset into git:
curl -s https://lists.alpinelinux.org/~alpine/devel/patches/770/mbox | git am -3Learn more about email & git
BIT(1) corresponds with decimal 2, which is the first available repository. BIT(0) corresponds with decimal 1, which is the installed repository. Before this fix, `apk list -O` would list every package installed from the first available repository, which is the 'system' repository on most Adélie Linux computers. After this fix, `apk list -O` correctly lists only the packages which are no longer available. --- src/list.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/list.c b/src/list.c index e285e3f..dcbaeea 100644 --- a/src/list.c +++ b/src/list.c @@ -61,7 +61,7 @@ static int is_orphaned(const struct apk_name *name) /* repo 1 is always installed-db, so if other bits are set it means the package is available somewhere * (either cache or in a proper repo) */ - return (repos & ~BIT(1)) == 0; + return (repos & ~BIT(0)) == 0; } /* returns the currently installed package if there is a newer package that satisfies `name` */ @@ -144,7 +144,7 @@ static void filter_package(const struct apk_package *pkg, const struct list_ctx if (ctx->orphaned && !is_orphaned(pkg->name)) return; - if (ctx->available && pkg->repos == BIT(1)) + if (ctx->available && pkg->repos == BIT(0)) return; if (ctx->upgradable && !is_upgradable(pkg->name, pkg)) -- 2.21.0 --- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---
BIT(1) corresponds with decimal 2, which is the first available repository. Before this fix, `apk list -O` would list every package installed from the first available repository, which is the 'system' repository on most Adélie Linux computers. After this fix, `apk list -O` correctly lists only the packages which are no longer available. --- src/list.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/list.c b/src/list.c index e285e3f..202dab2 100644 --- a/src/list.c +++ b/src/list.c @@ -61,7 +61,7 @@ static int is_orphaned(const struct apk_name *name) /* repo 1 is always installed-db, so if other bits are set it means the package is available somewhere * (either cache or in a proper repo) */ - return (repos & ~BIT(1)) == 0; + return (repos & ~BIT(APK_REPOSITORY_CACHED)) == 0; } /* returns the currently installed package if there is a newer package that satisfies `name` */ @@ -144,7 +144,7 @@ static void filter_package(const struct apk_package *pkg, const struct list_ctx if (ctx->orphaned && !is_orphaned(pkg->name)) return; - if (ctx->available && pkg->repos == BIT(1)) + if (ctx->available && pkg->repos == BIT(APK_REPOSITORY_CACHED)) return; if (ctx->upgradable && !is_upgradable(pkg->name, pkg))
Timo Teras <timo.teras@iki.fi>--- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---
-- 2.21.0 --- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---
Timo Teras <timo.teras@iki.fi>Hi, Applied. Thanks! On Wed, 1 May 2019 08:59:16 -0500 "A. Wilcox" <AWilcox@Wilcox-Tech.com> wrote:
BIT(1) corresponds with decimal 2, which is the first available repository. BIT(0) corresponds with decimal 1, which is the installed repository. Before this fix, `apk list -O` would list every package installed from the first available repository, which is the 'system' repository on most Adélie Linux computers. After this fix, `apk list -O` correctly lists only the packages which are no longer available. --- src/list.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/list.c b/src/list.c index e285e3f..dcbaeea 100644 --- a/src/list.c +++ b/src/list.c @@ -61,7 +61,7 @@ static int is_orphaned(const struct apk_name *name) /* repo 1 is always installed-db, so if other bits are set it means the package is available somewhere * (either cache or in a proper repo) */ - return (repos & ~BIT(1)) == 0; + return (repos & ~BIT(0)) == 0; } /* returns the currently installed package if there is a newer package that satisfies `name` */ @@ -144,7 +144,7 @@ static void filter_package(const struct apk_package *pkg, const struct list_ctx if (ctx->orphaned && !is_orphaned(pkg->name)) return; - if (ctx->available && pkg->repos == BIT(1)) + if (ctx->available && pkg->repos == BIT(0)) return; if (ctx->upgradable && !is_upgradable(pkg->name, pkg))
Timo Teras <timo.teras@iki.fi>--- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---
-- 2.21.0 --- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---
Timo Teras <timo.teras@iki.fi>Hi, Seems this is a bug in the relatively new 'list' applet. Rest of the code uses: repos == BIT(APK_REPOSITORY_CACHED) maybe also use this syntax consistently in both locations. Care to update the patch with this? Thanks, Timo On Thu, 21 Mar 2019 18:42:32 -0500 "A. Wilcox" <AWilcox@Wilcox-Tech.com> wrote: