From 2d76ded04e27038664c36dff51c57dfc0f490bea Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Mon, 29 Jul 2019 12:53:41 +0300 Subject: Add CI build instructions Instructions for Coin integration builds are defined in a yaml file. Use fixed sha1s for poky and openembedded meta layers and build all recipes located in meta-qt5 layer. Include world_fixes used by the upstream yocto projects. Task-number: QTPM-1138 Change-Id: I88a8c2551fd3016fa5a7409142d77d876e936656 Reviewed-by: Mikko Gronoff --- .gitattributes | 1 + coin/module_config.yaml | 180 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+) create mode 100644 coin/module_config.yaml diff --git a/.gitattributes b/.gitattributes index cb2381c0..f6a86105 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ +/coin export-ignore # linguist overrides recipes-*/**/*.inc linguist-language=BitBake diff --git a/coin/module_config.yaml b/coin/module_config.yaml new file mode 100644 index 00000000..263d8f04 --- /dev/null +++ b/coin/module_config.yaml @@ -0,0 +1,180 @@ +version: 1 +accept_configuration: + condition: and + conditions: + - condition: property + property: host.osVersion + equals_value: Ubuntu_18_04 + - condition: property + property: target.osVersion + equals_value: QEMU + - condition: property + property: target.arch + in_values: [ARMv7, ARM64] + +environment: &environment + type: Group + instructions: + - type: EnvironmentVariable + variableName: POKY_SHA1 + variableValue: 38d5c8ea98cfa49825c473eba8984c12edf062be + - type: EnvironmentVariable + variableName: OE_SHA1 + variableValue: 8d5dcd6522e9d15e68637b6d7dda0401f9bb91d0 + - type: EnvironmentVariable + variableName: MACHINE + variableValue: qemuarm64 + enable_if: + condition: property + property: target.arch + equals_value: ARM64 + - type: EnvironmentVariable + variableName: MACHINE + variableValue: qemux86 + enable_if: + condition: property + property: target.arch + equals_value: ARMv7 + +build_instructions: + - *environment + - type: SetBuildDirectory + directory: "{{.AgentWorkingDir}}/build" + - type: MakeDirectory + directory: "{{.BuildDir}}" + - type: ChangeDirectory + directory: "{{.BuildDir}}" + - type: ExecuteCommand + command: ["sudo", "mkdir", "-p", "/mnt/yocto-cache"] + userMessageOnFailure: "Could not create '/mnt/yocto-cache' directory" + - type: ExecuteCommand + command: ["sudo", "mount", "yocto-cache.intra.qt.io:/srv/yocto-cache", "/mnt/yocto-cache"] + userMessageOnFailure: "Could not mount yocto cache." + - type: WriteFile + fileContents: | + # https://github.com/shr-project/jenkins-jobs/blob/master/jenkins-job.sh + INHERIT += "reproducible_build_simple" + # We want musl and glibc to share the same tmpfs, so instead of appending default "-${TCLIBC}" we append "fs" + TCLIBCAPPEND = "fs" + PREFERRED_PROVIDER_udev = "systemd" + PREFERRED_PROVIDER_virtual/fftw = "fftw" + # use gold + DISTRO_FEATURES_append = " ld-is-gold" + # use ptest + DISTRO_FEATURES_append = " ptest" + # use systemd + DISTRO_FEATURES_append = " systemd" + DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" + VIRTUAL-RUNTIME_init_manager = "systemd" + VIRTUAL-RUNTIME_initscripts = "" + # use opengl + DISTRO_FEATURES_append = " opengl" + # use wayland to fix building weston and qtwayland + DISTRO_FEATURES_append = " wayland" + PREFERRED_PROVIDER_jpeg = "libjpeg-turbo" + PREFERRED_PROVIDER_jpeg-native = "libjpeg-turbo-native" + PREFERRED_PROVIDER_gpsd = "gpsd" + PREFERRED_PROVIDER_e-wm-sysactions = "e-wm" + ESYSACTIONS = "e-wm-sysactions" + # don't pull libhybris unless explicitly asked for + PREFERRED_PROVIDER_virtual/libgl ?= "mesa" + PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa" + PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa" + PREFERRED_PROVIDER_virtual/egl ?= "mesa" + # to fix fsoaudiod, alsa-state conflict in shr-image-all + VIRTUAL-RUNTIME_alsa-state = "" + # to prevent alsa-state being pulled into -dev or -dbg images + RDEPENDS_${PN}-dev_pn-alsa-state = "" + RDEPENDS_${PN}-dbg_pn-alsa-state = "" + # to fix dependency on conflicting x11-common from packagegroup-core-x11 + VIRTUAL-RUNTIME_xserver_common ?= "xserver-common" + RDEPENDS_${PN}-dev_pn-x11-common = "" + RDEPENDS_${PN}-dbg_pn-x11-common = "" + # to fix apm, fso-apm conflict in shr-image-all + VIRTUAL-RUNTIME_apm = "fso-apm" + # require conf/distro/include/qt5-versions.inc + # QT5_VERSION = "5.4.0+git%" + # for qtwebkit etc + # see https://bugzilla.yoctoproject.org/show_bug.cgi?id=5013 + # DEPENDS_append_pn-qtbase = " mesa" + PACKAGECONFIG_append_pn-qtbase = " icu gl accessibility freetype fontconfig" + # qtwayland doesn't like egl and xcomposite-glx enabled at the same time + # http://lists.openembedded.org/pipermail/openembedded-devel/2016-December/110444.html + PACKAGECONFIG_remove_pn-qtwayland = "xcomposite-egl xcomposite-glx" + # for webkit-efl + PACKAGECONFIG_append_pn-harfbuzz = " icu" + inherit blacklist + # PNBLACKLIST[samsung-rfs-mgr] = "needs newer libsamsung-ipc with negative D_P: Requested 'samsung-ipc-1.0 >= 0.2' but version of libsamsung-ipc is 0.1.0" + PNBLACKLIST[android-system] = "depends on lxc from meta-virtualiazation which isn't included in my world builds" + PNBLACKLIST[bigbuckbunny-1080p] = "big and doesn't really need to be tested so much" + PNBLACKLIST[bigbuckbunny-480p] = "big and doesn't really need to be tested so much" + PNBLACKLIST[bigbuckbunny-720p] = "big and doesn't really need to be tested so much" + PNBLACKLIST[bigbuckbunny-720p] = "big and doesn't really need to be tested so much" + PNBLACKLIST[tearsofsteel-1080p] = "big and doesn't really need to be tested so much" + PNBLACKLIST[build-appliance-image] = "tries to include whole downloads directory in /home/builder/poky :/" + # enable reporting + # needs http://patchwork.openembedded.org/patch/68735/ + #ERR_REPORT_SERVER = "errors.yoctoproject.org" + #ERR_REPORT_PORT = "80" + #ERR_REPORT_USERNAME = "Martin Jansa" + #ERR_REPORT_EMAIL = "Martin.Jansa@gmail.com" + #ERR_REPORT_UPLOAD_FAILURES = "1" + #INHERIT += "report-error" + # needs patch with buildstats-summary.bbclass + INHERIT += "buildstats buildstats-summary" + # be more strict with QA warnings, turn them all to errors: + ERROR_QA_append = " ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi textrel already-stripped incompatible-license files-invalid installed-vs-shipped compile-host-path install-host-path pn-overrides infodir build-deps unknown-configure-option symlink-to-sysroot multilib invalid-packageconfig host-user-contaminated uppercase-pn" + WARN_QA_remove = " ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi textrel already-stripped incompatible-license files-invalid installed-vs-shipped compile-host-path install-host-path pn-overrides infodir build-deps unknown-configure-option symlink-to-sysroot multilib invalid-packageconfig host-user-contaminated uppercase-pn" + # enable thumb for broader test coverage (oe-core autobuilder doesn't have thumb enabled) + PREFERRED_ARM_INSTRUCTION_SET ?= "thumb" + ARM_INSTRUCTION_SET = "${PREFERRED_ARM_INSTRUCTION_SET}" + # use musl for qemux86 and qemux86copy + TCLIBC_qemux86 = "musl" + TCLIBC_qemux86copy = "musl" + # limit parallel make to avoid OOM + PARALLEL_MAKE_pn-qtwebkit = "-j 8" + filename: "{{.BuildDir}}/world_fixes.inc" + fileMode: 420 + - type: WriteFile + fileContents: | + #!/bin/bash -xe + git clone git://git.yoctoproject.org/poky --reference /mnt/yocto-cache/mirror/poky.git + (cd poky; git checkout ${POKY_SHA1}) + git clone git://github.com/openembedded/meta-openembedded --reference /mnt/yocto-cache/mirror/meta-openembedded.git + (cd meta-openembedded; git checkout ${OE_SHA1}) + + source ./poky/oe-init-build-env + export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE SSTATE_DIR DL_DIR" + export DL_DIR=/mnt/yocto-cache/downloads + export BB_GENERATE_MIRROR_TARBALLS=1 + export SSTATE_DIR=/mnt/yocto-cache/sstate-caches/$(sed -n -e "s/DISTRO_CODENAME.*\"\(.*\)\"/\1/p" ../poky/meta-*/conf/distro/poky.conf) + bitbake-layers add-layer ../meta-openembedded/meta-oe + bitbake-layers add-layer ${SOURCE_DIR} + + echo 'require ../world_fixes.inc' >> conf/local.conf + + # EXCLUDE_FROM_WORLD + rm -f ${SOURCE_DIR}/recipes-qt/examples/qt5-opengles2-test_git.bb + + bitbake $(find ${SOURCE_DIR} -name *.bb | xargs -n1 basename | sed -e 's/\([^._]*\).*/\1/') + filename: "{{.BuildDir}}/start-build" + fileMode: 420 + - type: ExecuteCommand + command: ["chmod", "+x", "{{.BuildDir}}/start-build"] + userMessageOnFailure: "Could not add execution right to the start-build." + - type: EnvironmentVariable + variableName: DL_DIR + variableValue: "/mnt/yocto-cache/downloads" + - type: EnvironmentVariable + variableName: SOURCE_DIR + variableValue: "{{.SourceDir}}" + - type: ExecuteCommand + command: ["{{.BuildDir}}/start-build"] + maxTimeInSeconds: 28800 + maxTimeBetweenOutput: 28800 + userMessageOnFailure: "Build failed." + - type: ExecuteCommand + command: ["sudo", "umount", "/mnt/yocto-cache"] + userMessageOnFailure: "Unmounting cache failed." + +test_instructions: [] -- cgit v1.2.3