>>>>> Simon Urbanek writes:

Re part II (CRAN packages which have NeedsCompilation: yes but don't
really need it): I of course have code for this, last touched in 2016.
Running the code (which currently only looks at having a 'src' subdir,
based on one possible interpreation of 

  it is normally set by ‘R CMD build’ or the repository assuming
  compilation is required if and only if the package has a ‘src’
  directory.

in WRE) finds the same packages as on Jeroen's list (minus bcgam and
NetFACS which got archived recently).  One could integrate a variant of
the code into R CMD check if we think there is a "real need" (which I
admit I have not seen thus far or else I would have added check code).

For now I'll try the effect of writing to the maintainers of the 124
current CRAN packages which have NeedsCompilation: yes but no 'src' and
asking them to fix "as necessary", without setting a formal deadline.

Best
-k

> Jeroen,
> thanks for raising the issues. Comments inline.


>> On May 15, 2025, at 1:47 AM, Jeroen Ooms <jeroeno...@gmail.com> wrote:
>> 
>> R-universe builds and checks all CRAN packages on arm64 on Mac, Linux
>> and soon Windows. It is important that we can identify from a binary
>> package for which architecture it was built. R inserts this
>> information into the second part of the "Built:" field in the
>> DESCRIPTION. For example, packages with compiled code contain:
>> 
>> Built: R 4.5.0; aarch64-unknown-linux-gnu; 2025-05-05 14:06:56 UTC; unix
>> 
>> And packages without compiled code contain:
>> 
>> Built: R 4.5.0; ; 2025-05-08 06:46:33 UTC; unix
>> 
>> However this is not working for packages that compile something, but
>> do not have a 'src' dir.


> Can you give an example, please? I wonder if there is a real use-case or just 
> bad package design. I wouldn't think that should happen as configure is 
> supposed to only guide the compilation in src - if there is no src no 
> binaries are expected as the package did not provide any native sources hence 
> there should be no binary content. This looks like something that could be 
> added to R CMD check?


>> I think these packages are supposed to manually set "NeedsCompilation: yes" 
>> in their DESCRIPTION file. Two suggestions:
>> 
>> 1. Currently R only records the platform in the mentioned "Built" if
>> the source package contains a 'src' dir. Could this be improved such
>> that it also does so for these packages with "NeedsCompilation: yes"?
>> Here is a two line patch:
>> https://github.com/r-devel/r-svn/pull/199/files
>> 
>> 2. There are a handful of CRAN packages that have "NeedsCompilation:
>> yes" but they neither have a 'src' dir nor a 'configure' script. Afaik
>> this is a contradiction, as there is no place any compilation can be
>> invoked without either of these files present? I think in most these
>> cases "NeedsCompilation: yes" is a leftover from older versions. If
>> so, would it be possible for CMD check to warn against redundant
>> NeedsCompilation:yes? Here is a script to list packages that currently
>> use this: https://gist.github.com/jeroen/e8b225e9b1004a16ef90f50700352aa5
>> 


> I think both cases look like candidates to R CMD check, so, yes, agreed. 
> Without valid use-cases I'm not convinced yet that an override is a good idea 
> since it may get out of sync just as you noted, but I may be just missing a 
> valid use-case. That said, if the override is paired with the check, i.e., if 
> both your proposals are implemented (and a warning if configure generates 
> binaries  without declaring them) that would cover all the bases.

> Cheers,
> Simon

> ______________________________________________
> 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

Reply via email to