El sáb., 17 may. 2025 4:03, Hervé Pagès <hpages.on.git...@gmail.com>
escribió:

> FWIW NeedsCompilation is a misnomer. IIRC when I was discussing this
> feature with R core members many years ago, it doesn't only flag
> packages that require compilation (and thus contain arch-specific binary
> files), but it is more generally intended to flag packages that the user
> wouldn't be able to install **from source** on a pristine Windows or Mac
> system because the installation process depends on tools that are not
> necessarily present on such systems.
>
> For example I think I remember seeing at the time some packages that
> were using 'make' for non-compilation related business. These packages
> still needed to be flagged with 'NeedsCompilation: yes' in order to
> recognize them as packages for which "binaries" needed to be made for
> the purpose distributing them.
>

Then maybe such thing shouldn't be allowed?

Iñaki


> Packages without 'NeedsCompilation' field (or with 'NeedsCompilation:
> no') don't need binaries because the source tarballs is guaranteed to be
> installable on **any** system, in particular on systems that don't have
> any development tools.
>
> Best,
>
> H.
>
> On 15/05/2025 03:38, Iñaki Ucar wrote:
> > On Thu, 15 May 2025 at 11:42, Jeroen Ooms <jeroeno...@gmail.com> wrote:
> >> On Wed, May 14, 2025 at 11:05 PM Simon Urbanek
> >> <simon.urba...@r-project.org> wrote:
> >>> Can you give an example, please? I wonder if there is a real use-case
> or just bad package design.
> >> The case that bit me yesterday was a Bioconductor package Rigraphlib,
> >> see
> https://bioconductor.org/packages/release/bioc/src/contrib/Rigraphlib_1.0.0.tar.gz
> >>
> >> This package builds a static library entirely from a configure script.
> >> Because there is no 'src' dir, we assumed the package to be all-arch,
> >> and get linking errors when trying to use it on another arch then it
> >> was built for. Arguably this is indeed bad package design, but that is
> >> hard to protect against.
> > The opposite case is also true: there is a src directory but no
> > compilation happens. This is a problem for deb/rpm shipment for two
> > reasons. In rpm packaging at least, archful packages are inspected to
> > extract debuginfo; since there is no compiled output there, this fails
> > and the whole build fails. If the build succeeds (e.g. debuginfo is
> > disabled), then we are building the same thing for all architectures,
> > when there should be just one, noarch, for all.
> >
> > I can list at least 3 examples of this:
> >
> > - BANOVA: requires compilation, there is a src directory, nothing
> > happens there, no source files, just a Makefile sitting there.
> > - mixl: same, and the Makefile is just used to print if OpenMP is
> supported (?).
> > - mathjaxr: same, and the Makefile is used to install a javascript
> library (!).
> >
> >>> 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?
> >> In that case maybe R should warn if it runs a package configure script
> >> but there is no "src"? And check if NeedsCompilation: yes is set?
> >>
> >> One way or another, what matters is that when R runs configure or make
> >> during install, the value in the "Built" field in the binary package
> >> should contain the platform value. This is also important when distros
> >> ship R packages in deb or rpm format, to prevent packages that have
> >> compiled code from getting "Architecture: all" and be installed on the
> >> wrong platforms.
> > IMHO, the flag NeedsCompilation in the DESCRIPTION file should be the
> > one and only source of truth here, regardless of the presence or not
> > of a src directory. Then I see two paths here:
> >
> > - Either the developer is responsible for setting this flag, and the R
> > CMD check should fail if it's yes but no compilation happens or the
> > other way around.
> > - Or R CMD build is responsible for setting this flag after checking
> > if compilation happens or not.
> >
> --
> Hervé Pagès
>
> Bioconductor Core Team
> hpages.on.git...@gmail.com
>
>

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to