Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
aports
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
645
Issues
645
List
Boards
Labels
Service Desk
Milestones
Merge Requests
182
Merge Requests
182
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
alpine
aports
Commits
1b98a2fa
Commit
1b98a2fa
authored
Jul 02, 2019
by
Timo Teräs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
main/apk-tools: cherry-pick fix for #10648
ref #10648 (cherry picked from commit
129e1119
)
parent
f47a9e1d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
112 additions
and
1 deletion
+112
-1
main/apk-tools/0001-add-fix-virtual-package-id-generation.patch
...pk-tools/0001-add-fix-virtual-package-id-generation.patch
+109
-0
main/apk-tools/APKBUILD
main/apk-tools/APKBUILD
+3
-1
No files found.
main/apk-tools/0001-add-fix-virtual-package-id-generation.patch
0 → 100644
View file @
1b98a2fa
From b45415b1096e76f40b32326d2798123f81fe5976 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Tue, 2 Jul 2019 15:27:57 +0300
Subject: [PATCH] add: fix virtual package id generation
Fixes 37fbafcd by adding more input to the hash than just second
grained time stamp - collisions would happen when running apk
scripted.
For virtual package the hash works only as unique identifier, so
try to add elements that should make it unique in most cases.
Fixes #10648
---
src/add.c | 51 +++++++++++++++++++++++++++++++++++----------------
1 file changed, 35 insertions(+), 16 deletions(-)
diff --git a/src/add.c b/src/add.c
index 2d342ab..e028736 100644
--- a/src/add.c
+++ b/src/add.c
@@ -11,6 +11,7 @@
#include <errno.h>
#include <stdio.h>
+#include <unistd.h>
#include "apk_applet.h"
#include "apk_database.h"
#include "apk_print.h"
@@ -80,6 +81,38 @@
static int non_repository_check(struct apk_database *db)
return 1;
}
+static struct apk_package *create_virtual_package(struct apk_database *db, struct apk_name *name)
+{
+ char ver[32];
+ struct apk_package *virtpkg;
+ struct tm tm;
+ EVP_MD_CTX *mdctx;
+ time_t now = apk_time();
+ pid_t pid = getpid();
+
+ localtime_r(&now, &tm);
+ strftime(ver, sizeof ver, "%Y%m%d.%H%M%S", &tm);
+
+ virtpkg = apk_pkg_new();
+ if (virtpkg == NULL) return 0;
+
+ virtpkg->name = name;
+ virtpkg->version = apk_blob_atomize(APK_BLOB_STR(ver));
+ virtpkg->description = strdup("virtual meta package");
+ virtpkg->arch = apk_blob_atomize(APK_BLOB_STR("noarch"));
+
+ mdctx = EVP_MD_CTX_new();
+ EVP_DigestInit_ex(mdctx, apk_checksum_default(), NULL);
+ EVP_DigestUpdate(mdctx, &tm, sizeof tm);
+ EVP_DigestUpdate(mdctx, &pid, sizeof pid);
+ EVP_DigestUpdate(mdctx, virtpkg->name->name, strlen(virtpkg->name->name) + 1);
+ virtpkg->csum.type = EVP_MD_CTX_size(mdctx);
+ EVP_DigestFinal_ex(mdctx, virtpkg->csum.data, NULL);
+ EVP_MD_CTX_free(mdctx);
+
+ return virtpkg;
+}
+
static int add_main(void *ctx, struct apk_database *db, struct apk_string_array *args)
{
struct add_ctx *actx = (struct add_ctx *) ctx;
@@ -93,10 +126,6 @@
static int add_main(void *ctx, struct apk_database *db, struct apk_string_array
if (actx->virtpkg) {
apk_blob_t b = APK_BLOB_STR(actx->virtpkg);
- struct tm tm;
- time_t now;
- char ver[32];
-
apk_blob_pull_dep(&b, db, &virtdep);
if (APK_BLOB_IS_NULL(b) || virtdep.conflict ||
virtdep.result_mask != APK_DEPMASK_ANY ||
@@ -104,24 +133,14 @@
static int add_main(void *ctx, struct apk_database *db, struct apk_string_array
apk_error("%s: bad package specifier");
return -1;
}
-
if (virtdep.name->name[0] != '.' && non_repository_check(db))
return -1;
- now = apk_time();
- localtime_r(&now, &tm);
- strftime(ver, sizeof ver, "%Y%m%d.%H%M%S", &tm);
-
- virtpkg = apk_pkg_new();
- if (virtpkg == NULL) {
+ virtpkg = create_virtual_package(db, virtdep.name);
+ if (!virtpkg) {
apk_error("Failed to allocate virtual meta package");
return -1;
}
- virtpkg->name = virtdep.name;
- apk_blob_checksum(APK_BLOB_STR(ver), apk_checksum_default(), &virtpkg->csum);
- virtpkg->version = apk_blob_atomize(APK_BLOB_STR(ver));
- virtpkg->description = strdup("virtual meta package");
- virtpkg->arch = apk_blob_atomize(APK_BLOB_STR("noarch"));
virtdep.result_mask = APK_VERSION_EQUAL;
virtdep.version = virtpkg->version;
--
2.22.0
main/apk-tools/APKBUILD
View file @
1b98a2fa
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname
=
apk-tools
pkgver
=
2.10.4
pkgrel
=
1
pkgrel
=
2
pkgdesc
=
"Alpine Package Keeper - package manager for alpine"
subpackages
=
"
$pkgname
-static"
depends
=
...
...
@@ -13,6 +13,7 @@ if [ "$CBUILD" = "$CHOST" ]; then
makedepends
=
"
$makedepends
lua5.2-dev"
fi
source
=
"https://dev.alpinelinux.org/archive/
$pkgname
/
$pkgname
-
$pkgver
.tar.xz
0001-add-fix-virtual-package-id-generation.patch
lua-apk_time.patch
"
...
...
@@ -84,4 +85,5 @@ luaapk() {
}
sha512sums
=
"d2d9fde0aae9059236f68a3fc2f2186104bb9a099b15d296a6202a20ab2912638f10bb3b9edb70f359d060c5839573c3d50ef37d13095fa01c66dc3219ab6e39 apk-tools-2.10.4.tar.xz
3cf1ae421e136ebe8c037a468fbeb3bca11668eb04dd4b8b9346c4089306002c891d6c2544d22522550f37a4fad0dfcecabceb4c8872165ea6827dcce46d9f2b 0001-add-fix-virtual-package-id-generation.patch
7751f4ddbf3f1b14f5d70ea0f8c2f78168d6138272f883fe1c0137ed135c3f3639f4bf2860dbf6b6de0d4321c93ec9c150edaf5f496c4dc0fedd0a201f399599 lua-apk_time.patch"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment