diff --git a/meson.build b/meson.build index 2fb5102971..84b2a22ebe 100644 --- a/meson.build +++ b/meson.build @@ -712,6 +712,17 @@ if run_command(python, '-c', 'import jinja2', check : false).returncode() != 0 error('python3 jinja2 missing') endif +python_310 = run_command(python, '-c', + 'import sys; sys.exit(0 if sys.version_info >= (3,10) else 1)', + check : false).returncode() == 0 +if get_option('ukify') == 'auto' + want_ukify = python_310 +elif get_option('ukify') == 'true' and not python310 + error('ukify requires Python >= 3.10') +else + want_ukify = get_option('ukify') == 'true' +endif + ############################################################ gperf = find_program('gperf') @@ -3991,6 +4002,18 @@ if want_tests != 'false' and want_kernel_install args : [exe.full_path(), loaderentry_install]) endif +if want_ukify + exe = custom_target( + 'ukify', + input : 'src/ukify/ukify.py', + output : 'ukify', + command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'], + install : true, + install_mode : 'rwxr-xr-x', + install_dir : rootlibexecdir) + public_programs += exe +endif + ############################################################ runtest_env = custom_target( diff --git a/meson_options.txt b/meson_options.txt index 19e9c2d990..6a95955dd9 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -501,6 +501,8 @@ option('llvm-fuzz', type : 'boolean', value : false, description : 'build against LLVM libFuzzer') option('kernel-install', type: 'boolean', value: true, description : 'install kernel-install and associated files') +option('ukify', type : 'combo', choices : ['auto', 'true', 'false'], + description : 'install ukify') option('analyze', type: 'boolean', value: true, description : 'install systemd-analyze') diff --git a/src/ukify/ukify.py b/src/ukify/ukify.py index 4041cefc9d..d4afd88290 100755 --- a/src/ukify/ukify.py +++ b/src/ukify/ukify.py @@ -22,6 +22,8 @@ import typing import pefile +__version__ = '{{GIT_VERSION}}' + EFI_ARCH_MAP = { # host_arch glob : [efi_arch, 32_bit_efi_arch if mixed mode is supported] 'x86_64' : ['x64', 'ia32'], @@ -519,6 +521,10 @@ usage: ukify [options…] linux initrd action=argparse.BooleanOptionalAction, help='print systemd-measure output for the UKI') + p.add_argument('--version', + action='version', + version=f'ukify {__version__}') + opts = p.parse_args(args) if opts.cmdline and opts.cmdline.startswith('@'):