Skip to content

Commit e76bbe4

Browse files
authored
Merge pull request #12877 from roberth/c-api-libflake-override-input
C API: Flake loading, input overriding
2 parents 73d3159 + 8c903e0 commit e76bbe4

26 files changed

+956
-11
lines changed

flake.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@
355355
"nix-store-tests" = { };
356356

357357
"nix-fetchers" = { };
358+
"nix-fetchers-c" = { };
358359
"nix-fetchers-tests" = { };
359360

360361
"nix-expr" = { };
@@ -363,6 +364,7 @@
363364
"nix-expr-tests" = { };
364365

365366
"nix-flake" = { };
367+
"nix-flake-c" = { };
366368
"nix-flake-tests" = { };
367369

368370
"nix-main" = { };

meson.build

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ endif
3333
# External C wrapper libraries
3434
subproject('libutil-c')
3535
subproject('libstore-c')
36+
subproject('libfetchers-c')
3637
subproject('libexpr-c')
3738
subproject('libflake-c')
3839
subproject('libmain-c')

packaging/components.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ in
333333
nix-store-tests = callPackage ../src/libstore-tests/package.nix { };
334334

335335
nix-fetchers = callPackage ../src/libfetchers/package.nix { };
336+
nix-fetchers-c = callPackage ../src/libfetchers-c/package.nix { };
336337
nix-fetchers-tests = callPackage ../src/libfetchers-tests/package.nix { };
337338

338339
nix-expr = callPackage ../src/libexpr/package.nix { };

packaging/everything.nix

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
nix-store-tests,
1616

1717
nix-fetchers,
18+
nix-fetchers-c,
1819
nix-fetchers-tests,
1920

2021
nix-expr,
@@ -54,6 +55,7 @@ let
5455
nix-store
5556
nix-store-c
5657
nix-fetchers
58+
nix-fetchers-c
5759
nix-expr
5860
nix-expr-c
5961
nix-flake
@@ -230,6 +232,7 @@ stdenv.mkDerivation (finalAttrs: {
230232
"nix-expr"
231233
"nix-expr-c"
232234
"nix-fetchers"
235+
"nix-fetchers-c"
233236
"nix-flake"
234237
"nix-flake-c"
235238
"nix-main"

packaging/hydra.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ let
4848
"nix-store-test-support"
4949
"nix-store-tests"
5050
"nix-fetchers"
51+
"nix-fetchers-c"
5152
"nix-fetchers-tests"
5253
"nix-expr"
5354
"nix-expr-c"

src/libexpr-c/meson.build

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,11 @@ include_dirs = [include_directories('.')]
3737

3838
headers = files(
3939
'nix_api_expr.h',
40+
'nix_api_expr_internal.h',
4041
'nix_api_external.h',
4142
'nix_api_value.h',
4243
)
4344

44-
# TODO move this header to libexpr, maybe don't use it in tests?
45-
headers += files('nix_api_expr_internal.h')
46-
4745
subdir('nix-meson-build-support/export-all-symbols')
4846
subdir('nix-meson-build-support/windows-version')
4947

src/libexpr-c/nix_api_expr.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,11 @@ nix_err nix_gc_incref(nix_c_context * context, const void * object);
286286
/**
287287
* @brief Decrement the garbage collector reference counter for the given object
288288
*
289+
* We also provide typed `nix_*_decref` functions, which are
290+
* - safer to use
291+
* - easier to integrate when deriving bindings
292+
* - allow more flexibility
293+
*
289294
* @param[out] context Optional, stores error information
290295
* @param[in] object The object to stop referencing
291296
*/

src/libexpr/value-to-json.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
namespace nix {
1212
using json = nlohmann::json;
13+
// TODO: rename. It doesn't print.
1314
json printValueAsJSON(EvalState & state, bool strict,
1415
Value & v, const PosIdx pos, NixStringContext & context, bool copyToStore)
1516
{

src/libfetchers-c/.version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../.version

src/libfetchers-c/meson.build

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
project('nix-fetchers-c', 'cpp',
2+
version : files('.version'),
3+
default_options : [
4+
'cpp_std=c++2a',
5+
# TODO(Qyriad): increase the warning level
6+
'warning_level=1',
7+
'errorlogs=true', # Please print logs for tests that fail
8+
],
9+
meson_version : '>= 1.1',
10+
license : 'LGPL-2.1-or-later',
11+
)
12+
13+
cxx = meson.get_compiler('cpp')
14+
15+
subdir('nix-meson-build-support/deps-lists')
16+
17+
deps_private_maybe_subproject = [
18+
dependency('nix-util'),
19+
dependency('nix-store'),
20+
dependency('nix-fetchers'),
21+
]
22+
deps_public_maybe_subproject = [
23+
dependency('nix-util-c'),
24+
dependency('nix-store-c'),
25+
]
26+
subdir('nix-meson-build-support/subprojects')
27+
28+
add_project_arguments(
29+
language : 'cpp',
30+
)
31+
32+
subdir('nix-meson-build-support/common')
33+
34+
sources = files(
35+
'nix_api_fetchers.cc',
36+
)
37+
38+
include_dirs = [include_directories('.')]
39+
40+
headers = files(
41+
'nix_api_fetchers.h',
42+
'nix_api_fetchers_internal.hh',
43+
)
44+
45+
# TODO move this header to libexpr, maybe don't use it in tests?
46+
headers += files('nix_api_fetchers.h')
47+
48+
subdir('nix-meson-build-support/export-all-symbols')
49+
subdir('nix-meson-build-support/windows-version')
50+
51+
this_library = library(
52+
'nixfetchersc',
53+
sources,
54+
dependencies : deps_public + deps_private + deps_other,
55+
include_directories : include_dirs,
56+
link_args: linker_export_flags,
57+
prelink : true, # For C++ static initializers
58+
install : true,
59+
)
60+
61+
install_headers(headers, preserve_path : true)
62+
63+
libraries_private = []
64+
65+
subdir('nix-meson-build-support/export')

0 commit comments

Comments
 (0)