123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #!/usr/bin/env python3
- #
- # Conversion script to rename variables to versions with improved terminology.
- # Also highlights potentially problematic language and removed variables.
- #
- # Copyright (C) 2021 Richard Purdie
- # Copyright (C) 2022 Wind River Systems, Inc.
- #
- # SPDX-License-Identifier: GPL-2.0-only
- #
- import re
- import os
- import sys
- import tempfile
- import shutil
- import mimetypes
- if len(sys.argv) < 2:
- print("Please specify a directory to run the conversion script against.")
- sys.exit(1)
- renames = {
- "BB_ENV_WHITELIST" : "BB_ENV_PASSTHROUGH",
- "BB_ENV_EXTRAWHITE" : "BB_ENV_PASSTHROUGH_ADDITIONS",
- "BB_HASHCONFIG_WHITELIST" : "BB_HASHCONFIG_IGNORE_VARS",
- "BB_SETSCENE_ENFORCE_WHITELIST" : "BB_SETSCENE_ENFORCE_IGNORE_TASKS",
- "BB_HASHBASE_WHITELIST" : "BB_BASEHASH_IGNORE_VARS",
- "BB_HASHTASK_WHITELIST" : "BB_TASKHASH_IGNORE_TASKS",
- "CVE_CHECK_PN_WHITELIST" : "CVE_CHECK_SKIP_RECIPE",
- "CVE_CHECK_WHITELIST" : "CVE_CHECK_IGNORE",
- "MULTI_PROVIDER_WHITELIST" : "BB_MULTI_PROVIDER_ALLOWED",
- "PNBLACKLIST" : "SKIP_RECIPE",
- "SDK_LOCAL_CONF_BLACKLIST" : "ESDK_LOCALCONF_REMOVE",
- "SDK_LOCAL_CONF_WHITELIST" : "ESDK_LOCALCONF_ALLOW",
- "SDK_INHERIT_BLACKLIST" : "ESDK_CLASS_INHERIT_DISABLE",
- "SSTATE_DUPWHITELIST" : "SSTATE_ALLOW_OVERLAP_FILES",
- "SYSROOT_DIRS_BLACKLIST" : "SYSROOT_DIRS_IGNORE",
- "UNKNOWN_CONFIGURE_WHITELIST" : "UNKNOWN_CONFIGURE_OPT_IGNORE",
- "ICECC_USER_CLASS_BL" : "ICECC_CLASS_DISABLE",
- "ICECC_SYSTEM_CLASS_BL" : "ICECC_CLASS_DISABLE",
- "ICECC_USER_PACKAGE_WL" : "ICECC_RECIPE_ENABLE",
- "ICECC_USER_PACKAGE_BL" : "ICECC_RECIPE_DISABLE",
- "ICECC_SYSTEM_PACKAGE_BL" : "ICECC_RECIPE_DISABLE",
- "LICENSE_FLAGS_WHITELIST" : "LICENSE_FLAGS_ACCEPTED",
- }
- removed_list = [
- "BB_STAMP_WHITELIST",
- "BB_STAMP_POLICY",
- "INHERIT_BLACKLIST",
- "TUNEABI_WHITELIST",
- ]
- context_check_list = [
- "blacklist",
- "whitelist",
- "abort",
- ]
- def processfile(fn):
- print("processing file '%s'" % fn)
- try:
- fh, abs_path = tempfile.mkstemp()
- modified = False
- with os.fdopen(fh, 'w') as new_file:
- with open(fn, "r") as old_file:
- lineno = 0
- for line in old_file:
- lineno += 1
- if not line or "BB_RENAMED_VARIABLE" in line:
- continue
- # Do the renames
- for old_name, new_name in renames.items():
- if old_name in line:
- line = line.replace(old_name, new_name)
- modified = True
- # Find removed names
- for removed_name in removed_list:
- if removed_name in line:
- print("%s needs further work at line %s because %s has been deprecated" % (fn, lineno, removed_name))
- for check_word in context_check_list:
- if re.search(check_word, line, re.IGNORECASE):
- print("%s needs further work at line %s since it contains %s"% (fn, lineno, check_word))
- new_file.write(line)
- new_file.close()
- if modified:
- print("*** Modified file '%s'" % (fn))
- shutil.copymode(fn, abs_path)
- os.remove(fn)
- shutil.move(abs_path, fn)
- except UnicodeDecodeError:
- pass
- ourname = os.path.basename(sys.argv[0])
- ourversion = "0.1"
- if os.path.isfile(sys.argv[1]):
- processfile(sys.argv[1])
- sys.exit(0)
- for targetdir in sys.argv[1:]:
- print("processing directory '%s'" % targetdir)
- for root, dirs, files in os.walk(targetdir):
- for name in files:
- if name == ourname:
- continue
- fn = os.path.join(root, name)
- if os.path.islink(fn):
- continue
- if "ChangeLog" in fn or "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff") or fn.endswith(".orig"):
- continue
- processfile(fn)
- print("All files processed with version %s" % ourversion)
|