[Rprotobuf-yada] building on windows

Dirk Eddelbuettel edd at debian.org
Thu Feb 17 14:53:08 CET 2011


On 17 February 2011 at 05:39, eckuipers-web at yahoo.com wrote:
| 
| 
| great i created a Makevars.win:
| 
| ## This assume that we can call Rscript to ask Rcpp about its locations
| ## Use the R_HOME indirection to support installations of multiple R version
| RCPP_LDFLAGS = $(shell "${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" -e 
| "Rcpp:::LdFlags()")
| 
| ## The environment variables PROTOBUF_ROOT has to point to mingw directory with 
| subdirs include and lib containing protobuf headers and library
| PKG_CXXFLAGS=-I$(PROTOBUF_ROOT)/include -I. 
| PKG_LIBS=$(RCPP_LDFLAGS) -L$(PROTOBUF_ROOT)/lib -lprotobuf
| 
| now building moves along until i hit this error:
| 
| g++ -I"C:/Devel/R-2.12/include"   -I"C:/Devel/R-2.12/library/Rcpp/include"   -Ic
| :/Devel/mingw/msys/1.0/local/include -I.    -O2 -Wall  -c SocketCopyingInputStre
| am.cpp -o SocketCopyingInputStream.o
| In file included from SocketCopyingInputStream.cpp:1:0:
| rprotobuf.h:28:0: warning: "O_BINARY" redefined
| c:\devel\mingw\bin\../lib/gcc/mingw32/4.5.0/../../../../include/fcntl.h:67:0: no
| te: this is the location of the previous definition
| In file included from SocketCopyingInputStream.cpp:2:0:
| SocketCopyingInputStream.h:5:24: fatal error: sys/socket.h: No such file or dire
| ctory
| compilation terminated.
| 
| 
| So this has something to do with the infamous sockets on windows being different 
| i assume. SocketCopyingInputStream.h already indicates there might be an issue:
| #include <sys/types.h>
| #include <sys/socket.h>
| 
| #include "sisocks.h"
| 
| /* FIXME: this should be probably handled by sisocks
|           we need it for the TCP_NODELAY socket option */
| #include <netinet/tcp.h>

Yes, at this point you may be into porting territory.  It might be a good
idea to look at Rserve by Simon Urbanek which includes a copy of sisocks.h
too; and Simon is generally quite knowledgeable about these things.

Can't be of much more help here, I am afraid.

Dirk
 
| ----- Original Message ----
| > From: Dirk Eddelbuettel <edd at debian.org>
| > To: eckuipers-web at yahoo.com
| > Cc: Dirk Eddelbuettel <edd at debian.org>; rprotobuf-yada at r-forge.wu-wien.ac.at
| > Sent: Wed, February 16, 2011 9:34:57 PM
| > Subject: Re: [Rprotobuf-yada] building on windows
| > 
| > 
| > On 16 February 2011 at 18:18, eckuipers-web at yahoo.com wrote:
| > |  Hey Dirk,
| > | Building the google protobuf library under windows just works for  me with 
| > | configure; make; make install. I was talking about RProtoBuf,  which also 
| >seems 
| >
| > | to have a configure script that i need to run.
| > 
| > Oh,  sorry, I misunderstood. You're ahead of the curve.
| > 
| > Windows behaviour for  CRAN package is standardized and document. Configure is
| > never used. In most  cases, locations are hardwired.  Here is what my
| > RQuantLib package has  in src/Makevars.win:
| > 
| >    ## This assume that we can call Rscript to  ask Rcpp about its locations
| >    ## Use the R_HOME indirection to support  installations of multiple R 
| >version
| >    RCPP_LDFLAGS = $(shell  "${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" -e 
| >"Rcpp:::LdFlags()")
| > 
| >     ## The environment variable QUANTLIB_ROOT has to point to an existing build 
| >of  QuantLib
| >    PKG_CXXFLAGS=-I$(QUANTLIB_ROOT) -I. 
| >     PKG_LIBS=$(RCPP_LDFLAGS) -L$(QUANTLIB_ROOT)/lib -lQuantLib-mgw-0_9_9
| > 
| > The  first paragraph deals with Rcpp. LinkingTo: in Description gets the
| > headers;  the RCPP_LDFLAGS deals with the Rcpp library to link to.  You could
| > copy  this as is.
| > 
| > The second paragraph then sets the -I flag to find Quantlib  header -- adapt
| > accordingly and for now don't bother with an env.var.   It also sets the
| > libraries, once for Rcpp from above and then for  QuantLib.
| > 
| > Enough of a pattern?
| > 
| > Dirk
| > 
| > | Best,
| > | Koert
| > | 
| > | ----- Original Message ----
| > | > From: Dirk Eddelbuettel <edd at debian.org>
| > | > To: eckuipers-web at yahoo.com
| > | > Cc: rprotobuf-yada at r-forge.wu-wien.ac.at
| > |  > Sent: Wed, February 16, 2011 8:34:24 PM
| > | > Subject: Re:  [Rprotobuf-yada] building on windows
| > | > 
| > | > 
| > | > On 16  February 2011 at 16:59, eckuipers-web at yahoo.com wrote:
| > |  > |  Hey all,
| > | > | 
| > | > | I again look again at building  RProtoBuf on windows... 
| > | > |  How do i  start? The first thing  is to do a ./configure i guess? Now i 
| >have  
| >
| > | >my 
| > | >
| > |  > | regular  mingw/msys environment in which i could try to do  this.  But R 
| >also 
| >
| > | 
| > | > | comes with its own mingw compiler  environment in Rtools. Does  Rtools 
| >have a 
| >
| > | 
| > | > | shell   in which i could do the configure?
| > | > 
| > | > When  we mentioned  this to Kenton, he looked surprised -- to him it just
| > | > worked via   'configure; make; make install'.  It was my understanding that 
| >he
| > | >  used  just a regular MSys / MinGW environment for this.
| > | > 
| > |  > So if you have bit of  patience to try this, I would suggest the  
| >following
| > | > two-step:
| > | > 
| > | >    i)  take  the Protocol Buffers folks by their word and see if you can  
| >build
| > |  >       a MinGW library and binary; this should work  with  a regular MSys 
| >but
| > | >       you may need to  install a few tools;  I recall it failed for me when 
| >it
| > | >        came to libtool so  maybe I had a bad libtool version
| > |  > 
| > | >   ii) with a library from i), we  should be able to  have R and RProtoBuf 
| >take
| > | >       advantage of   it.
| > | > 
| > | > Doing i) would be a really great help. 
| > | > 
| > |  > We could even talk to  Uwe to see if he'd want it for CRAN  builds.
| > | > 
| > | > Dirk
| > | > 
| > | > -- 
| > | > Dirk   Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
| > | > 
| > 
| > -- 
| > Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
| > 

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rprotobuf-yada mailing list