> On Apr 24, 2025, at 4:50 AM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
>
> I am getting the same missing libintl.h error on my MacOS Github action.
> What do you recommend as the fix? My current script is here:
>
> https://github.com/dmurdoch/parseLatex/blob/main/.github/workflows/R-CMD-check.yaml
>
> I've tried a couple of things (install using brew: fails because it is
> already installed, but R isn't looking there; install using the curl command
> below: fails because of permissions.
>
For the latter - did you forget sudo in front of the tar?
Without exact output we can only guess ...
Cheers,
Simon
> Duncan Murdoch
>
>
> On 2025-04-19 5:40 p.m., Simon Urbanek wrote:
>> Gavin,
>> there are few issues here with different possible solutions.
>> In general, you cannot mix R from Homebrew and CRAN - they use different
>> toolchains and libraries so you have to pick one.
>> 1) Despite what you said, what you are showing below is output from CRAN R,
>> so one option (which I'd recommend) is to go the CRAN way. First, simply
>> remove (or rename) /opt/homebrew so it doesn't break things (may or may not
>> be necessary). Then the error you see is because mgcv seems to require
>> gettext so install it from https://mac.r-project.org/bin/ - either follow
>> the instructions there (which will work even from more complex cases) or in
>> your case you can simply use
>> curl
>> https://mac.r-project.org/bin/darwin20/arm64/gettext-0.22.5-darwin.20-arm64.tar.xz
>> | tar xz -C /
>> (if you don't have write permissions in /opt/R either run "sudo chown -R
>> $USER /opt/R" or put "sudo" before the tar above).
>> Once you got whatever you needed compiled you can rename /opt/homebrew back
>> since we only need to remove it for compilation. The above works, because R
>> itself already has the necessary static library built-in (as it uses it
>> itself) so all you need are the gettext headers to appease mgcv.
>> 2) If you want to go fully the Homebrew way then you have to make sure you
>> are picking up R from Homebrew and not CRAN. Then you cannot use CRAN
>> binaries, you are entirely on your own since we don't support that setup, so
>> I do NOT recommend it, but it's possible. Typically, that requires you to
>> install the full compiler toolchain from Homebrew as well as well compiling
>> all R packages from sources. In that scenario you don't use anything from
>> mac.R-project.org but instead rely fully on Homebrew. This includes OpenMP,
>> because the compilers in Homebrew are not from Apple so they use their own
>> OpenMP.
>> 3) If the mgcv package on CRAN does not come with OpenMP support then I'd
>> contact the maintainers and ask them why they don't enable it. Packages that
>> benefit significantly from OpenMP typically enable it for their CRAN
>> binaries (good example is data.table), so if it is not enabled it may mean
>> that the authors don't recommend it or there is no significant benefit.
>> Cheers,
>> Simon
>>> On Apr 20, 2025, at 12:45 AM, Gavin Simpson <ucfa...@gmail.com> wrote:
>>>
>>> Dear list
>>>
>>> I seem to be running into a new issue after upgrading to R 4.5.0 that
>>> seems related to this
>>>
>>> * configure is now able to find an external libintl on macOS (the code
>>> from an older GNU gettext distribution failed to try linking with the
>>> macOS Core Foundation framework).
>>>
>>> I'm pretty new to MacOS and I have installed R from homebrew, and
>>> typically use the MacOS X binaries kindly provided by CRAN. However,
>>> for a couple of packages I make extensive use of, I want to make use
>>> of openMP, and so I have been following the excellent instructions on
>>> the mac.r-project.org pages to install the relevant fortran compiler
>>> and libomp.
>>>
>>> Specifically, I am trying to in compile the latest mgcv sources with
>>> openMP support. I have been doing this successfully for some time for
>>> the 4.3 and 4.4 releases of R. But after upgrading to R 4.5.0,
>>> compiling mgcv now throws an compilation error
>>>
>>> In file included from magic.c:27:
>>> ./general.h:4:10: fatal error: 'libintl.h' file not found
>>> 4 | #include <libintl.h>
>>> | ^~~~~~~~~~~
>>>
>>> (The full compile log is included below if neccessary.)
>>>
>>> I do have gettext installed and I do have libintl.h on my system
>>>
>>> % find /opt -name "libintl.*" -print
>>> /opt/homebrew/include/libintl.h
>>> /opt/homebrew/lib/libintl.dylib
>>> /opt/homebrew/lib/libintl.8.dylib
>>> /opt/homebrew/lib/libintl.a
>>> /opt/homebrew/Cellar/gettext/0.24/include/libintl.h
>>> /opt/homebrew/Cellar/gettext/0.24/lib/libintl.dylib
>>> /opt/homebrew/Cellar/gettext/0.24/lib/libintl.8.dylib
>>> /opt/homebrew/Cellar/gettext/0.24/lib/libintl.a
>>>
>>> My $PATH is
>>>
>>> % print $PATH
>>> /opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/X11/bin:/usr/local/laps:/usr/local/munki:/usr/local/munkireport:/Applications/quarto/bin:/Users/au690221/.local/bin:/Users/au690221/.local/bin
>>>
>>> I have edited ./src/Makevars in mgcv's sources such that it reads
>>>
>>> % cat ./repo/src/Makevars
>>> PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) $(SHLIB_OPENMP_CFLAGS)
>>> PKG_CFLAGS = $(SHLIB_OPENMP_CFLAGS)
>>>
>>> PKG_LIBS += -lomp
>>> PKG_CPPFLAGS = -Xclang -fopenmp
>>> ## *Both* the above must be *uncommented* for release
>>>
>>> #PKG_CFLAGS = -g -O0 -Wall -pedantic $(SHLIB_OPENMP_CFLAGS)
>>> ## Actually it now seems that you need to reset optimization flag in
>>> ## cd /usr/local/lib/R/etc/
>>> ## sudo pico Makeconf
>>> ## This file can add flags but not modify what's in the above!
>>> ## `#' out previous line for release (but not without uncommenting openMP)
>>>
>>> But I have tried it with the final pair of PKG_LIBS definitions that
>>> add omp support commented out also.
>>>
>>> My system details are
>>>
>>>> sessionInfo()
>>> R version 4.5.0 (2025-04-11)
>>> Platform: aarch64-apple-darwin20
>>> Running under: macOS Sequoia 15.4.1
>>>
>>> Matrix products: default
>>> BLAS:
>>> /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRblas.0.dylib
>>> LAPACK:
>>> /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib;
>>> LAPACK version 3.12.1
>>>
>>> locale:
>>> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
>>>
>>> time zone: Europe/Copenhagen
>>> tzcode source: internal
>>>
>>> attached base packages:
>>> [1] stats graphics grDevices utils datasets methods base
>>>
>>> loaded via a namespace (and not attached):
>>> [1] compiler_4.5.0
>>>
>>> and
>>>
>>> % clang -v
>>> Apple clang version 17.0.0 (clang-1700.0.13.3)
>>> Target: arm64-apple-darwin24.4.0
>>> Thread model: posix
>>> InstalledDir: /Library/Developer/CommandLineTools/usr/bin
>>>
>>> (So I have installed LLVM 18.1.8 from https://mac.r-project.org/openmp/ )
>>>
>>> I suspect I will need to solve this by adding the homebrew lib
>>> location to my LD_PATH or similar, but I'm not very familiar with this
>>> process in general and especially so on MacOS X.
>>>
>>> I'd appreciate any help with resolving this issue.
>>>
>>> TIA
>>>
>>> Gavin
>>>
>>> % R CMD INSTALL mgcv_1.9-3.tar.gz
>>> * installing to library ‘/Users/au690221/Library/R/arm64/4.5/library’
>>> * installing *source* package ‘mgcv’ ...
>>> ** this is package ‘mgcv’ version ‘1.9-3’
>>> ** using staged installation
>>> ** libs
>>> using C compiler: ‘Apple clang version 17.0.0 (clang-1700.0.13.3)’
>>> using SDK: ‘MacOSX15.4.sdk’
>>> clang -arch arm64
>>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
>>> -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c
>>> coxph.c -o coxph.o
>>> clang -arch arm64
>>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
>>> -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c
>>> davies.c -o davies.o
>>> clang -arch arm64
>>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
>>> -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c
>>> discrete.c -o discrete.o
>>> clang -arch arm64
>>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
>>> -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c
>>> gdi.c -o gdi.o
>>> clang -arch arm64
>>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
>>> -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c
>>> init.c -o init.o
>>> clang -arch arm64
>>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG
>>> -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c
>>> magic.c -o magic.o
>>> In file included from magic.c:27:
>>> ./general.h:4:10: fatal error: 'libintl.h' file not found
>>> 4 | #include <libintl.h>
>>> | ^~~~~~~~~~~
>>> 1 error generated.
>>> make: *** [magic.o] Error 1
>>> ERROR: compilation failed for package ‘mgcv’
>>> * removing ‘/Users/au690221/Library/R/arm64/4.5/library/mgcv’
>>> * restoring previous ‘/Users/au690221/Library/R/arm64/4.5/library/mgcv’
>>> --
>>> Gavin Simpson, PhD [he/him/his]
>>> [tw] @ucfagls [OrciD] 0000-0002-9084-8413
>>> [web] fromthebottomoftheheap.net
>>> • Assistant Professor
>>> • Department of Animal & Veterinary Sciences, Aarhus University
>>> • Adjunct Professor, Department of Biology, University of Regina.
>>>
>>> _______________________________________________
>>> R-SIG-Mac mailing list
>>> R-SIG-Mac@r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>
>> _______________________________________________
>> R-SIG-Mac mailing list
>> R-SIG-Mac@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>
>
>
>
_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-mac