From 6a5ea3217f4517958e4901ca6b141c2dec53ccb6 Mon Sep 17 00:00:00 2001
From: Marcel Telka <marcel@telka.sk>
Date: Tue, 09 Apr 2024 21:16:29 +0200
Subject: [PATCH] Add email_validator Python project

---
 tools/userland-mangler |   33 ++++++++++++++++++++++++---------
 1 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/tools/userland-mangler b/tools/userland-mangler
index 5b961c4..8cdbbe3 100755
--- a/tools/userland-mangler
+++ b/tools/userland-mangler
@@ -1,4 +1,4 @@
-#!/usr/bin/python3.5
+#!/usr/bin/python3.9
 #
 # CDDL HEADER START
 #
@@ -33,6 +33,7 @@
 import re
 import subprocess
 import shutil
+import stat
 
 
 import pkg.fmri
@@ -202,7 +203,7 @@
 #
 def mangle_elf(manifest, action, src, dest):
         strip_elf_runpath = action.attrs.pop('mangler.elf.strip_runpath', 'true')
-        if strip_elf_runpath is 'false':
+        if strip_elf_runpath == 'false':
                 return
 
         #
@@ -272,6 +273,9 @@
                                 # package instead of the new version.
                                 shutil.copy2(src, dest)
 
+                                # Make sure we do have write permission before we try to modify the file
+                                os.chmod(dest, os.stat(dest).st_mode | stat.S_IWUSR)
+
                                 # Mangle the copy by deleting the tag if there is nothing left to keep
                                 # or replacing the value if there is something left.
                                 elfcmd = "dyn:delete %s" % element.lower()
@@ -290,14 +294,21 @@
 #
 def mangle_cddl(manifest, action, text):
         strip_cddl = action.attrs.pop('mangler.strip_cddl', 'false')
-        if strip_cddl is 'false':
+        if strip_cddl == 'false':
                 return text
         cddl_re = re.compile('^[^\n]*CDDL HEADER START.+CDDL HEADER END[^\n]*$',
                              re.MULTILINE|re.DOTALL)
         return cddl_re.sub('', text)
 
-def mangle_path(manifest, action, src, dest):
+def do_ctfconvert(converter, file):
+        args = [converter, '-i', '-m', '-k', file]
+        print(*args, file=sys.stderr)
+        subprocess.call(args)
+
+def mangle_path(manifest, action, src, dest, ctfconvert):
         if elf.is_elf_object(src):
+                if ctfconvert is not None:
+                        do_ctfconvert(ctfconvert, src)
                 mangle_elf(manifest, action, src, dest)
         else:
                 # a 'text' document (script, man page, config file, ...
@@ -325,7 +336,7 @@
 #
 # mangler.bypass = (true|false)
 #
-def mangle_paths(manifest, search_paths, destination):
+def mangle_paths(manifest, search_paths, destination, ctfconvert):
         for action in manifest.gen_actions_by_type("file"):
                 bypass = action.attrs.pop('mangler.bypass', 'false').lower()
                 if bypass == 'true':
@@ -347,7 +358,8 @@
                         if directory != destination:
                                 src = os.path.join(directory, path)
                                 if os.path.isfile(src):
-                                        mangle_path(manifest, action, src, dest)
+                                        mangle_path(manifest, action,
+                                                    src, dest, ctfconvert)
                                         break
 
 def load_manifest(manifest_file):
@@ -368,10 +380,11 @@
         search_paths = []
         destination = None
         manifests = []
+        ctfconvert = None
 
         try:
-                opts, args = getopt.getopt(sys.argv[1:], "D:d:m:",
-                        ["destination=", "search-directory=", "manifest="])
+                opts, args = getopt.getopt(sys.argv[1:], "c:D:d:m:",
+                        ["ctf=", "destination=", "search-directory=", "manifest="])
         except getopt.GetoptError as err:
                 print(str(err))
                 usage()
@@ -389,6 +402,8 @@
                                 usage()
                         else:
                                 manifests.append(manifest)
+                elif opt in [ "-c", "--ctf" ]:
+                        ctfconvert = arg
                 else:
                         usage()
 
@@ -396,7 +411,7 @@
                 usage()
 
         for manifest in manifests:
-                mangle_paths(manifest, search_paths, destination)
+                mangle_paths(manifest, search_paths, destination, ctfconvert)
                 print(manifest)
 
         sys.exit(0)

--
Gitblit v1.9.3