This updates htop to git head, support for displaying threads on OpenBSD
was recently merged upstream. Usual rebasing needed for the NCPUONLINE
patches, I have tidied them up a bit and opened a pull request upstream
for those. Other patches seem to not be needed (and many of them no
longer apply due to upstream work).

OK?

Ian, do you want to stay maintainer for this? (there have been a few
maintainer timeout commits on recent updates to this port)

Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/htop/Makefile,v
retrieving revision 1.25
diff -u -p -r1.25 Makefile
--- Makefile    8 Dec 2020 16:23:17 -0000       1.25
+++ Makefile    27 Mar 2021 13:34:50 -0000
@@ -4,7 +4,9 @@ COMMENT =       interactive process viewer
 
 GH_ACCOUNT =   htop-dev
 GH_PROJECT =   htop
-GH_TAGNAME =   3.0.2
+#GH_TAGNAME =  3.0.5
+GH_COMMIT =    272e72680b84a52183d39a519d6704324063bae1
+DISTNAME =     htop-3.0.5pl20210325
 
 CATEGORIES =   sysutils
 
@@ -12,7 +14,7 @@ HOMEPAGE =    https://htop.dev
 
 MAINTAINER =   Ian Sutton <i...@ce.gl>
 
-# GPLv2+
+# GPLv2 only
 PERMIT_PACKAGE =       Yes
 
 WANTLIB =      c curses kvm m
@@ -21,6 +23,8 @@ RUN_DEPENDS = devel/desktop-file-utils
 
 NO_TEST =      Yes
 
+DEBUG_PACKAGES =       ${BUILD_PACKAEGS}
+
 CONFIGURE_STYLE =      autoreconf
 AUTOCONF_VERSION =     2.69
 AUTOMAKE_VERSION =     1.16
@@ -28,9 +32,7 @@ AUTORECONF =          ./autogen.sh
 CONFIGURE_ARGS +=      --disable-unicode \
                        --disable-taskstats
 
-# htop has some bugs which take hours or days to reach.
-# Keep the symbols to give a chance to the user to get an useful coredump.
-MAKE_FLAGS =   AM_CPPFLAGS="-DDEBUG"
-DEBUG =                -g
+post-install:
+       rm -r ${PREFIX}/share/icons/
 
 .include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/sysutils/htop/distinfo,v
