Hi Gavin,

If you want to use gettext from Homebrew, you need to make sure the
compiler include paths are set up correctly. As a reference, R
installations from Homebrew use (among other tweaks, but I think these
are the most relevant):

    CPPFLAGS = -I/opt/homebrew/opt/gettext/include
-I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/xz/include
-I/opt/homebrew/include
    LDFLAGS = -L/opt/homebrew/opt/gettext/lib
-L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/xz/lib
-L/opt/homebrew/lib

in their etc/Makeconf, so you probably need something similar in your
own Makevars file (or wherever else is appropriate for you to set
these).

You might also be able to use `-I/opt/homebrew/include`, but that's a
bit more dangerous since (depending on what you've installed with
Homebrew) you could end up unintentionally shadowing certain header
files that were expected to be found in other locations. Adding `-H`
to CPPFLAGS can be useful in this scenario; it will tell the compiler
to dump the include paths used when resolving headers.

Caveat emptor and all that, but I've had success using CRAN R releases
on macOS with Homebrew-installed libraries. The main wrinkles come
when /usr/local/include gets full of "junk" that messes up compiler
header searches, but that's less of an issue on arm64 since Homebrew
stuff gets placed in /opt/homebrew, and /opt/homebrew/include is not
added to the compiler include search paths by default.

Best,
Kevin

On Wed, Apr 23, 2025 at 11:27 PM Duncan Murdoch
<murdoch.dun...@gmail.com> wrote:
>
> I didn't use sudo, but adding it doesn't help.
>
> Here's the latest failed run:
>
> https://github.com/dmurdoch/parseLatex/actions/runs/14634872157/job/41063801330
>
> It fails to create opt/R/arm64.  I also tried x86_64, with similar results.
>
> Duncan Murdoch
>
> On 2025-04-23 4:17 p.m., Simon Urbanek wrote:
> >
> >
> >> 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

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to