Skip to content

Restructure Conan package to standard CCI layout (#238)#246

Open
garyo wants to merge 1 commit into
mainfrom
feature/conan-package-layout-238
Open

Restructure Conan package to standard CCI layout (#238)#246
garyo wants to merge 1 commit into
mainfrom
feature/conan-package-layout-238

Conversation

@garyo

@garyo garyo commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Reorganizes the Conan package to the standard CCI / aswf-docker layout, per
#238 (thanks @jfpanisset).

Before After
include/*.h include/*.h (OFX C API, unchanged)
HostSupport/include/*.h include/HostSupport/*.h
Support/include/*.h, Support/Plugins/include/*.H include/Support/*.h, include/Support/Plugins/*.H
cmake/OpenFX.cmake lib/cmake/OpenFX.cmake (+ Info.plist.in co-located)
LICENSE etc. at root licenses/openfx/, docs in res/openfx/

package_info() is updated to match. OpenFX.cmake now finds Info.plist.in
relative to itself (CMAKE_CURRENT_LIST_DIR) so add_ofx_plugin works when
consumed from the package, not just in-tree. Licenses go in a per-package subdir
so multi-package installs (aswf-docker) don't clash.

Fixes a few latent recipe bugs in passing: docs were never actually packaged
(invalid copy pattern + wrong case), Support headers were copied from the wrong
path, the .H plugin headers were missed on case-sensitive filesystems, and
cimg/spdlog weren't claimed by any component (which errors under modern Conan).

Tested with conan create and test_package.

🤖 Generated with Claude Code

Reorganize the Conan package directory layout to follow the Conan Center
Index / aswf-docker conventions, as suggested in #238, and fix several
latent bugs in the recipe along the way.

Layout changes (package()):
- Headers now all live under include/: the OFX C API at the root, with
  host- and plugin-support headers in include/HostSupport and
  include/Support (and include/Support/Plugins for the .H helpers).
- The CMake build module moves to lib/cmake/OpenFX.cmake, with
  Info.plist.in co-located so add_ofx_plugin resolves it relative to the
  module (CMAKE_CURRENT_LIST_DIR) rather than the consumer's
  CMAKE_SOURCE_DIR, which only worked inside this repo.
- LICENSE goes to licenses/openfx/ (a per-package subdir avoids clashes
  when many packages share an install prefix); README/install docs to
  res/openfx/.

package_info() updated to match the new include/lib/cmake paths.

Latent recipe bugs fixed in passing:
- "LICENSE, README.md, INSTALL.md" was a single invalid copy pattern, so
  no docs were ever packaged; LICENSE/install.md case also didn't match.
- Support headers were copied from the wrong path (Support/*.h is empty;
  they live in Support/include) so they were missing from the package.
- Support/Plugins helper headers use a .H extension that the *.h pattern
  missed on case-sensitive filesystems.
- cimg and spdlog are direct requirements but were not referenced by any
  component, which makes package_info() error out under modern Conan
  (and thus fails for consumers); they are now claimed by the components
  whose example code uses them.

Validated end to end with `conan create` (Ninja, Release): the package
builds, lays out as above, and test_package consumes it — building the
Invert example plugin via add_ofx_plugin (exercising the relocated
Info.plist.in) and passing the property-set compliance checks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant