[Rcpp-devel] Stripping symbols and Cran
Michaël BENESTY
michael at benesty.fr
Mon Sep 18 17:35:02 CEST 2017
Hi Dirk,
I am not the author of the question on SO, but the timing is perfect :-)
I am aware of Dplyr size (I read ur blog carefully!!!) but really
wanted to have 0 note.
Just tried --strip-unneeded : not the silver bullet :-(
#> error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip:
unrecognized option: --strip-unneeded
Kind regards,
________________
Michaël BENESTY
michael at benesty.fr
Please do not print this e-mail unless you really need to.
On Mon, Sep 18, 2017 at 5:19 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
>
> Michael,
>
> On 18 September 2017 at 16:55, Michaël BENESTY wrote:
> | Because of (the great) Rcpp, the size of my package was over 5Mb, which was
> | an issue for a Cran release.
>
> Are you the OP behind the StackOverflow question here:
> https://stackoverflow.com/questions/46280628/object-files-in-r-package-too-large-rcpp
>
> If so we already tried to answer. This is NOT an issue for CRAN but merely a
> warning. Do yourself a quick favour and run
>
> file.info( system.file("libs", "dplyr.so", package="dplyr") )$size
>
> and you see that some well-known and widely used packages are MUCH bigger.
>
> | I read with interest this article
> | http://dirk.eddelbuettel.com/blog/2017/08/14/#009_compact_shared_libraries
> |
> | In particular, I was interested in the Makevars modification:
> |
> | strippedLib: $(SHLIB)
> | if test -e "/usr/bin/strip"; then /usr/bin/strip --strip-debug
> | $(SHLIB); fi
> |
> | Unfortunately it crashed compilation on Mac OS because for some reason
> | --strip-debug doesn't exist.
>
> Interesting.
>
> It so happens that I just shipped a use of `strip --strip-unneeded` in
> RcppClassic, see https://github.com/eddelbuettel/rcppclassic/blob/7cc5c626952d38cc97a99363131fe7ac9d0a7b28/src/Makevars#L33
> Does --strip-unneeded work on macOS ?
>
> | But this small modification works:
> | strippedLib: $(SHLIB)
> | if test -e "/usr/bin/strip" & test -e "/bin/uname" & [[
> | `uname` == "Linux" ]] ; then /usr/bin/strip --strip-debug $(SHLIB); fi
>
> Maybe --strip-unneeded is for preferable. Otherwise, yes, one needs to check
> for Linux here.
>
> But that is the crux of these Makefile / Makevars tweaks. They get
> non-portable real quickly.
>
> The easiest may just be to NOT worry, and just use -W,-S in the local
> ~/.R/Makevars. That is what I now do.
>
> | May be there is a way to make strip works correctly on Mac, but as I
> | have no size issue on both Windows and Mac OS... I don't care.
> |
> | I thought it was useful enough to share it with you.
>
> It is useful. Dan worked quite a bit on this too. See his repo at
>
> https://github.com/dcdillon/r-stripper
>
> Dirk
>
> --
> http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
More information about the Rcpp-devel
mailing list