Fix build of binary packages in parallel
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
This commit is contained in:
parent
7c70aabe3a
commit
5965610d18
@ -1,44 +0,0 @@
|
||||
From cb9e874ba52d866a86164ae8675ab6f07a35845e Mon Sep 17 00:00:00 2001
|
||||
From: Igor Gnatenko <i.gnatenko.brain@gmail.com>
|
||||
Date: Tue, 11 Jun 2019 00:07:49 +0200
|
||||
Subject: [PATCH] Revert "Run binary package generation in parallel threads"
|
||||
|
||||
https://github.com/rpm-software-management/rpm/issues/742
|
||||
|
||||
This reverts commit 18c92e6fe76df334fed8d5f04b5f40b776daba8c.
|
||||
---
|
||||
build/pack.c | 13 +------------
|
||||
1 file changed, 1 insertion(+), 12 deletions(-)
|
||||
|
||||
diff --git a/build/pack.c b/build/pack.c
|
||||
index 447e3ec94..e8d4c220c 100644
|
||||
--- a/build/pack.c
|
||||
+++ b/build/pack.c
|
||||
@@ -744,23 +744,12 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
|
||||
rpmRC rc = RPMRC_OK;
|
||||
Package pkg;
|
||||
|
||||
- /* Run binary creation in parallel */
|
||||
- #pragma omp parallel
|
||||
- #pragma omp single
|
||||
for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
|
||||
- #pragma omp task
|
||||
- {
|
||||
pkg->rc = packageBinary(spec, pkg, cookie, cheating, &pkg->filename);
|
||||
- rpmlog(RPMLOG_DEBUG,
|
||||
- _("Finished binary package job, result %d, filename %s\n"),
|
||||
- pkg->rc, pkg->filename);
|
||||
if (pkg->rc) {
|
||||
- #pragma omp critical
|
||||
rc = pkg->rc;
|
||||
- }
|
||||
- } /* omp task */
|
||||
- if (rc)
|
||||
break;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Now check the package set if enabled */
|
||||
--
|
||||
2.22.0.rc3
|
||||
|
28
0001-build-Limit-copying-changelog-one-at-a-time.patch
Normal file
28
0001-build-Limit-copying-changelog-one-at-a-time.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From 8aab33f69c9d78b6d4d4e79ba661ae01cd970f2b Mon Sep 17 00:00:00 2001
|
||||
From: Igor Gnatenko <i.gnatenko.brain@gmail.com>
|
||||
Date: Tue, 11 Jun 2019 14:22:07 +0200
|
||||
Subject: [PATCH] build: Limit copying changelog one at a time
|
||||
|
||||
Getting header content in multiple threads is causing problems since it
|
||||
can (and apparently does) change internal state.
|
||||
|
||||
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
|
||||
---
|
||||
build/pack.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/build/pack.c b/build/pack.c
|
||||
index ab72750be..e6cec1816 100644
|
||||
--- a/build/pack.c
|
||||
+++ b/build/pack.c
|
||||
@@ -713,6 +713,7 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
|
||||
}
|
||||
|
||||
/* Copy changelog from src rpm */
|
||||
+ #pragma omp critical
|
||||
headerCopyTags(spec->sourcePackage->header, pkg->header, copyTags);
|
||||
|
||||
headerPutString(pkg->header, RPMTAG_RPMVERSION, VERSION);
|
||||
--
|
||||
2.22.0
|
||||
|
11
rpm.spec
11
rpm.spec
@ -21,7 +21,7 @@
|
||||
|
||||
%global rpmver 4.14.90
|
||||
%global snapver git14653
|
||||
%global rel 12
|
||||
%global rel 13
|
||||
|
||||
%global srcver %{version}%{?snapver:-%{snapver}}
|
||||
%global srcdir %{?snapver:testing}%{!?snapver:%{name}-%(echo %{version} | cut -d'.' -f1-2).x}
|
||||
@ -49,10 +49,10 @@ Patch3: rpm-4.9.90-no-man-dirs.patch
|
||||
Patch5: rpm-4.12.0-rpm2cpio-hack.patch
|
||||
# https://github.com/rpm-software-management/rpm/pull/473
|
||||
Patch6: 0001-find-debuginfo.sh-decompress-DWARF-compressed-ELF-se.patch
|
||||
# https://github.com/rpm-software-management/rpm/issues/742
|
||||
#Patch7: 0001-Revert-Run-binary-package-generation-in-parallel-thr.patch
|
||||
# https://github.com/rpm-software-management/rpm/commit/526641ceeca12fbaa878401f8e65d17f240a9ae5
|
||||
Patch7: 0001-Only-permit-one-thread-at-a-time-in-addFileToTag.patch
|
||||
Patch8: test.diff
|
||||
# https://github.com/rpm-software-management/rpm/pull/745
|
||||
Patch8: 0001-build-Limit-copying-changelog-one-at-a-time.patch
|
||||
|
||||
# Patches already upstream:
|
||||
|
||||
@ -541,6 +541,9 @@ make check || (cat tests/rpmtests.log; exit 0)
|
||||
%doc doc/librpm/html/*
|
||||
|
||||
%changelog
|
||||
* Tue Jun 11 14:59:16 CEST 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 4.14.90-0.git14653.13
|
||||
- Fix build of binary packages in parallel
|
||||
|
||||
* Tue Jun 11 00:08:50 CEST 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 4.14.90-0.git14653.10
|
||||
- Revert generation of binary packages in parallel
|
||||
|
||||
|
12
test.diff
12
test.diff
@ -1,12 +0,0 @@
|
||||
diff --git a/build/pack.c b/build/pack.c
|
||||
index ab72750be..e6cec1816 100644
|
||||
--- a/build/pack.c
|
||||
+++ b/build/pack.c
|
||||
@@ -713,6 +713,7 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
|
||||
}
|
||||
|
||||
/* Copy changelog from src rpm */
|
||||
+ #pragma omp critical
|
||||
headerCopyTags(spec->sourcePackage->header, pkg->header, copyTags);
|
||||
|
||||
headerPutString(pkg->header, RPMTAG_RPMVERSION, VERSION);
|
Loading…
Reference in New Issue
Block a user