Compare commits

...

No commits in common. "c8" and "c9" have entirely different histories.
c8 ... c9

7 changed files with 359 additions and 26 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
SOURCES/gpgkey-F576AAAC1B0FF849792D8CB129A794FD2272BC86.gpg
SOURCES/time-1.9.tar.gz

View File

@ -1 +1,2 @@
c4b0bd75047a865df9d8a7c9ab029db05e0b726c SOURCES/gpgkey-F576AAAC1B0FF849792D8CB129A794FD2272BC86.gpg
75068c26abbed3ad3980685bae21d7202d288317 SOURCES/time-1.9.tar.gz

View File

@ -0,0 +1,34 @@
From 6a5c4499aab677d19157c7adcf598d14267283c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Mon, 16 Nov 2020 17:45:04 +0100
Subject: [PATCH] Close outfp before exec
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When called with --outfile, we open an output file to which
we log timing results. Close that descriptor in the child
fork before exec'ing the process to be timed.
Reported-by: Ed Santiago <santiago@redhat.com>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/time.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/time.c b/src/time.c
index f76265a..2f2b702 100644
--- a/src/time.c
+++ b/src/time.c
@@ -738,6 +738,8 @@ run_command (cmd, resp)
error (EXIT_CANCELED, errno, "cannot fork");
else if (pid == 0)
{ /* If child. */
+ if (outfp != stderr)
+ fclose(outfp);
/* Don't cast execvp arguments; that causes errors on some systems,
versus merely warnings if the cast is left off. */
execvp (cmd[0], cmd);
--
2.25.4

View File

@ -0,0 +1,32 @@
From d8cf31417c84646497657280830c432b6f412495 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Mon, 18 Jun 2018 10:05:06 +0200
Subject: [PATCH] Improve info directory index entry description
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Describing "time" as "time" is not explanatory. Use better
description.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
doc/time.texi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/time.texi b/doc/time.texi
index 63d25b4..dac65b4 100644
--- a/doc/time.texi
+++ b/doc/time.texi
@@ -28,7 +28,7 @@ Texts. A copy of the license is included in the section entitled
@dircategory Basics
@direntry
-* Time: (time). time
+* Time: (time). GNU time utility.
@end direntry
--
2.14.4

View File

@ -0,0 +1,189 @@
From 9fd52d5705fad70c0cb4ad8d508596a488262acf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Mon, 13 Jul 2020 09:24:35 +0200
Subject: [PATCH] Use kibibytes instead of kilobytes in a documentation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This patch does not changes any output of the time program. It only
clarifies a manual and the comments.
<https://lists.gnu.org/archive/html/bug-time/2020-07/msg00000.html>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
configure.ac | 6 +++---
doc/time.texi | 12 ++++++------
src/rusage-kb.c | 4 ++--
src/rusage-kb.h | 10 +++++-----
src/time.c | 6 +++---
tests/time-max-rss.sh | 4 ++--
6 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/configure.ac b/configure.ac
index d2950bd..67738b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -90,7 +90,7 @@ if test -z "$time_getrusage_mem_units" ; then
solaris*) time_getrusage_mem_units=pages ;;
- # As a fallback, assume KB (the most common value).
+ # As a fallback, assume KiB (the most common value).
# Set the 'warn' variable to warn the user at the end
# of ./configure
*) time_getrusage_mem_units=kb
@@ -104,7 +104,7 @@ case $time_getrusage_mem_units in
kb)
AC_DEFINE([GETRUSAGE_RETURNS_KB],[1],
[Define to 1 if getrusage(2) on this systems returns
- ru_maxrss in kilobytes])
+ ru_maxrss in kibibytes])
;;
bytes)
@@ -140,7 +140,7 @@ AC_OUTPUT
# Warn the user if getrusage(2) behaviour on this OS is unknown
if test "$warn_getrusage_mem_units" ; then
AC_MSG_WARN([unknown getrusage behavior on operating system '$host_os'.
- Assuming Kilobytes.
+ Assuming kibibytes.
please report this with the output of 'uname -a' to
bug-time@gnu.org])
fi
diff --git a/doc/time.texi b/doc/time.texi
index dac65b4..3a05ed9 100644
--- a/doc/time.texi
+++ b/doc/time.texi
@@ -241,22 +241,22 @@ times divied by the total running time.
@table @code
@item M
Maximum resident set size of the process during its lifetime, in
-Kilobytes.
+kibibytes.
@item t
-Average resident set size of the process, in Kilobytes.
+Average resident set size of the process, in kibibytes.
@item K
-Average total (data+stack+text) memory use of the process, in Kilobytes.
+Average total (data+stack+text) memory use of the process, in kibibytes.
@item D
-Average size of the process's unshared data area, in Kilobytes.
+Average size of the process's unshared data area, in kibibytes.
@item p
-Average size of the process's unshared stack, in Kilobytes.
+Average size of the process's unshared stack, in kibibytes.
@item X
-Average size of the process's shared text, in Kilobytes.
+Average size of the process's shared text, in kibibytes.
@item Z
System's page size, in bytes. This is a per-system constant, but
diff --git a/src/rusage-kb.c b/src/rusage-kb.c
index aad06b8..04352cd 100644
--- a/src/rusage-kb.c
+++ b/src/rusage-kb.c
@@ -25,8 +25,8 @@
#include <limits.h>
#include <unistd.h>
-/* Return the number of kilobytes corresponding to a number of pages PAGES.
- (Actually, we use it to convert pages*ticks into kilobytes*ticks.)
+/* Return the number of kibibytes corresponding to a number of pages PAGES.
+ (Actually, we use it to convert pages*ticks into kibibytes*ticks.)
Try to do arithmetic so that the risk of overflow errors is minimized.
This is funky since the pagesize could be less than 1K.
diff --git a/src/rusage-kb.h b/src/rusage-kb.h
index 4a53515..b7b1155 100644
--- a/src/rusage-kb.h
+++ b/src/rusage-kb.h
@@ -19,7 +19,7 @@
#ifndef _RUSAGE_KB_
#define _RUSAGE_KB_
-/* As of 2017, most kernels' getrusage(2) returns ru_maxrss in kilobytes:
+/* As of 2017, most kernels' getrusage(2) returns ru_maxrss in kibibytes:
Linux, Hurd, Free/Open/Net-BSD, MINIX, AIX7
OpenSolaris's getrusage(2) documents a return value in pages,
@@ -32,20 +32,20 @@
#if GETRUSAGE_RETURNS_KB
-/* define as no-op, as RUSAGE values are already in KB */
+/* define as no-op, as RUSAGE values are already in KiB */
#define RUSAGE_MEM_TO_KB(x) (x)
#elif GETRUSAGE_RETURNS_BYTES
-/* Convert bytes to kilobytes */
+/* Convert bytes to kibibytes */
#define RUSAGE_MEM_TO_KB(x) ((x)/1024)
#elif GETRUSAGE_RETURNS_PAGES
-/* Convert bytes to kilobytes */
+/* Convert bytes to kibibytes */
#define RUSAGE_MEM_TO_KB(x) (ptok (x))
-/* A function to get the system's page size and convert pages to KB */
+/* A function to get the system's page size and convert pages to KiB */
unsigned long
ptok (unsigned long pages);
diff --git a/src/time.c b/src/time.c
index 7e07995..f76265a 100644
--- a/src/time.c
+++ b/src/time.c
@@ -108,8 +108,8 @@ typedef RETSIGTYPE (*sighandler) ();
and 100 on the sun4.
Some manuals have an apparent error, claiming that units for average
- sizes are kb*sec. Judging by the contents of `struct rusage', it
- looks like it should be kb*ticks, like on SunOS. Ticks/sec seems
+ sizes are KiB*sec. Judging by the contents of `struct rusage', it
+ looks like it should be KiB*ticks, like on SunOS. Ticks/sec seems
to be (empirically):
50 Mt. Xinu
250 Ultrix (mips)
@@ -412,7 +412,7 @@ linear_argv (argv)
x == exit status of command
Various memory usages are found by converting from page-seconds
- to kbytes by multiplying by the page size, dividing by 1024,
+ to kibibytes by multiplying by the page size, dividing by 1024,
and dividing by elapsed real time.
FP is the stream to print to.
diff --git a/tests/time-max-rss.sh b/tests/time-max-rss.sh
index 0adda5c..5ecd3f2 100755
--- a/tests/time-max-rss.sh
+++ b/tests/time-max-rss.sh
@@ -27,7 +27,7 @@ fail=
# The auxiliary program should be built and runnable
time-aux || framework_failure_ "time-aux is missing/not runnable"
-# Get the baseline number of MAX-RSS kilobytes
+# Get the baseline number of MAX-RSS kibibytes
# use by the program when not allocating any extra memory
env time -o mem-baseline -f "%M" time-aux \
|| framework_failure_ "failed to run time/time-aux (baseline max-rss)"
@@ -49,7 +49,7 @@ test "$b" -eq "0" && test "$c" -eq 0 \
# There could be alot of variation between each invocation,
# accept a reasonable range
if test "$d" -ge 5000 && test "$d" -le 6000 ; then
- : # acceptable values: 5000-6000 KB
+ : # acceptable values: 5000-6000 KiB
else
cat<<EOF>&2
time(1) failed to detect 5MB allcoation.
--
2.25.4

View File

@ -0,0 +1,17 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABCgAGBQJapvw2AAoJEAoRth02V7kBwpcP/3uhXpenR0/SAZ8HEUlD+fnV
cSp+Yg8D0YGhs6thvVT7cNYWfAXeUeHPNRoHmMpvwGBktRDf5MPKA7v42d8peoVJ
MpotpeoUHiGiw8KBDRMSBjFoZrn5hjM7FZDPFtrChVAor8FCw4mbMknK4KLrkmyt
2B1M3PPVeQ/2m+sho+XKYZTIV4JIV9rbZn5fXjSnr3QhDGyeRgSip548LTD8Li97
EquxdaPd9bibvBEH8ZX4+XG9qWKJyThA21VmBhrylwpFAj7W4yBPSaW3B7HRvuCY
X65cpJem6JYSpe/Hh6rHQrFdIrw3X+cO9U3vpHQq4AfSaCLIfmWw8GAXE2+6btsz
aDMDafQy4OaFo45TGURQ6V73aa9d5et7Rt6btmatNP+vG5pU9iSDK9ViN+AmX5CL
wLTtWlUyAZDzLn5UuiIAtrLtY7UWD5EcyKVe9B8T9ypRk9oAxaLgIGToukeZN6Dk
qa0AhE7xtxC0yxUPR1Pwdt7XYYpAP8/dL2hPX6jRtKnLkvMMwYheUARx60Wm9Y6W
YcE5fI+f5PoZprCbC6skwQvNbT8KmJcDrefPlSSTvj0e10IB2HZ9O1M1vNNUDL66
0zt2j4ddtyc1NG1fLRCF52XAfIqI5a983yD40CKSRqcG3bYcyygQBhGx34Ez0buQ
YGWpJ6ZvDh8d8j77Z0n4
=FnFy
-----END PGP SIGNATURE-----

