Skip to content

C API: Add libflake-c (backport #11940)#11949

Closed
mergify[bot] wants to merge 6 commits into2.24-maintenancefrom
mergify/bp/2.24-maintenance/pr-11940
Closed

C API: Add libflake-c (backport #11940)#11949
mergify[bot] wants to merge 6 commits into2.24-maintenancefrom
mergify/bp/2.24-maintenance/pr-11940

Conversation

@mergify
Copy link
Contributor

@mergify mergify bot commented Nov 25, 2024

Motivation

Nix 2.24's C API is currently incapable of providing flake functionality, because libflake wasn't wrapped before #9063

This PR provides a very basic libflake that restores builtins.getFlake. (a feature compensating for a regression)

Context


Add 👍 to pull requests you find important.

The Nix maintainer team uses a GitHub project board to schedule and track reviews.


This is an automatic backport of pull request #11940 done by [Mergify](https://mergify.com).

(cherry picked from commit 1bd7517)
(cherry picked from commit 4eecf3c)

# Conflicts:
#	packaging/components.nix
#	packaging/everything.nix
#	tests/unit/libflake/nix_api_flake.cc
[FAIL()] is a macro with `return`, making it unsuitable for helpers.

This uses std::runtime_error, because gtest does not seem to provide an
exception type of its own for this purpose. [AssertionException] is for
a different use case.

[FAIL()]: https://google.github.io/googletest/reference/assertions.html#FAIL
[AssertionException]: https://github.com/google/googletest/blob/35d0c365609296fa4730d62057c487e3cfa030ff/docs/reference/testing.md#assertionexception-assertionexception

(cherry picked from commit d004c52)

# Conflicts:
#	src/libutil-test-support/tests/gtest-with-params.hh
@mergify
Copy link
Contributor Author

mergify bot commented Nov 25, 2024

Cherry-pick of 4eecf3c has failed:

On branch mergify/bp/2.24-maintenance/pr-11940
Your branch is ahead of 'origin/2.24-maintenance' by 3 commits.
  (use "git push" to publish your local commits)

You are currently cherry-picking commit 4eecf3c20.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
	modified:   meson.build
	modified:   src/external-api-docs/doxygen.cfg.in
	modified:   src/external-api-docs/package.nix
	new file:   src/libflake-c/.version
	new file:   src/libflake-c/build-utils-meson
	new file:   src/libflake-c/meson.build
	new file:   src/libflake-c/nix_api_flake.cc
	new file:   src/libflake-c/nix_api_flake.h
	new file:   src/libflake-c/nix_api_flake_internal.hh
	new file:   src/libflake-c/package.nix
	modified:   tests/unit/libflake/meson.build
	modified:   tests/unit/libflake/package.nix

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
	both modified:   packaging/components.nix
	deleted by us:   packaging/everything.nix
	added by them:   tests/unit/libflake/nix_api_flake.cc

Cherry-pick of d004c52 has failed:

On branch mergify/bp/2.24-maintenance/pr-11940
Your branch is ahead of 'origin/2.24-maintenance' by 4 commits.
  (use "git push" to publish your local commits)

You are currently cherry-picking commit d004c524b.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
	modified:   tests/unit/libutil-support/tests/nix_api_util.hh

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
	deleted by us:   src/libutil-test-support/tests/gtest-with-params.hh

To fix up this pull request, you can check it out locally. See documentation: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally

@github-actions github-actions bot added with-tests Issues related to testing. PRs with tests have some priority c api Nix as a C library with a stable interface labels Nov 25, 2024
@edolstra
Copy link
Member

Generally we don't backport features (only bug fixes), especially when they're big (this is a 23-file diff).

@roberth
Copy link
Member

roberth commented Nov 26, 2024

Without this, flakes can't be used through the C API. This is a fix for a regression in the shape of a feature; not just a new feature.

@xokdvium xokdvium deleted the mergify/bp/2.24-maintenance/pr-11940 branch October 7, 2025 21:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c api Nix as a C library with a stable interface conflicts merge-queue with-tests Issues related to testing. PRs with tests have some priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants