- templates: Added iconv command to convert from UTF-8 to another encoding - Backported DracutChroot dirs umount patch from upstream Without that patch pungi fails on building an EL9 image - lorax-templates-rhel requirement replaced with lorax-templates-msvspherei9-beta changed/i9-beta/lorax-34.9.25-1.el9.inferit
parent
a8fc3b26a3
commit
cfe6b98b91
@ -0,0 +1,34 @@
|
|||||||
|
From f04d4c94d77f644d4a9cfe25d708789c4334c25a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eugene Zamriy <eugene@zamriy.info>
|
||||||
|
Date: Thu, 6 Apr 2023 21:16:26 +0300
|
||||||
|
Subject: [PATCH 1/3] Backport dracut chroot umount fix
|
||||||
|
|
||||||
|
---
|
||||||
|
src/pylorax/imgutils.py | 8 +++++---
|
||||||
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/pylorax/imgutils.py b/src/pylorax/imgutils.py
|
||||||
|
index d713e4c..80e8c2f 100644
|
||||||
|
--- a/src/pylorax/imgutils.py
|
||||||
|
+++ b/src/pylorax/imgutils.py
|
||||||
|
@@ -498,12 +498,14 @@ class DracutChroot(object):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_value, tracebk):
|
||||||
|
- runcmd(["umount", self.root + "/proc" ])
|
||||||
|
- runcmd(["umount", self.root + "/dev" ])
|
||||||
|
+ umount(self.root + '/proc', delete=False)
|
||||||
|
+ umount(self.root + '/dev', delete=False)
|
||||||
|
|
||||||
|
# cleanup bind mounts
|
||||||
|
for _, d in self.bind:
|
||||||
|
- runcmd(["umount", self.root + d ])
|
||||||
|
+ # In case parallel building of two or more images
|
||||||
|
+ # some mounts in /var/tmp/lorax can be busy at the moment of unmounting
|
||||||
|
+ umount(self.root + d, maxretry=200, retrysleep=5, delete=False)
|
||||||
|
|
||||||
|
def Run(self, args):
|
||||||
|
runcmd(["dracut"] + args, root=self.root)
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From de825e84964d0145c46d77433cb08ee8c4640843 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eugene Zamriy <evgeniy.zamriy@softline.com>
|
||||||
|
Date: Wed, 26 Jul 2023 22:45:32 +0300
|
||||||
|
Subject: [PATCH 2/3] Fix replace command utf8 handling
|
||||||
|
|
||||||
|
This change allows using non-latin UTF-8 symbols in files modified
|
||||||
|
from Lorax templates using the "replace" command.
|
||||||
|
|
||||||
|
Note: fileinput.input doesn't support encoding argument in the
|
||||||
|
in-place mode, so we replaced it with StringIO.
|
||||||
|
---
|
||||||
|
src/pylorax/sysutils.py | 15 +++++++--------
|
||||||
|
1 file changed, 7 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/pylorax/sysutils.py b/src/pylorax/sysutils.py
|
||||||
|
index 35f8b0f..81dc20a 100644
|
||||||
|
--- a/src/pylorax/sysutils.py
|
||||||
|
+++ b/src/pylorax/sysutils.py
|
||||||
|
@@ -25,7 +25,7 @@ __all__ = ["joinpaths", "touch", "replace", "chown_", "chmod_", "remove",
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
-import fileinput
|
||||||
|
+import io
|
||||||
|
import pwd
|
||||||
|
import grp
|
||||||
|
import glob
|
||||||
|
@@ -50,14 +50,13 @@ def touch(fname):
|
||||||
|
|
||||||
|
|
||||||
|
def replace(fname, find, sub):
|
||||||
|
- fin = fileinput.input(fname, inplace=1)
|
||||||
|
pattern = re.compile(find)
|
||||||
|
-
|
||||||
|
- for line in fin:
|
||||||
|
- line = pattern.sub(sub, line)
|
||||||
|
- sys.stdout.write(line)
|
||||||
|
-
|
||||||
|
- fin.close()
|
||||||
|
+ with open(fname, "r", encoding="utf-8") as fd:
|
||||||
|
+ fin = io.StringIO(fd.read())
|
||||||
|
+ with open(fname, "w", encoding="utf-8") as fd:
|
||||||
|
+ for line in fin:
|
||||||
|
+ line = pattern.sub(sub, line)
|
||||||
|
+ fd.write(line)
|
||||||
|
|
||||||
|
|
||||||
|
def chown_(path, user=None, group=None, recursive=False):
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -0,0 +1,41 @@
|
|||||||
|
From 9b34c5ad852edd1eb68d78363e3be12ac49b44ce Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eugene Zamriy <evgeniy.zamriy@softline.com>
|
||||||
|
Date: Wed, 26 Jul 2023 22:55:04 +0300
|
||||||
|
Subject: [PATCH 3/3] Add iconv template command
|
||||||
|
|
||||||
|
Adds the "iconv" template command that converts file(s) from UTF-8
|
||||||
|
to a specified encoding. This change was required to add Russian
|
||||||
|
localization to the BIOS mode bootloader.
|
||||||
|
---
|
||||||
|
src/pylorax/ltmpl.py | 15 +++++++++++++++
|
||||||
|
1 file changed, 15 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/pylorax/ltmpl.py b/src/pylorax/ltmpl.py
|
||||||
|
index 36e09e9..7c5b56f 100644
|
||||||
|
--- a/src/pylorax/ltmpl.py
|
||||||
|
+++ b/src/pylorax/ltmpl.py
|
||||||
|
@@ -273,6 +273,21 @@ class LoraxTemplateRunner(TemplateRunner):
|
||||||
|
f.write("\n".join(sorted(debug_pkgs)))
|
||||||
|
f.write("\n")
|
||||||
|
|
||||||
|
+ def iconv(self, encoding, *fileglobs):
|
||||||
|
+ '''
|
||||||
|
+ iconv ENCODING [FILEGLOB ...]
|
||||||
|
+ Convert given files from UTF-8 to a specified encoding.
|
||||||
|
+
|
||||||
|
+ Examples:
|
||||||
|
+ iconv 'cp866' ${BOOTDIR}/isolinux.cfg
|
||||||
|
+ '''
|
||||||
|
+ for g in fileglobs:
|
||||||
|
+ for f in rglob(self._out(g)):
|
||||||
|
+ with open(f, "r", encoding="utf-8") as fd:
|
||||||
|
+ content = fd.read()
|
||||||
|
+ with open(f, "wb") as fd:
|
||||||
|
+ fd.write(content.encode(encoding))
|
||||||
|
+
|
||||||
|
def install(self, srcglob, dest):
|
||||||
|
'''
|
||||||
|
install SRC DEST
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
Loading…
Reference in new issue