Re: [R-SIG-Mac] Apple Silicon aka M1 Macs

2020-12-24 Thread Denis-Alexander Engemann
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 

Re: [R-SIG-Mac] Apple Silicon aka M1 Macs

2020-12-24 Thread Jeroen Ooms
On Thu, Dec 24, 2020 at 7:32 PM Denis-Alexander Engemann
 wrote:
>
> 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 ?

Homebrew now has an arm64 binary for R:
https://github.com/homebrew/homebrew-core/blob/master/Formula/r.rb .
Hence you can simply use: brew install r

To tweak the build, use "brew edit r", save your changes, and then:
brew install r --build-from-source

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