Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement single-project "super-build" #242

Merged
merged 7 commits into from
Jun 13, 2024
Merged

Implement single-project "super-build" #242

merged 7 commits into from
Jun 13, 2024

Conversation

cassava
Copy link
Contributor

@cassava cassava commented May 17, 2024

The cloe packages are distributed individually, and nominally have been developed individually, despite always being released with a unified version. Unfortunately, Conan does not provide good tooling for developing in a workspace of federated packages, and the workflows that we've had to use have made development iteration complicated, longer, and more tiring than they need to be.

This PR converts the cloe package from a meta-package to a super-build containing all other packages.

A new package, cloe-meta, takes the role that the previous cloe package took.

Questions:

  • What happens if someone uses cloe and another package that cloe provides? This was fine in the past, but I think it will not work anymore.
  • Should we even have cloe-meta? Because of Conan v1 limitations, it's not even useful as a lockfile recipe, which is what I intended to use it for.

@cassava cassava requested a review from tobifalk as a code owner May 17, 2024 07:35
@cassava cassava added this to the 0.25.0 milestone May 17, 2024
@cassava cassava added the breaking change Pull requests that are potentially backwards incompatible label May 17, 2024
cassava added 3 commits June 3, 2024 14:06
New:
- Add `cloe-meta` package to replace previous role of `cloe`.

- Add `cloe-plugins-core` package recipe (but do not build by default).

- Add editable builds to GitHub workflow `build-cloe` matrix.

Changed:
- Package `cloe` provides all Cloe packages compiled in one go.
  This is a boon to development, as we make `cloe` editable and
  only have to work with a single package.
  It also massively speeds up compilation:
  - Conan and CMake configuration is only performed once.
  - All cores can now be utilized much more effectively during the build
    process.

- Do not aggressively lint everything
  The developer can do this themselves by setting a cmake define:
  https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_CLANG_TIDY.html

- Renamed top-level Make targets:
  - `status` is now `status-all`
  - `export` is now `export-all`
  - `deploy` is now `deploy-all`
  - `clean` is now `clean-all`
  - `purge` is now `purge-all`

- The following top-level Make targets just refer to `cloe` super-build package:
  - `package`
  - `smoketest`
  - `smoketest-deps`
  - `status`
  - `export`

Fixed:
- Plugin Conan configurations do not export correct library path.
We still support multiple profiles, but this makes it easier to support
the cloe super-build and should also make it easier to develop and
maintain tests.
@cassava cassava self-assigned this Jun 4, 2024
@cassava
Copy link
Contributor Author

cassava commented Jun 4, 2024

Note: If you try to use cloe and something that it provides, such as cloe-runtime in a same recipe, then you will get:

  ERROR: At least two recipes provides the same functionality:
   - 'fable' provided by 'cloe/0.23.0-next@cloe/develop', 'fable/0.23.0-next@cloe/develop'
   - 'cloe-runtime' provided by 'cloe/0.23.0-next@cloe/develop', 'cloe-runtime/0.23.0-next@cloe/develop'
   - 'cloe-models' provided by 'cloe/0.23.0-next@cloe/develop', 'cloe-models/0.23.0-next@cloe/develop'

I'm not sure how it is if packageA requires cloe and packageB requires cloe-runtime.

@cassava
Copy link
Contributor Author

cassava commented Jun 12, 2024

I'm not sure how it is if packageA requires cloe and packageB requires cloe-runtime.

I added such a test-case and documented the results.

@cassava cassava merged commit 29eed02 into master Jun 13, 2024
10 checks passed
@cassava cassava deleted the ben/superbuild branch June 13, 2024 08:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking change Pull requests that are potentially backwards incompatible
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants