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

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/63314ef717634c60438a174d3c9607cdd5b5a69c">https://github.com/macports/macports-ports/commit/63314ef717634c60438a174d3c9607cdd5b5a69c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 63314ef717634c60438a174d3c9607cdd5b5a69c
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Mon Mar 4 10:51:17 2024 +0700

<span style='display:block; white-space:pre;color:#404040;'>    R: unbreak aqua variant for < 10.10
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/69437
</span>---
 math/R/Portfile                  |  16 +++---
 math/R/files/patch-fix-10.9.diff | 105 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 113 insertions(+), 8 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/R/Portfile b/math/R/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index e0cbe19983c..e750f8d7d6f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/math/R/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/R/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -9,7 +9,7 @@ name                        R
</span> # Remember to set revision to 0 when bumping version
 # And also to update Rversion in R PortGroup
 version                     4.3.3
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision                    1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                    2
</span> 
 set branch                  [join [lrange [split ${version} .] 0 1] .]
 categories                  math science
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -65,6 +65,12 @@ if {${os.platform} eq "darwin" && ${os.major} < 11} {
</span>     patchfiles-append       patch-fix-10.6.diff
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://trac.macports.org/ticket/69437
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://bugs.r-project.org/show_bug.cgi?id=18683
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} eq "darwin" && ${os.major} < 14} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append       patch-fix-10.9.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # We wanna ensure the same compiler is used for R itself and R packages.
 # See R PortGroup.
 if {[string match macports-clang-* ${configure.compiler}]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -272,18 +278,12 @@ variant java description {enable Java} {
</span>                             --enable-java
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default_variants-append     +cairo +openmp +tcltk
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default_variants-append     +aqua +cairo +openmp +tcltk
</span> 
 if {![variant_isset quartz]} {
     default_variants-append +x11
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Version 4.3.3 with aqua won't build on 10.9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# See: https://trac.macports.org/ticket/69437
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.platform} eq "darwin" && ${os.major} >= 14} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    default_variants-append +aqua
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> if {[variant_isset cairo] && [variant_isset x11]} {
     require_active_variants path:lib/pkgconfig/cairo.pc:cairo x11
     require_active_variants path:lib/pkgconfig/pango.pc:pango x11
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/R/files/patch-fix-10.9.diff b/math/R/files/patch-fix-10.9.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..75fdd3dd605
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/R/files/patch-fix-10.9.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,105 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 7a66ae025ca1f8a21282dc060a5e9e1a345df483 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 4 Mar 2024 10:32:20 +0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Drop a breaking hack for Quartz on macOS 14.3.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This reverts commit 15dfe81edd88baad7a448860f934ce90ced6b473.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See: https://bugs.r-project.org/show_bug.cgi?id=18683
</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;'>+diff --git src/library/grDevices/src/qdCocoa.m src/library/grDevices/src/qdCocoa.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c4055afec5..825e07c127 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/library/grDevices/src/qdCocoa.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/library/grDevices/src/qdCocoa.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -331,12 +331,10 @@ static QuartzFunctions_t *qf;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ci->pdfMode = NO;
</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;'>+-static int sonoma_bug = -1; /* -1 = macOS not checked yet, 0 = no, 1 = yes */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - (void)drawRect:(NSRect)aRect
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     CGRect rect;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    CGContextRef ctx = [NSGraphicsContext currentContext].CGContext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    CGContextRef ctx = [[NSGraphicsContext currentContext] graphicsPort];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* we have to retain our copy, beause we may need to create a layer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        based on the context in NewPage outside of drawRect: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (ci->context != ctx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -344,25 +342,16 @@ static int sonoma_bug = -1; /* -1 = macOS not checked yet, 0 = no, 1 = yes */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             CGContextRelease(ci->context);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         CGContextRetain(ctx);
</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;'>+-    if (sonoma_bug == -1) { /* detect os version to work around the nasty Sonoma drawing bug */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  NSOperatingSystemVersion osver = [[NSProcessInfo processInfo] operatingSystemVersion];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  sonoma_bug = (osver.majorVersion == 14 && osver.minorVersion > 1) ? 1 : 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  /* Rprintf("macOS %d.%d.%d, buggy = %d\n", (int)osver.majorVersion, (int)osver.minorVersion,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-     (int)osver.patchVersion, sonoma_bug); */
</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;'>+     ci->context = ctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ci->bounds = [self bounds];        
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    /* Rprintf("drawRect, ctx=%p, bounds=(%f x %f)\n", ctx, ci->bounds.size.width, ci->bounds.size.height); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     rect = CGRectMake(0.0, 0.0, ci->bounds.size.width, ci->bounds.size.height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (ci->pdfMode) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  /* Rprintf("  pdfMode - replaying list\n"); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   qf->ReplayDisplayList(ci->qd);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return;
</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;'>++    /* Rprintf("drawRect, ctx=%p, bounds=(%f x %f)\n", ctx, ci->bounds.size.width, ci->bounds.size.height); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!ci->layer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         CGSize size = CGSizeMake(ci->bounds.size.width, ci->bounds.size.height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         /* Rprintf(" - have no layer, creating one (%f x %f)\n", ci->bounds.size.width, ci->bounds.size.height); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -400,24 +389,8 @@ static int sonoma_bug = -1; /* -1 = macOS not checked yet, 0 = no, 1 = yes */
</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;'>+     if ([self inLiveResize]) CGContextSetAlpha(ctx, 0.6); 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (ci->layer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  /* macOS 14.3.1 has a very bizarre bug which appears to be some kind
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-     of over-zealous optimization where it won't update the view even if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-     the contents changed after drawing the CGLayer. The only way to prevent
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-     this from happening seems to be to draw something different than
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-     CGLayer each time in the same location before drawing the CGLayer. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  static double _q = 0.0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (sonoma_bug) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      CGContextSaveGState(ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      CGRect cr = { 0.0, 0.0, 1.0, 1.0 };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      CGContextAddRect(ctx, cr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      CGContextSetRGBFillColor(ctx, _q, 1.0, 1.0, 1.0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      _q += 0.1; if (_q > 1.0) _q -= 1.0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      CGContextFillPath(ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      CGContextRestoreGState(ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (ci->layer)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         CGContextDrawLayerInRect(ctx, rect, ci->layer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ([self inLiveResize]) CGContextSetAlpha(ctx, 1.0); 
</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;'>+@@ -709,7 +682,6 @@ static void initialize_cocoa() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static CGContextRef QuartzCocoa_GetCGContext(QuartzDesc_t dev, void *userInfo) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     QuartzCocoaDevice *qd = (QuartzCocoaDevice*)userInfo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    /* if (!qd->pdfMode) Rprintf("QuartzCocoa_GetCGContext(layer=%p) -> %p (check %p)\n", qd->layer, qd->layerContext, qd->layer ? CGLayerGetContext(qd->layer) : 0); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return qd->pdfMode ? qd->context : qd->layerContext;
</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;'>+@@ -793,7 +765,6 @@ static void QuartzCocoa_NewPage(QuartzDesc_t dev,void *userInfo, int flags) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ci->inHistory = -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (ci->layer) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        /* Rprintf(" - releasing old layer (%p - ctx: %p)\n", ci->layer, ci->layerContext); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         CGLayerRelease(ci->layer);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ci->layer = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ci->layerContext = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -814,7 +785,6 @@ static void QuartzCocoa_Sync(QuartzDesc_t dev,void *userInfo) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      * via setNeedsDisplay: YES has issues since dev.flush() won't
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      * be synchronous and thus animation using dev.flush(); dev.hold()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      * will break by the time the event loop is run */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    /* Rprintf("QuartzCocoa_Sync()\n"); */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     [ci->view display];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span></pre><pre style='margin:0'>

</pre>