retrieving revision 1.6
diff -u -p -r1.6 distinfo
--- distinfo    8 Dec 2020 16:23:17 -0000       1.6
+++ distinfo    27 Mar 2021 13:34:50 -0000
@@ -1,2 +1,2 @@
-SHA256 (htop-3.0.2.tar.gz) = tHRKO+onnyo3Je2OXjX/2csQ1mZzvwfI/iH+s8RmEwU=
-SIZE (htop-3.0.2.tar.gz) = 176132
+SHA256 (htop-3.0.5pl20210325-272e7268.tar.gz) = 
vGQLe5GzuNBe8HVGjndJAvR5yrSCIA4gu24jaQgt7Rk=
+SIZE (htop-3.0.5pl20210325-272e7268.tar.gz) = 313192
Index: patches/patch-CPUMeter_c
===================================================================
RCS file: patches/patch-CPUMeter_c
diff -N patches/patch-CPUMeter_c
--- patches/patch-CPUMeter_c    8 Dec 2020 16:23:17 -0000       1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,16 +0,0 @@
-$OpenBSD: patch-CPUMeter_c,v 1.8 2020/12/08 16:23:17 sthen Exp $
-
-Index: CPUMeter.c
---- CPUMeter.c.orig
-+++ CPUMeter.c
-@@ -202,6 +202,10 @@ static void SingleColCPUsMeter_draw(Meter* this, int x
-    int start, count;
-    AllCPUsMeter_getRange(this, &start, &count);
-    for (int i = 0; i < count; i++) {
-+      if(meters[i]->draw == 0x1) {
-+         AllCPUsMeter_init(meters[i]);
-+         meters[i]->draw = Meter_modes[meters[i]->mode]->draw;
-+      }
-       meters[i]->draw(meters[i], x, y, w);
-       y += meters[i]->h;
-    }
Index: patches/patch-FunctionBar_c
===================================================================
RCS file: patches/patch-FunctionBar_c
diff -N patches/patch-FunctionBar_c
--- patches/patch-FunctionBar_c 8 Dec 2020 16:23:17 -0000       1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,23 +0,0 @@
-$OpenBSD: patch-FunctionBar_c,v 1.4 2020/12/08 16:23:17 sthen Exp $
-
-This function is called at the wrong time and will cause use-after-free's,
-so we leak for now.
-
-Index: FunctionBar.c
---- FunctionBar.c.orig
-+++ FunctionBar.c
-@@ -59,14 +59,8 @@ FunctionBar* FunctionBar_new(const char* const* functi
- }
- 
- void FunctionBar_delete(FunctionBar* this) {
--   for (int i = 0; i < 15 && this->functions[i]; i++) {
--      free(this->functions[i]);
--   }
-    free(this->functions);
-    if (!this->staticData) {
--      for (int i = 0; i < this->size; i++) {
--         free(this->keys[i]);
--      }
-       free(this->keys);
-       free(this->events);
-    }
Index: patches/patch-Header_c
===================================================================
RCS file: patches/patch-Header_c
diff -N patches/patch-Header_c
--- patches/patch-Header_c      8 Dec 2020 16:23:17 -0000       1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-$OpenBSD: patch-Header_c,v 1.3 2020/12/08 16:23:17 sthen Exp $          
-
-Index: Header.c
---- Header.c.orig
-+++ Header.c
-@@ -168,7 +168,8 @@ void Header_draw(const Header* this) {
-    Header_forEachColumn(this, col) {
-       Vector* meters = this->columns[col];
-       for (int y = (pad / 2), i = 0; i < Vector_size(meters); i++) {
--         Meter* meter = (Meter*) Vector_get(meters, i);
-+         Meter* meter = (Meter*) Vector_get(meters, i);         
-+         if (meter == 0x1 || meter->draw == 0x1) continue;
-          meter->draw(meter, x, y, width);
-          y += meter->h;
-       }
Index: patches/patch-Vector_c
===================================================================
RCS file: patches/patch-Vector_c
diff -N patches/patch-Vector_c
--- patches/patch-Vector_c      8 Dec 2020 16:23:17 -0000       1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,19 +0,0 @@
-$OpenBSD: patch-Vector_c,v 1.3 2020/12/08 16:23:17 sthen Exp $
-
-This function is called at the wrong time and will cause use-after-free's,
-so we leak for now.
-
-Index: Vector.c
---- Vector.c.orig
-+++ Vector.c
-@@ -34,8 +34,8 @@ void Vector_delete(Vector* this) {
-          if (this->array[i])
-             Object_delete(this->array[i]);
-    }
--   free(this->array);
--   free(this);
-+   /* free(this->array);
-+   free(this); */
- }
- 
- #ifdef DEBUG
Index: patches/patch-openbsd_OpenBSDProcessList_c
===================================================================
RCS file: /cvs/ports/sysutils/htop/patches/patch-openbsd_OpenBSDProcessList_c,v
retrieving revision 1.4
diff -u -p -r1.4 patch-openbsd_OpenBSDProcessList_c
--- patches/patch-openbsd_OpenBSDProcessList_c  8 Dec 2020 16:23:17 -0000       
1.4
+++ patches/patch-openbsd_OpenBSDProcessList_c  27 Mar 2021 13:34:50 -0000
@@ -3,75 +3,60 @@ $OpenBSD: patch-openbsd_OpenBSDProcessLi
 Don't include "offline" CPUs in the stats (i.e. CPUs which have been
 disabled by sysctl hw.smt=0).
 
+https://github.com/htop-dev/htop/pull/580
+
 Index: openbsd/OpenBSDProcessList.c
 --- openbsd/OpenBSDProcessList.c.orig
 +++ openbsd/OpenBSDProcessList.c
-@@ -30,24 +30,36 @@ in the source distribution for its full text.
- static long fscale;
+@@ -37,11 +37,15 @@ static int pageSize;
+ static int pageSizeKB;
  
  ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidMatchList, 
uid_t userId) {
--   int mib[] = { CTL_HW, HW_NCPU };
-+   int nmib[] = { CTL_HW, HW_NCPU };
-+   int mib[] = { CTL_HW, HW_NCPUONLINE };
-    int fmib[] = { CTL_KERN, KERN_FSCALE };
--   int i, e;
+-   const int mib[] = { CTL_HW, HW_NCPU };
++   const int nmib[] = { CTL_HW, HW_NCPU };
++   const int mib[] = { CTL_HW, HW_NCPUONLINE };
+    const int fmib[] = { CTL_KERN, KERN_FSCALE };
 +   int ncmib[] = { CTL_KERN, KERN_CPUSTATS, 0 };
-+   int i, e, ncpu, cpu_index_c;
-    OpenBSDProcessList* opl;
-    ProcessList* pl;
--   size_t size;
-+   size_t size, size_ncpu, size_cpustats;
+    int r;
++   unsigned int cpu_index_c = 0, ncpu;
+    size_t size;
     char errbuf[_POSIX2_LINE_MAX];
 +   struct cpustats cpu_stats;
  
-    opl = xCalloc(1, sizeof(OpenBSDProcessList));
-    pl = (ProcessList*) opl;
-    size = sizeof(pl->cpuCount);
-+   size_ncpu = sizeof(int);
-+   size_cpustats = sizeof(cpu_stats);
-+   cpu_index_c = 0;
-    ProcessList_init(pl, Class(OpenBSDProcess), usersTable, pidMatchList, 
userId);
- 
-    e = sysctl(mib, 2, &pl->cpuCount, &size, NULL, 0);
-    if (e == -1 || pl->cpuCount < 1) {
+    OpenBSDProcessList* opl = xCalloc(1, sizeof(OpenBSDProcessList));
+    ProcessList* pl = (ProcessList*) opl;
+@@ -53,7 +57,14 @@ ProcessList* ProcessList_new(UsersTable* usersTable, H
        pl->cpuCount = 1;
     }
-+   e = sysctl(nmib, 2, &ncpu, &size_ncpu, NULL, 0);
-+   if (e == -1) {
-+       ncpu = pl->cpuCount;
-+   }
-+
     opl->cpus = xCalloc(pl->cpuCount + 1, sizeof(CPUData));
 +   opl->cpuIndex = xRealloc(opl->cpuIndex, pl->cpuCount * sizeof(int));
  
++   size = sizeof(int);
++   r = sysctl(nmib, 2, &ncpu, &size, NULL, 0);
++   if (r < 0) {
++      ncpu = pl->cpuCount;
++   }
++
     size = sizeof(fscale);
     if (sysctl(fmib, 2, &fscale, &size, NULL, 0) < 0) {
-@@ -65,6 +77,19 @@ ProcessList* ProcessList_new(UsersTable* usersTable, H
-       errx(1, "kvm_open: %s", errbuf);
+       CRT_fatalError("fscale sysctl call failed");
+@@ -75,6 +86,19 @@ ProcessList* ProcessList_new(UsersTable* usersTable, H
     }
  
-+   for (i = 0; i < ncpu; i++) {
+    opl->cpuSpeed = -1;
++
++   size = sizeof(cpu_stats);
++   for (unsigned int i = 0; i < ncpu; i++) {
 +      ncmib[2] = i;
-+      sysctl(ncmib, 3, &cpu_stats, &size_cpustats, NULL, 0);
++      sysctl(ncmib, 3, &cpu_stats, &size, NULL, 0);
 +      if (cpu_stats.cs_flags & CPUSTATS_ONLINE) {
 +         opl->cpuIndex[cpu_index_c] = i;
-+       cpu_index_c++;
-+      }
-+      
-+      if (cpu_index_c == pl->cpuCount) {
-+      break;
++         cpu_index_c++;
 +      }
-+   }
 +
++      if (cpu_index_c == pl->cpuCount)
++         break;
++   }
+ 
     return pl;
  }
- 
-@@ -323,7 +348,7 @@ static void OpenBSDProcessList_scanCPUTime(OpenBSDProc
-    u_int64_t avg[CPUSTATES] = {0};
- 
-    for (int i = 0; i < this->super.cpuCount; i++) {
--      getKernelCPUTimes(i, kernelTimes);
-+      getKernelCPUTimes(this->cpuIndex[i], kernelTimes);
-       CPUData* cpu = this->cpus + i + 1;
-       kernelCPUTimesToHtop(kernelTimes, cpu);
- 
Index: patches/patch-openbsd_OpenBSDProcessList_h
===================================================================
RCS file: /cvs/ports/sysutils/htop/patches/patch-openbsd_OpenBSDProcessList_h,v
retrieving revision 1.3
diff -u -p -r1.3 patch-openbsd_OpenBSDProcessList_h
--- patches/patch-openbsd_OpenBSDProcessList_h  8 Dec 2020 16:23:17 -0000       
1.3
+++ patches/patch-openbsd_OpenBSDProcessList_h  27 Mar 2021 13:34:50 -0000
@@ -3,13 +3,16 @@ $OpenBSD: patch-openbsd_OpenBSDProcessLi
 Don't include "offline" CPUs in the stats (i.e. CPUs which have been
 disabled by sysctl hw.smt=0).
 
+https://github.com/htop-dev/htop/pull/580
+
 Index: openbsd/OpenBSDProcessList.h
 --- openbsd/OpenBSDProcessList.h.orig
 +++ openbsd/OpenBSDProcessList.h
-@@ -36,6 +36,7 @@ typedef struct OpenBSDProcessList_ {
+@@ -43,7 +43,7 @@ typedef struct OpenBSDProcessList_ {
  
     CPUData* cpus;
- 
+    int cpuSpeed;
+-
 +   int *cpuIndex;
  } OpenBSDProcessList;
  
Index: patches/patch-openbsd_OpenBSDProcess_c
===================================================================
RCS file: patches/patch-openbsd_OpenBSDProcess_c
diff -N patches/patch-openbsd_OpenBSDProcess_c
--- patches/patch-openbsd_OpenBSDProcess_c      8 Dec 2020 16:23:17 -0000       
1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
-$OpenBSD: patch-openbsd_OpenBSDProcess_c,v 1.3 2020/12/08 16:23:17 sthen Exp $
-
-This function is called at the wrong time and will cause use-after-free's,
-so we leak for now.
-
-Index: openbsd/OpenBSDProcess.c
---- openbsd/OpenBSDProcess.c.orig
-+++ openbsd/OpenBSDProcess.c
-@@ -173,9 +173,7 @@ OpenBSDProcess* OpenBSDProcess_new(Settings* settings)
- }
- 
- void Process_delete(Object* cast) {
--   OpenBSDProcess* this = (OpenBSDProcess*) cast;
-    Process_done((Process*)cast);
--   free(this);
- }
- 
- void OpenBSDProcess_writeField(Process* this, RichString* str, ProcessField 
field) {
Index: patches/patch-openbsd_Platform_c
===================================================================
RCS file: patches/patch-openbsd_Platform_c
diff -N patches/patch-openbsd_Platform_c
--- patches/patch-openbsd_Platform_c    8 Dec 2020 16:23:17 -0000       1.9
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-$OpenBSD: patch-openbsd_Platform_c,v 1.9 2020/12/08 16:23:17 sthen Exp $
-
-Index: openbsd/Platform.c
---- openbsd/Platform.c.orig
-+++ openbsd/Platform.c
-@@ -227,7 +227,7 @@ void Platform_setSwapValues(Meter* this) {
-    this->total = pl->totalSwap = total;
-    this->values[0] = pl->usedSwap = used;
- 
--   free(swdev);
-+   //free(swdev);
- }
- 
- void Platform_setTasksValues(Meter* this) {

Reply via email to