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

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

Closed

Conversation

mergify[bot]
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
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.

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