The current behaviour for generate-r-packages.R is to delete
packages that have been remove upstream. This patch changes the
behaviour to mark packages as broken rather than removing them.
This has the advantage of never breaking expressions, which
previously occured when a package with overrides in default.nix
was deleted. As a result, the update procedure is simplified,
allowing automated updates to the package tree to run, and
additionally if a package is re-established upstream the previous
overrides still exist.
generate-R-packages.R fails without these changes.
Without `cacert`, all wget/curl calls will fail
with an error about no valid certificates.
Without `nix`, calling `nix-hash` fails.
An impure nix-shell can get away with not adding
these if the system NIXPKGS version is the same
as the version of NIXPKGS used
with `nix-shell generate-shell.nix`
BioConductor releases are tied to specific R releases.
Updating the package set now automatically selects the
correct version of bioconductor to match the current version of
R.
r-modules: fix r package system dependencies
r-modules: fix terra package dependencies
r-modules: fix edge case for R package import
The R package "import" has a name that clashes
with the nix function "import". The package
name in nixpkgs is correctly modified to
avoid the clash, but the name of the
R package was also being changed in
cran-packages.nix, which broke downloading
of the package.
cran-packages.nix has been manually patched,
and genreate-r-packages.R has been fixed so
future automatic updates will succeed.
r-modules: fix repeated `pkgs.` and svglite
Also begin to start work on cross compilation, though that will have to
be finished later.
The patches are based on the first version of
https://reviews.llvm.org/D99484. It's very annoying to do the
back-porting but the review has uncovered nothing super major so I'm
fine sticking with what I've got.
Beyond making the outputs work, I also strove to re-sync the packages,
as they have been drifting pointlessly apart for some time.
----
Other misc notes, highly incomplete
- lvm-config-native and llvm-config are put in `dev` because they are
tools just for build time.
- Clang no longer has an lld dep. That was introduced in
db29857eb3, but if clang needs help
finding lld when it is used we should just pass it flags / put in the
resource dir. Providing it at build time increases critical path
length for no good reason.
----
A note on `nativeCC`:
`stdenv` takes tools from the previous stage, so:
1. `pkgsBuildBuild`: `(?1, x, x)`
2. `pkgsBuildBuild.stdenv.cc`: `(?0, ?1, x)`
while:
1. `pkgsBuildBuild`: `(?1, x, x)`
2. `pkgsBuildBuild.targetPackages`: `(x, x, ?2)`
3. `pkgsBuildBuild.targetPackages.stdenv.cc`: `(?1, x, x)`
Use the attribute mpi to provide a system wide default MPI
implementation. The default is openmpi (as before).
This now allows for overriding the MPI implentation by using
the overlay mechanism. Build all packages with mpich instead
of the default openmpi can now be achived like this:
self: super:
{
mpi = super.mpich;
}
All derivations that have been using "mpi ? null" to provide optional
building with MPI have been change in the following way to allow for
optional builds with MPI:
{ ...
, mpi
, useMpi ? false
}