Skip to content

Commit 0d67c2a

Browse files
authored
Merge pull request #3543 from keszybz/initrd-version-short-option
Add short option for initrd kernel version
2 parents e30b69c + bc63871 commit 0d67c2a

File tree

3 files changed

+114
-110
lines changed

3 files changed

+114
-110
lines changed

mkosi/__init__.py

+56-56
Original file line numberDiff line numberDiff line change
@@ -1320,58 +1320,58 @@ def finalize_default_initrd(
13201320
# Default values are assigned via the parser so we go via the argument parser to construct
13211321
# the config for the initrd.
13221322
cmdline = [
1323-
"--directory", "",
1324-
"--distribution", str(config.distribution),
1325-
"--release", config.release,
1326-
"--architecture", str(config.architecture),
1327-
*(["--mirror", config.mirror] if config.mirror else []),
1328-
"--repository-key-check", str(config.repository_key_check),
1329-
"--repository-key-fetch", str(config.repository_key_fetch),
1323+
"--directory=",
1324+
f"--distribution={config.distribution}",
1325+
f"--release={config.release}",
1326+
f"--architecture={config.architecture}",
1327+
*([f"--mirror={config.mirror}"] if config.mirror else []),
1328+
f"--repository-key-check={config.repository_key_check}",
1329+
f"--repository-key-fetch={config.repository_key_fetch}",
13301330
*([f"--repositories={repository}" for repository in config.repositories]),
13311331
*([f"--sandbox-tree={tree}" for tree in config.sandbox_trees]),
13321332
# Note that when compress_output == Compression.none == 0 we don't pass --compress-output
13331333
# which means the default compression will get picked. This is exactly what we want so that
13341334
# initrds are always compressed.
1335-
*(["--compress-output", str(config.compress_output)] if config.compress_output else []),
1336-
"--compress-level", str(config.compress_level),
1337-
"--with-network", str(config.with_network),
1338-
"--cache-only", str(config.cacheonly),
1339-
*(["--output-directory", os.fspath(output_dir)] if output_dir else []),
1340-
*(["--workspace-directory", os.fspath(config.workspace_dir)] if config.workspace_dir else []),
1341-
*(["--cache-directory", os.fspath(config.cache_dir)] if config.cache_dir else []),
1342-
"--cache-key", config.cache_key or '-',
1343-
*(["--package-cache-directory", os.fspath(config.package_cache_dir)] if config.package_cache_dir else []), # noqa: E501
1344-
*(["--local-mirror", str(config.local_mirror)] if config.local_mirror else []),
1345-
"--incremental", str(config.incremental),
1335+
*([f"--compress-output={c}"] if (c := config.compress_output) else []),
1336+
f"--compress-level={config.compress_level}",
1337+
f"--with-network={config.with_network}",
1338+
f"--cache-only={config.cacheonly}",
1339+
*([f"--output-directory={os.fspath(output_dir)}"] if output_dir else []),
1340+
*([f"--workspace-directory={os.fspath(config.workspace_dir)}"] if config.workspace_dir else []),
1341+
*([f"--cache-directory={os.fspath(config.cache_dir)}"] if config.cache_dir else []),
1342+
f"--cache-key={config.cache_key or '-'}",
1343+
*([f"--package-cache-directory={os.fspath(p)}"] if (p := config.package_cache_dir) else []),
1344+
*([f"--local-mirror={config.local_mirror}"] if config.local_mirror else []),
1345+
f"--incremental={config.incremental}",
13461346
*(f"--profile={profile}" for profile in config.initrd_profiles),
13471347
*(f"--package={package}" for package in config.initrd_packages),
13481348
*(f"--volatile-package={package}" for package in config.initrd_volatile_packages),
13491349
*(f"--package-directory={d}" for d in config.package_directories),
13501350
*(f"--volatile-package-directory={d}" for d in config.volatile_package_directories),
1351-
"--output", "initrd",
1352-
*(["--image-id", config.image_id] if config.image_id else []),
1353-
*(["--image-version", config.image_version] if config.image_version else []),
1351+
"--output=initrd",
1352+
*([f"--image-id={config.image_id}"] if config.image_id else []),
1353+
*([f"--image-version={config.image_version}"] if config.image_version else []),
13541354
*(
1355-
["--source-date-epoch", str(config.source_date_epoch)]
1355+
[f"--source-date-epoch={config.source_date_epoch}"]
13561356
if config.source_date_epoch is not None else
13571357
[]
13581358
),
1359-
*(["--locale", config.locale] if config.locale else []),
1360-
*(["--locale-messages", config.locale_messages] if config.locale_messages else []),
1361-
*(["--keymap", config.keymap] if config.keymap else []),
1362-
*(["--timezone", config.timezone] if config.timezone else []),
1363-
*(["--hostname", config.hostname] if config.hostname else []),
1364-
*(["--root-password", rootpwopt] if rootpwopt else []),
1359+
*([f"--locale={config.locale}"] if config.locale else []),
1360+
*([f"--locale-messages={config.locale_messages}"] if config.locale_messages else []),
1361+
*([f"--keymap={config.keymap}"] if config.keymap else []),
1362+
*([f"--timezone={config.timezone}"] if config.timezone else []),
1363+
*([f"--hostname={config.hostname}"] if config.hostname else []),
1364+
*([f"--root-password={rootpwopt}"] if rootpwopt else []),
13651365
*([f"--environment={k}='{v}'" for k, v in config.environment.items()]),
1366-
*(["--tools-tree", os.fspath(config.tools_tree)] if config.tools_tree and tools else []),
1367-
"--tools-tree-certificates", str(config.tools_tree_certificates),
1366+
*([f"--tools-tree={os.fspath(config.tools_tree)}"] if config.tools_tree and tools else []),
1367+
f"--tools-tree-certificates={config.tools_tree_certificates}",
13681368
*([f"--extra-search-path={os.fspath(p)}" for p in config.extra_search_paths]),
1369-
*(["--proxy-url", config.proxy_url] if config.proxy_url else []),
1369+
*([f"--proxy-url={config.proxy_url}"] if config.proxy_url else []),
13701370
*([f"--proxy-exclude={host}" for host in config.proxy_exclude]),
1371-
*(["--proxy-peer-certificate", os.fspath(p)] if (p := config.proxy_peer_certificate) else []),
1372-
*(["--proxy-client-certificate", os.fspath(p)] if (p := config.proxy_client_certificate) else []),
1373-
*(["--proxy-client-key", os.fspath(p)] if (p := config.proxy_client_key) else []),
1374-
"--selinux-relabel", str(relabel),
1371+
*([f"--proxy-peer-certificate={os.fspath(p)}"] if (p := config.proxy_peer_certificate) else []),
1372+
*([f"--proxy-client-certificate={os.fspath(p)}"] if (p := config.proxy_client_certificate) else []),
1373+
*([f"--proxy-client-key={os.fspath(p)}"] if (p := config.proxy_client_key) else []),
1374+
f"--selinux-relabel={relabel}",
13751375
"--include=mkosi-initrd",
13761376
] # fmt: skip
13771377

@@ -4287,9 +4287,9 @@ def run_shell(args: Args, config: Config) -> None:
42874287
os.chown(addr, stat.st_uid, stat.st_gid)
42884288
stack.enter_context(start_journal_remote(config, sock.fileno()))
42894289
cmdline += [
4290-
"--bind", f"{addr}:/run/host/journal/socket",
4290+
f"--bind={addr}:/run/host/journal/socket",
42914291
"--set-credential=journal.forward_to_socket:/run/host/journal/socket",
4292-
] # fmt: skip
4292+
]
42934293

