Re: [Rd] Too long pathname in bitmap() crashes R on WinXP
Thanks. /Henrik On 3/31/07, Prof Brian Ripley <[EMAIL PROTECTED]> wrote: > It is also possible to trigger this on Unix: a buffer in postscript() is > PATH_MAX when it should be 2*PATH_MAX + 2. > > I'll fix this in 2.5.0 alpha (there is also a potential issue inside the > Windows' runcmd that needs fixing). > > On Fri, 30 Mar 2007, Henrik Bengtsson wrote: > > > Hi, > > > > using too long pathnames for bitmap() crash R on WinXP. I've verified > > that this is the case with R version 2.4.1 Patched (2007-03-25 r40958) > > and R version 2.5.0 alpha (2007-03-30 r40957). I cannot reproduce it > > on Linux. > > > > REPRODUCIBLE EXAMPLE: > > > > % Rterm --vanilla > > > > # Tell R where Ghostscript is > > gsexe <- "C:/gs/gs8.54/bin/gswin32c.exe"; > > gsexe <- "C:/Program Files/gs/gs8.56/bin/gswin32c.exe"; > > gsexe <- shortPathName(gsexe); > > Sys.putenv("R_GSCMD"=gsexe); > > > > # Total length of pathname (R crashes when it is too long) > > n <- 130; > > > > # Output path > > path <- tempdir(); > > > > # Filename > > name <- paste(rep("a", n-5-nchar(path)), collapse=""); > > filename <- paste(name, "png", sep="."); > > > > # Full pathname > > pathname <- file.path(path, filename); > > print(pathname); > > stopifnot(nchar(pathname) == n); > > > > bitmap(pathname); > > plot(1); > > dev.off(); > > > > R crash with dev.off(), but the PNG file is still created. > > > > > > # MORE DETAILED EXAMPLE: > > > > n <- 130; > > path <- tempdir(); > > name <- paste(rep("a", n-5-nchar(path)), collapse=""); > > filename <- paste(name, "png", sep="."); > > pathname <- file.path(path, filename); > > print(pathname); > > > > # Tell R where Ghostscript is > > gsexe <- "C:/gs/gs8.54/bin/gswin32c.exe"; > > gsexe <- "C:/Program Files/gs/gs8.56/bin/gswin32c.exe"; > > gsexe <- shortPathName(gsexe); > > > > cmd <- paste(gsexe, " -dNOPAUSE -dBATCH -q -sDEVICE=png256 -r72 > > -g432x432 -sOutputFile=", pathname, sep=""); > > print(cmd); > > print(nchar(cmd)); > > > > tmp <- tempfile(); > > postscript(file=tmp, width=6, height=6, pointsize=9, paper="special", > > horizontal=FALSE, print.it=TRUE, command=cmd); > > plot(1); > > dev.off(); > > > > It seems to have to do with the length of 'cmd' (since the possible > > pathname length varies with the length of 'gsexe' used). > > > > Any ideas? > > > > /Henrik > > > > __ > > R-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > -- > Brian D. Ripley, [EMAIL PROTECTED] > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UKFax: +44 1865 272595 > __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] Matrix package: compilation error
Trying to compile the package Matrix_0.9975-11.tar.gz with newest R-2.5.0 alpha (2007-03-31 r40986) on FreeBSD 7.0-CURRENT (i386) I get the following error: - R CMD INSTALL Matrix_0.9975-11.tar.gz * Installing to library '/usr/local/lib/R/library' * Installing *source* package 'Matrix' ... ** libs ** arch - "Makefile", line 10: Missing dependency operator "Makefile", line 12: Need an operator "Makefile", line 14: Need an operator make: fatal errors encountered -- cannot continue ERROR: compilation failed for package 'Matrix' ** Removing '/usr/local/lib/R/library/Matrix' - Under FreeBSD I have installed the LAPACK package (3.0.2) with library at location /usr/local/lib/liblapack.so.4 Is it possible that the Makefile of package Matrix fails because of that? Any help is appreciated, Rainer Hurling __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] Problem with S4 inheritance: unexpected re-initialization?
Dear all, To explain my problem I am attaching a demonstration package "myclasspkg": I have the following two S4 classes with similar inheritance: SubSubClassA <- SubClassB <- BaseClass SubSubClassB <- SubClassB <- BaseClass In R I am calling the following functions: > library(myclasspkg) > subA <- new("SubClassA",filename="OutSubA",filedir="/Volumes/CoreData/CRAN/Workspaces/rclasspkg",mytitle="TitleSubA") > subsubA <- new("SubSubClassA",filename="MyFileName",filedir="/Volumes/CoreData/CRAN/Workspaces/rclasspkg",subA=subA) > subsubB <- new("SubSubClassB",filename="MyFileNameB",filedir="/Volumes/CoreData/CRAN/Workspaces/rclasspkg",subA=subA) Creating subsubA works fine and gives the correct result: > subsubA <- new("SubSubClassA",filename="MyFileName",filedir="/Volumes/CoreData/CRAN/Workspaces/rclasspkg",subA=subA) [1] "--initialize:SubSubClassA--" [1] "SubSubClassA:init:class(.Object) = SubSubClassA" [1] "--initialize:SubClassB--" [1] "SubClassB:init:class(.Object) = SubSubClassA" [1] "--initialize:BaseClass--" [1] "BaseClass:init:class(.Object) = SubSubClassA" [1] "--pathFile--" [1] "BaseClass:init:dirfile = /Volumes/CoreData/CRAN/Workspaces/rclasspkg/MyFileName" [1] "--setValidity:BaseClass--" [1] "BaseClass:val:class(object) = SubClassB" [1] "BaseClass:val:dirfile = /Volumes/CoreData/CRAN/Workspaces/rclasspkg/MyFileName" [1] "BaseClass:val:filedir = /Volumes/CoreData/CRAN/Workspaces/rclasspkg" [1] "--setValidity:SubClassB--" [1] "SubClassB:val:class(object) = SubClassB" [1] "SubClassB:val:filename = MyFileName" [1] "BaseClass:val:dirfile = /Volumes/CoreData/CRAN/Workspaces/rclasspkg/MyFileName" [1] "--setValidity:SubSubClassA--" [1] "SubSubClassA:val:class(.Object) = SubSubClassA" In contrast, when trying to create subsubB, it seems that setValidity re-initializes SubClassB: > subsubB <- new("SubSubClassB",filename="MyFileNameB",filedir="/Volumes/CoreData/CRAN/Workspaces/rclasspkg",subA=subA) [1] "--initialize:SubSubClassB--" [1] "SubSubClassB:init:class(.Object) = SubSubClassB" [1] "SubSubClassB:init:subsubnameB = subsubNameB" [1] "--initialize:SubClassB--" [1] "SubClassB:init:class(.Object) = SubSubClassB" [1] "--initialize:BaseClass--" [1] "BaseClass:init:class(.Object) = SubSubClassB" [1] "--pathFile--" [1] "BaseClass:init:dirfile = /Volumes/CoreData/CRAN/Workspaces/rclasspkg/MyFileNameB" [1] "--setValidity:BaseClass--" [1] "--initialize:SubClassB--" [1] "SubClassB:init:class(.Object) = SubClassB" [1] "--initialize:BaseClass--" [1] "BaseClass:init:class(.Object) = SubClassB" [1] "--pathFile--" Error in if (dirname(filename) != ".") { : argument is of length zero Can someone tell me why the first case works fine, but the second case not? Probably, I am making some mistake, but since two weeks I am unable to find it. Thank you in advance. P.S.: I am running R-2.5.0 on Intel-Mac OS 10.4.8. Best regards Christian _._._._._._._._._._._._._._._._ C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a V.i.e.n.n.a A.u.s.t.r.i.a _._._._._._._._._._._._._._._._ myclasspkg_0.1.1.tar.gz Description: GNU Zip compressed data __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Matrix package: compilation error
This is because of the GNUism in Matrix/src/Makefile ## get rid of this, once we have 'Depends: R (>= 2.5.0)': ifeq (, $(findstring -lRlapack, $(LAPACK_LIBS))) SOURCES_LAPACK = else SOURCES_LAPACK = zpotf2.f zpotrf.f zlacgv.f endif I guess you know what you need to do to fix it for BSD make? On Sat, 31 Mar 2007, Rainer Hurling wrote: > Trying to compile the package Matrix_0.9975-11.tar.gz with newest > R-2.5.0 alpha (2007-03-31 r40986) on FreeBSD 7.0-CURRENT (i386) I get > the following error: > > - > R CMD INSTALL Matrix_0.9975-11.tar.gz > * Installing to library '/usr/local/lib/R/library' > * Installing *source* package 'Matrix' ... > ** libs > ** arch - > "Makefile", line 10: Missing dependency operator > "Makefile", line 12: Need an operator > "Makefile", line 14: Need an operator > make: fatal errors encountered -- cannot continue > ERROR: compilation failed for package 'Matrix' > ** Removing '/usr/local/lib/R/library/Matrix' > - > > > Under FreeBSD I have installed the LAPACK package (3.0.2) with library > at location > > /usr/local/lib/liblapack.so.4 > > Is it possible that the Makefile of package Matrix fails because of that? Not used unless you asked for it during R's configure. -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UKFax: +44 1865 272595 __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Matrix package: compilation error
> "Rainer" == Rainer Hurling <[EMAIL PROTECTED]> > on Sat, 31 Mar 2007 19:03:44 +0200 writes: Rainer> Trying to compile the package Rainer> Matrix_0.9975-11.tar.gz Rainer> with newest R-2.5.0 alpha Rainer> (2007-03-31 r40986) on FreeBSD 7.0-CURRENT (i386) does FreeBSD use a make that is 'GNU make' compatible? Matrix/DESCRIPTION has a line which says -- SystemRequirements: GNU make -- Regards, Martin Maechler, ETH Zurich Rainer> I get the following error: Rainer> - Rainer> R CMD INSTALL Matrix_0.9975-11.tar.gz Rainer> * Installing to library '/usr/local/lib/R/library' Rainer> * Installing *source* package 'Matrix' ... Rainer> ** libs Rainer> ** arch - Rainer> "Makefile", line 10: Missing dependency operator Rainer> "Makefile", line 12: Need an operator Rainer> "Makefile", line 14: Need an operator Rainer> make: fatal errors encountered -- cannot continue Rainer> ERROR: compilation failed for package 'Matrix' Rainer> ** Removing '/usr/local/lib/R/library/Matrix' Rainer> - Rainer> Under FreeBSD I have installed the LAPACK package (3.0.2) with library Rainer> at location Rainer> /usr/local/lib/liblapack.so.4 Rainer> Is it possible that the Makefile of package Matrix fails because of that? Rainer> Any help is appreciated, Rainer> Rainer Hurling Rainer> __ Rainer> R-devel@r-project.org mailing list Rainer> https://stat.ethz.ch/mailman/listinfo/r-devel __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Matrix package: compilation error
Thanks, Brian and Martin, I think you are both right, Matrix tries to use BSD make (/usr/bin/make) on FreeBSD instead of GNU make (/usr/local/bin/gmake). Sorry, but I don't know how to persuade the configure script to use gmake :-( Rainer Prof Brian Ripley schrieb: > This is because of the GNUism in Matrix/src/Makefile > > ## get rid of this, once we have 'Depends: R (>= 2.5.0)': > ifeq (, $(findstring -lRlapack, $(LAPACK_LIBS))) > SOURCES_LAPACK = > else > SOURCES_LAPACK = zpotf2.f zpotrf.f zlacgv.f > endif > > I guess you know what you need to do to fix it for BSD make? > > On Sat, 31 Mar 2007, Rainer Hurling wrote: > >> Trying to compile the package Matrix_0.9975-11.tar.gz with newest >> R-2.5.0 alpha (2007-03-31 r40986) on FreeBSD 7.0-CURRENT (i386) I get >> the following error: >> >> - >> R CMD INSTALL Matrix_0.9975-11.tar.gz >> * Installing to library '/usr/local/lib/R/library' >> * Installing *source* package 'Matrix' ... >> ** libs >> ** arch - >> "Makefile", line 10: Missing dependency operator >> "Makefile", line 12: Need an operator >> "Makefile", line 14: Need an operator >> make: fatal errors encountered -- cannot continue >> ERROR: compilation failed for package 'Matrix' >> ** Removing '/usr/local/lib/R/library/Matrix' >> - >> >> >> Under FreeBSD I have installed the LAPACK package (3.0.2) with library >> at location >> >> /usr/local/lib/liblapack.so.4 >> >> Is it possible that the Makefile of package Matrix fails because of that? > > Not used unless you asked for it during R's configure. > __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Matrix package: compilation error
Hi Rainer, check the following post for an alternative solution: http://tolstoy.newcastle.edu.au/R/help/06/01/18908.html if you would like more detailed instructions, let me know. Andrew On Sat, Mar 31, 2007 at 10:10:45PM +0200, Rainer Hurling wrote: > Thanks, Brian and Martin, > > I think you are both right, Matrix tries to use BSD make (/usr/bin/make) > on FreeBSD instead of GNU make (/usr/local/bin/gmake). > > Sorry, but I don't know how to persuade the configure script to use > gmake :-( > > Rainer > > > Prof Brian Ripley schrieb: > > This is because of the GNUism in Matrix/src/Makefile > > > > ## get rid of this, once we have 'Depends: R (>= 2.5.0)': > > ifeq (, $(findstring -lRlapack, $(LAPACK_LIBS))) > > SOURCES_LAPACK = > > else > > SOURCES_LAPACK = zpotf2.f zpotrf.f zlacgv.f > > endif > > > > I guess you know what you need to do to fix it for BSD make? > > > > On Sat, 31 Mar 2007, Rainer Hurling wrote: > > > >> Trying to compile the package Matrix_0.9975-11.tar.gz with newest > >> R-2.5.0 alpha (2007-03-31 r40986) on FreeBSD 7.0-CURRENT (i386) I get > >> the following error: > >> > >> - > >> R CMD INSTALL Matrix_0.9975-11.tar.gz > >> * Installing to library '/usr/local/lib/R/library' > >> * Installing *source* package 'Matrix' ... > >> ** libs > >> ** arch - > >> "Makefile", line 10: Missing dependency operator > >> "Makefile", line 12: Need an operator > >> "Makefile", line 14: Need an operator > >> make: fatal errors encountered -- cannot continue > >> ERROR: compilation failed for package 'Matrix' > >> ** Removing '/usr/local/lib/R/library/Matrix' > >> - > >> > >> > >> Under FreeBSD I have installed the LAPACK package (3.0.2) with library > >> at location > >> > >> /usr/local/lib/liblapack.so.4 > >> > >> Is it possible that the Makefile of package Matrix fails because of that? > > > > Not used unless you asked for it during R's configure. > > > > __ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- Andrew Robinson Department of Mathematics and StatisticsTel: +61-3-8344-9763 University of Melbourne, VIC 3010 Australia Fax: +61-3-8344-4599 http://www.ms.unimelb.edu.au/~andrewpr http://blogs.mbs.edu/fishing-in-the-bay/ __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] Probem with argument "append" in "Rprof"
Hello, Appending information to the profiler's output seems to generate problems. Here is a small example of code : require(boot) Rprof( memory.profiling = TRUE) Rprof(NULL) for(i in 1:2){ Rprof( memory.profiling = TRUE, append = TRUE) example(boot) Rprof(NULL) } The problem is that the file Rprof.out contains more than once the header information: $ grep "sample.interval=" Rprof.out memory profiling: sample.interval=2 memory profiling: sample.interval=2 memory profiling: sample.interval=2 and `summaryRprof` or `R CMD Rprof` are not dealing with it > idx <- grep( "sample", rownames( smp <- summaryRprof()[[1]] ) ); smp[idx, ] self.time self.pct total.time total.pct sample.interval=2 00 0.04 0.1 `sample.interval=2` is incorrectly considered as a function. This is not too much of a big deal, but then if I ask for memory profiling information as well, I get nothing: > summaryRprof( mem = "stats") Error in tapply(1:1L, list(index = c("sample.interval=2:profiling:", : arguments must have same length > summaryRprof( mem = "tseries") Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 1, 1490 > summaryRprof( mem = "both") Error in apply(sapply(strsplit(memstuff, ":"), as.numeric), 1, diff) : dim(X) must have a positive length $ R CMD Rprof Rprof.out Each sample represents seconds. Total run time: 0 seconds. Total seconds: time spent in function and callees. Self seconds: time spent in function alone. % total % self totalseconds selfsecondsname Illegal division by zero at /usr/local/lib/R/bin/Rprof line 91, <> line 1491. A quick fix could be to ignore all the lines containing sample.interval= except the first one, but then if someone wants to actually change the interval argument in Rprof, it would not be correct. I attach a patch against R-devel/src/library/utils/R/summRprof.R to do that anyway, but I will look at a better solution. I am not fluent enough in Perl to do the same in the Rprof script, it looks like it does not handle the memory profiling information anyway. I am about to learn Perl, so I guess it could be a useful way to do it. I also attach a patch against R-devel/src/scripts/Rprof that would at least get rid of the memory profiling information (if any). This is not as good as dealing with it, but ... this is the first time I ever touch a Perl script. Cheers, Romain > version _ platform i686-pc-linux-gnu arch i686 os linux-gnu system i686, linux-gnu status Under development (unstable) major 2 minor 6.0 year 2007 month 03 day 30 svn rev 40983 language R version.string R version 2.6.0 Under development (unstable) (2007-03-30 r40983) -- Mango Solutions data analysis that delivers Tel: +44(0) 1249 467 467 Fax: +44(0) 1249 467 468 Mob: +44(0) 7813 526 123 --- summRprof.R 2007-03-31 21:10:31.0 +0100 +++ /tmp/R-devel/src/library/utils/R/summRprof.R 2006-10-05 07:54:38.0 +0100 @@ -32,10 +32,8 @@ repeat({ chunk<-readLines(filename,n=chunksize) - chunk <- chunk[ -grep("sample\\.interval=", chunk) ] if (length(chunk)==0) break - if (memory.profiling){ memprefix<-attr(regexpr(":[0-9]+:[0-9]+:[0-9]+:[0-9]+:",chunk),"match.length") if (memory=="both"){ @@ -121,7 +119,6 @@ repeat({ chunk<-readLines(filename,n=chunksize) - chunk <- chunk[ -grep("sample\\.interval=", chunk) ] if (length(chunk)==0) break memprefix<-attr(regexpr(":[0-9]+:[0-9]+:[0-9]+:[0-9]+:",chunk), __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] Probem with argument "append" in "Rprof"
[forgot to attach the second patch in the first mail, sorry.] Hello, Appending information to the profiler's output seems to generate problems. Here is a small example of code : require(boot) Rprof( memory.profiling = TRUE) Rprof(NULL) for(i in 1:2){ Rprof( memory.profiling = TRUE, append = TRUE) example(boot) Rprof(NULL) } The problem is that the file Rprof.out contains more than once the header information: $ grep "sample.interval=" Rprof.out memory profiling: sample.interval=2 memory profiling: sample.interval=2 memory profiling: sample.interval=2 and `summaryRprof` or `R CMD Rprof` are not dealing with it > idx <- grep( "sample", rownames( smp <- summaryRprof()[[1]] ) ); smp[idx, ] self.time self.pct total.time total.pct sample.interval=2 00 0.04 0.1 `sample.interval=2` is incorrectly considered as a function. This is not too much of a big deal, but then if I ask for memory profiling information as well, I get nothing: > summaryRprof( mem = "stats") Error in tapply(1:1L, list(index = c("sample.interval=2:profiling:", : arguments must have same length > summaryRprof( mem = "tseries") Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 1, 1490 > summaryRprof( mem = "both") Error in apply(sapply(strsplit(memstuff, ":"), as.numeric), 1, diff) : dim(X) must have a positive length $ R CMD Rprof Rprof.out Each sample represents seconds. Total run time: 0 seconds. Total seconds: time spent in function and callees. Self seconds: time spent in function alone. % total % self totalseconds selfsecondsname Illegal division by zero at /usr/local/lib/R/bin/Rprof line 91, <> line 1491. A quick fix could be to ignore all the lines containing sample.interval= except the first one, but then if someone wants to actually change the interval argument in Rprof, it would not be correct. I attach a patch against R-devel/src/library/utils/R/summRprof.R to do that anyway, but I will look at a better solution. I am not fluent enough in Perl to do the same in the Rprof script, it looks like it does not handle the memory profiling information anyway. I am about to learn Perl, so I guess it could be a useful way to do it. I also attach a patch against R-devel/src/scripts/Rprof that would at least get rid of the memory profiling information (if any). This is not as good as dealing with it, but ... this is the first time I ever touch a Perl script. Cheers, Romain > version _ platform i686-pc-linux-gnu arch i686 os linux-gnu system i686, linux-gnu status Under development (unstable) major 2 minor 6.0 year 2007 month 03 day 30 svn rev 40983 language R version.string R version 2.6.0 Under development (unstable) (2007-03-30 r40983) -- Mango Solutions data analysis that delivers Tel: +44(0) 1249 467 467 Fax: +44(0) 1249 467 468 Mob: +44(0) 7813 526 123 --- summRprof.R 2007-03-31 21:10:31.0 +0100 +++ /tmp/R-devel/src/library/utils/R/summRprof.R 2006-10-05 07:54:38.0 +0100 @@ -32,10 +32,8 @@ repeat({ chunk<-readLines(filename,n=chunksize) - chunk <- chunk[ -grep("sample\\.interval=", chunk) ] if (length(chunk)==0) break - if (memory.profiling){ memprefix<-attr(regexpr(":[0-9]+:[0-9]+:[0-9]+:[0-9]+:",chunk),"match.length") if (memory=="both"){ @@ -121,7 +119,6 @@ repeat({ chunk<-readLines(filename,n=chunksize) - chunk <- chunk[ -grep("sample\\.interval=", chunk) ] if (length(chunk)==0) break memprefix<-attr(regexpr(":[0-9]+:[0-9]+:[0-9]+:[0-9]+:",chunk), --- Rprof 2007-03-31 21:23:16.0 +0100 +++ /tmp/R-devel/src/scripts/Rprof 2007-03-31 19:58:29.0 +0100 @@ -57,12 +57,11 @@ %totalcounts = (); while (<>) { -if (/.*sample\.interval=/) { - s/.*sample\.interval=//; +if (/^sample\.interval=/) { + s/sample\.interval=//; $sample = $_ / 1e6; } else { chomp; - s/[^\"]*\"/"/; @line = split(/ /); %names = (); $leaf = @line[0]; __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Matrix package: compilation error
Thank you Andrew, 'setenv MAKE gmake' did it. Now I can use latest spdep package :-) Rainer Andrew Robinson schrieb: > Hi Rainer, > > check the following post for an alternative solution: > > http://tolstoy.newcastle.edu.au/R/help/06/01/18908.html > > if you would like more detailed instructions, let me know. > > Andrew > > > On Sat, Mar 31, 2007 at 10:10:45PM +0200, Rainer Hurling wrote: >> Thanks, Brian and Martin, >> >> I think you are both right, Matrix tries to use BSD make (/usr/bin/make) >> on FreeBSD instead of GNU make (/usr/local/bin/gmake). >> >> Sorry, but I don't know how to persuade the configure script to use >> gmake :-( >> >> Rainer >> >> >> Prof Brian Ripley schrieb: >>> This is because of the GNUism in Matrix/src/Makefile >>> >>> ## get rid of this, once we have 'Depends: R (>= 2.5.0)': >>> ifeq (, $(findstring -lRlapack, $(LAPACK_LIBS))) >>> SOURCES_LAPACK = >>> else >>> SOURCES_LAPACK = zpotf2.f zpotrf.f zlacgv.f >>> endif >>> >>> I guess you know what you need to do to fix it for BSD make? >>> >>> On Sat, 31 Mar 2007, Rainer Hurling wrote: >>> Trying to compile the package Matrix_0.9975-11.tar.gz with newest R-2.5.0 alpha (2007-03-31 r40986) on FreeBSD 7.0-CURRENT (i386) I get the following error: - R CMD INSTALL Matrix_0.9975-11.tar.gz * Installing to library '/usr/local/lib/R/library' * Installing *source* package 'Matrix' ... ** libs ** arch - "Makefile", line 10: Missing dependency operator "Makefile", line 12: Need an operator "Makefile", line 14: Need an operator make: fatal errors encountered -- cannot continue ERROR: compilation failed for package 'Matrix' ** Removing '/usr/local/lib/R/library/Matrix' - Under FreeBSD I have installed the LAPACK package (3.0.2) with library at location /usr/local/lib/liblapack.so.4 Is it possible that the Makefile of package Matrix fails because of that? >>> Not used unless you asked for it during R's configure. >>> >> __ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] Probem with argument "append" in "Rprof"
And now I realize I gave the patches in the wrong order, let me try again Cheers, Romain Romain Francois wrote: > [forgot to attach the second patch in the first mail, sorry.] > > Hello, > > Appending information to the profiler's output seems to generate > problems. Here is a small example of code : > > > require(boot) > Rprof( memory.profiling = TRUE) > Rprof(NULL) > for(i in 1:2){ > Rprof( memory.profiling = TRUE, append = TRUE) > example(boot) > Rprof(NULL) > } > > > The problem is that the file Rprof.out contains more than once the > header information: > > $ grep "sample.interval=" Rprof.out > memory profiling: sample.interval=2 > memory profiling: sample.interval=2 > memory profiling: sample.interval=2 > > and `summaryRprof` or `R CMD Rprof` are not dealing with it > > >> idx <- grep( "sample", rownames( smp <- summaryRprof()[[1]] ) ); >> > smp[idx, ] > self.time self.pct total.time total.pct > sample.interval=2 00 0.04 0.1 > > `sample.interval=2` is incorrectly considered as a function. > > > This is not too much of a big deal, but then if I ask for memory > profiling information as well, I get nothing: > > >> summaryRprof( mem = "stats") >> > Error in tapply(1:1L, list(index = c("sample.interval=2:profiling:", : > arguments must have same length > >> summaryRprof( mem = "tseries") >> > Error in data.frame(..., check.names = FALSE) : > arguments imply differing number of rows: 1, 1490 > >> summaryRprof( mem = "both") >> > Error in apply(sapply(strsplit(memstuff, ":"), as.numeric), 1, diff) : > dim(X) must have a positive length > > $ R CMD Rprof Rprof.out > > Each sample represents seconds. > Total run time: 0 seconds. > > Total seconds: time spent in function and callees. > Self seconds: time spent in function alone. > >% total % self > totalseconds selfsecondsname > Illegal division by zero at /usr/local/lib/R/bin/Rprof line 91, <> line > 1491. > > A quick fix could be to ignore all the lines containing sample.interval= > except the first one, but then if someone wants to actually change the > interval argument in Rprof, it would not be correct. I attach a patch > against R-devel/src/library/utils/R/summRprof.R to do that anyway, but I > will look at a better solution. > > I am not fluent enough in Perl to do the same in the Rprof script, it > looks like it does not handle the memory profiling information anyway. I > am about to learn Perl, so I guess it could be a useful way to do it. I > also attach a patch against R-devel/src/scripts/Rprof that would at > least get rid of the memory profiling information (if any). This is not > as good as dealing with it, but ... this is the first time I ever touch > a Perl script. > > > Cheers, > > Romain > > > > >> version >> > > _ > platform > i686-pc-linux-gnu > arch > i686 > os > linux-gnu > system i686, > linux-gnu > status Under development > (unstable) > major > 2 > minor 6.0 > year > 2007 > month > 03 > day > 30 > svn rev > 40983 > language > R > version.string R version 2.6.0 Under development (unstable) (2007-03-30 > r40983) > -- Mango Solutions data analysis that delivers Tel: +44(0) 1249 467 467 Fax: +44(0) 1249 467 468 Mob: +44(0) 7813 526 123 --- /tmp/R-devel/src/library/utils/R/summRprof.R 2006-10-05 07:54:38.0 +0100 +++ summRprof.R 2007-03-31 21:10:31.0 +0100 @@ -32,8 +32,10 @@ repeat({ chunk<-readLines(filename,n=chunksize) + chunk <- chunk[ -grep("sample\\.interval=", chunk) ] if (length(chunk)==0) break + if (memory.profiling){ memprefix<-attr(regexpr(":[0-9]+:[0-9]+:[0-9]+:[0-9]+:",chunk),"match.length") if (memory=="both"){ @@ -119,6 +121,7 @@ repeat({ chunk<-readLines(filename,n=chunksize) + chunk <- chunk[ -grep("sample\\.interval=", chunk) ] if (length(chunk)==0) break memprefix<-attr(regexpr(":[0-9]+:[0-9]+:[0-9]+:[0-9]+:",chunk), --- /tmp/R-devel/src/scripts/Rprof 2007-03-31 19:58:29.0 +0100 +++ Rprof 2007-03-31 21:23:16.0 +0100 @@ -57,11 +57,12 @@ %totalcounts = (); while (<>) { -if (/^sample\.interval=/) { - s/sample\.interval=//; +if (/.*sample\.interval=/) { + s/.*sample\.interval=//; $sample = $_ / 1e6; } else { chomp; + s/[^\"]*\"/"/; @line = split(/ /); %names = (); $leaf = @line[0]; __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel