## Problem
The R package built **only** inside the dev/CI workspace. `src/Makevars` and `configure.win` hard-required `WICKRA_INCLUDE_DIR` / `WICKRA_LIB_DIR` pointing at a pre-built `libwickra` (`configure.win` literally `: "${WICKRA_LIB_DIR:?...}"`), and there was no Unix `configure`. So **r-universe** and any plain `install.packages` / `install_github` failed — R had no working end-user install path.
## Fix
Fetch the prebuilt `wickra-c-<triple>.tar.gz` release asset matching the package version at install time and bundle the library into the package (same outcome as the C# / Java bindings, which bundle per-platform native libs):
- **New POSIX `configure`** (the Unix hook R lacked): detect OS/arch → triple, download + `untar` via **base R** (no curl/wget system dep), stage `wickra.h` + `libwickra.{so,dylib}` into `src/`, generate `src/Makevars` from `Makevars.in` with an rpath (`$ORIGIN` Linux, `@loader_path` + `install_name_tool` macOS) so the bundled lib resolves post-install.
- **`configure.win`**: drop the hard `WICKRA_LIB_DIR` requirement; download the Windows triple when unset, then keep the existing `wickra_abi.dll` rename + `objdump`/`dlltool` import-lib dance (sourcing the dll/header from the asset).
- **`install.libs.R`** also bundles `libwickra.dylib` (macOS); the `*.so`/`*.dll` globs already covered Linux/Windows.
- `WICKRA_INCLUDE_DIR`/`WICKRA_LIB_DIR` stay as an optional **dev override**.
- **CI (3 OS)** keeps building against the locally built C ABI (version-independent — avoids the chicken-egg of downloading the in-flight version) but **no longer exports `LD_LIBRARY_PATH`/`DYLD_LIBRARY_PATH`**, so it now verifies the bundled rpath — the real self-contained path users and r-universe get.
`Makevars` is now generated from `Makevars.in`; `SystemRequirements` + ignore/attributes files updated.
## Validation
- The Windows `objdump`/`dlltool` import-lib dance was smoke-tested locally against the real v0.7.9 asset (2412 `wickra_` exports → import lib built).
- Linux/macOS rpath bundling can't be tested on this Windows host → **the 3-OS `r` CI job is the gate** (now without the loader-path mask).
- Follow-up (separate, after release): set up `wickra-lib/wickra-lib.r-universe.dev` (`packages.json` → `bindings/r`).
Closes the R half of the self-contained-distribution gap (`todo-10`).
23 lines
1.1 KiB
Plaintext
23 lines
1.1 KiB
Plaintext
Package: wickra
|
|
Type: Package
|
|
Title: Streaming-First Technical Indicators
|
|
Version: 0.7.9
|
|
Authors@R: person("Wickra contributors", role = c("aut", "cre"), email = "support@wickra.org")
|
|
Description: R bindings for the Wickra technical-analysis library over its C ABI
|
|
hub. Exposes 514 indicators, each an O(1) streaming state machine shared with
|
|
the Rust core and the other language bindings, so that live and historical
|
|
evaluation use the exact same implementation.
|
|
License: MIT + file LICENSE | Apache License 2.0
|
|
URL: https://github.com/wickra-lib/wickra, https://docs.wickra.org
|
|
BugReports: https://github.com/wickra-lib/wickra/issues
|
|
Encoding: UTF-8
|
|
NeedsCompilation: yes
|
|
SystemRequirements: the Wickra C ABI shared library, downloaded automatically at
|
|
install time from the matching GitHub release and bundled into the package.
|
|
Set WICKRA_INCLUDE_DIR and WICKRA_LIB_DIR to build against a locally built C
|
|
ABI instead (e.g. after `cargo build -p wickra-c --release`).
|
|
Roxygen: list(markdown = TRUE)
|
|
Suggests: testthat (>= 3.0.0)
|
|
Config/testthat/edition: 3
|
|
Config/roxygen2/version: 8.0.0
|