42944294
for p in config.unit_properties:
42954295
cmdline += ["--property", p]
@@ -4521,35 +4521,35 @@ def finalize_default_tools(config: Config, *, resources: Path) -> Config:
45214521
)
45224522

45234523
cmdline = [
4524-
"--directory", "",
4525-
"--distribution", str(config.tools_tree_distribution),
4526-
*(["--release", config.tools_tree_release] if config.tools_tree_release else []),
4524+
"--directory=",
4525+
f"--distribution={config.tools_tree_distribution}",
4526+
*([f"--release={config.tools_tree_release}"] if config.tools_tree_release else []),
45274527
*([f"--profile={profile}" for profile in config.tools_tree_profiles]),
4528-
*(["--mirror", config.tools_tree_mirror] if config.tools_tree_mirror else []),
4528+
*([f"--mirror={config.tools_tree_mirror}"] if config.tools_tree_mirror else []),
45294529
*([f"--repositories={repository}" for repository in config.tools_tree_repositories]),
45304530
*([f"--sandbox-tree={tree}" for tree in config.tools_tree_sandbox_trees]),
4531-
"--repository-key-check", str(config.repository_key_check),
4532-
"--repository-key-fetch", str(config.repository_key_fetch),
4533-
"--cache-only", str(config.cacheonly),
4534-
*(["--output-directory", os.fspath(config.output_dir)] if config.output_dir else []),
4535-
*(["--workspace-directory", os.fspath(config.workspace_dir)] if config.workspace_dir else []),
4536-
*(["--cache-directory", os.fspath(config.cache_dir)] if config.cache_dir else []),
4531+
f"--repository-key-check={config.repository_key_check}",
4532+
f"--repository-key-fetch={config.repository_key_fetch}",
4533+
f"--cache-only={config.cacheonly}",
4534+
*([f"--output-directory={os.fspath(p)}"] if (p := config.output_dir) else []),
4535+
*([f"--workspace-directory={os.fspath(p)}"] if (p := config.workspace_dir) else []),
4536+
*([f"--cache-directory={os.fspath(p)}"] if (p := config.cache_dir) else []),
45374537
"--cache-key=tools",
4538-
*(["--package-cache-directory", os.fspath(config.package_cache_dir)] if config.package_cache_dir else []), # noqa: E501
4539-
"--incremental", str(config.incremental),
4538+
*([f"--package-cache-directory={os.fspath(p)}"] if (p := config.package_cache_dir) else []),
4539+
f"--incremental={config.incremental}",
45404540
*([f"--package={package}" for package in config.tools_tree_packages]),
45414541
*([f"--package-directory={os.fspath(directory)}" for directory in config.tools_tree_package_directories]), # noqa: E501
45424542
*([f"--build-sources={tree}" for tree in config.build_sources]),
4543-
"--build-sources-ephemeral", str(config.build_sources_ephemeral),
4543+
f"--build-sources-ephemeral={config.build_sources_ephemeral}",
45444544
*([f"--prepare-script={os.fspath(script)}" for script in config.tools_tree_prepare_scripts]),
45454545
"--output=tools",
4546-
*(["--source-date-epoch", str(config.source_date_epoch)] if config.source_date_epoch is not None else []), # noqa: E501
4546+
*([f"--source-date-epoch={e}"] if (e := config.source_date_epoch) is not None else []),
45474547
*([f"--environment={k}='{v}'" for k, v in config.environment.items()]),
4548-
*(["--proxy-url", config.proxy_url] if config.proxy_url else []),
4548+
*([f"--proxy-url={config.proxy_url}"] if config.proxy_url else []),
45494549
*([f"--proxy-exclude={host}" for host in config.proxy_exclude]),
4550-
*(["--proxy-peer-certificate", os.fspath(p)] if (p := config.proxy_peer_certificate) else []),
4551-
*(["--proxy-client-certificate", os.fspath(p)] if (p := config.proxy_client_certificate) else []),
4552-
*(["--proxy-client-key", os.fspath(p)] if (p := config.proxy_client_key) else []),
4550+
*([f"--proxy-peer-certificate={os.fspath(p)}"] if (p := config.proxy_peer_certificate) else []),
4551+
*([f"--proxy-client-certificate={os.fspath(p)}"] if (p := config.proxy_client_certificate) else []),
4552+
*([f"--proxy-client-key={os.fspath(p)}"] if (p := config.proxy_client_key) else []),
45534553
] # fmt: skip
45544554

