From 6e5db5e4a226dc920a8959e8201d75f54c37dde2 Mon Sep 17 00:00:00 2001 From: eldritch horrors Date: Fri, 29 Mar 2024 02:37:14 +0100 Subject: [PATCH] meson: install missing/generated headers one headers (args/root.hh) was simply missing, and the generated headers were not installed. not all of them *should* be installed either, only a select few (and sadly this needs a custom target for each one, it seems) Change-Id: I37b25517895d0e5e521abc1202fa65624de57ed1 --- meson.build | 7 +++---- src/libexpr/flake/meson.build | 8 ++++++++ src/libexpr/meson.build | 23 +++++++++++++++-------- src/libstore/meson.build | 16 ++++++++++++---- src/libutil/meson.build | 1 + 5 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 src/libexpr/flake/meson.build diff --git a/meson.build b/meson.build index 556712c34..a4c2bbc14 100644 --- a/meson.build +++ b/meson.build @@ -244,13 +244,12 @@ bison = find_program('bison') flex = find_program('flex') # This is how Nix does generated headers... +# other instances of header generation use a very similar command. # FIXME(Qyriad): do we really need to use the shell for this? +gen_header_sh = 'echo \'R"__NIX_STR(\' | cat - @INPUT@ && echo \')__NIX_STR"\'' gen_header = generator( bash, - arguments : [ - '-c', - 'echo \'R"__NIX_STR(\' | cat - @INPUT@ && echo \')__NIX_STR"\'', - ], + arguments : [ '-c', gen_header_sh ], capture : true, output : '@PLAINNAME@.gen.hh', ) diff --git a/src/libexpr/flake/meson.build b/src/libexpr/flake/meson.build new file mode 100644 index 000000000..3ecc30f4e --- /dev/null +++ b/src/libexpr/flake/meson.build @@ -0,0 +1,8 @@ +libexpr_generated_headers += custom_target( + command : [ 'bash', '-c', 'echo \'R"__NIX_STR(\' | cat - @INPUT@ && echo \')__NIX_STR"\'' ], + input : 'call-flake.nix', + output : '@PLAINNAME@.gen.hh', + capture : true, + install : true, + install_dir : includedir / 'nix/flake', +) diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build index e0449ab4e..7c0555f8f 100644 --- a/src/libexpr/meson.build +++ b/src/libexpr/meson.build @@ -49,10 +49,20 @@ meson.add_install_script( '@0@'.format(includedir), ) -imported_drv_to_derivation_gen = gen_header.process('imported-drv-to-derivation.nix') -fetchurl_gen = gen_header.process('fetchurl.nix') -derivation_gen = gen_header.process('primops/derivation.nix', preserve_path_from : meson.current_source_dir()) -call_flake_gen = gen_header.process('flake/call-flake.nix') +libexpr_generated_headers = [ + gen_header.process('primops/derivation.nix', preserve_path_from : meson.current_source_dir()), +] +foreach header : [ 'imported-drv-to-derivation.nix', 'fetchurl.nix' ] + libexpr_generated_headers += custom_target( + command : [ 'bash', '-c', 'echo \'R"__NIX_STR(\' | cat - @INPUT@ && echo \')__NIX_STR"\'' ], + input : header, + output : '@PLAINNAME@.gen.hh', + capture : true, + install : true, + install_dir : includedir / 'nix', + ) +endforeach +subdir('flake') libexpr_sources = files( 'attr-path.cc', @@ -121,10 +131,7 @@ libexpr = library( libexpr_sources, parser_tab, lexer_tab, - imported_drv_to_derivation_gen, - fetchurl_gen, - derivation_gen, - call_flake_gen, + libexpr_generated_headers, dependencies : [ liblixutil, liblixstore, diff --git a/src/libstore/meson.build b/src/libstore/meson.build index c4b12f61e..29dbc5e70 100644 --- a/src/libstore/meson.build +++ b/src/libstore/meson.build @@ -1,5 +1,14 @@ -schema_sql_gen = gen_header.process('schema.sql') -ca_specific_schema_gen = gen_header.process('ca-specific-schema.sql') +libstore_generated_headers = [] +foreach header : [ 'schema.sql', 'ca-specific-schema.sql' ] + libstore_generated_headers += custom_target( + command : [ 'bash', '-c', 'echo \'R"__NIX_STR(\' | cat - @INPUT@ && echo \')__NIX_STR"\'' ], + input : header, + output : '@PLAINNAME@.gen.hh', + capture : true, + install : true, + install_dir : includedir / 'nix', + ) +endforeach libstore_sources = files( 'binary-cache-store.cc', @@ -157,8 +166,7 @@ endforeach libstore = library( 'nixstore', - schema_sql_gen, - ca_specific_schema_gen, + libstore_generated_headers, libstore_sources, dependencies : [ libarchive, diff --git a/src/libutil/meson.build b/src/libutil/meson.build index 8e4b5211d..c0dd1aa2b 100644 --- a/src/libutil/meson.build +++ b/src/libutil/meson.build @@ -35,6 +35,7 @@ libutil_headers = files( 'abstract-setting-to-json.hh', 'ansicolor.hh', 'archive.hh', + 'args/root.hh', 'args.hh', 'box_ptr.hh', 'callback.hh',