Skip to content

[R-pkg-devel] Package submission rejected as it fails checks on Debian

16 messages · Spencer Graves, Dirk Eddelbuettel, Vasileios Nikolaidis +3 more

#
Dear R-developers, I apologize for posting something that has probably 
been discussed before (but missed it while searching the archives).

While trying to submit a newer version of my package to CRAN, it is 
rejected as it fails on Debian. I will call this package APACKAGE below 
(although it is named differently). It has passed all checks on my 
Windows system (no errors or warnings).

The package (for many versions now) is configured as follows:
Imports: 	Rcpp , methods
LinkingTo: 	Rcpp
Suggests: 	R.rsp

The previous version of the package (already on CRAN) shows no errors on 
CRAN checks, only NOTES for some platforms. Interestingly, a couple of 
days ago I checked the CRAN checks and noticed that this exact 
(previous) version of the package had one ERROR indicated, occurring in 
some Debian flavor (r-devel-linux-x86_64-debian-gcc, if I remember 
correctly). I changed nothing, but now it shows no errors for all 
platforms (including Debian).

Now I am trying to submit a newer version and it not accepted as it 
fails on Debian. Checking the log I see no syntax errors or warnings.

** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ?APACKAGE? in dyn.load(file, 
DLLpath = DLLpath, ...):
  unable to load shared object 
?/srv/hornik/tmp/CRAN/APACKAGE.Rcheck/00LOCK-APACKAGE/00new/APACKAGE/libs/APACKAGE.so?:
   
/srv/hornik/tmp/CRAN/APACKAGE.Rcheck/00LOCK-APACKAGE/00new/APACKAGE/libs/APACKAGE.so: 
undefined symbol: _ZTIN6nnlib25layerE
Error: loading failed.


I tried the R-Hub builder and it also fails for Platform Debian Linux, 
R-devel, GCC. The process goes fine until the following:

Error: package or namespace load failed for ?APACKAGE? in dyn.load(file, 
DLLpath = DLLpath, ...):
  unable to load shared object 
'/home/docker/R/00LOCK-APACKAGE/00new/APACKAGE/libs/APACKAGE.so':
   /home/docker/R/00LOCK-APACKAGE/00new/APACKAGE/libs/APACKAGE.so: 
undefined symbol: _ZTIN6nnlib25layerE
Error: loading failed
Execution halted
ERROR: loading failed
* removing ?/home/docker/R/APACKAGE?
Warning message:
In i.p(...) :
   installation of package 
?/tmp/Rtmp7eBDvE/file1377f5861e3/APACKAGE_0.2.0.tar.gz? had non-zero 
exit status

It maybe something obvious, but I really cannot think of what else to 
try to fix this issue.
Any help will be greatly appreciated.
#
Hi, Vasileios:


	  Do you have it on GitHub?


	  If yes, do you use "GitHub Action" to test the package on multiple 
platforms?  I'm a contributor to the "fda" package.  It's version on 
GitHub is configured so every "git push" triggers auto tests on five 
different platforms, testing it against the current "release" version of 
R on the latest versions of macOS, Windows and Ubuntu plus the 
development and previous release on Ubuntu.[1]  I don't know if GitHub 
action would support testing under Debian nor if testing under Ubuntu 
would catch the problem that CRAN is catching on Debian.


	  However, having the package on GitHub also makes it easier for 
someone else to clone the package and test it it for you ;-) This 
community of R developers provides very valuable support for problems 
like this.


	  Hope this help.
	  Spencer Graves


[1]https://github.com/JamesRamsay5/fda/blob/master/.github/workflows/R-CMD-check.yaml
On 2/20/23 6:38 AM, Vasileios Nikolaidis wrote:
#
Hello Spencer and thank you for your reply.

This is a good point as the package is indeed on GitHub, so I will 
investigate it. But, like you pointed out, it is doubtful if testing on 
these other systems (including Ubuntu) will catch a problem that is 
reported on Debian.

And what causes it seems even more of a mystery to me.

Thanks again.
V.


???? 2023-02-20 20:52, Spencer Graves ??????:
#
Can you share the repo URL?  It may be a a fairly simple and standard issue
some of us can spot easily.

Hth,  Dirk
#
On 20 February 2023 at 21:41, Vasileios Nikolaidis wrote:
| Oh yes thank you. I just realized I did not mention the repo on my 
| previous reply. It is
| https://github.com/VNNikolaidis/nnlib2Rcpp

Thanks for that -- I can confirm the error.

The packages compiles all source files without issue or warnings (under my
default flags), links and then fails to load with the error you reported:

  ** testing if installed package can be loaded from temporary location
  Error: package or namespace load failed for ?nnlib2Rcpp? in dyn.load(file, DLLpath = DLLpath, ...):
   unable to load shared object '/tmp/rcpp/lib/00LOCK-nnlib2Rcpp/00new/nnlib2Rcpp/libs/nnlib2Rcpp.so':
    /tmp/rcpp/lib/00LOCK-nnlib2Rcpp/00new/nnlib2Rcpp/libs/nnlib2Rcpp.so: undefined symbol: _ZTIN6nnlib25layerE
  Error: loading failed
  Execution halted
  ERROR: loading failed

Now, `c++filt` on that symbol reveals

  $ c++filt _ZTIN6nnlib25layerE
  typeinfo for nnlib2::layer
  $

and a glance at your header nnlib2::layer reveals that the class is virtual.
I don't have time right to do more digging but if I had to guess you may have
a slip up somewhere in your classes: something that worked beforehand with
your virtual (abstract) classes and derived (concrete) classes now seems to
want an concrete instance of 'layer'.  And if I had to guess some more the
reason this works in Windows is that the linker there is more lenient.

Maybe you can try an earlier version of nnlib2Rcpp and then bisect the
changes.  rhub gives you (fairly) easy access to Linux machines for builds
outside of your main Windows machine.

Sorry I cannot be of more help right now.

Dirk
#
Thanks for taking the time to check it. The hint about the virtual 
'layer' class is valuable.
I will look into it.
Best Regards,
V.Nikolaidis

PS I am tempted to set up a Debian test platform to speed up fixing the 
package.
(Or abandon submitting the package to CRAN alltogether.)



???? 2023-02-20 22:06, Dirk Eddelbuettel ??????:
#
On 20 February 2023 at 22:37, Vasileios Nikolaidis wrote:
| Thanks for taking the time to check it. The hint about the virtual 
| 'layer' class is valuable.
| I will look into it.

Sounds good, glad to have been of assistance.  On a lark, I also tried your
most recent CRAN release, and it installs and loads fine here.
 
| PS I am tempted to set up a Debian test platform to speed up fixing the 
| package.
| (Or abandon submitting the package to CRAN alltogether.)

I love working on Linux. And these days I hear from some friends that having
WSL2 on a (recent enough) Windows computer is also good as it effectively
gives a second machine with Ubuntu on it.  Docker can also be helpful, as are
the online resources -- rhub has helped me with both macos and windows builds.

Dirk
#
Yes, with all this I can think where I may have messed up. So thanks for 
the help, at least it verified it is indeed an issue with the code. As 
far as OSs, I use Ubuntu variants a lot and (on several machines) but 
these days I have easier access to Windows (with WSL2 btw). I also like 
a strict compiler (and linker), there is usually a reason why they are 
strict. So if it is not obvious from examining the code,  I will set up 
something (be it WSL, VM or Docker) for testing.

Thanks again,

Vasilis



???? 2023-02-20 23:09, Dirk Eddelbuettel ??????:
#
On 2/21/23 2:34 AM, Vasileios Nikolaidis wrote:
If you have NOT tried "GitHub Action" yet, I highly recommend it. 
For my packages, every time I do "git push", it automatically runs "R 
CMD build / check" on 5 different platforms -- with no further effort on 
my part other than checking the results.


	  It should be easy to get something to work following the instructions 
in Wickham and Bryan, R Packages[1] or copying the code from another 
package.[2] If that fails, you might be able to get help from this list. 
  I got valuable suggestions from Dir Eddelbuettel and Duncan Murdoch.


	  I don't know if any version of Debian is available on GitHub Action. 
However, if CRAN is rejecting your package on GitHub Action, a question 
about that to this list might help make it available.  If you have 
special Ubuntu configuration issues that are not provided in the 
standard GitHub Action configurations, asking here might help you with 
that.


	  Hope this helps,
	  Spencer Graves


[1]


https://r-pkgs.org


[2] e.g.,


https://github.com/JamesRamsay5/fda
#
I will try it the "Github Action" it seems very useful indeed.

I already found the (extremely obvious and tiny) error that caused all 
this mess. I am surprised the compile/link system on my Windows machine 
passed on that without reporting anything. That really threw me off on 
what the cause may be. Getting back on Linux for development and checks 
(like I used to use and trust).

Problem solved, moral of the story is never code tired, and use all 
tools available.
Thank you everyone for your comments and help.

Regards,
Vasilis.


???? 2023-02-21 13:25, Spencer Graves ??????:
2 days later
#

        
> On 2/21/23 2:34 AM, Vasileios Nikolaidis wrote:
>> Yes, with all this I can think where I may have messed up. So thanks for 
    >> the help, at least it verified it is indeed an issue with the code. As 
    >> far as OSs, I use Ubuntu variants a lot and (on several machines) but 
    >> these days I have easier access to Windows (with WSL2 btw). I also like 
    >> a strict compiler (and linker), there is usually a reason why they are 
    >> strict. So if it is not obvious from examining the code,? I will set up 
    >> something (be it WSL, VM or Docker) for testing.


    > If you have NOT tried "GitHub Action" yet, I highly recommend it. 
    > For my packages, every time I do "git push", it automatically runs "R 
    > CMD build / check" on 5 different platforms -- with no further effort on 
    > my part other than checking the results.

[ Sorry, but for once I'd like to raise this here ...]:

well... how many "trees" does that cost every time you push?
I guess it will be less than one, but I'd also guess it be more
than 1% of one.. and even if that was more than reality, ...

I hope you are all aware that even though this looks "free", all
this mostly unnecessary (rebuilding some of the things *every*
time from scratch, downloading lots of stuff, even though from a
closeby server) traffic and server run time will partly be paid
by the kids and grand kids of people living in Bangladesh,
Polynesia, ... (and maybe even in say Amsterdam)
Global Warming *is* a threat, and we living in rich nations letting run
more and more computer networks and servers (cooling, heating,
gray energy including lots of CO2 produce by building construction, ...)
does add to it.

[[[yes, I may be partly wrong,  and
    no, it's a loss of time if we start a flame/mud/... war here about this;
    just consider it a small outlier voice ...
]]]


    > It should be easy to get something to work following the instructions 
    > in Wickham and Bryan, R Packages[1] or copying the code from another 
    > package.[2] If that fails, you might be able to get help from this list. 
    > I got valuable suggestions from Dir Eddelbuettel and Duncan Murdoch.


    > I don't know if any version of Debian is available on GitHub Action. 
    > However, if CRAN is rejecting your package on GitHub Action, a question 
    > about that to this list might help make it available.  If you have 
    > special Ubuntu configuration issues that are not provided in the 
    > standard GitHub Action configurations, asking here might help you with 
    > that.


    > Hope this helps,
    > Spencer Graves


    > [1]


    > https://r-pkgs.org


    > [2] e.g.,


    > https://github.com/JamesRamsay5/fda

    >> 
    >> Thanks again,
    >> 
    >> Vasilis
    >> 
    >> 
    >> 
    >> ???? 2023-02-20 23:09, Dirk Eddelbuettel ??????:
>>> On 20 February 2023 at 22:37, Vasileios Nikolaidis wrote:
>>> | Thanks for taking the time to check it. The hint about the virtual
    >>> | 'layer' class is valuable.
    >>> | I will look into it.
    >>> 
    >>> Sounds good, glad to have been of assistance.? On a lark, I also tried 
    >>> your
    >>> most recent CRAN release, and it installs and loads fine here.
    >>> 
    >>> | PS I am tempted to set up a Debian test platform to speed up fixing the
    >>> | package.
    >>> | (Or abandon submitting the package to CRAN alltogether.)
    >>> 
    >>> I love working on Linux. And these days I hear from some friends that 
    >>> having
    >>> WSL2 on a (recent enough) Windows computer is also good as it effectively
    >>> gives a second machine with Ubuntu on it.? Docker can also be helpful, 
    >>> as are
    >>> the online resources -- rhub has helped me with both macos and windows 
    >>> builds.
    >>> 
    >>> Dirk
    >> 
    >> ______________________________________________
    >> R-package-devel at r-project.org mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-package-devel

    > ______________________________________________
    > R-package-devel at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-package-devel
#
Hi Martin.

I think your calculations are way off.  A one-tonne tree contains about 
5000 kWh of energy.  A typical computer server uses about 200 watts, and 
can process many jobs simultaneously on different cores, but let's say 
the whole server is dedicated to the Github action.  Then it would 
consume 1 kWh in 5 hours, and would take about 10 days to consume 1% of 
a tree.

Duncan Murdoch
On 23/02/2023 11:29 a.m., Martin Maechler wrote:
#
Not important (of course) but where does the 5000 kWh per tree number 
come from?  Is that (dry weight) x (50% carbon per dry weight) / (carbon 
content of CO2 emissions per kWh) ?

https://www.epa.gov/energy/greenhouse-gas-equivalencies-calculator#results

   If we say 200 watts x 15 minutes (allowing us to take up the whole 
server for checking on 5 different platforms) we have .05 kWh. Let's say 
we do this 300 times/year for a package, so 15 kWh. Hard to get 'tree 
equivalents' from the EPA web site, but this is equivalent to 1.2 
gallons of petrol/gasoline consumption (0.011 metric tonnes)
On 2023-02-23 12:59 p.m., Duncan Murdoch wrote:

  
    
#
On 23/02/2023 1:11 p.m., Ben Bolker wrote:
That's just made up, but it is close to the numbers here for dry wood:

   https://wood-energy.extension.org/energy-basics/

The 1 tonne weight of dry wood for a "tree" is also made up.

Duncan
#
On 23/02/2023 1:11 p.m., Ben Bolker wrote:
Another missing part of the calculation is how many kWh are saved 
because frequent checks find bugs early and prevent the need to throw 
away long simulation runs.

And Github claims to have been carbon neutral since 2019...

Duncan