45554555
_, [tools] = parse_config(
@@ -4980,7 +4980,7 @@ def run_verb(args: Args, images: Sequence[Config], *, resources: Path) -> None:
49804980

49814981
if args.verb == Verb.dependencies:
49824982
_, [deps] = parse_config(
4983-
["--directory", "", "--repositories", "", *args.cmdline, "--include=mkosi-tools", "build"],
4983+
["--directory=", "--repositories=", *args.cmdline, "--include=mkosi-tools", "build"],
49844984
resources=resources,
49854985
)
49864986

mkosi/initrd.py

+57-53
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,52 @@ def parse(*, name: str, description: str) -> "KernelInstallContext":
9898
)
9999

100100

101+
def create_parser() -> argparse.ArgumentParser:
102+
parser = argparse.ArgumentParser(
103+
prog="mkosi-initrd",
104+
description="Build initrds or unified kernel images for the current system using mkosi",
105+
allow_abbrev=False,
106+
usage="mkosi-initrd [options...]",
107+
)
108+
parser.add_argument(
109+
"-o",
110+
"--output",
111+
metavar="NAME",
112+
help="Output name",
113+
default="initrd",
114+
)
115+
parser.add_argument(
116+
"--kernel-image",
117+
metavar="KERNEL_IMAGE",
118+
help="Kernel image",
119+
type=Path,
120+
)
121+
parser.add_argument(
122+
"-t",
123+
"--format",
124+
choices=[str(OutputFormat.cpio), str(OutputFormat.uki), str(OutputFormat.directory)],
125+
help="Output format (CPIO archive, UKI or local directory)",
126+
default="cpio",
127+
)
128+
parser.add_argument(
129+
"-g",
130+
"--generic",
131+
help="Build a generic initrd without host-specific kernel modules",
132+
action="store_true",
133+
default=False,
134+
)
135+
parser.add_argument(
136+
"--profile",
137+
choices=InitrdProfile.values(),
138+
help="Which profiles to enable for the initrd",
139+
action="append",
140+
default=[],
141+
)
142+
143+
initrd_common_args(parser)
144+
return parser
145+
146+
101147
def process_crypttab(staging_dir: str) -> list[str]:
102148
cmdline = []
103149

@@ -151,6 +197,7 @@ def initrd_finalize(staging_dir: str, output: str, output_dir: str) -> None:
151197

152198
def initrd_common_args(parser: argparse.ArgumentParser) -> None:
153199
parser.add_argument(
200+
"-k",
154201
"--kernel-version",
155202
metavar="KERNEL_VERSION",
156203
help="Kernel version string",
@@ -210,50 +257,7 @@ def include_system_config(name: str) -> list[str]:
210257
def main() -> None:
211258
log_setup()
212259

213-
parser = argparse.ArgumentParser(
214-
prog="mkosi-initrd",
215-
description="Build initrds or unified kernel images for the current system using mkosi",
216-
allow_abbrev=False,
217-
usage="mkosi-initrd [options...]",
218-
)
219-
parser.add_argument(
220-
"-o",
221-
"--output",
222-
metavar="NAME",
223-
help="Output name",
224-
default="initrd",
225-
)
226-
parser.add_argument(
227-
"--kernel-image",
228-
metavar="KERNEL_IMAGE",
229-
help="Kernel image",
230-
type=Path,
231-
)
232-
parser.add_argument(
233-
"-t",
234-
"--format",
235-
choices=[str(OutputFormat.cpio), str(OutputFormat.uki), str(OutputFormat.directory)],
236-
help="Output format (CPIO archive, UKI or local directory)",
237-
default="cpio",
238-
)
239-
parser.add_argument(
240-
"-g",
241-
"--generic",
242-
help="Build a generic initrd without host-specific kernel modules",
243-
action="store_true",
244-
default=False,
245-
)
246-
parser.add_argument(
247-
"--profile",
248-
choices=InitrdProfile.values(),
249-
help="Which profiles to enable for the initrd",
250-
action="append",
251-
default=[],
252-
)
253-
254-
initrd_common_args(parser)
255-
256-
args = parser.parse_args()
260+
args = create_parser().parse_args()
257261

258262
if args.show_documentation:
259263
with resource_path(mkosi.resources) as r:
@@ -267,15 +271,15 @@ def main() -> None:
267271
cmdline: list[PathString] = [
268272
"mkosi",
269273
"--force",
270-
"--directory", "",
271-
"--format", args.format,
272-
"--output", args.output,
273-
"--output-directory", staging_dir,
274-
"--extra-tree", f"/usr/lib/modules/{args.kernel_version}:/usr/lib/modules/{args.kernel_version}",
274+
"--directory=",
275+
f"--format={args.format}",
276+
f"--output={args.output}",
277+
f"--output-directory={staging_dir}",
278+
f"--extra-tree=/usr/lib/modules/{args.kernel_version}:/usr/lib/modules/{args.kernel_version}",
275279
"--extra-tree=/usr/lib/firmware:/usr/lib/firmware",
276280
"--remove-files=/usr/lib/firmware/*-ucode",
277281
"--kernel-modules-exclude=.*",
278-
"--build-sources", "",
282+
"--build-sources=",
279283
"--include=mkosi-initrd",
280284
] # fmt: skip
281285

@@ -289,8 +293,8 @@ def main() -> None:
289293

290294
if args.kernel_image:
291295
cmdline += [
292-
"--extra-tree", f"{args.kernel_image}:/usr/lib/modules/{args.kernel_version}/vmlinuz",
293-
] # fmt: skip
296+
f"--extra-tree={args.kernel_image}:/usr/lib/modules/{args.kernel_version}/vmlinuz",
297+
]
294298

295299
if args.debug:
296300
cmdline += ["--debug"]
@@ -343,7 +347,7 @@ def main() -> None:
343347
dirs_exist_ok=True,
344348
)
345349

346-
cmdline += ["--sandbox-tree", sandbox_tree]
350+
cmdline += [f"--sandbox-tree={sandbox_tree}"]
347351

348352
cmdline += process_crypttab(staging_dir)
349353

mkosi/resources/man/mkosi-initrd.1.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ initrds and Unified Kernel Images for the current running system.
1818

1919
# OPTIONS
2020

21-
`--kernel-version=`
21+
`--kernel-version=`, `-k`
2222
: Kernel version where to look for the kernel modules to include. Defaults to
2323
the kernel version of the running system (`uname -r`).
2424

0 commit comments

Comments
 (0)