From 478fee2876ecf9c1bfc6ff66ef3f261a2565cf5f Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Mon, 12 Aug 2024 16:48:31 +0200 Subject: [PATCH] util: use `Libc.memfd_create()` when `os.memfd_create()` is missing This provide compat for pyton versions below 3.8. This can be removed (together with the previous commit) once we are at python3.8+. --- osbuild/util/jsoncomm.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/osbuild/util/jsoncomm.py b/osbuild/util/jsoncomm.py index 7180b24f..d9d49019 100644 --- a/osbuild/util/jsoncomm.py +++ b/osbuild/util/jsoncomm.py @@ -13,12 +13,20 @@ import os import socket from typing import Any, List, Optional +from .linux import Libc from .types import PathLike @contextlib.contextmanager def memfd(name): - fd = os.memfd_create(name, 0) + if hasattr(os, "memfd_create"): + fd = os.memfd_create(name) + else: + # we can remove this "if/else" once we are at python3.8+ + # and just use "os.memfd_create()" + libc = Libc.default() + fd = libc.memfd_create(name) + try: yield fd finally: