85 lines
2.5 KiB
Diff
85 lines
2.5 KiB
Diff
|
From 721a660a507d6d062e7aecafad886c643970a5d5 Mon Sep 17 00:00:00 2001
|
||
|
From: Alexander Kanavin <alex.kanavin@gmail.com>
|
||
|
Date: Thu, 25 May 2017 18:15:27 +0300
|
||
|
Subject: [PATCH 1/4] Split binary package building into a separate function
|
||
|
|
||
|
So that it can be run as a thread pool task.
|
||
|
|
||
|
Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
|
||
|
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
|
||
|
|
||
|
---
|
||
|
build/pack.c | 33 +++++++++++++++++++++------------
|
||
|
1 file changed, 21 insertions(+), 12 deletions(-)
|
||
|
|
||
|
diff --git a/build/pack.c b/build/pack.c
|
||
|
index 518f4e92a..ccfd614cc 100644
|
||
|
--- a/build/pack.c
|
||
|
+++ b/build/pack.c
|
||
|
@@ -546,18 +546,13 @@ static rpmRC checkPackages(char *pkgcheck)
|
||
|
return RPMRC_OK;
|
||
|
}
|
||
|
|
||
|
-rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
|
||
|
+static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int cheating, char** filename)
|
||
|
{
|
||
|
- rpmRC rc;
|
||
|
- const char *errorString;
|
||
|
- Package pkg;
|
||
|
- char *pkglist = NULL;
|
||
|
-
|
||
|
- for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
|
||
|
- char *fn;
|
||
|
+ const char *errorString;
|
||
|
+ rpmRC rc = RPMRC_OK;
|
||
|
|
||
|
if (pkg->fileList == NULL)
|
||
|
- continue;
|
||
|
+ return rc;
|
||
|
|
||
|
if ((rc = processScriptFiles(spec, pkg)))
|
||
|
return rc;
|
||
|
@@ -587,7 +582,7 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
|
||
|
headerGetString(pkg->header, RPMTAG_NAME), errorString);
|
||
|
return RPMRC_FAIL;
|
||
|
}
|
||
|
- fn = rpmGetPath("%{_rpmdir}/", binRpm, NULL);
|
||
|
+ *filename = rpmGetPath("%{_rpmdir}/", binRpm, NULL);
|
||
|
if ((binDir = strchr(binRpm, '/')) != NULL) {
|
||
|
struct stat st;
|
||
|
char *dn;
|
||
|
@@ -609,14 +604,28 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
|
||
|
free(binRpm);
|
||
|
}
|
||
|
|
||
|
- rc = writeRPM(pkg, NULL, fn, NULL);
|
||
|
+ rc = writeRPM(pkg, NULL, *filename, NULL);
|
||
|
if (rc == RPMRC_OK) {
|
||
|
/* Do check each written package if enabled */
|
||
|
- char *pkgcheck = rpmExpand("%{?_build_pkgcheck} ", fn, NULL);
|
||
|
+ char *pkgcheck = rpmExpand("%{?_build_pkgcheck} ", *filename, NULL);
|
||
|
if (pkgcheck[0] != ' ') {
|
||
|
rc = checkPackages(pkgcheck);
|
||
|
}
|
||
|
free(pkgcheck);
|
||
|
+ }
|
||
|
+ return rc;
|
||
|
+}
|
||
|
+
|
||
|
+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
|
||
|
+{
|
||
|
+ rpmRC rc;
|
||
|
+ Package pkg;
|
||
|
+ char *pkglist = NULL;
|
||
|
+
|
||
|
+ for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
|
||
|
+ char *fn = NULL;
|
||
|
+ rc = packageBinary(spec, pkg, cookie, cheating, &fn);
|
||
|
+ if (rc == RPMRC_OK) {
|
||
|
rstrcat(&pkglist, fn);
|
||
|
rstrcat(&pkglist, " ");
|
||
|
}
|
||
|
--
|
||
|
2.11.0
|
||
|
|