summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xutils/genrandconfig71
1 files changed, 22 insertions, 49 deletions
diff --git a/utils/genrandconfig b/utils/genrandconfig
index 79916fef2c..a35c86f65e 100755
--- a/utils/genrandconfig
+++ b/utils/genrandconfig
@@ -26,7 +26,6 @@ import os
from random import randint
import subprocess
import sys
-from time import localtime, strftime
from distutils.version import StrictVersion
import platform
@@ -48,12 +47,6 @@ else:
return e
-def log_write(logf, msg):
- logf.write("[%s] %s\n" % (strftime("%a, %d %b %Y %H:%M:%S", localtime()),
- msg))
- logf.flush()
-
-
class SystemInfo:
DEFAULT_NEEDED_PROGS = ["make", "git", "gcc", "timeout"]
DEFAULT_OPTIONAL_PROGS = ["bzr", "java", "javac", "jar"]
@@ -180,6 +173,8 @@ def is_toolchain_usable(outputdir, config):
# 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
# The latest Linaro toolchains on x86-64 hosts requires glibc
@@ -191,7 +186,7 @@ def is_toolchain_usable(outputdir, config):
ldd_version_output = subprocess.check_output(['ldd', '--version'])
glibc_version = ldd_version_output.splitlines()[0].split()[-1]
if StrictVersion('2.14') > StrictVersion(glibc_version):
- log_write(log, "WARN: ignoring the Linaro ARM toolchains because too old host glibc")
+ print("WARN: ignoring the Linaro ARM toolchains because too old host glibc", file=sys.stderr)
return False
return True
@@ -342,13 +337,8 @@ def gen_config(args):
outputdir = os.path.abspath(os.path.join(idir, "output"))
srcdir = os.path.join(idir, "buildroot")
- log_write(args.log, "INFO: generate the configuration")
-
# Select a random toolchain configuration
- try:
- configs = get_toolchain_configs(args.toolchains_url)
- except Exception:
- return -1
+ configs = get_toolchain_configs(args.toolchains_url)
i = randint(0, len(configs) - 1)
config = configs[i]
@@ -374,17 +364,11 @@ def gen_config(args):
with open(os.path.join(outputdir, ".config"), "w+") as configf:
configf.writelines(configlines)
- devnull = open(os.devnull, "w")
-
- ret = subprocess.call(["make", "O=%s" % outputdir, "-C", srcdir,
- "olddefconfig"],
- stdout=devnull, stderr=devnull)
- if ret != 0:
- log_write(args.log, "ERROR: cannot oldconfig")
- return -1
+ subprocess.check_call(["make", "O=%s" % outputdir, "-C", srcdir,
+ "olddefconfig"])
if not is_toolchain_usable(outputdir, config):
- return -1
+ return 2
# Now, generate the random selection of packages, and fixup
# things if needed.
@@ -393,32 +377,22 @@ def gen_config(args):
bounded_loop = 100
while True:
if bounded_loop == 0:
- log_write(args.log, "ERROR: cannot generate random configuration after 100 iterations")
- return -1
+ print("ERROR: cannot generate random configuration after 100 iterations",
+ file=sys.stderr)
+ return 1
bounded_loop -= 1
- ret = subprocess.call(["make", "O=%s" % outputdir, "-C", srcdir,
+ subprocess.check_call(["make", "O=%s" % outputdir, "-C", srcdir,
"KCONFIG_PROBABILITY=%d" % randint(1, 30),
- "randpackageconfig"],
- stdout=devnull, stderr=devnull)
- if ret != 0:
- log_write(args.log, "ERROR: cannot generate random configuration")
- return -1
+ "randpackageconfig"])
+
if fixup_config(outputdir):
break
- ret = subprocess.call(["make", "O=%s" % outputdir, "-C", srcdir,
- "olddefconfig"],
- stdout=devnull, stderr=devnull)
- if ret != 0:
- log_write(args.log, "ERROR: cannot oldconfig")
- return -1
+ subprocess.check_call(["make", "O=%s" % outputdir, "-C", srcdir,
+ "olddefconfig"])
- ret = subprocess.call(["make", "O=%s" % outputdir, "-C", srcdir,
- "savedefconfig"],
- stdout=devnull, stderr=devnull)
- if ret != 0:
- log_write(args.log, "ERROR: cannot savedefconfig")
- return -1
+ subprocess.check_call(["make", "O=%s" % outputdir, "-C", srcdir,
+ "savedefconfig"])
return 0
@@ -435,9 +409,6 @@ if __name__ == '__main__':
default="http://autobuild.buildroot.org/toolchains/configs/toolchain-configs.csv")
args = parser.parse_args()
- # Arguments expected by gen_config for which we just set a default here
- args.log = sys.stdout
-
# Output directory is already created by autobuild-run so emulate it here
idir = "instance-%d" % args.instance
if not os.path.exists(idir):
@@ -446,7 +417,9 @@ if __name__ == '__main__':
# gen_config expects "buildroot" directory under idir
os.symlink("..", os.path.join(idir, "buildroot"))
- ret = gen_config(args)
-
- if ret != 0:
+ try:
+ ret = gen_config(args)
+ except Exception as e:
+ print(str(e), file=sys.stderr)
parser.exit(1)
+ parser.exit(ret)
OpenPOWER on IntegriCloud