Files
RedBear-OS/local
vasilito 7c5b1f36eb cub: fix 7 critical PKGBUILD→recipe conversion bugs (v6.0 2026)
After running an empirical assessment of cub's AUR→RBPKGBUILD→recipe
pipeline against 12 representative real-world PKGBUILDs (libevdev,
fd-find, libpciaccess, fmt, wlroots-git, ffmpeg, mesa 24.3, gzip,
zlib, openssl, glib2, plus a libpciaccess extra/-style variant), 7
critical bugs were found that would prevent any real Arch package
from converting to a working Red Bear recipe.

Fixes (all surgical, in cub-lib/src/):

  1. deps.rs: drop glibc dependency (was: mapped to relibc, which is
     wrong because relibc is the Redox C library and is part of the
     OS, not a package). glibc is a tautology on Redox and must be
     omitted. The empty mapping triggers the standard 'omitted' path
     in map_dep_list with a clear 'has no Redox mapping' warning.

  2. deps.rs: drop gcc-libs dependency (was: mapped to gcc, which
     conflates the runtime libgcc/libstdc++ with the compiler).
     gcc-libs is provided by relibc on Redox and must be omitted.

  3. deps.rs: prefix build tools (meson, ninja, cmake, make,
     pkg-config, autoconf, automake, libtool, git, perl, python,
     rust, cargo, llvm, clang, swig, bison, flex, doxygen, and ~50
     more) with 'host:' so the Redox cookbook knows they're host-only
     and not part of the cross-compiled target. The new BUILD_TOOLS
     constant lists all known build tools; map_dependency returns
     'host:<name>' for entries in this set.

  4. pkgbuild.rs: parse AUR-style 'git+url#tag=branch' source syntax.
     The new split_source_fragment function strips the 'git+' prefix,
     extracts the '#tag=...' or '#branch=...' or '#commit=...'
     fragment, and maps to the Redox cookbook's [source].branch or
     [source].rev field. The previous behavior kept the literal
     'git+...#tag=...' URL in the recipe, which is invalid Redox
     cookbook format.

  5. pkgbuild.rs: support multi-source PKGBUILDs. Real packages like
     mesa have 2+ sources (git repo + extra file). The previous
     behavior errored on multi-source with 'multiple sources not yet
     supported'. Now: keep the first source as primary, warn about
     the rest, and continue conversion. Auxiliary sources are listed
     in the warning message so the user can re-add them.

  6. pkgbuild.rs: preserve options=() flags (e.g., '!lto', '!strip',
     '!emptydirs') in the new RBPKGBUILD compat.options field.
     Previously dropped silently.

  7. pkgbuild.rs: substitute \${pkgver}, \${pkgname}, etc. in source
     URLs by piping each entry through resolve_shell_vars before
     converting. The previous behavior kept the literal '\${pkgver}'
     in the URL, making the recipe's [source].tar URL invalid.

All fixes verified by:
  - cub-assessment: 12 PKGBUILDs all convert and produce valid TOML.
    The mesa 24.3 case (which previously errored on multi-source) now
    produces a valid recipe with a warning. ffmpeg's glibc is now
    correctly dropped. All build tools (meson, ninja, etc.) are
    correctly host: prefixed. All AUR git+url sources parse
    correctly into branch/rev fields.
  - cargo test --workspace: 72 passing (up from 70 — added 2 new
    tests for the build-tool prefixing and gcc-libs dropping).

The 8th known issue (custom-template recipes lack DYNAMIC_INIT and
cookbook_apply_patches boilerplate) is deferred — it's a separate
cookbook-integration concern tracked in the cub assessment plan
(local/docs/cub-assessment-and-improvement-plan.md).
2026-06-10 09:58:50 +03:00
..