Skip to content

Translate Conan Center utf8proc recipe to LLAR #22

Description

@MeteorsLiu

Translate the Conan Center utf8proc recipe into an LLAR Formula in this repository.

Source material

Goal

Add JuliaStrings/utf8proc to llarhub. Preserve the useful package semantics expressed by the Conan recipe, but produce an idiomatic LLAR Formula rather than a line-by-line rewrite of conanfile.py.

Read and follow .agents/skills/write-formula/SKILL.md and both required references before editing.

Translation process

  1. Read config.yml, conandata.yml, conanfile.py, and test_package to identify the source tags, build behavior, options, installed interface, and consumer verification.
  2. Resolve the exact upstream tag for Conan version 2.9.0 from conandata.yml, preserving its spelling. Inspect that exact upstream revision before choosing any dependency, flag, output, metadata, or test.
  3. Compare the other versions served by the same Conan recipe folder and choose the earliest verified LLAR fromVer boundary. One Formula may serve a version range only when the upstream build contract remains compatible. Add another threshold instead of claiming an unverified range.
  4. The automated preselection found no Conan requirements, tool_requires, or test_requires calls. Verify direct dependencies from the upstream source anyway. Never invent dependencies. When dependency versions can change within the Formula range, prefer source-synchronized onRequire; use versions.json only as an exact-version conservative fallback.
  5. Translate only settings and options that materially affect dependencies, commands, installed output, metadata, tests, or platform support. Environment dimensions belong in target.require; package-owned choices belong in target.options. defaults supplies option defaults, and filter rejects only combinations proved unsupported.
  6. Inspect every Conan patch or exported source when present. Carry over only behavior required by the selected upstream revision. Do not copy Conan layout helpers, generated toolchains, packaging cleanup, compatibility branches, or defensive flags without upstream evidence.
  7. Implement the build with the current LLAR CMake helper. onBuild must build the selected upstream source and install the complete public result into ctx.outputDir. Call configure, build, and install directly because they already panic on failure.
  8. Derive ctx.setMetadata from the actual installed consumer interface. Prefer valid installed package metadata when available; do not guess flags from the Conan package_info block.
  9. Add onTest using the Conan test_package as the consumer behavior reference. Compile and run or load a small consumer against the installed result. Keep its build tree independent of the onBuild scratch tree so the test also works on a cache hit.
  10. Keep the change limited to the module files for JuliaStrings/utf8proc. Do not add a generic Conan importer and do not modify the Formula skill.

Validation

Run the repository-required checks and test the exact upstream tag corresponding to Conan 2.9.0:

llar test -v ./JuliaStrings/utf8proc@<exact-upstream-tag>

Also test representative versions across every claimed Formula range, the default selection, and each retained output-changing option with explicit host --os and --arch values. Re-run one selection to verify cache-hit onTest behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions