summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build23
-rw-r--r--meson_options.txt2
-rwxr-xr-xsrc/ukify/ukify.py6
3 files changed, 31 insertions, 0 deletions
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('@'):