Source: dh-r Version: 20210816 Severity: serious Control: retitle -1 dh-r parsing of tests depends/suggests is faulty
Hi Andreas, On 1/21/23 19:17, Andreas Tille wrote:
Hi, I'm just running into dh_auto_install: warning: can't parse dependency spatstat (>= 2.3-3).linnet (>= 2.0-0) Can't call method "get_deps" on an undefined value at /usr/share/perl5/Debian/Debhelper/Buildsystem/R.pm line 51. when trying to build r-cran-spatstat.core[1] I've never seen this strange substitution of dependencies before. Any idea what's wrong here?
Congrats. Looks like you hit a case which catches a bug in dh-R. The problem is in the code when you are trying to substitute test depends from the ones in suggests[2]. The substitution that you are trying to do is also replacing prefixes with versioned dep. Since there is spatstat and spatstat.linnet both in d/t/control test-depends, and as you could see spatstat is a common prefix, it is replacing this with the one written in DESCRIPTION file which is wrong. As it seems to me that you only intend to replace non-versioned stuff with the versioned stuff, maybe you don't have to replace all strings that are prefix. So _maybe_ a patch like this would do (it works in this case at least): diff --git a/dh/R.pm b/dh/R.pm index 18171ae..7d052b1 100644 --- a/dh/R.pm +++ b/dh/R.pm @@ -210,7 +210,7 @@ sub install { $rsname =~ s/[\s(].*// ; if ( grep(/^$rsname$/i, @testdeps) ) { if ( $rs ne $rsname ) { # seems that is a versioned depends that needs to be propagated to Recommends - $testdepends =~ s/$rsname */$rs/ ; + $testdepends =~ s/$rsname$/$rs/ ; } } else { $newsuggests = $newsuggests . ', ' . $rs ; But that said, I do not know the essence of this code, and please _triple check_ and ** do not blindly apply **
[1] https://salsa.debian.org/r-pkg-team/r-cran-spatstat.core/-/jobs/3830571
[2]: https://salsa.debian.org/r-pkg-team/dh-r/-/blob/master/dh/R.pm#L213 Hope that helps. Thank you Nilesh