Update to 4.19.1 (https://rpm.org/wiki/Releases/4.19.1)
Tools have been moved into the tools/ directory in the tarball so update the ./rpmdb path accordingly. Also remove the README.md file that is installed from the docs/ directory and ends up alongside the project's README file for no good reason. This is tracked upstream as: https://github.com/rpm-software-management/rpm/issues/2811
This commit is contained in:
parent
740af9c26b
commit
6fcc972733
1
.gitignore
vendored
1
.gitignore
vendored
@ -61,3 +61,4 @@
|
||||
/rpm-4.18.92.tar.bz2
|
||||
/rpm-4.18.99.tar.bz2
|
||||
/rpm-4.19.0.tar.bz2
|
||||
/rpm-4.19.1.tar.bz2
|
||||
|
@ -1,31 +0,0 @@
|
||||
From 026e7f75e549280d43cdb4c8a1b2faa6e9db0fa3 Mon Sep 17 00:00:00 2001
|
||||
From: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Wed, 15 Nov 2023 09:24:28 +0200
|
||||
Subject: [PATCH 1/2] Fix %{getncpus proc/thread} potentially returning zero
|
||||
|
||||
Add the missing sanity check/fixup for memory starved systems where
|
||||
we end up returning zero cpus. Should've been in commit
|
||||
deaebd0c89a6d453bb971fd8f5a3b858e7a95733 originally.
|
||||
|
||||
Reported in https://issues.redhat.com/browse/RHEL-16557
|
||||
---
|
||||
rpmio/macro.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/rpmio/macro.c b/rpmio/macro.c
|
||||
index 1cccaa98a88c56ed27701f820be01c3f8e7615d1..98067442555f7c458ea4976d96b5438db01bd031 100644
|
||||
--- a/rpmio/macro.c
|
||||
+++ b/rpmio/macro.c
|
||||
@@ -1255,6 +1255,9 @@ static void doGetncpus(MacroBuf mb, rpmMacroEntry me, ARGV_t argv, size_t *parse
|
||||
if (mcpus < ncpus)
|
||||
ncpus = mcpus;
|
||||
}
|
||||
+ /* Ensure at least one CPU, no matter how starved */
|
||||
+ if (ncpus < 1)
|
||||
+ ncpus = 1;
|
||||
|
||||
sprintf(buf, "%u", ncpus);
|
||||
mbAppendStr(mb, buf);
|
||||
--
|
||||
2.43.0
|
||||
|
@ -1,78 +0,0 @@
|
||||
From eb8660e2aae2f0366886e73dc37beb236e89188b Mon Sep 17 00:00:00 2001
|
||||
From: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Thu, 16 Nov 2023 14:22:15 +0200
|
||||
Subject: [PATCH 2/2] Fix integer overflow in memory calculations on 32bit
|
||||
systems
|
||||
|
||||
"long int" on at least x86 Linux is exactly the same as a plain "int",
|
||||
so calculations can easily overflow. 32bit systems are not expected to
|
||||
have hundreds of gigabytes of memory but a 32bit process on a x86_64 can
|
||||
run into all sorts of funny things, such having 500GB system memory. At
|
||||
which point the type capable of addressing all of process memory is
|
||||
absolutely useless for calculating the total memory.
|
||||
|
||||
Use uint64_t in the memory calculations to make the size explicit. Of course
|
||||
one day we may cross that border too, but I hope to be retired by then.
|
||||
|
||||
Fixes https://issues.redhat.com/browse/RHEL-16557
|
||||
---
|
||||
rpmio/macro.c | 20 +++++++++++---------
|
||||
1 file changed, 11 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/rpmio/macro.c b/rpmio/macro.c
|
||||
index 98067442555f7c458ea4976d96b5438db01bd031..354b06b0ed34c030638788da5d397b7ba108e806 100644
|
||||
--- a/rpmio/macro.c
|
||||
+++ b/rpmio/macro.c
|
||||
@@ -1177,30 +1177,32 @@ static void doShescape(MacroBuf mb, rpmMacroEntry me, ARGV_t argv, size_t *parse
|
||||
mbAppend(mb, '\'');
|
||||
}
|
||||
|
||||
-static unsigned long getmem_total(void)
|
||||
+static uint64_t getmem_total(void)
|
||||
{
|
||||
- unsigned long mem = 0;
|
||||
+ uint64_t mem = 0;
|
||||
long int pagesize = sysconf(_SC_PAGESIZE);
|
||||
long int pages = sysconf(_SC_PHYS_PAGES);
|
||||
|
||||
- if (pagesize < 0)
|
||||
+ if (pagesize <= 0)
|
||||
pagesize = 4096;
|
||||
- if (pages > 0)
|
||||
- mem = pages * pagesize;
|
||||
+ if (pages > 0) {
|
||||
+ /* Cast needed to force 64bit calculation on 32bit systems */
|
||||
+ mem = (uint64_t)pages * pagesize;
|
||||
+ }
|
||||
|
||||
return mem;
|
||||
}
|
||||
|
||||
-static unsigned long getmem_proc(int thread)
|
||||
+static uint64_t getmem_proc(int thread)
|
||||
{
|
||||
- unsigned long mem = getmem_total();
|
||||
+ uint64_t mem = getmem_total();
|
||||
/*
|
||||
* Conservative estimates for thread use on 32bit systems where address
|
||||
* space is an issue: 2GB for bare metal, 3GB for a 32bit process
|
||||
* on a 64bit system.
|
||||
*/
|
||||
if (thread) {
|
||||
- unsigned long vmem = mem;
|
||||
+ uint64_t vmem = mem;
|
||||
#if __WORDSIZE == 32
|
||||
vmem = UINT32_MAX / 2;
|
||||
#else
|
||||
@@ -1224,7 +1226,7 @@ static void doGetncpus(MacroBuf mb, rpmMacroEntry me, ARGV_t argv, size_t *parse
|
||||
const char *arg = argv[1] ? argv[1] : "total";
|
||||
char buf[32];
|
||||
unsigned int ncpus = getncpus();
|
||||
- unsigned long mem = 0;
|
||||
+ uint64_t mem = 0;
|
||||
|
||||
if (rstreq(arg, "total")) {
|
||||
/* nothing */
|
||||
--
|
||||
2.43.0
|
||||
|
@ -1,184 +0,0 @@
|
||||
From fff4b0b2249223fccddcce9eea8658ddd12f30a0 Mon Sep 17 00:00:00 2001
|
||||
From: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Fri, 3 Nov 2023 11:34:54 +0200
|
||||
Subject: [PATCH 1/4] Use macro error reporting for %add_sysuser errors
|
||||
|
||||
Lua has error() but no warning() (obviously) which we'll want in the next
|
||||
step, so for consistency lets just use macro.error() instead.
|
||||
---
|
||||
macros.in | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/macros.in b/macros.in
|
||||
index a047d1e388..1f6d8b252f 100644
|
||||
--- a/macros.in
|
||||
+++ b/macros.in
|
||||
@@ -1325,14 +1325,14 @@ end
|
||||
prefix = 'Provides: '
|
||||
end
|
||||
if #arg < 2 then
|
||||
- error('not enough arguments')
|
||||
+ macros.error({'not enough arguments'})
|
||||
end
|
||||
if arg[1] == 'g' then
|
||||
type = 'group'
|
||||
elseif arg[1] == 'u' then
|
||||
type = 'user'
|
||||
else
|
||||
- error('invalid sysuser type: '..arg[1])
|
||||
+ macros.error({'invalid sysuser type: '..arg[1]})
|
||||
end
|
||||
name = arg[2]
|
||||
line = table.concat(arg, ' ')
|
||||
|
||||
From 8e392aef642fba1f63b6d86b11fad85d63d94ba1 Mon Sep 17 00:00:00 2001
|
||||
From: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Fri, 3 Nov 2023 11:51:11 +0200
|
||||
Subject: [PATCH 2/4] Fix an apparent thinko/typo in the sysusers test spec
|
||||
|
||||
I'm quite sure I didn't really intend to test duplicate files behavior
|
||||
here...
|
||||
---
|
||||
tests/data/SPECS/klang.spec | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/data/SPECS/klang.spec b/tests/data/SPECS/klang.spec
|
||||
index 7e917fdc7f..e6cce1add8 100644
|
||||
--- a/tests/data/SPECS/klang.spec
|
||||
+++ b/tests/data/SPECS/klang.spec
|
||||
@@ -28,6 +28,7 @@ Summary: %{SUMMARY} server
|
||||
|
||||
%install
|
||||
mkdir -p ${RPM_BUILD_ROOT}/var/lib/klangd
|
||||
+mkdir -p ${RPM_BUILD_ROOT}/var/lib/plongd
|
||||
mkdir -p ${RPM_BUILD_ROOT}/usr/bin/
|
||||
mkdir -p ${RPM_BUILD_ROOT}/etc
|
||||
mkdir -p ${RPM_BUILD_ROOT}/%{_sysusersdir}
|
||||
@@ -59,5 +60,5 @@ EOF
|
||||
%{_sysusersdir}/klangd.conf
|
||||
%{_sysusersdir}/plong.conf
|
||||
%attr(-,klangd,klangd) /var/lib/klangd
|
||||
-%attr(-,plong,klong) /var/lib/klangd
|
||||
+%attr(-,plong,klong) /var/lib/plongd
|
||||
/usr/bin/klangd
|
||||
|
||||
From 59a212dbe3cb19331582c9c022105ae47b9ace21 Mon Sep 17 00:00:00 2001
|
||||
From: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Fri, 3 Nov 2023 11:53:11 +0200
|
||||
Subject: [PATCH 3/4] Handle unsupported 'r' and 'm' sysusers types more
|
||||
gracefully
|
||||
|
||||
People will want to use existing sysusers.d files through rpm and while
|
||||
we don't support 'r' and 'm' at this time, we shouldn't really call
|
||||
them "invalid" and error out. Issue a warning instead, and ignore.
|
||||
|
||||
This is the first half of
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=2246236
|
||||
---
|
||||
macros.in | 3 +++
|
||||
tests/data/SPECS/klang.spec | 2 ++
|
||||
tests/rpmi.at | 7 +++++++
|
||||
3 files changed, 12 insertions(+)
|
||||
|
||||
diff --git a/macros.in b/macros.in
|
||||
index 1f6d8b252f..fefb351ac3 100644
|
||||
--- a/macros.in
|
||||
+++ b/macros.in
|
||||
@@ -1331,6 +1331,9 @@ end
|
||||
type = 'group'
|
||||
elseif arg[1] == 'u' then
|
||||
type = 'user'
|
||||
+ elseif arg[1] == 'r' or arg[1] == 'm' then
|
||||
+ macros.warn({'ignoring unsupported sysuser type: '..arg[1]})
|
||||
+ return
|
||||
else
|
||||
macros.error({'invalid sysuser type: '..arg[1]})
|
||||
end
|
||||
diff --git a/tests/data/SPECS/klang.spec b/tests/data/SPECS/klang.spec
|
||||
index e6cce1add8..e7c03cd7f8 100644
|
||||
--- a/tests/data/SPECS/klang.spec
|
||||
+++ b/tests/data/SPECS/klang.spec
|
||||
@@ -47,6 +47,8 @@ EOF
|
||||
cat << EOF > ${RPM_BUILD_ROOT}/%{_sysusersdir}/plong.conf
|
||||
u plong - "Plong fu" /var/lib/plong /sbin/nologin
|
||||
g klong -
|
||||
+m ding dong
|
||||
+r - 123-321
|
||||
EOF
|
||||
|
||||
%files common
|
||||
diff --git a/tests/rpmi.at b/tests/rpmi.at
|
||||
index 6339a70a7c..94d8967b12 100644
|
||||
--- a/tests/rpmi.at
|
||||
+++ b/tests/rpmi.at
|
||||
@@ -1481,7 +1481,14 @@ AT_SETUP([rpm -i sysusers])
|
||||
AT_KEYWORDS([install build sysusers])
|
||||
RPMDB_INIT
|
||||
|
||||
+RPMTEST_CHECK([
|
||||
runroot rpmbuild -bb --quiet /data/SPECS/klang.spec
|
||||
+],
|
||||
+[0],
|
||||
+[],
|
||||
+[warning: ignoring unsupported sysuser type: m
|
||||
+warning: ignoring unsupported sysuser type: r
|
||||
+])
|
||||
|
||||
RPMTEST_CHECK([
|
||||
runroot rpm -U /build/RPMS/noarch/klang-client-1.0-1.noarch.rpm
|
||||
|
||||
From c47f71a72e7f885615c677e88ce92810ed1f00c8 Mon Sep 17 00:00:00 2001
|
||||
From: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Fri, 3 Nov 2023 12:15:58 +0200
|
||||
Subject: [PATCH 4/4] Fix comment line handling in sysusers.d(8) files
|
||||
|
||||
sysusers.d(8) format permits empty lines and commits, and so must we.
|
||||
Add some extra fluff to the test-case for this.
|
||||
|
||||
This is the second half of
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=2246236
|
||||
|
||||
Fixes: #2741
|
||||
---
|
||||
fileattrs/sysusers.attr | 4 ++++
|
||||
tests/data/SPECS/klang.spec | 5 +++++
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
diff --git a/fileattrs/sysusers.attr b/fileattrs/sysusers.attr
|
||||
index f7a3e838d1..48d4caede9 100644
|
||||
--- a/fileattrs/sysusers.attr
|
||||
+++ b/fileattrs/sysusers.attr
|
||||
@@ -6,6 +6,9 @@
|
||||
# For groups created as a side-effect, only provide the group.
|
||||
%__sysusers_provides() %{lua:
|
||||
for line in io.lines(macros["1"]) do
|
||||
+ if line:sub(1, 1) == '#' then
|
||||
+ goto continue
|
||||
+ end
|
||||
fields = {}
|
||||
for w in line:gmatch("%S+") do
|
||||
table.insert(fields, w)
|
||||
@@ -14,5 +17,6 @@
|
||||
table.insert(fields, 1, '-b')
|
||||
print(macros.add_sysuser(fields))
|
||||
end
|
||||
+ ::continue::
|
||||
end
|
||||
}
|
||||
diff --git a/tests/data/SPECS/klang.spec b/tests/data/SPECS/klang.spec
|
||||
index e7c03cd7f8..64bd90c104 100644
|
||||
--- a/tests/data/SPECS/klang.spec
|
||||
+++ b/tests/data/SPECS/klang.spec
|
||||
@@ -45,7 +45,12 @@ cat << EOF > ${RPM_BUILD_ROOT}/%{_sysusersdir}/klangd.conf
|
||||
u klangd - "Klang server" /var/lib/klangd /sbin/nologin
|
||||
EOF
|
||||
cat << EOF > ${RPM_BUILD_ROOT}/%{_sysusersdir}/plong.conf
|
||||
+
|
||||
+# Real life files have all sorts of anomalies
|
||||
u plong - "Plong fu" /var/lib/plong /sbin/nologin
|
||||
+#...such as empty lines
|
||||
+
|
||||
+# and comments comments
|
||||
g klong -
|
||||
m ding dong
|
||||
r - 123-321
|
15
rpm.spec
15
rpm.spec
@ -25,9 +25,9 @@
|
||||
|
||||
%define rpmhome /usr/lib/rpm
|
||||
|
||||
%global rpmver 4.19.0
|
||||
%global rpmver 4.19.1
|
||||
#global snapver rc1
|
||||
%global baserelease 3
|
||||
%global baserelease 1
|
||||
%global sover 10
|
||||
|
||||
%global srcver %{rpmver}%{?snapver:-%{snapver}}
|
||||
@ -140,9 +140,6 @@ rpm-4.18.90-weak-user-group.patch
|
||||
|
||||
# Patches already upstream:
|
||||
# ...
|
||||
rpm-4.19.0-sysusers-fixes.patch
|
||||
0001-Fix-getncpus-proc-thread-potentially-returning-zero.patch
|
||||
0002-Fix-integer-overflow-in-memory-calculations-on-32bit.patch
|
||||
|
||||
# These are not yet upstream
|
||||
rpm-4.7.1-geode-i686.patch
|
||||
@ -410,7 +407,7 @@ cd _build
|
||||
# init an empty database for %ghost'ing for all supported backends
|
||||
for be in %{?with_ndb:ndb} %{?with_sqlite:sqlite}; do
|
||||
mkdir ${be}
|
||||
./rpmdb --rcfile rpmrc --define "_db_backend ${be}" --dbpath=${PWD}/${be} --initdb
|
||||
tools/rpmdb --rcfile rpmrc --define "_db_backend ${be}" --dbpath=${PWD}/${be} --initdb
|
||||
cp -va ${be}/. $RPM_BUILD_ROOT/usr/lib/sysimage/rpm/
|
||||
done
|
||||
|
||||
@ -426,6 +423,9 @@ rm -f $RPM_BUILD_ROOT/%{rpmhome}/{perldeps.pl,perl.*,pythond*}
|
||||
rm -f $RPM_BUILD_ROOT/%{_fileattrsdir}/{perl*,python*}
|
||||
rm -rf $RPM_BUILD_ROOT/var/tmp
|
||||
|
||||
# workaround for https://github.com/rpm-software-management/rpm/issues/2811
|
||||
rm $RPM_BUILD_ROOT/%{_defaultdocdir}/rpm/README.md
|
||||
|
||||
%pre
|
||||
# Symlink all rpmdb files to the new location if we're still using /var/lib/rpm
|
||||
if [ -d /var/lib/rpm ]; then
|
||||
@ -619,6 +619,9 @@ fi
|
||||
%doc %{_defaultdocdir}/rpm/API/
|
||||
|
||||
%changelog
|
||||
* Tue Dec 12 2023 Michal Domonkos <mdomonko@redhat.com> - 4.19.1-1
|
||||
- Update to 4.19.1 (https://rpm.org/wiki/Releases/4.19.1)
|
||||
|
||||
* Thu Nov 30 2023 Stephen Gallagher <sgallagh@redhat.com> - 4.19.0-3
|
||||
- Fix issues with %%getncpus sometimes returning 0 on i686 systems
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (rpm-4.19.0.tar.bz2) = 84801954eab8390af86388c96e0a446b0924bc3791dabcb8641dbaa53586ca852400c0b53c969c06e716949aa36ce337de7d6ba1ffc09eca31900af250f205cb
|
||||
SHA512 (rpm-4.19.1.tar.bz2) = 12e6c7294a98032418ec9a0510a8183658483fe713d67e6890a9c0da44748371df45a26af6055d08470b85b5dec0cf94795d17c5b3e11db08b20ef07e8e06642
|
||||
|
Loading…
Reference in New Issue
Block a user