Skip to content
This repository was archived by the owner on Sep 17, 2026. It is now read-only.
This repository was archived by the owner on Sep 17, 2026. It is now read-only.

Translate Conan Center minisat recipe to LLAR #326

Description

@MeteorsLiu

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

Source material

Goal

Add niklasso/minisat 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.2.0 from conandata.yml, preserving its spelling. Inspect that exact upstream revision before choosing any dependency, flag, output, metadata, or test. The recorded tag spelling is releases/2.2.0.
  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 these Conan self.requires calls. Every listed dependency is already merged on xgo-dev/llarhub main. Verify them against the selected upstream source anyway. Never invent extra dependencies. When dependency versions can change within the Formula range, prefer source-synchronized onRequire; use versions.json only as an exact-version conservative fallback.
    • zlib → already merged madler/zlib (transitive headers and libs in Conan)
  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. Do not use runtime.GOOS or runtime.GOARCH; read the selected platform from target.require["os"] and target.require["arch"].
  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. For C/C++ libraries that expose pkg-config, install a relocatable .pc and set metadata from the complete pkgconfig.lookup cflags-and-libs result.
  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 niklasso/minisat. 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.2.0:

llar test -v ./niklasso/minisat@releases/2.2.0

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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