diff --git a/.gitignore b/.gitignore index 6afb65f..a3bb67c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,15 +5,3 @@ atop-1.23.tar.gz /atop-2.2-3.tar.gz /atop-2.3.0.tar.gz /atop-2.4.0.tar.gz -/atop-2.5.0.tar.gz -/atop-2.6.0.tar.gz -/atop-2.7.0.tar.gz -/atop-2.7.1.tar.gz -/atop-2.8.0.tar.gz -/atop-2.8.1.tar.gz -/atop-2.9.0.tar.gz -/atop-2.10.0.tar.gz -/atop-2.11.0.tar.gz -/atop-2.11.1.tar.gz -/atop-2.12.0.tar.gz -/atop-2.12.1.tar.gz diff --git a/atop-2.3.0-newer-gcc.patch b/atop-2.3.0-newer-gcc.patch new file mode 100644 index 0000000..efa1858 --- /dev/null +++ b/atop-2.3.0-newer-gcc.patch @@ -0,0 +1,35 @@ +From 7bf30c52a37118ff4f211e67e1736099f3d1dcb3 Mon Sep 17 00:00:00 2001 +From: Gerlof Langeveld +Date: Sat, 22 Sep 2018 11:50:50 +0200 +Subject: [PATCH] Own macro's added to determine major/minor of logical volume. + The standard 'minor' and 'major' macro's are not available any more in gcc8. + +--- + photosyst.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/photosyst.c b/photosyst.c +index 19cbbe1..019b9e0 100644 +--- a/photosyst.c ++++ b/photosyst.c +@@ -184,6 +184,9 @@ static const char rcsid[] = "$Id: photosyst.c,v 1.38 2010/11/19 07:40:40 gerlof + + #define MAXCNT 64 + ++#define MAJOR(x) ((((unsigned long long)x>>8)&0xfff)|((unsigned int)((unsigned long long)x>>32)&~0xfff)) ++#define MINOR(x) ((x&0xff)|((unsigned int)((unsigned long long)x>>12)&~0xff)) ++ + /* return value of isdisk() */ + #define NONTYPE 0 + #define DSKTYPE 1 +@@ -1479,8 +1482,8 @@ lvmmapname(unsigned int major, unsigned int minor, + */ + strncpy(dmp->name, dentry->d_name, MAXDKNAM); + dmp->name[MAXDKNAM-1] = 0; +- dmp->major = major(statbuf.st_rdev); +- dmp->minor = minor(statbuf.st_rdev); ++ dmp->major = MAJOR(statbuf.st_rdev); ++ dmp->minor = MINOR(statbuf.st_rdev); + + hashix = DMHASH(dmp->major, dmp->minor); + diff --git a/atop-2.3.0-restart.patch b/atop-2.3.0-restart.patch new file mode 100644 index 0000000..889c462 --- /dev/null +++ b/atop-2.3.0-restart.patch @@ -0,0 +1,6 @@ +--- atop.cronsystemd~ 2017-03-25 04:00:03.000000000 -0500 ++++ atop.cronsystemd 2017-12-11 12:05:26.269480824 -0600 +@@ -1,2 +1,2 @@ + # daily restart of atop at midnight +-0 0 * * * root systemctl restart atop ++0 0 * * * root systemctl try-restart atop diff --git a/atop-2.4.0-python3.patch b/atop-2.4.0-python3.patch new file mode 100644 index 0000000..5dcfc31 --- /dev/null +++ b/atop-2.4.0-python3.patch @@ -0,0 +1,35 @@ +--- atopgpud.orig 2019-01-12 16:37:19.000000000 -0600 ++++ atopgpud 2019-09-05 10:40:24.909804909 -0500 +@@ -1,4 +1,4 @@ +-#!/usr/bin/python -Es ++#!/usr/bin/python3 -Es + + # ============================================================== + # Daemon that gathers statistical information from all +@@ -181,7 +181,7 @@ + self.stats.procstats[pid].memcum += proc.usedGpuMemory//1024 + self.stats.procstats[pid].sample += 1 + +- if self.stats.tasksupport & ACCOUNT: ++ if self.stats.tasksupport & ACCOUNT: + try: + stats = pynvml.nvmlDeviceGetAccountingStats(self.gpuhandle, pid) + +@@ -503,7 +503,7 @@ + # active processes for + # this GPU + # --------------------- +- for pid, stat in s.procstats.items(): ++ for pid, stat in list(s.procstats.items()): + strbuf += "#A {:d} {:d} {:d} {:d} {:d} {:d} {:d}".format(pid, + stat.gpubusy, stat.membusy, stat.timems, + stat.memnow, stat.memcum, stat.sample) +@@ -512,7 +512,7 @@ + # terminated processes + # for this GPU + # --------------------- +- for pid, stat in cliterm[clisock].items(): ++ for pid, stat in list(cliterm[clisock].items()): + strbuf += "#E {:d} {:d} {:d} {:d} {:d} {:d} {:d}".format(pid, + stat.gpubusy, stat.membusy, stat.timems, + stat.memnow, stat.memcum, stat.sample) diff --git a/atop.spec b/atop.spec index c7c32b4..710dd62 100644 --- a/atop.spec +++ b/atop.spec @@ -1,23 +1,27 @@ %define _hardened_build 1 Name: atop -Version: 2.12.1 -Release: 2%{?dist} +Version: 2.4.0 +Release: 4%{?dist} Summary: An advanced interactive monitor to view the load on system and process level -License: GPL-2.0-or-later -URL: https://www.atoptool.nl -Source0: https://www.atoptool.nl/download/%{name}-%{version}.tar.gz -Source1: atop.d +License: GPLv2+ +URL: http://www.atcomputing.nl/Tools/atop/ +Source0: http://www.atcomputing.nl/download/%{name}-%{version}.tar.gz +Source4: atop.sysconfig +Source5: atop.d -Patch0: atop-sysconfig.patch +Patch0: nvme_support.patch +Patch1: atop-sysconfig.patch +Patch2: atop-2.3.0-restart.patch +Patch3: atop-2.3.0-newer-gcc.patch +Patch4: atop-2.4.0-python3.patch BuildRequires: gcc BuildRequires: zlib-devel -BuildRequires: ncurses-devel -BuildRequires: glib2-devel +BuildRequires: ncurses-devel BuildRequires: systemd -BuildRequires: make +Requires: python3-py3nvml Requires(post): systemd Requires(preun): systemd @@ -37,16 +41,21 @@ performance-monitors: - Watch deviations only - Accumulated process activity per user - Accumulated process activity per program +For more informations: http://www.atcomputing.nl/Tools/atop +The package does not make use of the patches available at +http://www.atcomputing.nl/Tools/atop/kernpatch.html + %prep %setup -q -%patch -P 0 -p0 -b .sysconfig - -# Correct unit file path -sed -i "s|/etc/default/atop|/etc/sysconfig/atop|g" atop.service +%patch0 -p0 -b .nvme +%patch1 -p0 -b .sysconfig +%patch2 -p0 -b .cron +%patch3 -p1 -b .newer-gcc +%patch4 -p0 -b .py3 %build -make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS $(pkg-config --cflags glib-2.0) -I. -std=gnu17" +make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS" %install install -Dp -m 0755 atop $RPM_BUILD_ROOT%{_bindir}/atop @@ -54,37 +63,31 @@ install -Dp -m 0755 atopconvert $RPM_BUILD_ROOT%{_bindir}/atopconvert ln -s atop $RPM_BUILD_ROOT%{_bindir}/atopsar install -Dp -m 0644 man/atop.1 $RPM_BUILD_ROOT%{_mandir}/man1/atop.1 install -Dp -m 0644 man/atopsar.1 $RPM_BUILD_ROOT%{_mandir}/man1/atopsar.1 -install -Dp -m 0644 man/atopacctd.8 $RPM_BUILD_ROOT%{_mandir}/man8/atopacctd.8 +install -Dp -m 0644 atop.cronsystemd $RPM_BUILD_ROOT%{_sysconfdir}/cron.d/atop install -Dp -m 0755 atop.daily $RPM_BUILD_ROOT%{_datadir}/atop/atop.daily -install -Dp -m 0644 atop.default $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/atop -install -Dp -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/atopd +install -Dp -m 0644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/atop +install -Dp -m 0755 %{SOURCE5} $RPM_BUILD_ROOT%{_bindir}/atopd install -Dp -m 0644 atop.service $RPM_BUILD_ROOT%{_unitdir}/atop.service install -d $RPM_BUILD_ROOT%{_localstatedir}/log/atop install -Dp -m 0755 atopacctd $RPM_BUILD_ROOT%{_sbindir}/atopacctd install -Dp -m 0644 atopacct.service $RPM_BUILD_ROOT%{_unitdir}/atopacct.service -#%%if 0%%{?rhel} >= 8 || 0%%{?fedora} -#install -Dp -m 0755 atopgpud $RPM_BUILD_ROOT%%{_sbindir}/atopgpud -#install -Dp -m 0644 atopgpu.service $RPM_BUILD_ROOT%%{_unitdir}/atopgpu.service -#%%endif -install -Dp -m 0644 atop-rotate.* $RPM_BUILD_ROOT%{_unitdir}/ +install -Dp -m 0755 atopgpud $RPM_BUILD_ROOT%{_sbindir}/atopgpud +install -Dp -m 0644 atopgpu.service $RPM_BUILD_ROOT%{_unitdir}/atopgpu.service %post -%systemd_post atop.service atopacct.service atop-rotate.timer -#%%if 0%%{?rhel} >= 8 || 0%%{?fedora} -#%%systemd_post atopgpu.service -#%%endif +%systemd_post atop.service +%systemd_post atopacct.service +%systemd_post atopgpu.service %preun -%systemd_preun atop.service atopacct.service atop-rotate.timer -#%%if 0%%{?rhel} >= 8 || 0%%{?fedora} -#%%systemd_preun atopgpu.service -#%%endif +%systemd_preun atop.service +%systemd_preun atopacct.service +%systemd_preun atopgpu.service %postun -%systemd_postun_with_restart atop.service atopacct.service atop-rotate.timer -#%%if 0%%{?rhel} >= 8 || 0%%{?fedora} -#%%systemd_postun_with_restart atopgpu.service -#%%endif +%systemd_postun_with_restart atop.service +%systemd_postun_with_restart atopacct.service +%systemd_postun_with_restart atopgpu.service %files @@ -93,7 +96,8 @@ install -Dp -m 0644 atop-rotate.* $RPM_BUILD_ROOT%{_unitdir}/ %else %license COPYING %endif -%doc README* +%doc AUTHOR README ChangeLog +%config(noreplace) %{_sysconfdir}/cron.d/atop %config(noreplace) %{_sysconfdir}/sysconfig/atop %{_bindir}/atopsar %{_bindir}/atop @@ -101,120 +105,15 @@ install -Dp -m 0644 atop-rotate.* $RPM_BUILD_ROOT%{_unitdir}/ %{_bindir}/atopconvert %{_mandir}/man1/atop.1.gz %{_mandir}/man1/atopsar.1.gz -%{_mandir}/man8/atopacctd.8.gz %attr(0755,root,root) %dir %{_localstatedir}/log/atop %{_unitdir}/atop*.service -%{_unitdir}/atop*.timer %{_datadir}/atop/atop.daily %{_sbindir}/atopacctd -#%%if 0%%{?rhel} >= 8 || 0%%{?fedora} -#%%{_sbindir}/atopgpud -#%%endif +%{_sbindir}/atopgpud %changelog -* Fri Jan 16 2026 Fedora Release Engineering - 2.12.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Tue Sep 23 2025 Gwyn Ciesla - 2.12.1-1 -- 2.12.1 - -* Wed Jul 23 2025 Fedora Release Engineering - 2.12.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Mon Jun 16 2025 Gwyn Ciesla - 2.12.0-1 -- 2.12.0 - -* Mon Mar 31 2025 Gwyn Ciesla - 2.11.1-1 -- 2.11.1 - -* Thu Jan 16 2025 Fedora Release Engineering - 2.11.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Mon Jul 29 2024 Gwyn Ciesla - 2.11.0-1 -- 2.11.0 - -* Wed Jul 17 2024 Fedora Release Engineering - 2.10.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Mon Jan 22 2024 Fedora Release Engineering - 2.10.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 2.10.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Jan 04 2024 Gwyn Ciesla - 2.10.0-1 -- 2.10.0 - -* Wed Jul 19 2023 Fedora Release Engineering - 2.9.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Mon May 15 2023 Gwyn Ciesla - 2.9.0-1 -- 2.9.0 - -* Sun Mar 05 2023 Gwyn Ciesla - 2.8.1-3 -- migrated to SPDX license - -* Wed Jan 18 2023 Fedora Release Engineering - 2.8.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Mon Jan 09 2023 Gwyn Ciesla - 2.8.1-1 -- 2.8.1 - -* Tue Jan 03 2023 Gwyn Ciesla - 2.8.0-1 -- 2.8.0 - -* Wed Dec 07 2022 Gwyn Ciesla - 2.7.1-4 -- Include atopacctd man page - -* Wed Jul 20 2022 Fedora Release Engineering - 2.7.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Wed Jan 19 2022 Fedora Release Engineering - 2.7.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Tue Jan 11 2022 Gwyn Ciesla - 2.7.1-1 -- 2.7.1 -- Drop atopgpud as it requires proprietary NVIDIA drivers. - -* Mon Dec 20 2021 Gwyn Ciesla - 2.7.0-1 -- 2.7.0 - -* Wed Jul 21 2021 Fedora Release Engineering - 2.6.0-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Apr 13 2021 Gwyn Ciesla - 2.6.0-6 -- Upstream patch to fix service file. - -* Tue Mar 23 2021 Gwyn Ciesla - 2.6.0-5 -- Use upstream sysconfig file. - -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 2.6.0-4 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - -* Mon Feb 22 2021 Gwyn Ciesla - 2.6.0-3 -- Don't ship atopgpud on EL-7 - -* Tue Jan 26 2021 Fedora Release Engineering - 2.6.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Dec 21 2020 Gwyn Ciesla - 2.6.0-1 -- 2.6.0 - -* Mon Jul 27 2020 Fedora Release Engineering - 2.5.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri May 29 2020 Gwyn Ciesla - 2.5.1-1 -- Fix unit file path. - -* Tue Jan 28 2020 Fedora Release Engineering - 2.5.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Sun Nov 03 2019 Gwyn Ciesla - 2.5.0-1 -- 2.5.0 - * Thu Sep 05 2019 Gwyn Ciesla - 2.4.0-4 -- Package atopacctd. +- Package atopacctd and atopgpud. * Wed Aug 28 2019 Gwyn Ciesla - 2.4.0-3 - Fix LOGINTERVAL in sysconfig. diff --git a/atop.sysconfig b/atop.sysconfig new file mode 100644 index 0000000..c32995b --- /dev/null +++ b/atop.sysconfig @@ -0,0 +1,13 @@ +# sysconfig atop +# + +# Current Day format +CURDAY=`date +%Y%m%d` +# Log files path +LOGPATH=/var/log/atop +# Binaries path +BINPATH=/usr/bin +# PID File +PIDFILE=/var/run/atop.pid +# interval (default 10 minutes) +LOGINTERVAL=600 diff --git a/nvme_support.patch b/nvme_support.patch new file mode 100644 index 0000000..bc144a6 --- /dev/null +++ b/nvme_support.patch @@ -0,0 +1,11 @@ +diff -up ./photosyst.c.orig ./photosyst.c +--- ./photosyst.c.orig 2017-03-25 11:00:03.000000003 +0200 ++++ ./photosyst.c 2017-12-08 01:31:13.795157092 +0200 +@@ -1537,6 +1537,7 @@ static struct { + { "^dasd[a-z][a-z]*$", {0}, nullmodname, DSKTYPE, }, + { "^mmcblk[0-9][0-9]*$", {0}, nullmodname, DSKTYPE, }, + { "^emcpower[a-z][a-z]*$", {0}, nullmodname, DSKTYPE, }, ++ { "^nvme[0-9][a-z][0-9]*$", {0}, nullmodname, DSKTYPE, }, + }; + + static int diff --git a/sources b/sources index 5ba284b..fb15a00 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (atop-2.12.1.tar.gz) = e01db51bf025598e7bad585f62761e10d23a77f6c7be96418bc8919a72c74628851ae5cbdc0c12ed752f80b44f5b72f2102692dbbb3210cacc59b32340107ce7 +SHA512 (atop-2.4.0.tar.gz) = 2d0bbecc13bd64427263372b50f50d3278d1e0401e7f2eefe6ff20a874da6315271c885cef3492cde60a2955d1c8db4d8522c3374edcedf1a6992b8fa97c8f18