From ac4c8f5b8ab57563cc350482b75a32a55871d58c Mon Sep 17 00:00:00 2001 From: Andreas Wacknitz <A.Wacknitz@gmx.de> Date: Fri, 05 Apr 2024 22:31:45 +0200 Subject: [PATCH] nasm: update to 2.16.02 --- tools/userland-component | 90 ++++++++++++++++++++++++++++++++++++--------- 1 files changed, 72 insertions(+), 18 deletions(-) diff --git a/tools/userland-component b/tools/userland-component index c1c555b..3d1afa6 100755 --- a/tools/userland-component +++ b/tools/userland-component @@ -1,4 +1,4 @@ -#!/usr/bin/python3.5 +#!/usr/bin/python3.9 # # This file and its contents are supplied under the terms of the @@ -44,13 +44,14 @@ # variable $(WS_RULES). Do the same for other variables. def refactor000(mk): for i in iter(mk.includes): - r = re.match(r"^\$\(WS_TOP\)\/(.*)\/(.*).mk", i.str[0]) + r = re.match(r"^\$\(WS_TOP\)\/(.*)\/(.*).mk", i.value()) if r is not None: subdir = r.group(1) mkfile = r.group(2) - print("000: Fix include " + i.str[0]) + print("000: Fix include " + i.value()) i.set_value(os.path.join(MK.directory_variable(subdir), mkfile+".mk")) mk.contents[i.line()] = i.include_line() + mk.update() #----------------------------------------------------------------------------- @@ -59,9 +60,10 @@ # 1. infer the build system and set the BUILD_STYLE. # 2. set the BUILD_BITS from the existing targets. # 3. erase default target and keep the custom ones. +# 4. fix known target typos def refactor001(mk): kw = Keywords() - if mk.has_variable('BUILD_STYLE'): + if mk.has_variable('BUILD_STYLE') or mk.has_mk_include('common'): return # Build style build_style = None @@ -84,38 +86,49 @@ else: print("001: Setting make bits to '" + mk_bits + "'") # Check targets - mk_bits_32_no_arch = False + new_mk_bits = None new_targets = {} for t, u in iter(mk.targets.items()): # We do not know how to handle target with defined steps yet if len(u.str) > 1: continue + # Amend typos + if t == 'test' and u.value() == MK.value('NO_TEST'): + print("001: Fix typo $(NO_TEST) -> $(NO_TESTS)") + u.set_value(MK.value('NO_TESTS')) # Process target found = False for v in kw.targets[t]: v = MK.value(v.replace(MK.value("MK_BITS"), mk_bits)) # If the target dependency is one of the default values - if u.str[0] == v: + if u.value() == v: found = True w = MK.target_value(t, mk_bits) + #print(w) if v == w: print("001: Use default target '"+t+"'") u.str = None else: - print("001: Define target '"+t+"': "+u.str[0]) + print("001: Define target '"+t+"': "+u.value()) new_targets[t] = u break if not found: - # Some Python/Perl makefiles actually use NO_ARCH target with MK_BITS=32 - if mk_bits == '32' and u.str[0] == MK.value(t.upper()+"_NO_ARCH"): - if not mk_bits_32_no_arch: - print("001: Changing make bits from '32' to 'NO_ARCH'") - mk_bits_32_no_arch = True - u.str = None + # Some Python/Perl makefiles actually use NO_ARCH target with MK_BITS=32, or BITS was not set + if mk_bits == '32' or mk_bits == '64': + ok_bits = ( 'NO_ARCH', '64', '32_and_64', '64_and_32' ) + for b in ok_bits: + if u.value() == MK.target_value(t, b): + if not new_mk_bits: + new_mk_bits = b + elif b != new_mk_bits: + raise ValueError("001: Inconsistent target '"+t+"': "+u.value()) + u.str = None + break else: - raise ValueError("001: Inconsistent target '"+t+"': "+u.str[0]) - if mk_bits_32_no_arch: - mk_bits = "NO_ARCH" + raise ValueError("001: Unknown target '"+t+"' bitness: "+u.value()) + if new_mk_bits: + print("001: Changing make bits from "+mk_bits+" to '"+new_mk_bits+"'") + mk_bits = new_mk_bits # Collect items rem_lines = set() rem_includes = [ MK.makefile_path("prep"), MK.makefile_path("ips")] @@ -127,7 +140,7 @@ if i.value() == MK.makefile_path(build_style): i.set_value(MK.makefile_path("common")) include_common_mk = i - elif re.match(r".*/shared-macros.mk$", i.str[0]): + elif re.match(r".*/shared-macros.mk$", i.value()): include_shared_mk = i new_includes.append(i) else: @@ -154,7 +167,7 @@ # Write new targets for t in ["build", "install", "test"]: if t in new_targets.keys(): - contents.append(Keywords.target_variable_assignment(t, new_targets[t].str[0])) + contents.append(Keywords.target_variable_assignment(t, new_targets[t].value())) rem_lines.add(new_targets[t].line()) # Add common include contents.append(include_common_mk.include_line()) @@ -178,6 +191,44 @@ mk.update() +# Update rules +#----------------------------------------------------------------------------- +# U000: Update to default OpenSSL +# If openssl is a dependency and the openssl package version is not set +# 1. update the dependency to the next openssl X.Y +# 2. add macros USE_OPENSSLXY to the makefile +def update000(mk): + curr_version = '1.0' + next_version = '1.1' + curr_macro = 'USE_OPENSSL'+curr_version.replace('.','') + next_macro = 'USE_OPENSSL'+next_version.replace('.','') + curr_openssl_pkg = 'library/security/openssl' + next_openssl_pkg = 'library/security/openssl-11' + reqs = mk.required_packages() + has_openssl_deps=False + for p in reqs.split(): + if p == curr_openssl_pkg: + has_openssl_deps=True + if not has_openssl_deps: + return + # Check whether current version is enforced + for line in iter(mk.contents): + if re.match("^"+curr_macro+"[\s]*=[\s]*yes", line): + return + print("U000: update to next openssl") + # Replace dependency + for idx, line in enumerate(mk.contents): + if re.match(r"REQUIRED_PACKAGES(.*)"+curr_openssl_pkg+"[\s]*$", line): + mk.contents[idx] = line.replace(curr_openssl_pkg, next_openssl_pkg) + break + # Add macro before shared-macros + include_shared_macros_mk = mk.get_mk_include('shared-macros') + if not include_shared_macros_mk: + raise ValueError('include shared_macros.mk not found') + mk.set_variable(next_macro, 'yes', include_shared_macros_mk.line()) + mk.update() + + #----------------------------------------------------------------------------- # Update component makefile for revision or version bump def update_component(path, version, verbose): @@ -186,6 +237,9 @@ if version is None: return mk = MK(path) + # Apply default update rules + update000(mk) + # Check current version if not mk.has_variable('COMPONENT_VERSION'): raise ValueError('COMPONENT_VERSION not found') newvers = str(version) -- Gitblit v1.9.3