meta-starlingx: remove the upstream layer
[pti/rtp.git] / meta-starlingx / meta-stx-integ / recipes-devtools / rpm / files / 0002-Run-binary-package-creation-via-thread-pools.patch
diff --git a/meta-starlingx/meta-stx-integ/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch b/meta-starlingx/meta-stx-integ/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch
deleted file mode 100644 (file)
index d10041c..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-From 513200cf76758de4668312c628d6362bdabfaf4b Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 25 May 2017 19:30:20 +0300
-Subject: [PATCH 1/3] Run binary package creation via thread pools.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- build/pack.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
- configure.ac |  3 +++
- 2 files changed, 70 insertions(+), 14 deletions(-)
-
-diff --git a/build/pack.c b/build/pack.c
-index ccfd614cc..ed5b9ab4e 100644
---- a/build/pack.c
-+++ b/build/pack.c
-@@ -616,25 +616,78 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
-       return rc;
- }
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+struct binaryPackageTaskData
- {
--    rpmRC rc;
-     Package pkg;
-+    char *filename;
-+    rpmRC result;
-+    struct binaryPackageTaskData *next;
-+};
-+
-+static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const char *cookie, int cheating)
-+{
-+    struct binaryPackageTaskData *tasks = NULL;
-+    struct binaryPackageTaskData *task = NULL;
-+    struct binaryPackageTaskData *prev = NULL;
-+
-+    for (Package pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-+        task = rcalloc(1, sizeof(*task));
-+        task->pkg = pkg;
-+        if (pkg == spec->packages) {
-+            // the first package needs to be processed ahead of others, as they copy
-+            // changelog data from it, and so otherwise data races would happen
-+            task->result = packageBinary(spec, pkg, cookie, cheating, &(task->filename));
-+            rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
-+            tasks = task;
-+        }
-+        if (prev != NULL) {
-+            prev->next = task;
-+        }
-+        prev = task;
-+    }
-+
-+    #pragma omp parallel
-+    #pragma omp single
-+    // re-declaring task variable is necessary, or older gcc versions will produce code that segfaults
-+    for (struct binaryPackageTaskData *task = tasks; task != NULL; task = task->next) {
-+        if (task != tasks)
-+        #pragma omp task
-+        {
-+            task->result = packageBinary(spec, task->pkg, cookie, cheating, &(task->filename));
-+            rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
-+        }
-+    }
-+
-+    return tasks;
-+}
-+
-+static void freeBinaryPackageTasks(struct binaryPackageTaskData* tasks)
-+{
-+    while (tasks != NULL) {
-+        struct binaryPackageTaskData* next = tasks->next;
-+        rfree(tasks->filename);
-+        rfree(tasks);
-+        tasks = next;
-+    }
-+}
-+
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+{
-     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, " ");
--      }
--      free(fn);
--      if (rc != RPMRC_OK) {
--          pkglist = _free(pkglist);
--          return rc;
--      }
-+    struct binaryPackageTaskData *tasks = runBinaryPackageTasks(spec, cookie, cheating);
-+
-+    for (struct binaryPackageTaskData *task = tasks; task != NULL; task = task->next) {
-+        if (task->result == RPMRC_OK) {
-+            rstrcat(&pkglist, task->filename);
-+            rstrcat(&pkglist, " ");
-+        } else {
-+            _free(pkglist);
-+            freeBinaryPackageTasks(tasks);
-+            return RPMRC_FAIL;
-+        }
-     }
-+    freeBinaryPackageTasks(tasks);
-     /* Now check the package set if enabled */
-     if (pkglist != NULL) {
-diff --git a/configure.ac b/configure.ac
-index a506ec819..59fa0acaf 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -17,6 +17,9 @@ AC_DISABLE_STATIC
- PKG_PROG_PKG_CONFIG
-+AC_OPENMP
-+RPMCFLAGS="$OPENMP_CFLAGS $RPMCFLAGS"
-+
- dnl Checks for programs.
- AC_PROG_CXX
- AC_PROG_AWK
--- 
-2.11.0
-