Hi everyone,
I'm finally joining the party here and so far made good progress
following Taras' instructions.
Disclaimer - I'm new to working with R sources.
But would be very happy to help with testing and reporting to
accelerate support native M1 builds.
I am using the R-4.0.3 sources with the latest gfortran release from
François-Xavier Coudert:
https://github.com/fxcoudert/gfortran-for-macOS/releases/tag/11-arm-alpha2
Currently I'm facing some issues at step 5.
It seems that for some reasons liblzma cannot be found although it is
well installed via xz at step 3.
I also verified that the liblzma can be easily discovered along the lines of 3.
The lines before ./configure stops are:
```
checking lzma.h usability... no
checking lzma.h presence... no
checking for lzma.h... no
configure: error: "liblzma library and headers are required"
```
As mentioned, all is well installed in the include and lib directories at:
/opt/homebrew/Cellar/xz/5.2.5
Would you have a suggestion where I should link the headers/library to
be picked up by ./configure ?
Best wishes,
Denis
On Wed, Nov 25, 2020 at 10:41 AM Taras Zakharko wrote:
>
> Creating a native Aarch64 build of R on my M1 machine was surprisingly
> straightforward. Here is a step-by-step instruction of what I did in case
> someone wants to replicate it:
>
> 1. Install native homebrew as described in this blog post under “Multiple
> Homebrews” (https://soffes.blog/homebrew-on-apple-silicon). You will need to
> manually chown a bunch of directories, keep an eye on brew output
>
> 2. Install the following brew packages
>
> brew install jpeg libpng libtiff pcre2 pkg-config tcl-tk xz zlib
>
> Again, pay attention to brew output, it is possible that you will have to
> manually reset ownership on some directories
>
> 3. Make sure that zlib can be discovered by pkg-config by making it’s pc file
> discoverable
>
> ln -s /opt/homebrew/Cellar/zlib/1.2.11/lib/pkgconfig/zlib.pc
> /opt/homebrew/lib/pkgconfig/
>
> 4. Install patched gfortran, I used the precompiled package from here:
>
>
> https://github.com/fxcoudert/gfortran-for-macOS/releases/tag/11-arm-alpha1
>
> 5. In config.site, add the paths to homebrew libraries:
>
> CPPFLAGS=-I/opt/homebrew/include
> LDFLAGS=-L/opt/homebrew/lib
>
> Note: the R-admin manual tells to set CC, CXX, FC in config.sites, but it’s
> not strictly necessary, the build will work without them
>
> 5. Run the configure script, I used
>
> ./configure --enable-R-shlib --without-x --enable-memory-profiling
> --with-blas="-framework Accelerate”
>
> Check that the summary makes sense. If PNG is disabled, it’s probably
> because you forgot step 3
>
> 6. Build R
>
> make -j4
>
> 7. Check that everything runs
>
> bin/R
>
>You should see something like "Platform: arm-apple-darwin20.2.0 (64-bit)”
> in the startup message.
>
> All core tests seems to pass and the performance is excellent.
>
> I have tried building tidyverse and it blocked on testthat. It seems that
> testthat uses a fairly old version of Catch which doesn’t detect platform
> correctly and tries to use some x86 inline assembly during the arm build…
>
>
> > On 23 Nov 2020, at 11:14, Prof Brian Ripley wrote:
> >
> > As a follow-up, I now have a preliminary native build of R (using a
> > gfortran compiled from sources forked from GCC and using minor
> > modifications of Tomas Kalibera's instructions).
> >
> > The check timing was 148s, with Aqua (not X11) Tcl/Tk built from the
> > sources and no X11 support, so not quite 100% comparable.
> >
> > Building the compiler took 45m elapsed with 100% CPU most of the time: the
> > machine (which has no fan) remained cool (unlike my MBP which has a fan but
> > rarely runs it and does get warm to the touch).
> >
> > There is a preliminary write-up on 'arm64' Macs in R-devel's R-admin manual
> > (the version on CRAN is as usual a few days behind).
> >
> > On 17/11/2020 14:57, Prof Brian Ripley wrote:
> >> Mine (a 8GB MBA) arrived today, so I have started doing some comparisons.
> >> For the CRAN build of R 4.0.3, §2.8 of R-admin recommends checking the
> >> installation with
> >> pdf("tests.pdf") ## optional, but prevents flashing graphics windows
> >> Sys.setenv(LC_COLLATE = "C", LC_TIME = "C", LANGUAGE = "en")
> >> tools::testInstalledBasic("both")
> >> tools::testInstalledPackages(scope = "base")
> >> tools::testInstalledPackages(scope = "recommended")
> >> That took 454s (using Rosetta) against 895s for my late-2016 MBP (2.9GHz
> >> i5): happily nothing untoward was reported (some recommended packages give
> >> differences from reference output on both systems).
> >> You need to install XQuartz to provide the X11() devices and support for
> >> package Tcl/Tk: everything I tried using that worked as expected.
> >> Having done that post-installation check I would happily use the Intel R
> >> on an M1 machine.
> >> We plan to check many of the Intel-compiled packages under