Skip to content

Commit

Permalink
meson: Work around configure_file(copy:true) deprecation
Browse files Browse the repository at this point in the history
In our meson scripts, we use configure_file(copy:true) to copy
files from srcdir into builddir. However, as of meson-0.64.0,
this is deprecated [1] in favor of using:

  fs = import('fs')
  fs.copyfile(in, out)

Except, the submodule's new method wasn't introduced until
0.64.0. And since we can't bump the minimal meson version we
require, we have to work with both: new and old versions.

Now, the fun part: fs.copyfile() is not a drop in replacement as
it returns different type (a custom_target object). This is
incompatible with places where we store the configure_file()
retval in a variable to process it further.

While we could just replace 'copy:true' with a dummy
'configuration:...' (say 'configuration: configmake_conf') we
can't do that for binary files (like src/fonts/ or src/images/).

Therefore, places where we are not interested in the retval can
be switched to fs.copyfile() and places where we are interested
in the retval will just use a dummy 'configuration:'.

Except, src/network/meson.build. In here we not just copy the
file but also specify alternative install dir and that's not
something that fs.copyfile() can handle. Yet, using 'copy: true'
is viewed wrong [2].

1: https://mesonbuild.com/Release-notes-for-0-64-0.html#fscopyfile-to-replace-configure_filecopy-true
2: mesonbuild/meson#10042

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
  • Loading branch information
zippy2 committed Apr 17, 2023
1 parent 883b427 commit 3132f84
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 12 deletions.
6 changes: 5 additions & 1 deletion docs/css/meson.build
Expand Up @@ -11,7 +11,11 @@ install_data(docs_css_files, install_dir: docs_html_dir / 'css')
foreach file : docs_css_files
# This hack enables us to view the web pages
# from within the uninstalled build tree
configure_file(input: file, output: file, copy: true)
if meson.version().version_compare('>=0.64.0')
fs.copyfile(file)
else
configure_file(input: file, output: file, copy: true)
endif

install_web_files += '@0@:@1@'.format(meson.current_source_dir() / file, docs_html_dir / 'css')
endforeach
6 changes: 5 additions & 1 deletion docs/fonts/meson.build
Expand Up @@ -17,7 +17,11 @@ install_data(fonts, install_dir: docs_html_dir / 'fonts')
foreach file : fonts
# This hack enables us to view the web pages
# from within the uninstalled build tree
configure_file(input: file, output: file, copy: true)
if meson.version().version_compare('>=0.64.0')
fs.copyfile(file)
else
configure_file(input: file, output: file, copy: true)
endif

install_web_files += '@0@:@1@'.format(meson.current_source_dir() / file, docs_html_dir / 'fonts')
endforeach
6 changes: 5 additions & 1 deletion docs/images/meson.build
Expand Up @@ -17,7 +17,11 @@ install_data(docs_image_files, install_dir: docs_html_dir / 'images')
foreach file : docs_image_files
# This hack enables us to view the web pages
# from within the uninstalled build tree
configure_file(input: file, output: file, copy: true)
if meson.version().version_compare('>=0.64.0')
fs.copyfile(file)
else
configure_file(input: file, output: file, copy: true)
endif

install_web_files += '@0@:@1@'.format(meson.current_source_dir() / file, docs_html_dir / 'images')
endforeach
8 changes: 6 additions & 2 deletions docs/js/meson.build
Expand Up @@ -7,7 +7,11 @@ install_data(docs_js_files, install_dir: docs_html_dir / 'js')
foreach file : docs_js_files
# This hack enables us to view the web pages
# from within the uninstalled build tree
configure_file(input: file, output: file, copy: true)
if meson.version().version_compare('>=0.64.0')
fs.copyfile(file)
else
configure_file(input: file, output: file, copy: true)
endif

install_web_files += '@0@:@1@'.format(meson.current_source_dir() / file, docs_html_dir / 'js')
install_web_files += '@0@:@1@'.format(meson.current_source_dir() / file, docs_html_dir / 'js')
endforeach
6 changes: 5 additions & 1 deletion docs/logos/meson.build
Expand Up @@ -25,7 +25,11 @@ install_data(docs_logo_files, install_dir: docs_html_dir / 'logos')
foreach file : docs_logo_files
# This hack enables us to view the web pages
# from within the uninstalled build tree
configure_file(input: file, output: file, copy: true)
if meson.version().version_compare('>=0.64.0')
fs.copyfile(file)
else
configure_file(input: file, output: file, copy: true)
endif

install_web_files += '@0@:@1@'.format(meson.current_source_dir() / file, docs_html_dir / 'logos')
endforeach
Expand Down
6 changes: 5 additions & 1 deletion docs/meson.build
Expand Up @@ -342,7 +342,11 @@ subdir('manpages')
foreach file : docs_assets
# This hack enables us to view the web pages
# from within the uninstalled build tree
configure_file(input: file, output: file, copy: true)
if meson.version().version_compare('>=0.64.0')
fs.copyfile(file)
else
configure_file(input: file, output: file, copy: true)
endif

install_web_files += '@0@:@1@'.format(meson.current_source_dir() / file, docs_html_dir)
endforeach
Expand Down
3 changes: 3 additions & 0 deletions meson.build
Expand Up @@ -11,6 +11,9 @@ project(
],
)

if meson.version().version_compare('>=0.64.0')
fs = import('fs')
endif

# figure out if we are building from git

Expand Down
8 changes: 4 additions & 4 deletions src/locking/meson.build
Expand Up @@ -174,7 +174,7 @@ if conf.has('WITH_LIBVIRTD')
qemu_lockd_conf = configure_file(
input: 'lockd.conf',
output: 'qemu-lockd.conf',
copy: true,
configuration: configmake_conf,
)
virt_conf_files += qemu_lockd_conf
virt_test_aug_files += {
Expand All @@ -191,7 +191,7 @@ if conf.has('WITH_LIBVIRTD')
libxl_lockd_conf = configure_file(
input: 'lockd.conf',
output: 'libxl-lockd.conf',
copy: true,
configuration: configmake_conf,
)
virt_conf_files += libxl_lockd_conf
endif
Expand All @@ -203,7 +203,7 @@ if conf.has('WITH_LIBVIRTD')
qemu_sanlock_conf = configure_file(
input: 'sanlock.conf',
output: 'qemu-sanlock.conf',
copy: true,
configuration: configmake_conf,
)
virt_conf_files += qemu_sanlock_conf
virt_test_aug_files += {
Expand All @@ -220,7 +220,7 @@ if conf.has('WITH_LIBVIRTD')
libxl_sanlock_conf = configure_file(
input: 'sanlock.conf',
output: 'libxl-sanlock.conf',
copy: true,
configuration: configmake_conf,
)
virt_conf_files += libxl_sanlock_conf
endif
Expand Down
2 changes: 1 addition & 1 deletion src/network/meson.build
Expand Up @@ -84,7 +84,7 @@ if conf.has('WITH_NETWORK')
configure_file(
input: 'default.xml.in',
output: '@BASENAME@',
copy: true,
configuration: configmake_conf,
install: true,
install_dir: confdir / 'qemu' / 'networks',
)
Expand Down

0 comments on commit 3132f84

Please sign in to comment.