From a43c7553b93f598e97001f0a197bb376da1a3657 Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Mon, 31 Aug 2020 15:21:44 +0300 Subject: [PATCH] Coin: add CI build instructions CI build has 4 targets: - qemuarm64 w/o x11 - qemux86 w/o x11 - qemuarm w/ x11 - qemux86-64 w/ x11 and it builds all recipes found in the layer. Change-Id: I1b4861cb776c67710b16fcb6cac150f092925440 Reviewed-by: Mikko Gronoff --- coin/dependencies.yaml | 2 + coin/module_config.yaml | 138 ++++++++++++++++++++++++++++++++++++++++ coin/test-configs.inc | 70 ++++++++++++++++++++ 3 files changed, 210 insertions(+) create mode 100644 coin/dependencies.yaml create mode 100644 coin/module_config.yaml create mode 100644 coin/test-configs.inc diff --git a/coin/dependencies.yaml b/coin/dependencies.yaml new file mode 100644 index 0000000..53aa67d --- /dev/null +++ b/coin/dependencies.yaml @@ -0,0 +1,2 @@ +dependencies: + {} diff --git a/coin/module_config.yaml b/coin/module_config.yaml new file mode 100644 index 0000000..533307b --- /dev/null +++ b/coin/module_config.yaml @@ -0,0 +1,138 @@ +version: 2 +accept_configuration: + condition: and + conditions: + - condition: property + property: host.compiler + equals_value: Yocto + - condition: property + property: target.arch + in_values: [TARGET1, TARGET2, TARGET3, TARGET4] + +machine_type: + Build: + cores: 8 + +environment: &environment + type: Group + instructions: + - type: EnvironmentVariable + variableName: POKY_SHA1 + variableValue: 569b1f5d67c57de957e243997c53ec2f81dc8dfe + - type: EnvironmentVariable + variableName: OE_SHA1 + variableValue: 654ad8bea49f142d20b2b96c0dd44810a6be233a + - type: EnvironmentVariable + variableName: MACHINE + variableValue: qemuarm64 + enable_if: + condition: property + property: target.arch + equals_value: TARGET1 + - type: EnvironmentVariable + variableName: USE_X11 + variableValue: false + enable_if: + condition: property + property: target.arch + equals_value: TARGET1 + - type: EnvironmentVariable + variableName: MACHINE + variableValue: qemux86 + enable_if: + condition: property + property: target.arch + equals_value: TARGET2 + - type: EnvironmentVariable + variableName: USE_X11 + variableValue: false + enable_if: + condition: property + property: target.arch + equals_value: TARGET2 + - type: EnvironmentVariable + variableName: MACHINE + variableValue: qemuarm + enable_if: + condition: property + property: target.arch + equals_value: TARGET3 + - type: EnvironmentVariable + variableName: USE_X11 + variableValue: true + enable_if: + condition: property + property: target.arch + equals_value: TARGET3 + - type: EnvironmentVariable + variableName: MACHINE + variableValue: qemux86-64 + enable_if: + condition: property + property: target.arch + equals_value: TARGET4 + - type: EnvironmentVariable + variableName: USE_X11 + variableValue: true + enable_if: + condition: property + property: target.arch + equals_value: TARGET4 + +instructions: + Build: + - *environment + - type: EnvironmentVariable + variableName: DL_DIR + variableValue: "/mnt/yocto-cache/downloads" + - type: EnvironmentVariable + variableName: SOURCE_DIR + variableValue: "{{.SourceDir}}" + - 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: | + #!/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} + + if ! ${USE_X11} ; then + echo "DISTRO_FEATURES_remove = \"x11\"" >> conf/local.conf + fi + echo "require ${SOURCE_DIR}/coin/test-configs.inc" >> conf/local.conf + + # build all recipes found in the layer + bitbake $(find ${SOURCE_DIR} -name *.bb | xargs -n1 basename | sed -e 's/\([^._]*\).*/\1/') + filename: "{{.BuildDir}}/start-build" + fileMode: 420 + - type: ExecuteCommand + command: ["bash", "{{.BuildDir}}/start-build"] + maxTimeInSeconds: 28800 + maxTimeBetweenOutput: 28800 + userMessageOnFailure: "Build failed." + - type: ExecuteCommand + command: ["sudo", "umount", "/mnt/yocto-cache"] + userMessageOnFailure: "Unmounting cache failed." + + Test: [] diff --git a/coin/test-configs.inc b/coin/test-configs.inc new file mode 100644 index 0000000..2b16a3d --- /dev/null +++ b/coin/test-configs.inc @@ -0,0 +1,70 @@ +PREFERRED_PROVIDER_udev = "systemd" +# use gold +DISTRO_FEATURES_append = " ld-is-gold" +# use systemd +DISTRO_FEATURES_append = " systemd" +DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" +VIRTUAL-RUNTIME_init_manager = "systemd" +VIRTUAL-RUNTIME_initscripts = "" + +INHERIT += "buildstats buildstats-summary" +INHERIT += "rm_work" + +# fast compression of SDK tar package +SDK_XZ_COMPRESSION_LEVEL = "-1" + +# be more strict with QA warnings, turn them all to errors: +EXTRA_QA = "\ + 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 \ +" +ERROR_QA_append = "${EXTRA_QA}" +WARN_QA_remove = "${EXTRA_QA}" + +# 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}" + +PACKAGECONFIG_append_pn-qtbase = "\ + tslib kms gbm zstd lttng libproxy gssapi vulkan mtdev cups \ + sql-mysql sql-psql sql-sqlite journald \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)} \ +" + +# Use latest uninative package +UNINATIVE_MAXGLIBCVERSION = "2.32" + +UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/2.9/" +UNINATIVE_CHECKSUM[aarch64] ?= "9f25a667aee225b1dd65c4aea73e01983e825b1cb9b56937932a1ee328b45f81" +UNINATIVE_CHECKSUM[i686] ?= "cae5d73245d95b07cf133b780ba3f6c8d0adca3ffc4e7e7fab999961d5e24d36" +UNINATIVE_CHECKSUM[x86_64] ?= "d07916b95c419c81541a19c8ef0ed8cbd78ae18437ff28a4c8a60ef40518e423" + +# enable examples for all Qt modules +PACKAGECONFIG_append_pn-qt3d = " examples" +PACKAGECONFIG_append_pn-qt5compat = " examples" +PACKAGECONFIG_append_pn-qtbase = " examples" +PACKAGECONFIG_append_pn-qtcoap = " examples" +PACKAGECONFIG_append_pn-qtdeclarative = " examples" +PACKAGECONFIG_append_pn-qtgraphicaleffects = " examples" +PACKAGECONFIG_append_pn-qtimageformats = " examples" +PACKAGECONFIG_append_pn-qtmqtt = " examples" +PACKAGECONFIG_append_pn-qtnetworkauth = " examples" +PACKAGECONFIG_append_pn-qtopcua = " examples" +PACKAGECONFIG_append_pn-qtquick3d = " examples" +PACKAGECONFIG_append_pn-qtquickcontrols2 = " examples" +PACKAGECONFIG_append_pn-qtquicktimeline = " examples" +PACKAGECONFIG_append_pn-qtscxml = " examples" +PACKAGECONFIG_append_pn-qtserialbus = " examples" +PACKAGECONFIG_append_pn-qtserialport = " examples" +PACKAGECONFIG_append_pn-qtshadertools = " examples" +PACKAGECONFIG_append_pn-qtspeech = " examples" +PACKAGECONFIG_append_pn-qtsvg = " examples" +PACKAGECONFIG_append_pn-qttools = " examples" +PACKAGECONFIG_append_pn-qttranslations = " examples" +PACKAGECONFIG_append_pn-qtvirtualkeyboard = " examples" +PACKAGECONFIG_append_pn-qtwayland = " examples" +PACKAGECONFIG_append_pn-qtwebsockets = " examples"