View File

@ -1,7 +1,7 @@
Summary: A GNU utility for monitoring a program's use of system resources
Name: time
Version: 1.9
Release: 3%{?dist}
Release: 18%{?dist}
# src/time.c: GPLv3+
# COPYING: GPLv3 text
# doc/time.texi: GFDL
@ -13,6 +13,7 @@ Release: 3%{?dist}
## Not in a binary package
# tests/init.sh: GPLv3+
# INSTALL: FSFAP
# configure: FSFUL
# build-aux/config.guess: GPLv3+ with exceptions
# build-aux/install-sh: MIT and Public Domain
# build-aux/config.rpath: FSFULLR
@ -38,22 +39,32 @@ Release: 3%{?dist}
# maint.mk: GPLv3+
# tests/time-posix-quiet.sh: GPLv3+
License: GPLv3+ and GFDL
Url: http://www.gnu.org/software/%{name}/
Source: ftp://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz
Url: https://www.gnu.org/software/%{name}/
Source0: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz
Source1: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz.sig
# Obtained from a key server
Source2: gpgkey-F576AAAC1B0FF849792D8CB129A794FD2272BC86.gpg
# Fix measuring time when a clock experiences a jump, bug #1004416,
# <http://lists.gnu.org/archive/html/bug-gnu-utils/2013-09/msg00003.html>
Patch0: time-1.8-Prefer-clock_gettime-CLOCK_MONOTONIC.patch
# Fix info directory entry
Patch1: time-1.9-Improve-info-directory-index-entry-description.patch
# Clarify RSS size as kibibytes in a documentation, proposed to an upstream,
# <https://lists.gnu.org/archive/html/bug-time/2020-07/msg00000.html>
Patch2: time-1.9-Use-kibibytes-instead-of-kilobytes-in-a-documentatio.patch
# Do not leak a file descriptor of the --output argument to a command,
# proposed to an upstream,
# <https://lists.gnu.org/archive/html/bug-time/2020-11/msg00001.html>
Patch3: time-1.9-Close-outfp-before-exec.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bash
BuildRequires: coreutils
BuildRequires: gcc
BuildRequires: gnupg2
BuildRequires: make
BuildRequires: texinfo
# Tests
BuildRequires: sed
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
BuildRequires: texinfo
%description
The GNU time utility runs another program, collects information about
@ -61,45 +72,93 @@ the resources used by that program while it is running, and displays
the results.
%prep
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
# Set time stamp stored in an info page to the latest patch
touch -d "$(sed -n -e '/^Date: /{s/^[^:]*: //;p}' %{PATCH2})" doc/time.texi
%patch3 -p1
# Correct version VERSION flag for doc/time.texi
# <https://lists.gnu.org/archive/html/bug-time/2021-01/msg00000.html>
printf '%{version}\n' > .tarball-version
autoreconf -fi
%build
%configure
%make_build
%{make_build}
%install
make install DESTDIR=$RPM_BUILD_ROOT
# Remove info index, we update it in %%post script
%{make_install}
# Remove info index, it's updated by file triggers
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
%check
make %{?_smp_mflags} check
%post
/sbin/install-info %{_infodir}/time.info.gz %{_infodir}/dir \
--entry="* time: (time). GNU time Utility" >/dev/null 2>&1 || :
%preun
if [ "$1" = 0 ]; then
/sbin/install-info --delete %{_infodir}/time.info.gz %{_infodir}/dir \
--entry="* time: (time). GNU time Utility" >/dev/null 2>&1 || :
fi
%{make_build} check
%files
%license COPYING
%doc AUTHORS ChangeLog NEWS README
%{_bindir}/time
%{_infodir}/time.info*
# time(1) manual page lives in man-pages package, bug #1612725.
# time(1) manual page lives in man-pages package, bug #1612294.
%changelog
* Tue Aug 07 2018 Petr Pisar <ppisar@redhat.com> - 1.9-3
- Remove time(1) manual page because it's provided by man-pages (bug #1612725)
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1.9-18
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Aug 06 2018 Petr Pisar <ppisar@redhat.com> - 1.9-2
- Add time(1) manual page (bug #1612725)
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.9-17
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.9-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jan 13 2021 Petr Pisar <ppisar@redhat.com> - 1.9-15
- Retrieve a time stamp of the info page from a patch date header
* Wed Jan 13 2021 Petr Pisar <ppisar@redhat.com> - 1.9-14
- Correct version in an info page
- Set time stamp stored in an info page to the latest patch
* Wed Jan 13 2021 Petr Pisar <ppisar@redhat.com> - 1.9-13
- Update URL and Source addresses (thanks to Robert Scheck)
- Verify an upstream archive signature
* Mon Nov 16 2020 Petr Pisar <ppisar@redhat.com> - 1.9-12
- Fix a regression in closing a file descriptor if no --output was given
(bug #1898138)
* Wed Nov 11 2020 Petr Pisar <ppisar@redhat.com> - 1.9-11
- Do not leak a file descriptor of the --output argument to a command
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.9-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 13 2020 Petr Pisar <ppisar@redhat.com> - 1.9-9
- Clarify RSS size as kibibytes in a documentation
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.9-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.9-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.9-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Tue Aug 07 2018 Petr Pisar <ppisar@redhat.com> - 1.9-5
- Remove time(1) manual page because it's provided by man-pages (bug #1612294)
* Mon Aug 06 2018 Petr Pisar <ppisar@redhat.com> - 1.9-4
- Add time(1) manual page (bug #1612294)
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.9-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Jun 18 2018 Petr Pisar <ppisar@redhat.com> - 1.9-2
- Remove install-info from scriptlets
* Tue Mar 13 2018 Petr Pisar <ppisar@redhat.com> - 1.9-1
- 1.9 bump