Message ID | 20240818090346.947914-3-thomas.petazzoni@bootlin.com |
---|---|
State | Accepted |
Headers | show |
Series | Misc utils/genrandconfig improvements | expand |
Thomas, All, On 2024-08-18 11:03 +0200, Thomas Petazzoni via buildroot spake thusly: > Now that the support for generating a fully random configuration has > been well-tested, the whole mechanism based on a toolchain CSV isn't > really useful anymore, so let's drop it to simplify the logic. As discussed on IRC, the autobuilder code still uses --{,no-}toolchains-csv, so dopping those flags would instaly break the autobuilders. So, I've kept them and docuemnted them to be legacy. Applied to master, thanks. Regards, Yann E. MORIN. > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> > --- > utils/genrandconfig | 99 +-------------------------------------------- > 1 file changed, 2 insertions(+), 97 deletions(-) > > diff --git a/utils/genrandconfig b/utils/genrandconfig > index cefc3dca12..ee094824fd 100755 > --- a/utils/genrandconfig > +++ b/utils/genrandconfig > @@ -20,7 +20,6 @@ > > from binascii import hexlify > import asyncio > -import csv > import os > from random import randint > import sys > @@ -100,73 +99,6 @@ class SystemInfo: > return not missing_requirements > > > -def get_toolchain_configs(toolchains_csv, buildrootdir): > - """Fetch and return the possible toolchain configurations > - > - This function returns an array of toolchain configurations. Each > - toolchain configuration is itself an array of lines of the defconfig. > - """ > - > - with open(toolchains_csv) as r: > - # filter empty lines and comments > - lines = [t for t in r.readlines() if len(t.strip()) > 0 and t[0] != '#'] > - toolchains = lines > - configs = [] > - > - (_, _, _, _, hostarch) = os.uname() > - # ~2015 distros report x86 when on a 32bit install > - if hostarch == 'i686' or hostarch == 'i386' or hostarch == 'x86': > - hostarch = 'x86' > - > - for row in csv.reader(toolchains): > - config = {} > - configfile = row[0] > - config_hostarch = row[1] > - keep = False > - > - # Keep all toolchain configs that work regardless of the host > - # architecture > - if config_hostarch == "any": > - keep = True > - > - # Keep all toolchain configs that can work on the current host > - # architecture > - if hostarch == config_hostarch: > - keep = True > - > - # Assume that x86 32 bits toolchains work on x86_64 build > - # machines > - if hostarch == 'x86_64' and config_hostarch == "x86": > - keep = True > - > - if not keep: > - continue > - > - if not os.path.isabs(configfile): > - configfile = os.path.join(buildrootdir, configfile) > - > - with open(configfile) as r: > - config = r.readlines() > - configs.append(config) > - return configs > - > - > -async def is_toolchain_usable(configfile, config): > - """Check if the toolchain is actually usable.""" > - > - with open(configfile) as configf: > - configlines = configf.readlines() > - > - # Check that the toolchain configuration is still present > - for toolchainline in config: > - if toolchainline not in configlines: > - print("WARN: toolchain can't be used", file=sys.stderr) > - print(" Missing: %s" % toolchainline.strip(), file=sys.stderr) > - return False > - > - return True > - > - > async def fixup_config(sysinfo, configfile): > """Finalize the configuration and reject any problematic combinations > > @@ -581,24 +513,11 @@ async def fixup_config(sysinfo, configfile): > > async def gen_config(args): > """Generate a new random configuration > - > - This function generates the configuration, by choosing a random > - toolchain configuration and then generating a random selection of > - packages. > """ > > sysinfo = SystemInfo() > > - if args.toolchains_csv: > - # Select a random toolchain configuration > - configs = get_toolchain_configs(args.toolchains_csv, args.buildrootdir) > - > - i = randint(0, len(configs) - 1) > - toolchainconfig = configs[i] > - else: > - toolchainconfig = [] > - > - configlines = list(toolchainconfig) > + configlines = list() > > # Combine with the minimal configuration > minimalconfigfile = os.path.join(args.buildrootdir, > @@ -658,9 +577,6 @@ async def gen_config(args): > if ret: > return ret > > - if not await is_toolchain_usable(configfile, toolchainconfig): > - return 2 > - > # Now, generate the random selection of packages, and fixup > # things if needed. > # Safe-guard, in case we can not quickly come to a valid > @@ -676,7 +592,7 @@ async def gen_config(args): > "make", "O=%s" % args.outputdir, "-C", args.buildrootdir, > "KCONFIG_SEED=0x%s" % hexlify(os.urandom(4)).decode("ascii").upper(), > "KCONFIG_PROBABILITY=%d" % randint(1, 20), > - "randpackageconfig" if args.toolchains_csv else "randconfig") > + "randconfig") > ret = await proc.wait() > if ret: > return ret > @@ -711,17 +627,6 @@ if __name__ == '__main__': > help="Buildroot directory (relative to current directory)", > type=str, default='.') > > - toolchains_csv = parser.add_mutually_exclusive_group(required=False) > - toolchains_csv.add_argument("--toolchains-csv", > - dest="toolchains_csv", > - help="Path of the toolchain configuration file", > - type=str) > - toolchains_csv.add_argument("--no-toolchains-csv", > - dest="toolchains_csv", > - help="Generate random toolchain configuration", > - action='store_false') > - parser.set_defaults(toolchains_csv="support/config-fragments/autobuild/toolchain-configs.csv") > - > args = parser.parse_args() > > # We need the absolute path to use with O=, because the relative > -- > 2.46.0 > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
diff --git a/utils/genrandconfig b/utils/genrandconfig index cefc3dca12..ee094824fd 100755 --- a/utils/genrandconfig +++ b/utils/genrandconfig @@ -20,7 +20,6 @@ from binascii import hexlify import asyncio -import csv import os from random import randint import sys @@ -100,73 +99,6 @@ class SystemInfo: return not missing_requirements -def get_toolchain_configs(toolchains_csv, buildrootdir): - """Fetch and return the possible toolchain configurations - - This function returns an array of toolchain configurations. Each - toolchain configuration is itself an array of lines of the defconfig. - """ - - with open(toolchains_csv) as r: - # filter empty lines and comments - lines = [t for t in r.readlines() if len(t.strip()) > 0 and t[0] != '#'] - toolchains = lines - configs = [] - - (_, _, _, _, hostarch) = os.uname() - # ~2015 distros report x86 when on a 32bit install - if hostarch == 'i686' or hostarch == 'i386' or hostarch == 'x86': - hostarch = 'x86' - - for row in csv.reader(toolchains): - config = {} - configfile = row[0] - config_hostarch = row[1] - keep = False - - # Keep all toolchain configs that work regardless of the host - # architecture - if config_hostarch == "any": - keep = True - - # Keep all toolchain configs that can work on the current host - # architecture - if hostarch == config_hostarch: - keep = True - - # Assume that x86 32 bits toolchains work on x86_64 build - # machines - if hostarch == 'x86_64' and config_hostarch == "x86": - keep = True - - if not keep: - continue - - if not os.path.isabs(configfile): - configfile = os.path.join(buildrootdir, configfile) - - with open(configfile) as r: - config = r.readlines() - configs.append(config) - return configs - - -async def is_toolchain_usable(configfile, config): - """Check if the toolchain is actually usable.""" - - with open(configfile) as configf: - configlines = configf.readlines() - - # Check that the toolchain configuration is still present - for toolchainline in config: - if toolchainline not in configlines: - print("WARN: toolchain can't be used", file=sys.stderr) - print(" Missing: %s" % toolchainline.strip(), file=sys.stderr) - return False - - return True - - async def fixup_config(sysinfo, configfile): """Finalize the configuration and reject any problematic combinations @@ -581,24 +513,11 @@ async def fixup_config(sysinfo, configfile): async def gen_config(args): """Generate a new random configuration - - This function generates the configuration, by choosing a random - toolchain configuration and then generating a random selection of - packages. """ sysinfo = SystemInfo() - if args.toolchains_csv: - # Select a random toolchain configuration - configs = get_toolchain_configs(args.toolchains_csv, args.buildrootdir) - - i = randint(0, len(configs) - 1) - toolchainconfig = configs[i] - else: - toolchainconfig = [] - - configlines = list(toolchainconfig) + configlines = list() # Combine with the minimal configuration minimalconfigfile = os.path.join(args.buildrootdir, @@ -658,9 +577,6 @@ async def gen_config(args): if ret: return ret - if not await is_toolchain_usable(configfile, toolchainconfig): - return 2 - # Now, generate the random selection of packages, and fixup # things if needed. # Safe-guard, in case we can not quickly come to a valid @@ -676,7 +592,7 @@ async def gen_config(args): "make", "O=%s" % args.outputdir, "-C", args.buildrootdir, "KCONFIG_SEED=0x%s" % hexlify(os.urandom(4)).decode("ascii").upper(), "KCONFIG_PROBABILITY=%d" % randint(1, 20), - "randpackageconfig" if args.toolchains_csv else "randconfig") + "randconfig") ret = await proc.wait() if ret: return ret @@ -711,17 +627,6 @@ if __name__ == '__main__': help="Buildroot directory (relative to current directory)", type=str, default='.') - toolchains_csv = parser.add_mutually_exclusive_group(required=False) - toolchains_csv.add_argument("--toolchains-csv", - dest="toolchains_csv", - help="Path of the toolchain configuration file", - type=str) - toolchains_csv.add_argument("--no-toolchains-csv", - dest="toolchains_csv", - help="Generate random toolchain configuration", - action='store_false') - parser.set_defaults(toolchains_csv="support/config-fragments/autobuild/toolchain-configs.csv") - args = parser.parse_args() # We need the absolute path to use with O=, because the relative
Now that the support for generating a fully random configuration has been well-tested, the whole mechanism based on a toolchain CSV isn't really useful anymore, so let's drop it to simplify the logic. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> --- utils/genrandconfig | 99 +-------------------------------------------- 1 file changed, 2 insertions(+), 97 deletions(-)