Opened 19 months ago
Closed 19 months ago
#67298 closed defect (fixed)
R 4.3.0 is broken on 10.6.8: Symbol not found: _CTFontDrawGlyphs
Reported by: | barracuda156 | Owned by: | barracuda156 |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.8.1 |
Keywords: | snowleopard, leopard | Cc: | |
Port: | R |
Description
byte-compiling package 'graphics' Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_R/R/work/R-4.3.0/library/grDevices/libs/grDevices.so': dlopen(/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_R/R/work/R-4.3.0/library/grDevices/libs/grDevices.so, 6): Symbol not found: _CTFontDrawGlyphs Referenced from: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_R/R/work/R-4.3.0/library/grDevices/libs/grDevices.so Expected in: dynamic lookup Calls: <Anonymous> ... namespaceImport -> loadNamespace -> library.dynam -> dyn.load Execution halted
Attachments (1)
Change History (8)
Changed 19 months ago by barracuda156
Attachment: | R_4.3.0_log.txt added |
---|
comment:1 Changed 19 months ago by barracuda156
comment:2 Changed 19 months ago by barracuda156
Owner: | set to ryandesign |
---|---|
Status: | new → assigned |
Ryan, could we do something about this? My main system is 10.6, it is a trouble for testing if 4.3.0 is broken.
_CTFontDrawGlyphs
is available 10.7+: https://developer.apple.com/documentation/coretext/1509850-ctfontdrawglyphs
comment:3 Changed 19 months ago by barracuda156
The only instance of this symbol is in src/library/grDevices/src/devQuartz.c
. And that file doubled (!) in size since 4.2.3.
Code chunk in question:
void RQuartz_glyph(int n, int *glyphs, double *x, double *y, SEXP font, double size, int colour, double rot, pDevDesc dd) { DRAWSPEC; if (!ctx) NOCTX; CGContextRef savedCTX = ctx; CGLayerRef layer; if (n < 1) return; /* Not able to add glyphs to the current path. */ if (xd->appending) return; Rboolean grouping = QuartzBegin(&ctx, &layer, xd); char url[501]; snprintf(url, 500, "file://%s", R_GE_glyphFontFile(font)); CFStringRef cfFontFileName = CFStringCreateWithCString(NULL, url, kCFStringEncodingUTF8); CFURLRef cfFontURL = CFURLCreateWithString(NULL, cfFontFileName, NULL); CFArrayRef cfFontDescriptors = CTFontManagerCreateFontDescriptorsFromURL(cfFontURL); CFRelease(cfFontFileName); CFRelease(cfFontURL); int n_fonts = CFArrayGetCount(cfFontDescriptors); if (n_fonts > 0) { /* NOTE: that the font needs an inversion (in y) matrix because the device has an inversion in user space (for bitmap devices anyway) */ CGAffineTransform trans = CGAffineTransformMakeScale(1.0, -1.0); if (rot != 0.0) trans = CGAffineTransformRotate(trans, rot/180.*M_PI); CTFontRef ctFont = CTFontCreateWithFontDescriptor((CTFontDescriptorRef) CFArrayGetValueAtIndex(cfFontDescriptors, 0), size, &trans); CGColorSpaceRef cs = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); CGFloat fillColor[] = { R_RED(colour)/255.0, R_GREEN(colour)/255.0, R_BLUE(colour)/255.0, R_ALPHA(colour)/255.0 }; CGColorRef fillColorRef = CGColorCreate(cs, fillColor); CGContextSetFillColorWithColor(ctx, fillColorRef); int i; for (i=0; i<n; i++) { CGGlyph glyph = glyphs[i]; CGPoint loc = CGPointMake(x[i], y[i]); CTFontDrawGlyphs(ctFont, &glyph, &loc, 1, ctx); } CGColorRelease(fillColorRef); CFRelease(ctFont); } else { warning(_("Failed to load font")); } CFRelease(cfFontDescriptors); QuartzEnd(grouping, layer, ctx, savedCTX, xd); }
comment:4 Changed 19 months ago by barracuda156
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:5 Changed 19 months ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Sorry, I don't know anything about R.
comment:6 Changed 19 months ago by ryandesign (Ryan Carsten Schmidt)
Owner: | changed from ryandesign to barracuda156 |
---|---|
Status: | reopened → assigned |
comment:7 Changed 19 months ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
Same failure on x86_64: https://build.macports.org/builders/ports-10.6_x86_64-builder/builds/151501/steps/install-port/logs/stdio