initial buildroot for linux 5.15

This commit is contained in:
Huan.Feng
2021-12-06 14:12:13 +08:00
parent d7767d594e
commit 7b6fc358fa
12736 changed files with 508822 additions and 0 deletions
View File
+56
View File
@@ -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
+45
View File
@@ -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))
@@ -0,0 +1,4 @@
config BR2_PACKAGE_DETECT_BAD_ARCH
bool
default y
@@ -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
+12
View File
@@ -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
+1
View File
@@ -0,0 +1 @@
post-build.sh
+1
View File
@@ -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)
+110
View File
@@ -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.
@@ -0,0 +1,9 @@
################################################################################
#
# SELinux test package
#
################################################################################
SELINUX_TEST_SELINUX_MODULES = ntp tor
$(eval $(generic-package))
@@ -0,0 +1 @@
## <summary>Buildroot rules</summary>
@@ -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
@@ -0,0 +1,2 @@
sha256 c27041b3e874beb0d0218158e7d6507ad1515b684de5eed5fabd0f7205e9718e git-partial-sha1-branch-head-68c197d0879d485f4f6c-br1.tar.gz
sha256 2c1126513651b0d346a4e6d1bb75ac1c9999217e18026302d27bea47b06c7fb2 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 1bbba9bf2788bd789ed8da4e47cabbf3467b1f706875b3f6b62df38e08fb9aba git-partial-sha1-reachable-by-branch-317406308d9259e2231b-br1.tar.gz
sha256 fabbc65c442bacb5e69b7adfea6d14fbbfc1327134322efd12771dc84387d507 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 52d223f3b2d625216c259e9ff949ca8818452a531ba61557dd91f3889c7919d7 git-partial-sha1-reachable-by-tag-46bae5b639e5a18e2cc4-br1.tar.gz
sha256 2de87d77a2f226813f2d9bda906e970e4195605cdba6680443c0c04d89c532b6 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 5cfc004b05f48b3fb419a5db4b7239223d670225fbbb91de2ae151c97910b36c git-partial-sha1-tag-itself-2b0e0d98a49c97da6a61-br1.tar.gz
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 0f40d7f39bf2e389cc2ce03c73cc0cc9ded1119378aaa68e2a2ef8597f6fd2f3 git-partial-sha1-tag-points-to-516c9c5f64ec66534d4d-br1.tar.gz
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 3ab67c485ce1825abbbf5db1d90d94dfadc89b30bb740041cfc75fc04021e218 git-sha1-branch-head-68c197d0879d485f4f6cee85544722b79e68e59f-br1.tar.gz
sha256 2c1126513651b0d346a4e6d1bb75ac1c9999217e18026302d27bea47b06c7fb2 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 a5936d6d6022ea101a6076864a2afa918ab2776764012c4be589027001044041 git-sha1-reachable-by-branch-317406308d9259e2231bd0d6ddad3de3832bce08-br1.tar.gz
sha256 fabbc65c442bacb5e69b7adfea6d14fbbfc1327134322efd12771dc84387d507 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 c203f968e358ca478d4c5344b1e4ae9bf13f9fb1120f2ed96a12154dd64195a6 git-sha1-reachable-by-tag-46bae5b639e5a18e2cc4dc508f080d566baeff59-br1.tar.gz
sha256 2de87d77a2f226813f2d9bda906e970e4195605cdba6680443c0c04d89c532b6 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 57f08e9f3914e79a10e7fb5d346b26fef2773dd22eed0d61fd755e79e62cee93 git-sha1-tag-itself-2b0e0d98a49c97da6a618ab36337e2058eb733a2-br1.tar.gz
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 1d8b565827137aa21ba37cde382aa291e33a135c697e38dcd31f14e195386327 git-sha1-tag-points-to-516c9c5f64ec66534d4d069c2e408d9ae4dce023-br1.tar.gz
sha256 6de8772a0a58fa62e2b8c58d4dae55c9db7534ad3b3918ecc849a9008d58f081 file
@@ -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))
@@ -0,0 +1,2 @@
sha256 e8e0febc7f1408df22bce2d73d9a30081e03b45e152bc25effd14435ca8b3433 git-submodule-disabled-a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f-br1.tar.gz
sha256 ba8b6ddc4726bfb6a05045ebfd8c43263c968ad1bc601bd46a25bc055008eddc file
@@ -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))
@@ -0,0 +1 @@
sha256 176c32f10ad11f290b6251d701835450292ba281eb59c7fb57b244407a55ceab git-submodule-enabled-a9dbc1e23c45e8e1b88c0448763f54d714eb6f8f-br1.tar.gz
@@ -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))
@@ -0,0 +1,2 @@
sha256 4a230e667227310289438cd7d899276a0d45ca8778abfd043dfc0a10ed2c9085 git-wrong-content-a238b1dfcd825d47d834af3c5223417c8411d90d-br1.tar.gz
sha256 0000000000000000000000000000000000000000000000000000000000000000 file
@@ -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))
@@ -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
@@ -0,0 +1 @@
x­Î˝ Â0@ajOq $:;˛#„X€&8˙…q,S°=íW<=_rćjśv­ĆÖ&‡(˝“:Y§U"e“1a0B#•#9AĎv+.쩆gŞŤW_w†Cý`źżxš3ńŇű’Ź 5N¨Ť4*D±é6Ńâźr‚WnLWž×ş’Rç^ű_fĹW`

Some files were not shown because too many files have changed in this diff Show More