initial buildroot for linux 5.15
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import infra.basetest
|
||||
|
||||
|
||||
class TestATFVexpress(infra.basetest.BRTest):
|
||||
config = \
|
||||
"""
|
||||
BR2_aarch64=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.5"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="juno"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y
|
||||
BR2_TARGET_UBOOT=y
|
||||
BR2_TARGET_UBOOT_BOARDNAME="vexpress_aemv8a_juno"
|
||||
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.07"
|
||||
BR2_TARGET_VEXPRESS_FIRMWARE=y
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
pass
|
||||
|
||||
|
||||
class TestATFAllwinner(infra.basetest.BRTest):
|
||||
config = \
|
||||
"""
|
||||
BR2_aarch64=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.5"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50i_a64"
|
||||
# BR2_TARGET_ARM_TRUSTED_FIRMWARE_SSP is not set
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y
|
||||
BR2_TARGET_UBOOT=y
|
||||
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04"
|
||||
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m64"
|
||||
BR2_TARGET_UBOOT_NEEDS_DTC=y
|
||||
BR2_TARGET_UBOOT_NEEDS_PYTHON3=y
|
||||
BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
|
||||
BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y
|
||||
BR2_TARGET_UBOOT_SPL=y
|
||||
BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin"
|
||||
BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS="SCP=/dev/null"
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
pass
|
||||
@@ -0,0 +1,45 @@
|
||||
import os
|
||||
|
||||
import infra.basetest
|
||||
|
||||
|
||||
class TestEdk2(infra.basetest.BRTest):
|
||||
config = \
|
||||
"""
|
||||
BR2_aarch64=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
|
||||
BR2_TARGET_ROOTFS_EXT2=y
|
||||
BR2_TARGET_ROOTFS_EXT2_4=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/aarch64-sbsa/assemble-flash-images support/scripts/genimage.sh"
|
||||
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/qemu/aarch64-sbsa/genimage.cfg"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.34"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-sbsa/linux.config"
|
||||
BR2_TARGET_EDK2=y
|
||||
BR2_TARGET_EDK2_PLATFORM_QEMU_SBSA=y
|
||||
BR2_TARGET_GRUB2=y
|
||||
BR2_TARGET_GRUB2_ARM64_EFI=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu_sbsa"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
|
||||
BR2_PACKAGE_HOST_GENIMAGE=y
|
||||
BR2_PACKAGE_HOST_DOSFSTOOLS=y
|
||||
BR2_PACKAGE_HOST_MTOOLS=y
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
hda = os.path.join(self.builddir, "images", "disk.img")
|
||||
flash0 = os.path.join(self.builddir, "images", "SBSA_FLASH0.fd")
|
||||
flash1 = os.path.join(self.builddir, "images", "SBSA_FLASH1.fd")
|
||||
self.emulator.boot(arch="aarch64",
|
||||
options=["-M", "sbsa-ref",
|
||||
"-cpu", "cortex-a57",
|
||||
"-m", "512M",
|
||||
"-pflash", flash0,
|
||||
"-pflash", flash1,
|
||||
"-hda", hda])
|
||||
self.emulator.login()
|
||||
@@ -0,0 +1,85 @@
|
||||
import infra.basetest
|
||||
|
||||
|
||||
class TestSysLinuxBase(infra.basetest.BRTest):
|
||||
x86_toolchain_config = \
|
||||
"""
|
||||
BR2_x86_i686=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_URL="http://toolchains.bootlin.com/downloads/releases/toolchains/x86-i686/tarballs/x86-i686--glibc--bleeding-edge-2018.11-1.tar.bz2"
|
||||
BR2_TOOLCHAIN_EXTERNAL_GCC_8=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CXX=y
|
||||
"""
|
||||
|
||||
x86_64_toolchain_config = \
|
||||
"""
|
||||
BR2_x86_64=y
|
||||
BR2_x86_corei7=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_URL="http://toolchains.bootlin.com/downloads/releases/toolchains/x86-64-core-i7/tarballs/x86-64-core-i7--glibc--stable-2018.11-1.tar.bz2"
|
||||
BR2_TOOLCHAIN_EXTERNAL_GCC_7=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CXX=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_HAS_SSP=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
|
||||
"""
|
||||
|
||||
syslinux_legacy_config = \
|
||||
"""
|
||||
BR2_TARGET_SYSLINUX=y
|
||||
BR2_TARGET_SYSLINUX_ISOLINUX=y
|
||||
BR2_TARGET_SYSLINUX_PXELINUX=y
|
||||
BR2_TARGET_SYSLINUX_MBR=y
|
||||
"""
|
||||
|
||||
syslinux_efi_config = \
|
||||
"""
|
||||
BR2_TARGET_SYSLINUX=y
|
||||
BR2_TARGET_SYSLINUX_EFI=y
|
||||
"""
|
||||
|
||||
|
||||
class TestSysLinuxX86LegacyBios(TestSysLinuxBase):
|
||||
config = \
|
||||
TestSysLinuxBase.x86_toolchain_config + \
|
||||
infra.basetest.MINIMAL_CONFIG + \
|
||||
TestSysLinuxBase.syslinux_legacy_config
|
||||
|
||||
def test_run(self):
|
||||
pass
|
||||
|
||||
|
||||
class TestSysLinuxX86EFI(TestSysLinuxBase):
|
||||
config = \
|
||||
TestSysLinuxBase.x86_toolchain_config + \
|
||||
infra.basetest.MINIMAL_CONFIG + \
|
||||
TestSysLinuxBase.syslinux_efi_config
|
||||
|
||||
def test_run(self):
|
||||
pass
|
||||
|
||||
|
||||
class TestSysLinuxX86_64LegacyBios(TestSysLinuxBase):
|
||||
config = \
|
||||
TestSysLinuxBase.x86_64_toolchain_config + \
|
||||
infra.basetest.MINIMAL_CONFIG + \
|
||||
TestSysLinuxBase.syslinux_legacy_config
|
||||
|
||||
def test_run(self):
|
||||
pass
|
||||
|
||||
|
||||
class TestSysLinuxX86_64EFI(TestSysLinuxBase):
|
||||
config = \
|
||||
TestSysLinuxBase.x86_64_toolchain_config + \
|
||||
infra.basetest.MINIMAL_CONFIG + \
|
||||
TestSysLinuxBase.syslinux_efi_config
|
||||
|
||||
def test_run(self):
|
||||
pass
|
||||
@@ -0,0 +1 @@
|
||||
source "$BR2_EXTERNAL_DETECT_BAD_ARCH_PATH/package/detect-bad-arch/Config.in"
|
||||
@@ -0,0 +1 @@
|
||||
name: DETECT_BAD_ARCH
|
||||
@@ -0,0 +1 @@
|
||||
include $(sort $(wildcard $(BR2_EXTERNAL_DETECT_BAD_ARCH_PATH)/package/*/*.mk))
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
config BR2_PACKAGE_DETECT_BAD_ARCH
|
||||
bool
|
||||
default y
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
################################################################################
|
||||
#
|
||||
# detect-bad-arch
|
||||
#
|
||||
################################################################################
|
||||
|
||||
define DETECT_BAD_ARCH_BUILD_CMDS
|
||||
echo "int main(void) { return 0; }" | $(HOSTCC) -x c -o $(@D)/foo -
|
||||
endef
|
||||
|
||||
define DETECT_BAD_ARCH_INSTALL_TARGET_CMDS
|
||||
$(INSTALL) -D -m 0755 $(@D)/foo $(TARGET_DIR)/usr/bin/foo
|
||||
endef
|
||||
|
||||
$(eval $(generic-package))
|
||||
@@ -0,0 +1 @@
|
||||
name: CPE_ID
|
||||
@@ -0,0 +1 @@
|
||||
include $(sort $(wildcard $(BR2_EXTERNAL_CPE_ID_PATH)/package/*/*.mk))
|
||||
@@ -0,0 +1,4 @@
|
||||
CPE_ID_PKG1_VERSION = 42
|
||||
|
||||
$(eval $(generic-package))
|
||||
$(eval $(host-generic-package))
|
||||
@@ -0,0 +1,3 @@
|
||||
CPE_ID_PKG2_VERSION = 67
|
||||
|
||||
$(eval $(host-generic-package))
|
||||
@@ -0,0 +1,5 @@
|
||||
CPE_ID_PKG3_VERSION = 67
|
||||
CPE_ID_PKG3_CPE_ID_VENDOR = cpe-id-pkg3_project
|
||||
|
||||
$(eval $(generic-package))
|
||||
$(eval $(host-generic-package))
|
||||
@@ -0,0 +1,9 @@
|
||||
CPE_ID_PKG4_VERSION = 67
|
||||
CPE_ID_PKG4_CPE_ID_VENDOR = foo
|
||||
CPE_ID_PKG4_CPE_ID_PRODUCT = bar
|
||||
CPE_ID_PKG4_CPE_ID_VERSION = 42
|
||||
CPE_ID_PKG4_CPE_ID_UPDATE = b2
|
||||
CPE_ID_PKG4_CPE_ID_PREFIX = cpe:2.4:a
|
||||
|
||||
$(eval $(generic-package))
|
||||
$(eval $(host-generic-package))
|
||||
@@ -0,0 +1,16 @@
|
||||
CPE_ID_PKG5_VERSION = 57
|
||||
|
||||
CPE_ID_PKG5_CPE_ID_VENDOR = foo
|
||||
CPE_ID_PKG5_CPE_ID_PRODUCT = bar
|
||||
CPE_ID_PKG5_CPE_ID_VERSION = 42
|
||||
CPE_ID_PKG5_CPE_ID_UPDATE = b2
|
||||
CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.4:a
|
||||
|
||||
HOST_CPE_ID_PKG5_CPE_ID_VENDOR = baz
|
||||
HOST_CPE_ID_PKG5_CPE_ID_PRODUCT = fuz
|
||||
HOST_CPE_ID_PKG5_CPE_ID_VERSION = 43
|
||||
HOST_CPE_ID_PKG5_CPE_ID_UPDATE = b3
|
||||
HOST_CPE_ID_PKG5_CPE_ID_PREFIX = cpe:2.5:a
|
||||
|
||||
$(eval $(generic-package))
|
||||
$(eval $(host-generic-package))
|
||||
@@ -0,0 +1,7 @@
|
||||
# <name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>
|
||||
/usr/sbin/getcap f 755 0 0 - - - - -
|
||||
|xattr cap_sys_nice+eip
|
||||
# leading spaces are ignored for xattr
|
||||
|xattr cap_kill+eip
|
||||
# leading tabs are ignored for xattr
|
||||
|xattr cap_sys_time+eip
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
(
|
||||
printf "arg1,%s\n" "${1}"
|
||||
printf "arg2,%s\n" "${2}"
|
||||
printf "arg3,%s\n" "${3}"
|
||||
printf "TARGET_DIR,%s\n" "${TARGET_DIR}"
|
||||
printf "BUILD_DIR,%s\n" "${BUILD_DIR}"
|
||||
printf "HOST_DIR,%s\n" "${HOST_DIR}"
|
||||
printf "STAGING_DIR,%s\n" "${STAGING_DIR}"
|
||||
printf "BINARIES_DIR,%s\n" "${BINARIES_DIR}"
|
||||
printf "BR2_CONFIG,%s\n" "${BR2_CONFIG}"
|
||||
) > ${BUILD_DIR}/$(basename "${0}" .sh).log
|
||||
@@ -0,0 +1 @@
|
||||
post-build.sh
|
||||
@@ -0,0 +1 @@
|
||||
post-build.sh
|
||||
@@ -0,0 +1 @@
|
||||
foobar
|
||||
@@ -0,0 +1 @@
|
||||
barfoo
|
||||
@@ -0,0 +1 @@
|
||||
CONFIG_SQUASHFS_XATTR=y
|
||||
@@ -0,0 +1,18 @@
|
||||
import infra
|
||||
import infra.basetest
|
||||
|
||||
|
||||
class DetectBadArchTest(infra.basetest.BRConfigTest):
|
||||
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + infra.basetest.MINIMAL_CONFIG
|
||||
br2_external = [infra.filepath("tests/core/br2-external/detect-bad-arch")]
|
||||
|
||||
def test_run(self):
|
||||
with self.assertRaises(SystemError):
|
||||
self.b.build()
|
||||
logf_path = infra.log_file_path(self.b.builddir, "build",
|
||||
infra.basetest.BRConfigTest.logtofile)
|
||||
if logf_path:
|
||||
s = 'ERROR: architecture for "/usr/bin/foo" is'
|
||||
with open(logf_path, "r") as f:
|
||||
lines = [line for line in f.readlines() if line.startswith(s)]
|
||||
self.assertEqual(len(lines), 1)
|
||||
@@ -0,0 +1,110 @@
|
||||
import infra
|
||||
import subprocess
|
||||
import json
|
||||
|
||||
|
||||
class CpeIdTest(infra.basetest.BRConfigTest):
|
||||
config = ""
|
||||
br2_external = [infra.filepath("tests/core/cpeid-br2-external")]
|
||||
|
||||
def get_vars(self, var):
|
||||
cmd = ["make", "--no-print-directory", "-C", self.b.builddir,
|
||||
"VARS=%s%%" % var, "printvars"]
|
||||
lines = subprocess.check_output(cmd).splitlines()
|
||||
return dict([str(x, "utf-8").split("=") for x in lines])
|
||||
|
||||
def get_json(self, pkg):
|
||||
cmd = ["make", "--no-print-directory", "-C", self.b.builddir,
|
||||
"%s-show-info" % pkg]
|
||||
return json.loads(subprocess.check_output(cmd))
|
||||
|
||||
def test_pkg1(self):
|
||||
# this package has no CPE ID information, it should not have
|
||||
# any CPE_ID variable defined.
|
||||
pkg_vars = self.get_vars("CPE_ID_PKG1_CPE_ID")
|
||||
cpe_vars = ["CPE_ID_VALID", "CPE_ID_PRODUCT", "CPE_ID_VERSION", "CPE_ID_UPDATE",
|
||||
"CPE_ID_PREFIX", "CPE_ID"]
|
||||
for v in cpe_vars:
|
||||
self.assertNotIn("CPE_ID_PKG1_%s" % v, pkg_vars)
|
||||
pkg_json = self.get_json("cpe-id-pkg1")
|
||||
self.assertNotIn("cpe-id", pkg_json['cpe-id-pkg1'])
|
||||
|
||||
pkg_vars = self.get_vars("HOST_CPE_ID_PKG1_CPE_ID")
|
||||
for v in cpe_vars:
|
||||
self.assertNotIn("HOST_CPE_ID_PKG1_%s" % v, pkg_vars)
|
||||
pkg_json = self.get_json("host-cpe-id-pkg1")
|
||||
self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg1'])
|
||||
|
||||
def test_pkg2(self):
|
||||
# this package has no CPE ID information, it should not have
|
||||
# any CPE_ID variable defined.
|
||||
pkg_vars = self.get_vars("HOST_CPE_ID_PKG2_CPE_ID")
|
||||
cpe_vars = ["CPE_ID_VALID", "CPE_ID_PRODUCT", "CPE_ID_VERSION", "CPE_ID_UPDATE",
|
||||
"CPE_ID_PREFIX", "CPE_ID"]
|
||||
for v in cpe_vars:
|
||||
self.assertNotIn("HOST_CPE_ID_PKG2_%s" % v, pkg_vars)
|
||||
pkg_json = self.get_json("host-cpe-id-pkg2")
|
||||
self.assertNotIn("cpe-id", pkg_json['host-cpe-id-pkg2'])
|
||||
|
||||
def test_pkg3(self):
|
||||
# this package has just <pkg>_CPE_ID_VENDOR defined, so verify
|
||||
# it has the default CPE_ID value, and that inheritance of the
|
||||
# values for the host package is working
|
||||
pkg_vars = self.get_vars("CPE_ID_PKG3_CPE_ID")
|
||||
self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID"],
|
||||
"cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*")
|
||||
self.assertEqual(pkg_vars["CPE_ID_PKG3_CPE_ID_VALID"], "YES")
|
||||
pkg_json = self.get_json("cpe-id-pkg3")
|
||||
self.assertEqual(pkg_json['cpe-id-pkg3']['cpe-id'],
|
||||
"cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*")
|
||||
|
||||
pkg_vars = self.get_vars("HOST_CPE_ID_PKG3_CPE_ID")
|
||||
self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID"],
|
||||
"cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*")
|
||||
self.assertEqual(pkg_vars["HOST_CPE_ID_PKG3_CPE_ID_VALID"], "YES")
|
||||
pkg_json = self.get_json("host-cpe-id-pkg3")
|
||||
self.assertEqual(pkg_json['host-cpe-id-pkg3']['cpe-id'],
|
||||
"cpe:2.3:a:cpe-id-pkg3_project:cpe-id-pkg3:67:*:*:*:*:*:*:*")
|
||||
|
||||
def test_pkg4(self):
|
||||
# this package defines
|
||||
# <pkg>_CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX},
|
||||
# make sure we get the computed <pkg>_CPE_ID, and that it is
|
||||
# inherited by the host variant
|
||||
pkg_vars = self.get_vars("CPE_ID_PKG4_CPE_ID")
|
||||
self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID"],
|
||||
"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
|
||||
self.assertEqual(pkg_vars["CPE_ID_PKG4_CPE_ID_VALID"], "YES")
|
||||
pkg_json = self.get_json("cpe-id-pkg4")
|
||||
self.assertEqual(pkg_json['cpe-id-pkg4']['cpe-id'],
|
||||
"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
|
||||
|
||||
pkg_vars = self.get_vars("HOST_CPE_ID_PKG4_CPE_ID")
|
||||
self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID"],
|
||||
"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
|
||||
self.assertEqual(pkg_vars["HOST_CPE_ID_PKG4_CPE_ID_VALID"], "YES")
|
||||
pkg_json = self.get_json("host-cpe-id-pkg4")
|
||||
self.assertEqual(pkg_json['host-cpe-id-pkg4']['cpe-id'],
|
||||
"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
|
||||
|
||||
def test_pkg5(self):
|
||||
# this package defines
|
||||
# <pkg>_CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX} and
|
||||
# HOST_<pkg>_CPE_ID_{VENDOR,PRODUCT,VERSION,UPDATE,PREFIX}
|
||||
# separately, with different values. Make sure we get the
|
||||
# right <pkg>_CPE_ID and HOST_<pkg>_CPE_ID values.
|
||||
pkg_vars = self.get_vars("CPE_ID_PKG5_CPE_ID")
|
||||
self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID"],
|
||||
"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
|
||||
self.assertEqual(pkg_vars["CPE_ID_PKG5_CPE_ID_VALID"], "YES")
|
||||
pkg_json = self.get_json("cpe-id-pkg5")
|
||||
self.assertEqual(pkg_json['cpe-id-pkg5']['cpe-id'],
|
||||
"cpe:2.4:a:foo:bar:42:b2:*:*:*:*:*:*")
|
||||
|
||||
pkg_vars = self.get_vars("HOST_CPE_ID_PKG5_CPE_ID")
|
||||
self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID"],
|
||||
"cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*")
|
||||
self.assertEqual(pkg_vars["HOST_CPE_ID_PKG5_CPE_ID_VALID"], "YES")
|
||||
pkg_json = self.get_json("host-cpe-id-pkg5")
|
||||
self.assertEqual(pkg_json['host-cpe-id-pkg5']['cpe-id'],
|
||||
"cpe:2.5:a:baz:fuz:43:b3:*:*:*:*:*:*")
|
||||
@@ -0,0 +1,46 @@
|
||||
import os
|
||||
|
||||
import infra.basetest
|
||||
|
||||
|
||||
class TestFileCapabilities(infra.basetest.BRTest):
|
||||
config = \
|
||||
"""
|
||||
BR2_arm=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt {}"
|
||||
BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES=y
|
||||
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.204"
|
||||
BR2_LINUX_KERNEL_DEFCONFIG="vexpress"
|
||||
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{}"
|
||||
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
||||
BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9"
|
||||
BR2_PACKAGE_LIBCAP=y
|
||||
BR2_PACKAGE_LIBCAP_TOOLS=y
|
||||
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
""".format(infra.filepath("tests/core/device_table2.txt"),
|
||||
infra.filepath("tests/core/squashfs-xattr-kernel.config"))
|
||||
|
||||
def test_run(self):
|
||||
img = os.path.join(self.builddir, "images", "rootfs.squashfs")
|
||||
infra.img_round_power2(img)
|
||||
|
||||
self.emulator.boot(arch="armv7",
|
||||
kernel=os.path.join(self.builddir, "images", "zImage"),
|
||||
kernel_cmdline=["root=/dev/mmcblk0",
|
||||
"rootfstype=squashfs"],
|
||||
options=["-drive", "file={},if=sd,format=raw".format(img),
|
||||
"-M", "vexpress-a9",
|
||||
"-dtb", os.path.join(self.builddir, "images", "vexpress-v2p-ca9.dtb")])
|
||||
self.emulator.login()
|
||||
|
||||
cmd = "getcap -v /usr/sbin/getcap"
|
||||
output, _ = self.emulator.run(cmd)
|
||||
self.assertIn("cap_kill", output[0])
|
||||
self.assertIn("cap_sys_nice", output[0])
|
||||
self.assertIn("cap_sys_time", output[0])
|
||||
self.assertIn("=eip", output[0])
|
||||
@@ -0,0 +1,115 @@
|
||||
import os
|
||||
import json
|
||||
|
||||
import infra.basetest
|
||||
|
||||
|
||||
class TestHardeningBase(infra.basetest.BRTest):
|
||||
config = \
|
||||
"""
|
||||
BR2_powerpc64=y
|
||||
BR2_powerpc_e5500=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_URL="https://toolchains.bootlin.com/downloads/releases/toolchains/powerpc64-e5500/tarballs/powerpc64-e5500--glibc--stable-2018.02-2.tar.bz2"
|
||||
BR2_TOOLCHAIN_EXTERNAL_GCC_6=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
|
||||
BR2_TOOLCHAIN_EXTERNAL_CXX=y
|
||||
BR2_PACKAGE_LIGHTTPD=y
|
||||
BR2_PACKAGE_HOST_CHECKSEC=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
"""
|
||||
|
||||
checksec_files = ["usr/sbin/lighttpd", "bin/busybox"]
|
||||
|
||||
def checksec_run(self, target_file):
|
||||
filepath = os.path.join(self.builddir, "target", target_file)
|
||||
cmd = ["host/bin/checksec", "--format=json",
|
||||
"--file={}".format(filepath)]
|
||||
# Checksec is being used for elf file analysis only. There are no
|
||||
# assumptions of target/run-time checks as part of this testing.
|
||||
ret = infra.run_cmd_on_host(self.builddir, cmd)
|
||||
return json.loads(ret)
|
||||
|
||||
|
||||
class TestRelro(TestHardeningBase):
|
||||
config = TestHardeningBase.config + \
|
||||
"""
|
||||
BR2_RELRO_FULL=y
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
for f in self.checksec_files:
|
||||
out = self.checksec_run(f)
|
||||
filepath = os.path.join(self.builddir, "target", f)
|
||||
self.assertEqual(out[filepath]["relro"], "full")
|
||||
self.assertEqual(out[filepath]["pie"], "yes")
|
||||
|
||||
|
||||
class TestRelroPartial(TestHardeningBase):
|
||||
config = TestHardeningBase.config + \
|
||||
"""
|
||||
BR2_RELRO_PARTIAL=y
|
||||
# BR2_PIC_PIE is not set
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
for f in self.checksec_files:
|
||||
out = self.checksec_run(f)
|
||||
filepath = os.path.join(self.builddir, "target", f)
|
||||
self.assertEqual(out[filepath]["relro"], "partial")
|
||||
self.assertEqual(out[filepath]["pie"], "no")
|
||||
|
||||
|
||||
class TestSspNone(TestHardeningBase):
|
||||
config = TestHardeningBase.config + \
|
||||
"""
|
||||
BR2_SSP_NONE=y
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
for f in self.checksec_files:
|
||||
out = self.checksec_run(f)
|
||||
filepath = os.path.join(self.builddir, "target", f)
|
||||
self.assertEqual(out[filepath]["canary"], "no")
|
||||
|
||||
|
||||
class TestSspStrong(TestHardeningBase):
|
||||
config = TestHardeningBase.config + \
|
||||
"""
|
||||
BR2_SSP_STRONG=y
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
for f in self.checksec_files:
|
||||
out = self.checksec_run(f)
|
||||
filepath = os.path.join(self.builddir, "target", f)
|
||||
self.assertEqual(out[filepath]["canary"], "yes")
|
||||
|
||||
|
||||
class TestFortifyNone(TestHardeningBase):
|
||||
config = TestHardeningBase.config + \
|
||||
"""
|
||||
BR2_FORTIFY_SOURCE_NONE=y
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
for f in self.checksec_files:
|
||||
out = self.checksec_run(f)
|
||||
filepath = os.path.join(self.builddir, "target", f)
|
||||
self.assertEqual(out[filepath]["fortified"], "0")
|
||||
|
||||
|
||||
class TestFortifyConserv(TestHardeningBase):
|
||||
config = TestHardeningBase.config + \
|
||||
"""
|
||||
BR2_FORTIFY_SOURCE_1=y
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
for f in self.checksec_files:
|
||||
out = self.checksec_run(f)
|
||||
filepath = os.path.join(self.builddir, "target", f)
|
||||
self.assertNotEqual(out[filepath]["fortified"], "0")
|
||||
@@ -0,0 +1,48 @@
|
||||
import os
|
||||
import csv
|
||||
|
||||
import infra.basetest
|
||||
|
||||
|
||||
class TestPostScripts(infra.basetest.BRTest):
|
||||
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
||||
"""
|
||||
BR2_INIT_NONE=y
|
||||
BR2_SYSTEM_BIN_SH_NONE=y
|
||||
# BR2_PACKAGE_BUSYBOX is not set
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="{}"
|
||||
BR2_ROOTFS_POST_FAKEROOT_SCRIPT="{}"
|
||||
BR2_ROOTFS_POST_IMAGE_SCRIPT="{}"
|
||||
BR2_ROOTFS_POST_SCRIPT_ARGS="foobar baz"
|
||||
""".format(infra.filepath("tests/core/post-build.sh"),
|
||||
infra.filepath("tests/core/post-fakeroot.sh"),
|
||||
infra.filepath("tests/core/post-image.sh"))
|
||||
|
||||
def check_post_log_file(self, f, what, target_dir):
|
||||
lines = {}
|
||||
with open(os.path.join(self.builddir, "build", f), newline='') as csvfile:
|
||||
r = csv.reader(csvfile, delimiter=',')
|
||||
for row in r:
|
||||
lines[row[0]] = row[1]
|
||||
|
||||
self.assertEqual(lines["arg1"], what)
|
||||
self.assertEqual(lines["arg2"], "foobar")
|
||||
self.assertEqual(lines["arg3"], "baz")
|
||||
self.assertEqual(lines["TARGET_DIR"], target_dir)
|
||||
self.assertEqual(lines["BUILD_DIR"], os.path.join(self.builddir, "build"))
|
||||
self.assertEqual(lines["HOST_DIR"], os.path.join(self.builddir, "host"))
|
||||
staging = os.readlink(os.path.join(self.builddir, "staging"))
|
||||
self.assertEqual(lines["STAGING_DIR"], staging)
|
||||
self.assertEqual(lines["BINARIES_DIR"], os.path.join(self.builddir, "images"))
|
||||
self.assertEqual(lines["BR2_CONFIG"], os.path.join(self.builddir, ".config"))
|
||||
|
||||
def test_run(self):
|
||||
self.check_post_log_file("post-build.log",
|
||||
os.path.join(self.builddir, "target"),
|
||||
os.path.join(self.builddir, "target"))
|
||||
self.check_post_log_file("post-fakeroot.log",
|
||||
os.path.join(self.builddir, "build/buildroot-fs/tar/target"),
|
||||
os.path.join(self.builddir, "build/buildroot-fs/tar/target"))
|
||||
self.check_post_log_file("post-image.log",
|
||||
os.path.join(self.builddir, "images"),
|
||||
os.path.join(self.builddir, "target"))
|
||||
@@ -0,0 +1,36 @@
|
||||
import os
|
||||
import infra.basetest
|
||||
from crypt import crypt
|
||||
|
||||
|
||||
class TestRootPassword(infra.basetest.BRTest):
|
||||
password = "foo"
|
||||
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
||||
"""
|
||||
BR2_TARGET_ROOTFS_CPIO=y
|
||||
BR2_TARGET_ENABLE_ROOT_LOGIN=y
|
||||
BR2_TARGET_GENERIC_ROOT_PASSWD="{}"
|
||||
""".format(password)
|
||||
|
||||
def test_run(self):
|
||||
# 1. Test by looking hash in the /etc/shadow
|
||||
shadow = os.path.join(self.builddir, "target", "etc", "shadow")
|
||||
with open(shadow, "r") as f:
|
||||
users = f.readlines()
|
||||
for user in users:
|
||||
s = user.split(":")
|
||||
n, h = s[0], s[1]
|
||||
if n == "root":
|
||||
# Fail if the account is disabled or no password is required
|
||||
self.assertTrue(h not in ["", "*"])
|
||||
# Fail if the hash isn't right
|
||||
self.assertEqual(crypt(self.password, h), h)
|
||||
|
||||
# 2. Test by attempting to login
|
||||
cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
|
||||
try:
|
||||
self.emulator.boot(arch="armv7", kernel="builtin",
|
||||
options=["-initrd", cpio_file])
|
||||
self.emulator.login(self.password)
|
||||
except SystemError:
|
||||
self.fail("Unable to login with the password")
|
||||
@@ -0,0 +1,30 @@
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
import infra.basetest
|
||||
|
||||
|
||||
def compare_file(file1, file2):
|
||||
return subprocess.call(["cmp", file1, file2])
|
||||
|
||||
|
||||
class TestRootfsOverlay(infra.basetest.BRTest):
|
||||
|
||||
rootfs_overlay_path = infra.filepath("tests/core/rootfs-overlay")
|
||||
|
||||
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
||||
infra.basetest.MINIMAL_CONFIG + \
|
||||
"""
|
||||
BR2_ROOTFS_OVERLAY="{0}1 {0}2"
|
||||
""".format(rootfs_overlay_path)
|
||||
|
||||
def test_run(self):
|
||||
target_file = os.path.join(self.builddir, "target", "test-file1")
|
||||
overlay_file = "{}1/test-file1".format(self.rootfs_overlay_path)
|
||||
ret = compare_file(overlay_file, target_file)
|
||||
self.assertEqual(ret, 0)
|
||||
|
||||
target_file = os.path.join(self.builddir, "target", "etc", "test-file2")
|
||||
overlay_file = "{}2/etc/test-file2".format(self.rootfs_overlay_path)
|
||||
ret = compare_file(overlay_file, target_file)
|
||||
self.assertEqual(ret, 0)
|
||||
@@ -0,0 +1,86 @@
|
||||
import os
|
||||
|
||||
import infra.basetest
|
||||
|
||||
|
||||
class TestSELinuxInfra(infra.basetest.BRTest):
|
||||
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG +\
|
||||
"""
|
||||
BR2_PACKAGE_REFPOLICY=y
|
||||
BR2_PACKAGE_PYTHON3=y
|
||||
BR2_PACKAGE_SETOOLS=y
|
||||
BR2_TARGET_ROOTFS_CPIO=y
|
||||
"""
|
||||
|
||||
def base_test_run(self):
|
||||
cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
|
||||
self.emulator.boot(arch="armv5", kernel="builtin",
|
||||
options=["-initrd", cpio_file])
|
||||
self.emulator.login()
|
||||
|
||||
|
||||
class TestSELinuxExtraModules(TestSELinuxInfra):
|
||||
config = TestSELinuxInfra.config + \
|
||||
"""
|
||||
BR2_REFPOLICY_EXTRA_MODULES="ntp tor"
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
TestSELinuxInfra.base_test_run(self)
|
||||
|
||||
out, ret = self.emulator.run("seinfo -t ntpd_t", 15)
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(out[2].strip(), "ntpd_t")
|
||||
|
||||
out, ret = self.emulator.run("seinfo -t tor_t", 15)
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(out[2].strip(), "tor_t")
|
||||
|
||||
|
||||
class TestSELinuxExtraModulesDirs(TestSELinuxInfra):
|
||||
config = TestSELinuxInfra.config + \
|
||||
"""
|
||||
BR2_REFPOLICY_EXTRA_MODULES_DIRS="{}"
|
||||
""".format(infra.filepath("tests/core/test_selinux/extra_modules"))
|
||||
|
||||
def test_run(self):
|
||||
TestSELinuxInfra.base_test_run(self)
|
||||
|
||||
out, ret = self.emulator.run("seinfo -t buildroot_test_t", 15)
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(out[2].strip(), "buildroot_test_t")
|
||||
|
||||
|
||||
class TestSELinuxCustomGit(TestSELinuxInfra):
|
||||
config = TestSELinuxInfra.config + \
|
||||
"""
|
||||
BR2_PACKAGE_REFPOLICY_CUSTOM_GIT=y
|
||||
BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL="https://github.com/SELinuxProject/refpolicy.git"
|
||||
BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION="RELEASE_2_20200818"
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
pass
|
||||
|
||||
|
||||
class TestSELinuxPackage(TestSELinuxInfra):
|
||||
br2_external = [infra.filepath("tests/core/test_selinux/br2_external")]
|
||||
config = TestSELinuxInfra.config + \
|
||||
"""
|
||||
BR2_PACKAGE_SELINUX_TEST=y
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
TestSELinuxInfra.base_test_run(self)
|
||||
|
||||
out, ret = self.emulator.run("seinfo -t ntpd_t", 15)
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(out[2].strip(), "ntpd_t")
|
||||
|
||||
out, ret = self.emulator.run("seinfo -t tor_t", 15)
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(out[2].strip(), "tor_t")
|
||||
|
||||
out, ret = self.emulator.run("seinfo -t buildroot_test_t", 15)
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(out[2].strip(), "buildroot_test_t")
|
||||
@@ -0,0 +1 @@
|
||||
source "$BR2_EXTERNAL_SELINUX_PATH/package/selinux-test/Config.in"
|
||||
@@ -0,0 +1 @@
|
||||
name: SELINUX
|
||||
@@ -0,0 +1 @@
|
||||
include $(sort $(wildcard $(BR2_EXTERNAL_SELINUX_PATH)/package/*/*.mk))
|
||||
@@ -0,0 +1,4 @@
|
||||
config BR2_PACKAGE_SELINUX_TEST
|
||||
bool "SELinux test package"
|
||||
help
|
||||
Test package for SELinux Buildroot helpers.
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
################################################################################
|
||||
#
|
||||
# SELinux test package
|
||||
#
|
||||
################################################################################
|
||||
|
||||
SELINUX_TEST_SELINUX_MODULES = ntp tor
|
||||
|
||||
$(eval $(generic-package))
|
||||
+1
@@ -0,0 +1 @@
|
||||
## <summary>Buildroot rules</summary>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
policy_module(buildroot, 1.0.0)
|
||||
|
||||
type buildroot_test_t;
|
||||
@@ -0,0 +1 @@
|
||||
## <summary>Buildroot rules</summary>
|
||||
@@ -0,0 +1,3 @@
|
||||
policy_module(buildroot, 1.0.0)
|
||||
|
||||
type buildroot_test_t;
|
||||
@@ -0,0 +1,72 @@
|
||||
import os
|
||||
|
||||
import infra.basetest
|
||||
|
||||
|
||||
def boot_armv5_cpio(emulator, builddir):
|
||||
img = os.path.join(builddir, "images", "rootfs.cpio")
|
||||
emulator.boot(arch="armv5", kernel="builtin",
|
||||
options=["-initrd", img])
|
||||
emulator.login()
|
||||
|
||||
|
||||
class TestNoTimezone(infra.basetest.BRTest):
|
||||
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
||||
"""
|
||||
# BR2_TARGET_TZ_INFO is not set
|
||||
BR2_TARGET_ROOTFS_CPIO=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
boot_armv5_cpio(self.emulator, self.builddir)
|
||||
tz, _ = self.emulator.run("TZ=UTC date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "UTC")
|
||||
tz, _ = self.emulator.run("TZ=America/Los_Angeles date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "UTC")
|
||||
|
||||
|
||||
class TestGlibcAllTimezone(infra.basetest.BRTest):
|
||||
config = \
|
||||
"""
|
||||
BR2_arm=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TARGET_TZ_INFO=y
|
||||
BR2_TARGET_ROOTFS_CPIO=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
boot_armv5_cpio(self.emulator, self.builddir)
|
||||
tz, _ = self.emulator.run("date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "UTC")
|
||||
tz, _ = self.emulator.run("TZ=UTC date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "UTC")
|
||||
tz, _ = self.emulator.run("TZ=America/Los_Angeles date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "PST")
|
||||
tz, _ = self.emulator.run("TZ=Europe/Paris date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "CET")
|
||||
|
||||
|
||||
class TestGlibcNonDefaultLimitedTimezone(infra.basetest.BRTest):
|
||||
config = \
|
||||
"""
|
||||
BR2_arm=y
|
||||
BR2_TOOLCHAIN_EXTERNAL=y
|
||||
BR2_TARGET_TZ_INFO=y
|
||||
BR2_TARGET_TZ_ZONELIST="northamerica"
|
||||
BR2_TARGET_LOCALTIME="America/New_York"
|
||||
BR2_TARGET_ROOTFS_CPIO=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
"""
|
||||
|
||||
def test_run(self):
|
||||
boot_armv5_cpio(self.emulator, self.builddir)
|
||||
tz, _ = self.emulator.run("date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "EST")
|
||||
tz, _ = self.emulator.run("TZ=UTC date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "UTC")
|
||||
tz, _ = self.emulator.run("TZ=America/Los_Angeles date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "PST")
|
||||
tz, _ = self.emulator.run("TZ=Europe/Paris date +%Z")
|
||||
self.assertEqual(tz[0].strip(), "Europe")
|
||||
@@ -0,0 +1 @@
|
||||
name: GIT_HASH
|
||||
@@ -0,0 +1,4 @@
|
||||
include $(sort $(wildcard $(BR2_EXTERNAL_GIT_HASH_PATH)/package/*/*.mk))
|
||||
|
||||
# Get the git server port number from the test infra
|
||||
GITREMOTE_PORT_NUMBER ?= 9418
|
||||
@@ -0,0 +1 @@
|
||||
sha256 0000000000000000000000000000000000000000000000000000000000000000 bad-a238b1dfcd825d47d834af3c5223417c8411d90d-br1.tar.gz
|
||||
@@ -0,0 +1,10 @@
|
||||
################################################################################
|
||||
#
|
||||
# bad
|
||||
#
|
||||
################################################################################
|
||||
|
||||
BAD_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d
|
||||
BAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
|
||||
$(eval $(generic-package))
|
||||
@@ -0,0 +1 @@
|
||||
sha256 682ad1f39f258bfb35e26f213f3798f44bb8105bb55fad47bdc003113765b650 good-a238b1dfcd825d47d834af3c5223417c8411d90d-br1.tar.gz
|
||||
@@ -0,0 +1,10 @@
|
||||
################################################################################
|
||||
#
|
||||
# good
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GOOD_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d
|
||||
GOOD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
|
||||
$(eval $(generic-package))
|
||||
@@ -0,0 +1,10 @@
|
||||
################################################################################
|
||||
#
|
||||
# nohash
|
||||
#
|
||||
################################################################################
|
||||
|
||||
NOHASH_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d
|
||||
NOHASH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
|
||||
$(eval $(generic-package))
|
||||
@@ -0,0 +1 @@
|
||||
name: GIT_REFS
|
||||
@@ -0,0 +1,4 @@
|
||||
include $(sort $(wildcard $(BR2_EXTERNAL_GIT_REFS_PATH)/package/*/*.mk))
|
||||
|
||||
# Get the git server port number from the test infra
|
||||
GITREMOTE_PORT_NUMBER ?= 9418
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 c27041b3e874beb0d0218158e7d6507ad1515b684de5eed5fabd0f7205e9718e git-partial-sha1-branch-head-68c197d0879d485f4f6c-br1.tar.gz
|
||||
sha256 2c1126513651b0d346a4e6d1bb75ac1c9999217e18026302d27bea47b06c7fb2 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-partial-sha1-branch-head
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_PARTIAL_SHA1_BRANCH_HEAD_VERSION = 68c197d0879d485f4f6c
|
||||
GIT_PARTIAL_SHA1_BRANCH_HEAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_PARTIAL_SHA1_BRANCH_HEAD_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 1bbba9bf2788bd789ed8da4e47cabbf3467b1f706875b3f6b62df38e08fb9aba git-partial-sha1-reachable-by-branch-317406308d9259e2231b-br1.tar.gz
|
||||
sha256 fabbc65c442bacb5e69b7adfea6d14fbbfc1327134322efd12771dc84387d507 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-partial-sha1-reachable-by-branch
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_VERSION = 317406308d9259e2231b
|
||||
GIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_PARTIAL_SHA1_REACHABLE_BY_BRANCH_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 52d223f3b2d625216c259e9ff949ca8818452a531ba61557dd91f3889c7919d7 git-partial-sha1-reachable-by-tag-46bae5b639e5a18e2cc4-br1.tar.gz
|
||||
sha256 2de87d77a2f226813f2d9bda906e970e4195605cdba6680443c0c04d89c532b6 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-partial-sha1-reachable-by-tag
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_PARTIAL_SHA1_REACHABLE_BY_TAG_VERSION = 46bae5b639e5a18e2cc4
|
||||
GIT_PARTIAL_SHA1_REACHABLE_BY_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_PARTIAL_SHA1_REACHABLE_BY_TAG_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 5cfc004b05f48b3fb419a5db4b7239223d670225fbbb91de2ae151c97910b36c git-partial-sha1-tag-itself-2b0e0d98a49c97da6a61-br1.tar.gz
|
||||
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-partial-sha1-tag-itself
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_PARTIAL_SHA1_TAG_ITSELF_VERSION = 2b0e0d98a49c97da6a61
|
||||
GIT_PARTIAL_SHA1_TAG_ITSELF_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_PARTIAL_SHA1_TAG_ITSELF_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 0f40d7f39bf2e389cc2ce03c73cc0cc9ded1119378aaa68e2a2ef8597f6fd2f3 git-partial-sha1-tag-points-to-516c9c5f64ec66534d4d-br1.tar.gz
|
||||
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-partial-sha1-tag-points-to
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_PARTIAL_SHA1_TAG_POINTS_TO_VERSION = 516c9c5f64ec66534d4d
|
||||
GIT_PARTIAL_SHA1_TAG_POINTS_TO_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_PARTIAL_SHA1_TAG_POINTS_TO_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 3ab67c485ce1825abbbf5db1d90d94dfadc89b30bb740041cfc75fc04021e218 git-sha1-branch-head-68c197d0879d485f4f6cee85544722b79e68e59f-br1.tar.gz
|
||||
sha256 2c1126513651b0d346a4e6d1bb75ac1c9999217e18026302d27bea47b06c7fb2 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-sha1-branch-head
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_SHA1_BRANCH_HEAD_VERSION = 68c197d0879d485f4f6cee85544722b79e68e59f
|
||||
GIT_SHA1_BRANCH_HEAD_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_SHA1_BRANCH_HEAD_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 a5936d6d6022ea101a6076864a2afa918ab2776764012c4be589027001044041 git-sha1-reachable-by-branch-317406308d9259e2231bd0d6ddad3de3832bce08-br1.tar.gz
|
||||
sha256 fabbc65c442bacb5e69b7adfea6d14fbbfc1327134322efd12771dc84387d507 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-sha1-reachable-by-branch
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_SHA1_REACHABLE_BY_BRANCH_VERSION = 317406308d9259e2231bd0d6ddad3de3832bce08
|
||||
GIT_SHA1_REACHABLE_BY_BRANCH_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_SHA1_REACHABLE_BY_BRANCH_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 c203f968e358ca478d4c5344b1e4ae9bf13f9fb1120f2ed96a12154dd64195a6 git-sha1-reachable-by-tag-46bae5b639e5a18e2cc4dc508f080d566baeff59-br1.tar.gz
|
||||
sha256 2de87d77a2f226813f2d9bda906e970e4195605cdba6680443c0c04d89c532b6 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-sha1-reachable-by-tag
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_SHA1_REACHABLE_BY_TAG_VERSION = 46bae5b639e5a18e2cc4dc508f080d566baeff59
|
||||
GIT_SHA1_REACHABLE_BY_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_SHA1_REACHABLE_BY_TAG_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 57f08e9f3914e79a10e7fb5d346b26fef2773dd22eed0d61fd755e79e62cee93 git-sha1-tag-itself-2b0e0d98a49c97da6a618ab36337e2058eb733a2-br1.tar.gz
|
||||
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-sha1-tag-itself
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_SHA1_TAG_ITSELF_VERSION = 2b0e0d98a49c97da6a618ab36337e2058eb733a2
|
||||
GIT_SHA1_TAG_ITSELF_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_SHA1_TAG_ITSELF_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 1d8b565827137aa21ba37cde382aa291e33a135c697e38dcd31f14e195386327 git-sha1-tag-points-to-516c9c5f64ec66534d4d069c2e408d9ae4dce023-br1.tar.gz
|
||||
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-sha1-tag-points-to
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_SHA1_TAG_POINTS_TO_VERSION = 516c9c5f64ec66534d4d069c2e408d9ae4dce023
|
||||
GIT_SHA1_TAG_POINTS_TO_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_SHA1_TAG_POINTS_TO_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 e8e0febc7f1408df22bce2d73d9a30081e03b45e152bc25effd14435ca8b3433 git-submodule-disabled-a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f-br1.tar.gz
|
||||
sha256 ba8b6ddc4726bfb6a05045ebfd8c43263c968ad1bc601bd46a25bc055008eddc file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-submodule-disabled
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_SUBMODULE_DISABLED_VERSION = a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f
|
||||
GIT_SUBMODULE_DISABLED_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_SUBMODULE_DISABLED_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+1
@@ -0,0 +1 @@
|
||||
sha256 176c32f10ad11f290b6251d701835450292ba281eb59c7fb57b244407a55ceab git-submodule-enabled-a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f-br1.tar.gz
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-submodule-enabled
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_SUBMODULE_ENABLED_VERSION = a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f
|
||||
GIT_SUBMODULE_ENABLED_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_SUBMODULE_ENABLED_GIT_SUBMODULES = YES
|
||||
|
||||
$(eval $(generic-package))
|
||||
@@ -0,0 +1,2 @@
|
||||
sha256 c66b2366d8ccb1670951012334fe8d48de3358aef39b3da2912b339448fefcde git-tag-mytag-br1.tar.gz
|
||||
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
|
||||
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-tag
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_TAG_VERSION = mytag
|
||||
GIT_TAG_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_TAG_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
sha256 4a230e667227310289438cd7d899276a0d45ca8778abfd043dfc0a10ed2c9085 git-wrong-content-a238b1dfcd825d47d834af3c5223417c8411d90d-br1.tar.gz
|
||||
sha256 0000000000000000000000000000000000000000000000000000000000000000 file
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-wrong-content
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_WRONG_CONTENT_VERSION = a238b1dfcd825d47d834af3c5223417c8411d90d
|
||||
GIT_WRONG_CONTENT_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_WRONG_CONTENT_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
################################################################################
|
||||
#
|
||||
# git-wrong-sha1
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GIT_WRONG_SHA1_VERSION = 0000000000000000000000000000000000000000
|
||||
GIT_WRONG_SHA1_SITE = git://localhost:$(GITREMOTE_PORT_NUMBER)/repo.git
|
||||
GIT_WRONG_SHA1_LICENSE_FILES = file
|
||||
|
||||
$(eval $(generic-package))
|
||||
@@ -0,0 +1 @@
|
||||
objects/*/* binary
|
||||
@@ -0,0 +1 @@
|
||||
cb545facf77bbc5f24f95b6d503c338d10b7b717
|
||||
@@ -0,0 +1,4 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = true
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
@@ -0,0 +1 @@
|
||||
xν
Â0@ajOq$:;˛#„X€&8˙…q,S°=‘(číW<=_rćjśvĆÖ&‡(˝“:Y§U"e“1a�0B#�•#9AĎv+.쩆gŞŤW_w†Cý`źżxš3ńŇű’Ź 5N¨Ť4*D±é6Ńâźr‚WnL‹Wž×ş’Rç^ű_fĹW`
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user