[Rd] make fails when using with-x=no on linux CentOS 5.3 (PR#13670)

delhomme at embl.de delhomme at embl.de
Wed Apr 22 16:50:09 CEST 2009

Full_Name: Nicolas Delhomme
Version: 2.9.0
OS: Linux CentOS release 5.3 kernel 2.6.18-128.el5 arch x86_64
Submission from: (NULL) (


The commands I used to compile R2.9.0 on CentOS
./compile --with-x=no

This fails with the following message:
make[2]: Leaving directory `/home/delhomme/R-2.9.0/src/modules/vfonts'
make[1]: Leaving directory `/home/delhomme/R-2.9.0/src/modules/vfonts'
make[1]: Entering directory `/home/delhomme'
make[1]: *** No rule to make target `R'.  Stop.
make[1]: Leaving directory `/home/delhomme'
make: *** [R] Error 1

What happens is the following:

In the Makefile located in the src/modules directory, there's a check for
R_MODULES (l.17-18)
## R_MODULES is X11 (or not)
MODULES = $(R_MODULES) internet lapack vfonts

This works fine, R_MODULES being defined and equal to an empty string.

Then in the R target (l.26-30)
R: Makefile make.internet make.lapack make.vfonts
       @for d in "$(R_MODULES)"; do \
            (cd $${d} && $(MAKE) $@) || exit 1; \

the R_MODULES is used again and since it is an empty string, it results in
cd && make R, which means going to the home directory and executes the R target
of the Makefile there. Humm... since there's no makefile in my home dir, this
obviously breaks everything up.

The fix for that is to test wether R_MODULES is not an empty string. The
following corrects the problem:

R: Makefile make.internet make.lapack make.vfonts
        @if test "$(R_MODULES)"	!= ""; then \
                for d in "$(R_MODULES)"; do \
                  (cd $${d} && $(MAKE) $@) || exit 1; \
                done; \ 


Nicolas Delhomme

More information about the R-devel mailing list