Пакет devEMF в R 3.5 на macOS не собирается - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь установить и собрать из исходного кода пакет devEMF, но он не собирается. Я попытался установить на MacOS 10.11.6 и 10.13.4 с тем же результатом. В обеих системах у меня есть R установить с Homebrew.

Есть идеи о том, в чем может быть проблема?

Спасибо!

Installing package into ‘/Users/lpuerto/Library/R/3.x/library’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/src/contrib/devEMF_3.6.tar.gz'
Content type 'application/x-gzip' length 201425 bytes (196 KB)
==================================================
downloaded 196 KB

* installing *source* package ‘devEMF’ ...
** package ‘devEMF’ successfully unpacked and MD5 sums checked
configure: creating ./config.status
config.status: creating src/Makevars
** libs
/usr/local/opt/llvm/bin/clang++  -I"/usr/local/Cellar/r/3.5.0/lib/R/include" -DNDEBUG   -I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include   -fPIC  -g -O3 -Wall -pedantic -std=c++11 -mtune=native -pipe -c devEMF.cpp -o devEMF.o
In file included from devEMF.cpp:45:
./fontmetrics.h:470:19: error: no matching function for call to 'CTFontGetBoundingRectsForGlyphs'
        extents = CTFontGetBoundingRectsForGlyphs(m_FontInfo, 0, &glyph,
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/CoreText.framework/Headers/CTFont.h:875:8: note: candidate function not viable: no known conversion from 'int' to 'CTFontOrientation' for 2nd argument
CGRect CTFontGetBoundingRectsForGlyphs(
       ^
In file included from devEMF.cpp:45:
./fontmetrics.h:474:17: error: no matching function for call to 'CTFontGetAdvancesForGlyphs'
        width = CTFontGetAdvancesForGlyphs(m_FontInfo, 0, &glyph, NULL, 1);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/CoreText.framework/Headers/CTFont.h:933:8: note: candidate function not viable: no known conversion from 'int' to 'CTFontOrientation' for 2nd argument
double CTFontGetAdvancesForGlyphs(
       ^
In file included from devEMF.cpp:45:
./fontmetrics.h:486:20: error: no matching function for call to 'CTFontGetAdvancesForGlyphs'
        double w = CTFontGetAdvancesForGlyphs(m_FontInfo, 0, glyphs, NULL,
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/CoreText.framework/Headers/CTFont.h:933:8: note: candidate function not viable: no known conversion from 'int' to 'CTFontOrientation' for 2nd argument
double CTFontGetAdvancesForGlyphs(
       ^
3 errors generated.
make: *** [devEMF.o] Error 1
ERROR: compilation failed for package ‘devEMF’
* removing ‘/Users/lpuerto/Library/R/3.x/library/devEMF’
Warning in install.packages :
  installation of package ‘devEMF’ had non-zero exit status

The downloaded source packages are in
    ‘/private/var/folders/wf/41gjf2mx7m7fmvfd8dr22_5h0000gn/T/RtmpvEhMHs/downloaded_packages’

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Недавнее изменение в некоторой комбинации clang / OSX CoreText API / R выявило ошибку в пакете devEMF, из-за которой он полагался на тип данных "int", автоматически преобразуемый в тип данных "enum".

devEMF версии 3.6-1 исправляет эту ошибку, напрямую используя соответствующую константу перечисления.

0 голосов
/ 28 апреля 2018

Хорошо! Я понял! Кажется, что проблема была в makevars.

Это мой файл makevars

# Remove the comment on -fopenmp for compiling data.table package
CC=/usr/local/opt/llvm/bin/clang #-fopenmp
CXX=/usr/local/opt/llvm/bin/clang++ #-fopenmp
# -O3 should be faster than -O2 (default) level optimisation ..
CFLAGS=-g -O3 -Wall -pedantic -std=gnu99 -mtune=native -pipe
CXXFLAGS=-g -O3 -Wall -pedantic -std=c++11 -mtune=native -pipe
LDFLAGS=-L/usr/local/opt/gettext/lib -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib
CPPFLAGS=-I/usr/local/opt/gettext/include -I/usr/local/opt/llvm/include

Я прокомментировал все строки и установил его отлично. Возможно, это не совместимо с LLVM. Я не знаю.

...