1cb9d4bb1SMuhammad Moinur Rahman# SPDX-License-Identifier: BSD-2-Clause 2cb9d4bb1SMuhammad Moinur Rahman# 3cb9d4bb1SMuhammad Moinur Rahman# Copyright (c) 2024 The FreeBSD Foundation 4cb9d4bb1SMuhammad Moinur Rahman# 5cb9d4bb1SMuhammad Moinur Rahman# This software was developed by Cybermancer Infosec <bofh@FreeBSD.org> 6cb9d4bb1SMuhammad Moinur Rahman# under sponsorship from the FreeBSD Foundation. 7cb9d4bb1SMuhammad Moinur Rahman# 8cb9d4bb1SMuhammad Moinur Rahman# Makefile for CI testing. 9cb9d4bb1SMuhammad Moinur Rahman# 10cb9d4bb1SMuhammad Moinur Rahman# User-driven targets: 11c08f5ad1SMuhammad Moinur Rahman# ci: Run CI tests 12c08f5ad1SMuhammad Moinur Rahman# ci-smoke: Run smoke tests which is simply booting the image 13c08f5ad1SMuhammad Moinur Rahman# ci-full: Run full tests 14cb9d4bb1SMuhammad Moinur Rahman# 15cb9d4bb1SMuhammad Moinur Rahman# Variables affecting the build process: 16cb9d4bb1SMuhammad Moinur Rahman# TARGET/TARGET_ARCH: architecture of built release (default: same as build host) 17cb9d4bb1SMuhammad Moinur Rahman# KERNELCONF: kernel configuration to use 18cb9d4bb1SMuhammad Moinur Rahman# USE_QEMU: Use QEMU for testing rather than bhyve 19cb9d4bb1SMuhammad Moinur Rahman# 20cb9d4bb1SMuhammad Moinur Rahman 21*02376be3SEd MasteWORLDDIR?= ${.CURDIR:H:H} 22cb9d4bb1SMuhammad Moinur RahmanRELEASEDIR= ${WORLDDIR}/release 23cb9d4bb1SMuhammad Moinur RahmanMAKECONF?= /dev/null 24cb9d4bb1SMuhammad Moinur RahmanSRCCONF?= /dev/null 25cb9d4bb1SMuhammad Moinur Rahman_MEMORY!=sysctl -n hw.physmem 2>/dev/null 26cb9d4bb1SMuhammad Moinur RahmanPARALLEL_JOBS!=sysctl -n hw.ncpu 2>/dev/null || nproc 2>/dev/null 27cb9d4bb1SMuhammad Moinur RahmanTOTAL_MEMORY!=expr ${_MEMORY} / 1073741824 28cb9d4bb1SMuhammad Moinur RahmanKERNCONF?= GENERIC 29cb9d4bb1SMuhammad Moinur RahmanLOCALBASE?= /usr/local 304b656dedSMuhammad Moinur RahmanEXTRA_MAKE_FLAGS?= 31cb9d4bb1SMuhammad Moinur Rahman 32cb9d4bb1SMuhammad Moinur Rahman.if !defined(TARGET) || empty(TARGET) 33cb9d4bb1SMuhammad Moinur RahmanTARGET= ${MACHINE} 34cb9d4bb1SMuhammad Moinur Rahman.endif 35cb9d4bb1SMuhammad Moinur Rahman.if !defined(TARGET_ARCH) || empty(TARGET_ARCH) 36cb9d4bb1SMuhammad Moinur Rahman. if ${TARGET} == ${MACHINE} 37cb9d4bb1SMuhammad Moinur RahmanTARGET_ARCH= ${MACHINE_ARCH} 38cb9d4bb1SMuhammad Moinur Rahman. else 39cb9d4bb1SMuhammad Moinur RahmanTARGET_ARCH= ${TARGET} 40cb9d4bb1SMuhammad Moinur Rahman. endif 41cb9d4bb1SMuhammad Moinur Rahman.endif 42cb9d4bb1SMuhammad Moinur RahmanIMAKE= ${MAKE} TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} 43cb9d4bb1SMuhammad Moinur Rahman 44932cf5faSMuhammad Moinur Rahman.if !defined(CIENV) || empty(CIENV) 45932cf5faSMuhammad Moinur RahmanCIENV= local 46932cf5faSMuhammad Moinur RahmanLOG_TARGET= > ${.CURDIR}/_.${TARGET_ARCH}.${.TARGET} 2>&1 || (echo "${.TARGET} failed, check _.${TARGET_ARCH}.${.TARGET} for details" ; false) 47932cf5faSMuhammad Moinur Rahman.endif 48932cf5faSMuhammad Moinur Rahman 49cb9d4bb1SMuhammad Moinur Rahman.if defined(CROSS_TOOLCHAIN) || !empty(CROSS_TOOLCHAIN) 50cb9d4bb1SMuhammad Moinur RahmanCROSS_TOOLCHAIN_PARAM= "CROSS_TOOLCHAIN=${CROSS_TOOLCHAIN}" 51cb9d4bb1SMuhammad Moinur Rahman.endif 52cb9d4bb1SMuhammad Moinur Rahman 53cb9d4bb1SMuhammad Moinur Rahman# Define OSRELEASE by using newvers.sh 54cb9d4bb1SMuhammad Moinur Rahman.if !defined(OSRELEASE) || empty(OSRELEASE) 55cb9d4bb1SMuhammad Moinur Rahman. for _V in TYPE BRANCH REVISION 56cb9d4bb1SMuhammad Moinur Rahman. if !defined(${_V}) || empty(${_V}) 57cb9d4bb1SMuhammad Moinur Rahman${_V}!= eval $$(awk '/^${_V}=/{print}' ${.CURDIR}/../../sys/conf/newvers.sh); echo $$${_V} 58cb9d4bb1SMuhammad Moinur Rahman. endif 59cb9d4bb1SMuhammad Moinur Rahman. endfor 60cb9d4bb1SMuhammad Moinur Rahman. for _V in ${TARGET_ARCH} 61cb9d4bb1SMuhammad Moinur Rahman. if !empty(TARGET:M${_V}) 624d185f54SMuhammad Moinur RahmanOSRELEASE= ${TYPE}-${REVISION}-${BRANCH:C/[.-\/]/_/g}-${TARGET} 634d185f54SMuhammad Moinur RahmanVOLUME_LABEL= ${REVISION:C/[.-]/_/g}_${BRANCH:C/[.-\/]/_/g}_${TARGET} 64cb9d4bb1SMuhammad Moinur Rahman. else 654d185f54SMuhammad Moinur RahmanOSRELEASE= ${TYPE}-${REVISION}-${BRANCH:C/[.-\/]/_/g}-${TARGET}-${TARGET_ARCH} 664d185f54SMuhammad Moinur RahmanVOLUME_LABEL= ${REVISION:C/[.-]/_/g}_${BRANCH:C/[.-\/]/_/g}_${TARGET_ARCH} 67cb9d4bb1SMuhammad Moinur Rahman. endif 68cb9d4bb1SMuhammad Moinur Rahman. endfor 69cb9d4bb1SMuhammad Moinur Rahman.endif 70cb9d4bb1SMuhammad Moinur Rahman 71cb9d4bb1SMuhammad Moinur Rahman.if exists(${.CURDIR}/tools/ci.conf) && !defined(CICONF) 72cb9d4bb1SMuhammad Moinur RahmanCICONF?= ${.CURDIR}/tools/ci.conf 73cb9d4bb1SMuhammad Moinur Rahman.endif 74cb9d4bb1SMuhammad Moinur RahmanSWAPSIZE?= 1g 75cb9d4bb1SMuhammad Moinur RahmanVMFS?= ufs 76cb9d4bb1SMuhammad Moinur RahmanFORMAT= raw 77cb9d4bb1SMuhammad Moinur RahmanCIIMAGE= ci-${OSRELEASE}-${GITREV}-${KERNCONF}.${FORMAT} 78c08f5ad1SMuhammad Moinur RahmanCIDISK?= ${.OBJDIR}/${CIIMAGE} 79cb9d4bb1SMuhammad Moinur RahmanVMSIZE?= 6g 80c08f5ad1SMuhammad Moinur RahmanCITYPE?= full 8192a7f2d5SSiva MahadevanKYUA_TEST_FILTERS?= 82c08f5ad1SMuhammad Moinur RahmanMETA_TAR!=mktemp /tmp/meta.XXXXXX 83c08f5ad1SMuhammad Moinur RahmanMETA_DIR!=mktemp -d /tmp/meta.XXXXXX 84c08f5ad1SMuhammad Moinur RahmanMETA_DIROUT!=mktemp -d /tmp/meta.XXXXXX 8514d5c13aSMuhammad Moinur RahmanENV_FILE= ${META_DIR}/ci-${OSRELEASE}-${GITREV}-${KERNCONF}.env 86c08f5ad1SMuhammad Moinur RahmanDISC_CAM!=truncate -s 128m /tmp/disk-cam 87c08f5ad1SMuhammad Moinur RahmanEXTRA_DISK_NUM?=5 88c08f5ad1SMuhammad Moinur RahmanDISK_NUMBERS!=jot - 1 ${EXTRA_DISK_NUM} 89c08f5ad1SMuhammad Moinur RahmanBHYVE_EXTRA_DISK_PARAM?= 90c08f5ad1SMuhammad Moinur RahmanBHYVE_EXTRA_DISK_PARAM+=-s 4:0,ahci-hd,/tmp/disk-cam 91c08f5ad1SMuhammad Moinur Rahman.for i in ${DISK_NUMBERS} 92c08f5ad1SMuhammad Moinur RahmanNEW_DISK!=truncate -s 128m /tmp/disk${i} 93c08f5ad1SMuhammad Moinur RahmanBHYVE_EXTRA_DISK_PARAM+=-s $$((${i} + 4)):0,virtio-blk,/tmp/disk${i} 94c08f5ad1SMuhammad Moinur RahmanCLEANFILES+=/tmp/disk${i} 95c08f5ad1SMuhammad Moinur Rahman.endfor 96cb9d4bb1SMuhammad Moinur RahmanTEST_VM_NAME= ci-${OSRELEASE}-${GITREV}-${KERNCONF} 97cb9d4bb1SMuhammad Moinur Rahman.if ${TOTAL_MEMORY} >= 16 98c08f5ad1SMuhammad Moinur RahmanVM_MEM=8 99cb9d4bb1SMuhammad Moinur Rahman.elif ${TOTAL_MEMORY} >=4 100cb9d4bb1SMuhammad Moinur RahmanVM_MEM=${TOTAL_MEMORY} 101cb9d4bb1SMuhammad Moinur Rahman.else 102cb9d4bb1SMuhammad Moinur Rahmanecho "Please increase the memory to at least 4GB" 103cb9d4bb1SMuhammad Moinur Rahmanexit 0 104cb9d4bb1SMuhammad Moinur Rahman.endif 105cb9d4bb1SMuhammad Moinur RahmanVM_MEM_SIZE?=${VM_MEM}g 106cb9d4bb1SMuhammad Moinur RahmanTIMEOUT_MS?=5400000 107cb9d4bb1SMuhammad Moinur RahmanTIMEOUT=$$((${TIMEOUT_MS} / 1000)) 108cb9d4bb1SMuhammad Moinur RahmanTIMEOUT_EXPECT=$$((${TIMEOUT} - 60)) 109cb9d4bb1SMuhammad Moinur RahmanTIMEOUT_VM=$$((${TIMEOUT_EXPECT} - 120)) 110cb9d4bb1SMuhammad Moinur Rahman.if exists(${.CURDIR}/Makefile.${TARGET_ARCH}) 111cb9d4bb1SMuhammad Moinur Rahman. include "${.CURDIR}/Makefile.${TARGET_ARCH}" 112cb9d4bb1SMuhammad Moinur Rahman.endif 113cb9d4bb1SMuhammad Moinur Rahman.if ${TARGET_ARCH} != ${MACHINE_ARCH} 114cb9d4bb1SMuhammad Moinur Rahman. if ( ${TARGET_ARCH} != "i386" ) || ( ${MACHINE_ARCH} != "amd64" ) 115cb9d4bb1SMuhammad Moinur RahmanQEMUSTATIC=/usr/local/bin/qemu-${QEMU_ARCH}-static 116cb9d4bb1SMuhammad Moinur RahmanQEMUTGT=portinstall-qemu 117cb9d4bb1SMuhammad Moinur Rahman. endif 118cb9d4bb1SMuhammad Moinur Rahman.endif 119cb9d4bb1SMuhammad Moinur RahmanQEMUTGT?= 1209ec37e8fSSiva MahadevanQEMU_DEVICES?= 121cb9d4bb1SMuhammad Moinur RahmanQEMU_EXTRA_PARAM?= 122cb9d4bb1SMuhammad Moinur RahmanQEMU_MACHINE?=virt 123cb9d4bb1SMuhammad Moinur RahmanQEMUBIN=/usr/local/bin/qemu-system-${QEMU_ARCH} 124cb9d4bb1SMuhammad Moinur Rahman.if ${PARALLEL_JOBS} >= ${QEMU_MAX_CPU_COUNT} 125cb9d4bb1SMuhammad Moinur RahmanQEMU_CPU_COUNT=${QEMU_MAX_CPU_COUNT} 126cb9d4bb1SMuhammad Moinur Rahman.else 127cb9d4bb1SMuhammad Moinur RahmanQEMU_CPU_COUNT=${PARALLEL_JOBS} 128cb9d4bb1SMuhammad Moinur Rahman.endif 129cb9d4bb1SMuhammad Moinur Rahman.if ${VM_MEM} >= ${QEMU_MAX_MEM_SIZE} 130cb9d4bb1SMuhammad Moinur RahmanVM_MEM_SIZE=${QEMU_MAX_MEM_SIZE}g 131cb9d4bb1SMuhammad Moinur Rahman.else 132cb9d4bb1SMuhammad Moinur RahmanVM_MEM_SIZE=${VM_MEM}g 133cb9d4bb1SMuhammad Moinur Rahman.endif 1345ea28c51SMuhammad Moinur RahmanVMGUEST!=sysctl -n kern.vm_guest 2>/dev/null || true 1355ea28c51SMuhammad Moinur Rahman.if ${VMGUEST} != "none" 136cb9d4bb1SMuhammad Moinur RahmanUSE_QEMU?=1 137cb9d4bb1SMuhammad Moinur Rahman.endif 138cb9d4bb1SMuhammad Moinur RahmanKLDFILEMONISLOADED!=kldload -q -n filemon 2>/dev/null && echo "1" || echo "0" 139cb9d4bb1SMuhammad Moinur Rahman.if ${KLDFILEMONISLOADED} == "1" 140cb9d4bb1SMuhammad Moinur RahmanMETAMODE?=-DWITH_META_MODE 141cb9d4bb1SMuhammad Moinur Rahman.endif 142cb9d4bb1SMuhammad Moinur Rahman 143c08f5ad1SMuhammad Moinur RahmanCLEANFILES+= ${.OBJDIR}/${CIIMAGE} ${.OBJDIR}/ci.img ${META_TAR} 14466fe8050SSiva MahadevanIMAGEDIR= ${.OBJDIR}/ci-buildimage 14566fe8050SSiva MahadevanCLEANDIRS+= ${IMAGEDIR} 146cb9d4bb1SMuhammad Moinur Rahman 147cb9d4bb1SMuhammad Moinur Rahmanportinstall: portinstall-pkg portinstall-qemu portinstall-expect portinstall-${TARGET_ARCH:tl} .PHONY 148cb9d4bb1SMuhammad Moinur Rahman 149cb9d4bb1SMuhammad Moinur Rahmanportinstall-pkg: .PHONY 150cb9d4bb1SMuhammad Moinur Rahman.if !exists(/usr/local/sbin/pkg-static) 151cb9d4bb1SMuhammad Moinur Rahman env ASSUME_ALWAYS_YES=yes pkg bootstrap 152cb9d4bb1SMuhammad Moinur Rahman.endif 153cb9d4bb1SMuhammad Moinur Rahman 154cb9d4bb1SMuhammad Moinur Rahmanportinstall-qemu: portinstall-pkg .PHONY 155ed4c64bcSSiva Mahadevan.if !exists(/usr/local/bin/qemu-${QEMU_ARCH}-static) 156cb9d4bb1SMuhammad Moinur Rahman env ASSUME_ALWAYS_YES=yes pkg install emulators/qemu-user-static 157cb9d4bb1SMuhammad Moinur Rahman.endif 158ed4c64bcSSiva Mahadevan.if !exists(${QEMUBIN}) 159cb9d4bb1SMuhammad Moinur Rahman env ASSUME_ALWAYS_YES=yes pkg install emulators/qemu@nox11 160cb9d4bb1SMuhammad Moinur Rahman.endif 161cb9d4bb1SMuhammad Moinur Rahman 162cb9d4bb1SMuhammad Moinur Rahmanportinstall-expect: portinstall-pkg .PHONY 163cb9d4bb1SMuhammad Moinur Rahman.if !exists(/usr/local/bin/expect) 164cb9d4bb1SMuhammad Moinur Rahman env ASSUME_ALWAYS_YES=yes pkg install lang/expect 165cb9d4bb1SMuhammad Moinur Rahman.endif 166cb9d4bb1SMuhammad Moinur Rahman 167cb9d4bb1SMuhammad Moinur Rahmanbeforeclean: .PHONY 16866fe8050SSiva Mahadevan chflags -R noschg ${IMAGEDIR} 169cb9d4bb1SMuhammad Moinur Rahman 170cb9d4bb1SMuhammad Moinur Rahman.include <bsd.obj.mk> 171cb9d4bb1SMuhammad Moinur Rahmanclean: beforeclean .PHONY 172cb9d4bb1SMuhammad Moinur Rahman 173c08f5ad1SMuhammad Moinur Rahmancleandir: beforeclean .PHONY 174c08f5ad1SMuhammad Moinur Rahman 175cb9d4bb1SMuhammad Moinur Rahmanci-buildworld: .PHONY 176a5f03413SWarner Losh @echo "Building world for ${TARGET_ARCH}" 177a5f03413SWarner Losh ${IMAKE} -j${PARALLEL_JOBS} -C ${WORLDDIR} ${METAMODE} \ 178a5f03413SWarner Losh ${CROSS_TOOLCHAIN_PARAM} __MAKE_CONF=${MAKECONF} SRCCONF=${SRCCONF} \ 179932cf5faSMuhammad Moinur Rahman ${EXTRA_MAKE_FLAGS} buildworld ${LOG_TARGET} 180cb9d4bb1SMuhammad Moinur Rahman 181cb9d4bb1SMuhammad Moinur Rahmanci-buildkernel: ci-buildworld-${TARGET_ARCH:tl} .PHONY 1822c6e4aedSkalinasp @echo "Building kernel for ${TARGET_ARCH}" 183a5f03413SWarner Losh ${IMAKE} -j${PARALLEL_JOBS} -C ${WORLDDIR} ${METAMODE} \ 1842c6e4aedSkalinasp ${CROSS_TOOLCHAIN_PARAM} __MAKE_CONF=${MAKECONF} SRCCONF=${SRCCONF} \ 1854b656dedSMuhammad Moinur Rahman ${EXTRA_MAKE_FLAGS} KERNCONF=${KERNCONF} \ 186932cf5faSMuhammad Moinur Rahman buildkernel ${LOG_TARGET} 187cb9d4bb1SMuhammad Moinur Rahman 188cb9d4bb1SMuhammad Moinur Rahmanci-buildimage: ${QEMUTGT} ci-buildkernel-${TARGET_ARCH:tl} .PHONY 1892c6e4aedSkalinasp @echo "Building ci image for ${TARGET_ARCH}" 190cb9d4bb1SMuhammad Moinur Rahman mkdir -p ${.OBJDIR}/${.TARGET} 191cb9d4bb1SMuhammad Moinur Rahman env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} SWAPSIZE=${SWAPSIZE} \ 192cb9d4bb1SMuhammad Moinur Rahman QEMUSTATIC=${QEMUSTATIC} CITYPE=${CITYPE} \ 193cb9d4bb1SMuhammad Moinur Rahman ${RELEASEDIR}/scripts/mk-vmimage.sh \ 194cb9d4bb1SMuhammad Moinur Rahman -C ${RELEASEDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} -F ${VMFS} \ 195cb9d4bb1SMuhammad Moinur Rahman -i ${.OBJDIR}/ci.img -s ${VMSIZE} -f ${FORMAT} \ 196932cf5faSMuhammad Moinur Rahman -S ${WORLDDIR} -o ${.OBJDIR}/${CIIMAGE} -c ${CICONF} ${LOG_TARGET} 197cb9d4bb1SMuhammad Moinur Rahman touch ${.TARGET} 198cb9d4bb1SMuhammad Moinur Rahman 199c08f5ad1SMuhammad Moinur Rahmanci-set-smoke-var: .PHONY 200cb9d4bb1SMuhammad Moinur RahmanCITYPE=smoke 201cb9d4bb1SMuhammad Moinur Rahman 202c08f5ad1SMuhammad Moinur Rahmanci-set-full-var: .PHONY 203c08f5ad1SMuhammad Moinur RahmanCITYPE=full 204c08f5ad1SMuhammad Moinur Rahman 20514d5c13aSMuhammad Moinur Rahmanci-get-env: .PHONY 20614d5c13aSMuhammad Moinur Rahman @echo "TARGET=${TARGET}" > ${ENV_FILE} 20714d5c13aSMuhammad Moinur Rahman @echo "TARGET_ARCH=${TARGET_ARCH}" >> ${ENV_FILE} 20814d5c13aSMuhammad Moinur Rahman @echo "KERNCONF=${KERNCONF}" >> ${ENV_FILE} 20914d5c13aSMuhammad Moinur Rahman @echo "OSRELEASE=${OSRELEASE}" >> ${ENV_FILE} 21014d5c13aSMuhammad Moinur Rahman @echo "CIIMAGE=${CIIMAGE}" >> ${ENV_FILE} 21114d5c13aSMuhammad Moinur Rahman @echo "CIDISK=${CIDISK}" >> ${ENV_FILE} 21214d5c13aSMuhammad Moinur Rahman @echo "VMSIZE=${VMSIZE}" >> ${ENV_FILE} 21314d5c13aSMuhammad Moinur Rahman @echo "VM_MEM_SIZE=${VM_MEM_SIZE}" >> ${ENV_FILE} 21414d5c13aSMuhammad Moinur Rahman @echo "TIMEOUT=${TIMEOUT}s" >> ${ENV_FILE} 21514d5c13aSMuhammad Moinur Rahman @echo "CITYPE=${CITYPE}" >> ${ENV_FILE} 21614d5c13aSMuhammad Moinur Rahman @echo "KYUA_TEST_FILTERS='${KYUA_TEST_FILTERS}'" >> ${ENV_FILE} 21714d5c13aSMuhammad Moinur Rahman @echo "META_MODE='${METAMODE}'" >> ${ENV_FILE} 21814d5c13aSMuhammad Moinur Rahman @echo "USE_QEMU='${USE_QEMU}'" >> ${ENV_FILE} 21914d5c13aSMuhammad Moinur Rahman @echo "GITREV='${GITREV}'" >> ${ENV_FILE} 22014d5c13aSMuhammad Moinur Rahman @echo "GITBRANCH='${GITBRANCH}'" >> ${ENV_FILE} 22114d5c13aSMuhammad Moinur Rahman @echo "GITCOUNT='${GITCOUNT}'" >> ${ENV_FILE} 22214d5c13aSMuhammad Moinur Rahman @echo "BUILDDATE='${BUILDDATE}'" >> ${ENV_FILE} 22314d5c13aSMuhammad Moinur Rahman @echo "CC='${CC}'" >> ${ENV_FILE} 22414d5c13aSMuhammad Moinur Rahman @echo "CFLAGS='${CFLAGS}'" >> ${ENV_FILE} 22514d5c13aSMuhammad Moinur Rahman @echo "CPP='${CPP}'" >> ${ENV_FILE} 22614d5c13aSMuhammad Moinur Rahman @echo "CXX='${CXX}'" >> ${ENV_FILE} 22714d5c13aSMuhammad Moinur Rahman @echo "CXXFLAGS='${CXXFLAGS}'" >> ${ENV_FILE} 22814d5c13aSMuhammad Moinur Rahman @echo "COMPILER_FEATURES='${COMPILER_FEATURES}'" >> ${ENV_FILE} 22914d5c13aSMuhammad Moinur Rahman @echo "COMPILER_FREEBSD_VERSION='${COMPILER_FREEBSD_VERSION}'" >> ${ENV_FILE} 23014d5c13aSMuhammad Moinur Rahman @echo "COMPILER_TYPE='${COMPILER_TYPE}'" >> ${ENV_FILE} 23114d5c13aSMuhammad Moinur Rahman @echo "COMPILER_VERSION='${COMPILER_VERSION}'" >> ${ENV_FILE} 23214d5c13aSMuhammad Moinur Rahman @echo "HOST_CC='${HOST_CC}'" >> ${ENV_FILE} 23314d5c13aSMuhammad Moinur Rahman @echo "HOST_MACHINE='${HOST_MACHINE}'" >> ${ENV_FILE} 23414d5c13aSMuhammad Moinur Rahman @echo "HOST_OS='${HOST_OS}'" >> ${ENV_FILE} 23514d5c13aSMuhammad Moinur Rahman @echo "HOST_OSMAJOR='${HOST_OSMAJOR}'" >> ${ENV_FILE} 23614d5c13aSMuhammad Moinur Rahman @echo "HOST_OSTYPE='${HOST_OSTYPE}'" >> ${ENV_FILE} 23714d5c13aSMuhammad Moinur Rahman @echo "LD='${LD}'" >> ${ENV_FILE} 23814d5c13aSMuhammad Moinur Rahman @echo "LDFLAGS='${LDFLAGS}'" >> ${ENV_FILE} 23914d5c13aSMuhammad Moinur Rahman @echo "MACHINE='${MACHINE}'" >> ${ENV_FILE} 24014d5c13aSMuhammad Moinur Rahman @echo "MACHINE_ABI='${MACHINE_ABI}'" >> ${ENV_FILE} 24114d5c13aSMuhammad Moinur Rahman @echo "MACHINE_ARCH='${MACHINE_ARCH}'" >> ${ENV_FILE} 24214d5c13aSMuhammad Moinur Rahman @echo "MACHINE_CPU='${MACHINE_CPU}'" >> ${ENV_FILE} 24314d5c13aSMuhammad Moinur Rahman @echo "MACHINE_CPUARCH='${MACHINE_CPUARCH}'" >> ${ENV_FILE} 24414d5c13aSMuhammad Moinur Rahman 24514d5c13aSMuhammad Moinur Rahmanci-create-meta: ci-get-env .PHONY 246c08f5ad1SMuhammad Moinur Rahman truncate -s 512M ${META_TAR} 247c08f5ad1SMuhammad Moinur Rahman tar rvf ${META_TAR} -C ${META_DIR} . 248c08f5ad1SMuhammad Moinur Rahman 249c08f5ad1SMuhammad Moinur Rahmanci-extract-meta: .PHONY 250c08f5ad1SMuhammad Moinur Rahman tar xfv ${META_TAR} -C ${META_DIROUT} 25110fb5e71SSiva Mahadevan rm -rf ${META_TAR} ${META_DIR} 252c08f5ad1SMuhammad Moinur Rahman @echo "Extracted kyua reports to ${META_DIROUT}" 253c08f5ad1SMuhammad Moinur Rahman 254cb9d4bb1SMuhammad Moinur Rahmanci-runtest: ci-buildimage-${TARGET_ARCH:tl} portinstall .PHONY 255cb9d4bb1SMuhammad Moinur Rahman.if ${MACHINE} == "amd64" && ( ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" ) && ( !defined(USE_QEMU) || empty(USE_QEMU) ) 256cb9d4bb1SMuhammad Moinur Rahman /usr/sbin/bhyvectl --vm=${TEST_VM_NAME} --destroy || true 2572f50ea54SSiva Mahadevan expect -c "set timeout ${TIMEOUT_EXPECT}; \ 2582f50ea54SSiva Mahadevan spawn /usr/bin/timeout -k 5s 30s /usr/sbin/bhyveload \ 2592f50ea54SSiva Mahadevan -c stdio -m ${VM_MEM_SIZE} -d ${CIDISK} ${TEST_VM_NAME}; \ 2602f50ea54SSiva Mahadevan expect { eof }; \ 2612f50ea54SSiva Mahadevan exit [lindex [wait] 3]" 262cb9d4bb1SMuhammad Moinur Rahman expect -c "set timeout ${TIMEOUT_EXPECT}; \ 263cb9d4bb1SMuhammad Moinur Rahman spawn /usr/bin/timeout -k 60 ${TIMEOUT_VM} /usr/sbin/bhyve \ 264cb9d4bb1SMuhammad Moinur Rahman -c ${PARALLEL_JOBS} -m ${VM_MEM_SIZE} -A -H -P \ 265cb9d4bb1SMuhammad Moinur Rahman -s 0:0,hostbridge \ 266cb9d4bb1SMuhammad Moinur Rahman -s 1:0,lpc \ 267c08f5ad1SMuhammad Moinur Rahman -s 2:0,virtio-blk,${CIDISK} \ 268c08f5ad1SMuhammad Moinur Rahman -s 3:0,virtio-blk,${META_TAR} \ 269c08f5ad1SMuhammad Moinur Rahman ${BHYVE_EXTRA_DISK_PARAM} \ 270cb9d4bb1SMuhammad Moinur Rahman -l com1,stdio \ 271cb9d4bb1SMuhammad Moinur Rahman ${TEST_VM_NAME}; \ 272cb9d4bb1SMuhammad Moinur Rahman expect { eof }" 273cb9d4bb1SMuhammad Moinur Rahman /usr/sbin/bhyvectl --vm=${TEST_VM_NAME} --destroy 274cb9d4bb1SMuhammad Moinur Rahman.else 275cb9d4bb1SMuhammad Moinur Rahman timeout -k 60 ${TIMEOUT_VM} ${QEMUBIN} \ 276cb9d4bb1SMuhammad Moinur Rahman -machine ${QEMU_MACHINE} \ 277cb9d4bb1SMuhammad Moinur Rahman -smp ${QEMU_CPU_COUNT} \ 278cb9d4bb1SMuhammad Moinur Rahman -m ${VM_MEM_SIZE} \ 279cb9d4bb1SMuhammad Moinur Rahman -nographic \ 280cb9d4bb1SMuhammad Moinur Rahman -no-reboot \ 281cb9d4bb1SMuhammad Moinur Rahman ${QEMU_EXTRA_PARAM} \ 2829ec37e8fSSiva Mahadevan -device virtio-blk,drive=hd0 \ 2839ec37e8fSSiva Mahadevan -device virtio-blk,drive=hd1 \ 2849ec37e8fSSiva Mahadevan -blockdev driver=raw,node-name=hd0,file.driver=file,file.filename=${CIDISK} \ 2859ec37e8fSSiva Mahadevan -blockdev driver=raw,node-name=hd1,file.driver=file,file.filename=${META_TAR} \ 286cb9d4bb1SMuhammad Moinur Rahman ${QEMU_DEVICES} 287cb9d4bb1SMuhammad Moinur Rahman.endif 288cb9d4bb1SMuhammad Moinur Rahman 289cb9d4bb1SMuhammad Moinur Rahmanci-checktarget: .PHONY 290cb9d4bb1SMuhammad Moinur Rahman.if ${TARGET_ARCH} != "aarch64" && \ 291cb9d4bb1SMuhammad Moinur Rahman ${TARGET_ARCH} != "amd64" && \ 292cb9d4bb1SMuhammad Moinur Rahman ${TARGET_ARCH} != "armv7" && \ 293cb9d4bb1SMuhammad Moinur Rahman ${TARGET_ARCH} != "powerpc64" && \ 294cb9d4bb1SMuhammad Moinur Rahman ${TARGET_ARCH} != "powerpc64le" && \ 295cb9d4bb1SMuhammad Moinur Rahman ${TARGET_ARCH} != "riscv64" 296cb9d4bb1SMuhammad Moinur Rahman @false 297cb9d4bb1SMuhammad Moinur Rahman.ERROR: 298cb9d4bb1SMuhammad Moinur Rahman @echo "Error: ${TARGET_ARCH} is not supported on ${TYPE} ${REVISION} ${BRANCH}" 299cb9d4bb1SMuhammad Moinur Rahman.endif 300cb9d4bb1SMuhammad Moinur Rahman 301c08f5ad1SMuhammad Moinur Rahmanci-smoke: ci-set-smoke-var ci-create-meta ci-checktarget .WAIT ci-runtest-${TARGET_ARCH:tl} .PHONY 302cb9d4bb1SMuhammad Moinur Rahman 30310fb5e71SSiva Mahadevanci-full: ci-set-full-var ci-create-meta ci-checktarget .WAIT ci-runtest-${TARGET_ARCH:tl} .WAIT ci-extract-meta .PHONY 304c08f5ad1SMuhammad Moinur Rahman 305c08f5ad1SMuhammad Moinur Rahmanci: ci-${CITYPE:tl} .PHONY 306cb9d4bb1SMuhammad Moinur Rahman 307cb9d4bb1SMuhammad Moinur Rahman.include "${RELEASEDIR}/Makefile.inc1" 308