<pre style='margin:0'>
Marius Schamschula (Schamschula) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/81a18c40a315eecb9f99f2eb6669effc3af2c3ef">https://github.com/macports/macports-ports/commit/81a18c40a315eecb9f99f2eb6669effc3af2c3ef</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 81a18c40a31 cpufetch: patch for M1 Ultra support
</span>81a18c40a31 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 81a18c40a315eecb9f99f2eb6669effc3af2c3ef
</span>Author: Marius Schamschula <mps@macports.org>
AuthorDate: Wed May 25 16:39:39 2022 -0500

<span style='display:block; white-space:pre;color:#404040;'>    cpufetch: patch for M1 Ultra support
</span>---
 sysutils/cpufetch/Portfile                 |  4 +-
 sysutils/cpufetch/files/patch-M1Ultra.diff | 86 ++++++++++++++++++++++++++++++
 2 files changed, 89 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/cpufetch/Portfile b/sysutils/cpufetch/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 56d77f5ada3..912b2512ad9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/cpufetch/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/cpufetch/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup           github 1.0
</span> PortGroup           makefile 1.0
 
 github.setup        Dr-Noob cpufetch 1.02 v
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span> categories          sysutils
 license             GPL-2
 maintainers         {mps @Schamschula} openmaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,6 +19,8 @@ checksums           rmd160  3b9a45bae3f32bd62c34c301b8c312047d0c8e70 \
</span> 
 use_configure       no
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-M1Ultra.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> destroot {
     xinstall -m 0755 ${worksrcpath}/cpufetch    ${destroot}${prefix}/bin
     xinstall -m 0644 ${worksrcpath}/cpufetch.1  ${destroot}${prefix}/share/man/man1
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/cpufetch/files/patch-M1Ultra.diff b/sysutils/cpufetch/files/patch-M1Ultra.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..3f148f9491b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/cpufetch/files/patch-M1Ultra.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,86 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/arm/midr.c b/src/arm/midr.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1ceae14..73be390 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/arm/midr.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/arm/midr.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -287,13 +287,20 @@ struct cpuInfo* get_cpu_info_mach(struct cpuInfo* cpu) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fill_cpu_info_firestorm_icestorm(cpu, 4, 4);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else if(cpu_subfamily == CPUSUBFAMILY_ARM_HS || cpu_subfamily == CPUSUBFAMILY_ARM_HC_HD) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      // Apple M1 Pro/Max. Detect number of cores
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      // Apple M1 Pro/Max/Ultra. Detect number of cores
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       uint32_t physicalcpu = get_sys_info_by_name("hw.physicalcpu");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      if(physicalcpu < 8 || physicalcpu > 10) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        printBug("Found invalid physicalcpu: 0x%.8X", physicalcpu);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if(physicalcpu == 20) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        // M1 Ultra
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        fill_cpu_info_firestorm_icestorm(cpu, 16, 4);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      else if(physicalcpu == 8 || physicalcpu == 10) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        // M1 Pro/Max
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        fill_cpu_info_firestorm_icestorm(cpu, physicalcpu-2, 2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        printBug("Found invalid physical cpu number: %d", physicalcpu);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      fill_cpu_info_firestorm_icestorm(cpu, physicalcpu-2, 2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       printBug("Found invalid cpu_subfamily: 0x%.8X", cpu_subfamily);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/arm/soc.c b/src/arm/soc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 27a6d15..aa48a7e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/arm/soc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/arm/soc.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -649,6 +649,7 @@ struct system_on_chip* guess_soc_raspbery_pi(struct system_on_chip* soc) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__APPLE__) || defined(__MACH__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct system_on_chip* guess_soc_apple(struct system_on_chip* soc) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   uint32_t cpu_subfamily = get_sys_info_by_name("hw.cpusubfamily");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if(cpu_subfamily == CPUSUBFAMILY_ARM_HG) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fill_soc(soc, "M1", SOC_APPLE_M1, 5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -656,7 +657,22 @@ struct system_on_chip* guess_soc_apple(struct system_on_chip* soc) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fill_soc(soc, "M1 Pro", SOC_APPLE_M1_PRO, 5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if(cpu_subfamily == CPUSUBFAMILY_ARM_HC_HD) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    fill_soc(soc, "M1 Max", SOC_APPLE_M1_MAX, 5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Could be M1 Max or M1 Ultra (2x M1 Max)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    uint32_t physicalcpu = get_sys_info_by_name("hw.physicalcpu");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if(physicalcpu == 20) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      fill_soc(soc, "M1 Ultra", SOC_APPLE_M1_ULTRA, 5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else if(physicalcpu == 10) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      fill_soc(soc, "M1 Max", SOC_APPLE_M1_MAX, 5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      printBug("Found invalid physical cpu number: %d", physicalcpu);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      soc->soc_vendor = SOC_VENDOR_UNKNOWN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    printBug("Found invalid cpu_subfamily: 0x%.8X", cpu_subfamily);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    soc->soc_vendor = SOC_VENDOR_UNKNOWN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return soc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/arm/socs.h b/src/arm/socs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7632bc3..9b7ecd0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- rc/arm/socs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/arm/socs.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -256,6 +256,7 @@ enum {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SOC_APPLE_M1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SOC_APPLE_M1_PRO,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SOC_APPLE_M1_MAX,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  SOC_APPLE_M1_ULTRA,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // ALLWINNER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SOC_ALLWINNER_A10,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SOC_ALLWINNER_A13,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -288,7 +289,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if(soc >= SOC_EXYNOS_3475 && soc <= SOC_EXYNOS_880) return SOC_VENDOR_EXYNOS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if(soc >= SOC_MTK_MT6893 && soc <= SOC_MTK_MT8783) return SOC_VENDOR_MEDIATEK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if(soc >= SOC_SNAPD_QSD8650 && soc <= SOC_SNAPD_SM8350) return SOC_VENDOR_SNAPDRAGON;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  else if(soc >= SOC_APPLE_M1 && soc <= SOC_APPLE_M1_MAX) return SOC_VENDOR_APPLE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else if(soc >= SOC_APPLE_M1 && soc <= SOC_APPLE_M1_ULTRA) return SOC_VENDOR_APPLE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if(soc >= SOC_ALLWINNER_A10 && soc <= SOC_ALLWINNER_R328) return SOC_VENDOR_ALLWINNER;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return SOC_VENDOR_UNKNOWN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span></pre><pre style='margin:0'>

</pre>