configure.win rewritten). The package now
searches for a system VTK installation on Windows before falling back to the
pre-built libraries. Detection order:VTK_DIR environment variable.pacman (queries installed packages; never installs
automatically)./x86_64-w64-mingw32.static.posix,
/ucrt64, /mingw64, …).Automatic download of pre-built libraries (fallback — see below).
Both static (.a) and shared (.dll.a import libs + DLLs) system
installations are accepted.
Windows shared-DLL support (configure.win, tools/winlibs.R,
R/vtk.R, R/zzz.R). Windows now fully supports shared VTK libraries:
.dll.a import libs are
accepted and used directly.vtk-X.Y.Z-shared-posix-x64.zip) is
available as an alternative to the existing static build. Select it by
setting VTK_LINK_TYPE=shared before installing rvtk (default is
static).VTK DLLs are staged in rvtk's own inst/vtk-dlls/. An .onLoad hook
prepends that directory to PATH via Sys.setenv() when rvtk is loaded,
making the DLLs visible to all downstream packages that declare
Imports: rvtk without any manual PATH manipulation. The original PATH
is restored in .onUnload(). Downstream packages do not receive a copy
of the DLLs — they piggyback on rvtk's staged directory at run time.
build-vtk-libs.yml: new build-windows-shared CI job produces
vtk-X.Y.Z-shared-posix-x64.zip alongside the existing static archive.
R CMD build (configure,
R/vtk.R, cleanup). The pre-built archive is now extracted to
inst/prebuilt/ so that headers and static libraries ship inside the
installed package. read_vtk_conf() resolves the actual paths at run time
via system.file("prebuilt", package = "rvtk"), mirroring the Windows
approach and surviving R CMD build temp-dir cycles.lib_root from tools/winlibs.R (assigned but
never read).all_libs_full from the Windows static branch of
read_vtk_conf() in R/vtk.R (assigned but never read; lib_flags is
built entirely from -l short names)..github/workflows/downstream-check.yaml) builds and checks
a minimal downstream package against rvtk across all supported platform ×
VTK-strategy combinations (system, pre-built static, pre-built shared).Re-submission addressing CRAN reviewer feedback on v0.1.1.
'VTK', 'Homebrew', 'pkg-config',
'Rtools45') are now consistently quoted with single quotes in the Title,
Description, and SystemRequirements fields, per CRAN policy. Function calls
such as rvtk::CppFlags() are no longer wrapped in single quotes.CppFlags(), LdFlags(), LdFlagsFile(): Replaced cat() with
writeLines() and added invisible() returns so functions behave in a more
idiomatic R style while still allowing shell command-substitution capture.tools/winlibs.R: The Windows VTK zip is now extracted to a temporary
directory (tempfile()) before being copied into inst/windows/. This
avoids writing intermediate files to the package source tree (home filespace)
during installation.@examples
entries. LdFlagsFile() writes to tempdir() in its example.LdFlagsFile() response-file path, read_vtk_conf() Windows resolver) are
exercised by the existing R-hub Windows CI jobs.The planned CRAN submission of v0.1.0 was cancelled after downstream package developers reported linker errors when building against the pre-built Windows VTK libraries. Two root causes were identified and fixed:
Wrong toolchain. The Windows VTK zip was compiled with the Rtools45
UCRT64 toolchain (/ucrt64/bin/gcc), which uses a dynamic C runtime and
emits DLL-import symbols (__imp_fseeko64, __imp_ftello64, …). However,
R CMD INSTALL links R packages with the x86_64-w64-mingw32.static.posix
toolchain, which is fully static. The mismatch caused undefined references
to nanosleep64, ftime64, __imp_fseeko64, and __imp_ftello64. The
GitHub Actions workflow now builds the Windows VTK zip with the
x86_64-w64-mingw32.static.posix compiler, matching the toolchain that
downstream packages use.
Command-line length overflow. The full set of VTK -l linker flags
exceeds the 8 191-character Windows command-line limit, causing the linker
to silently drop flags at the end of the list. A new function
LdFlagsFile(path) writes all flags to a response file and returns the
short @path token that both GNU ld and LLVM lld support. Downstream
packages should call LdFlagsFile('src/vtk_libs.rsp') from their
configure / configure.win script instead of LdFlags().
LdFlagsFile(path): writes VTK linker flags to a response
file and returns @path for use in Makevars. Preferred over LdFlags()
on all platforms to avoid the Windows command-line length limit.x86_64-w64-mingw32.static.posix toolchain (Rtools45), matching the
toolchain used by R CMD INSTALL for CRAN packages.PKG_LIBS reduced to -lgdi32 only;
the UCRT64-specific -lwinpthread -lmingwex -lucrtbase flags are no longer
needed because the static.posix sysroot resolves POSIX symbols internally.LdFlagsFile(), explain the rationale, provide
a unified configure example valid on all platforms, and correct the Windows
toolchain description..a) for Windows (Rtools45
UCRT x64), macOS arm64, macOS x86_64, and Linux x86_64, distributed via
GitHub Releases and built with GitHub Actions.VTK_DIR environment variable.pkg-config./usr, /usr/local) (Linux only).netcdf and libproj are not available in the
Rtools45 UCRT64 environment. The following VTK modules are therefore
disabled in the Windows pre-built libraries: VTK_IONetCDF, VTK_IOHDF,
VTK_GeovisCore, VTK_RenderingCore. Downstream packages requiring these
modules cannot be built on Windows with rvtk's pre-built libraries.rvtk::CppFlags() and rvtk::LdFlags().Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.