from random import randint
import subprocess
import sys
+import traceback
from distutils.version import StrictVersion
import platform
'BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_BE=y\n' in configlines or \
'BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB=y\n' in configlines:
ldd_version_output = subprocess.check_output(['ldd', '--version'])
- glibc_version = ldd_version_output.splitlines()[0].split()[-1]
+ glibc_version = ldd_version_output.decode().splitlines()[0].split()[-1]
if StrictVersion('2.14') > StrictVersion(glibc_version):
print("WARN: ignoring the Linaro ARM toolchains because too old host glibc", file=sys.stderr)
return False
if 'BR2_ARM_CPU_ARMV7M=y\n' in configlines and \
'BR2_PACKAGE_LIBFFI=y\n' in configlines:
return False
- if 'BR2_nds32=y\n' in configlines and \
- 'BR2_PACKAGE_LIBFFI=y\n' in configlines:
+ # libopenssl needs atomic, but propagating this dependency in
+ # Buildroot is really too much work, so we handle this here.
+ if 'BR2_PACKAGE_LIBOPENSSL=y\n' in configlines and \
+ 'BR2_TOOLCHAIN_HAS_ATOMIC=y\n' not in configlines:
return False
if 'BR2_PACKAGE_SUNXI_BOARDS=y\n' in configlines:
configlines.remove('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE=""\n')
if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \
'BR2_PACKAGE_FLANN=y\n' in configlines:
return False
+ # No C library for internal toolchain
+ if 'BR2_TOOLCHAIN_BUILDROOT_NONE=y' in configlines:
+ return False
+ # Xtensa custom cores require an overlay file with internal
+ # toolchains
+ if 'BR2_XTENSA_CUSTOM=y' in configlines and \
+ 'BR2_TOOLCHAIN_BUILDROOT=y' in configlines:
+ return False
+
+ if 'BR2_PACKAGE_AUFS_UTIL=y\n' in configlines and \
+ 'BR2_PACKAGE_AUFS_UTIL_VERSION=""\n' in configlines:
+ return False
+ if 'BR2_PACKAGE_A10DISP=y\n' in configlines:
+ return False
if 'BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y\n' in configlines and \
'BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE=""\n' in configlines and \
configlines.remove('BR2_KERNEL_HEADERS_CUSTOM_TARBALL=y\n')
configlines.remove('BR2_KERNEL_HEADERS_CUSTOM_TARBALL_LOCATION=""\n')
+ if 'BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n' in configlines and \
+ 'BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM=""\n' in configlines:
+ return False
+
if 'BR2_TARGET_ARM_TRUSTED_FIRMWARE=y\n' in configlines and \
'BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y\n' in configlines and \
'BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE=""\n' in configlines:
configlines.remove('BR2_TARGET_BAREBOX_USE_DEFCONFIG=y\n')
configlines.remove('BR2_TARGET_BAREBOX_BOARD_DEFCONFIG=""\n')
+ if 'BR2_TARGET_OPTEE_OS=y\n' in configlines and \
+ 'BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL=y\n' in configlines and \
+ 'BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION=""\n' in configlines:
+ configlines.remove('BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL=y\n')
+ configlines.append('BR2_TARGET_OPTEE_OS_LATEST=y\n')
+ configlines.remove('BR2_TARGET_OPTEE_OS_CUSTOM_TARBALL_LOCATION=""\n')
+
if 'BR2_TARGET_OPTEE_OS=y\n' in configlines and \
'BR2_TARGET_OPTEE_OS_PLATFORM=""\n' in configlines:
configlines.remove('BR2_TARGET_OPTEE_OS=y\n')
if 'BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT=y\n' in configlines:
return False
+ if 'BR2_TARGET_MXS_BOOTLETS=y\n' in configlines and \
+ 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD=y\n' in configlines and \
+ 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME=""\n' in configlines:
+ configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD=y\n')
+ configlines.append('BR2_TARGET_MXS_BOOTLETS_STMP37xx=y\n')
+ configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME=""\n')
+
+ if 'BR2_TARGET_MXS_BOOTLETS=y\n' in configlines and \
+ 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT=y\n' in configlines and \
+ 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL=""\n' in configlines:
+ configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT=y\n')
+ configlines.append('BR2_TARGET_MXS_BOOTLETS_FREESCALE=y\n')
+ configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL=""\n')
+
+ if 'BR2_TARGET_MXS_BOOTLETS=y\n' in configlines and \
+ 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL=y\n' in configlines and \
+ 'BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL=""\n' in configlines:
+ configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL=y\n')
+ configlines.append('BR2_TARGET_MXS_BOOTLETS_FREESCALE=y\n')
+ configlines.remove('BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL=""\n')
+
+ if 'BR2_TARGET_OPENSBI=y\n' in configlines and \
+ 'BR2_TARGET_OPENSBI_CUSTOM_GIT=y\n' in configlines and \
+ 'BR2_TARGET_OPENSBI_CUSTOM_REPO_URL=""\n' in configlines:
+ configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_GIT=y\n')
+ configlines.append('BR2_TARGET_OPENSBI_LATEST_VERSION=y\n')
+ configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_REPO_URL=""\n')
+
+ if 'BR2_TARGET_OPENSBI=y\n' in configlines and \
+ 'BR2_TARGET_OPENSBI_CUSTOM_TARBALL=y\n' in configlines and \
+ 'BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION=""\n' in configlines:
+ configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_TARBALL=y\n')
+ configlines.append('BR2_TARGET_OPENSBI_LATEST_VERSION=y\n')
+ configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION=""\n')
+
+ if 'BR2_TARGET_OPENSBI=y\n' in configlines and \
+ 'BR2_TARGET_OPENSBI_CUSTOM_VERSION=y\n' in configlines and \
+ 'BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE=""\n' in configlines:
+ configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_VERSION=y\n')
+ configlines.append('BR2_TARGET_OPENSBI_LATEST_VERSION=y\n')
+ configlines.remove('BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE=""\n')
+
+ if 'BR2_PACKAGE_REFPOLICY=y\n' in configlines and \
+ 'BR2_PACKAGE_REFPOLICY_CUSTOM_GIT=y\n' in configlines and \
+ 'BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL=""\n' in configlines:
+ configlines.remove('BR2_PACKAGE_REFPOLICY_CUSTOM_GIT=y\n')
+ configlines.append('BR2_PACKAGE_REFPOLICY_UPSTREAM_VERSION=y\n')
+ configlines.remove('BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL=""\n')
+
+ if 'BR2_PACKAGE_XENOMAI=y\n' in configlines and \
+ 'BR2_PACKAGE_XENOMAI_CUSTOM_GIT=y\n' in configlines and \
+ 'BR2_PACKAGE_XENOMAI_REPOSITORY=""\n' in configlines:
+ configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_GIT=y\n')
+ configlines.append('BR2_PACKAGE_XENOMAI_LATEST_VERSION=y\n')
+ configlines.remove('BR2_PACKAGE_XENOMAI_REPOSITORY=""\n')
+
+ if 'BR2_PACKAGE_XENOMAI=y\n' in configlines and \
+ 'BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL=y\n' in configlines and \
+ 'BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL=""\n' in configlines:
+ configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL=y\n')
+ configlines.append('BR2_PACKAGE_XENOMAI_LATEST_VERSION=y\n')
+ configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_TARBALL_URL=""\n')
+
+ if 'BR2_PACKAGE_XENOMAI=y\n' in configlines and \
+ 'BR2_PACKAGE_XENOMAI_CUSTOM_VERSION=y\n' in configlines and \
+ 'BR2_PACKAGE_XENOMAI_CUSTOM_VERSION_VALUE=""\n' in configlines:
+ configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_VERSION=y\n')
+ configlines.append('BR2_PACKAGE_XENOMAI_LATEST_VERSION=y\n')
+ configlines.remove('BR2_PACKAGE_XENOMAI_CUSTOM_VERSION_VALUE=""\n')
+
if 'BR2_PACKAGE_XVISOR=y\n' in configlines and \
'BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG=y\n' in configlines and \
'BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE=""\n' in configlines:
configlines.append('BR2_PACKAGE_XVISOR_USE_DEFCONFIG=y\n')
configlines.remove('BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE=""\n')
+ # Don't build igh-ethercat driver as they are highly
+ # kernel-version specific
+ for opt in ['8139TOO', 'E100', 'E1000', 'E1000E', 'R8169']:
+ optstr = 'BR2_PACKAGE_IGH_ETHERCAT_%s=y\n' % opt
+ if optstr in configlines:
+ configlines.remove(optstr)
+
with open(configfile, "w+") as configf:
configf.writelines(configlines)
try:
ret = gen_config(args)
- except Exception as e:
- print(str(e), file=sys.stderr)
+ except Exception:
+ traceback.print_exc()
parser.exit(1)
parser.exit(ret)