<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>