From acc1237bb3dfe3d9245008339966ef1b62e2c5c3 Mon Sep 17 00:00:00 2001 From: Uilian Ries Date: Wed, 26 Feb 2025 13:46:04 +0100 Subject: [PATCH 1/3] Add meta-conan example Signed-off-by: Uilian Ries --- examples/cross_build/README.md | 4 ++ examples/cross_build/yocto/ci_test_example.sh | 50 +++++++++++++++++++ .../yocto/conan-mosquitto_2.0.18.bb | 5 ++ 3 files changed, 59 insertions(+) create mode 100755 examples/cross_build/yocto/ci_test_example.sh create mode 100644 examples/cross_build/yocto/conan-mosquitto_2.0.18.bb diff --git a/examples/cross_build/README.md b/examples/cross_build/README.md index d0dd7f55..d0c80860 100644 --- a/examples/cross_build/README.md +++ b/examples/cross_build/README.md @@ -8,3 +8,7 @@ ### [Use Android NDK to cross-build](android/ndk_basic) - Learn how to cross-build packages for Android. [Docs](https://docs.conan.io/2/examples/cross_build/android.html) + +### [Use Conan to install Yocto dependencies](yocto) + +- Use meta-conan to install mosquitto as Yocto dependency. [Docs](https://docs.conan.io/2/integrations/yocto.html) \ No newline at end of file diff --git a/examples/cross_build/yocto/ci_test_example.sh b/examples/cross_build/yocto/ci_test_example.sh new file mode 100755 index 00000000..5fa2cf03 --- /dev/null +++ b/examples/cross_build/yocto/ci_test_example.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +set -e + +yocto_release=scarthgap + +echo "- Yocto - Consume Mosquitto from Conan -" + +rm -rf poky + +echo "INFO: Cloning Yocto layers" +git clone --branch ${yocto_release} --depth 1 https://git.yoctoproject.org/poky.git poky +git clone --branch ${yocto_release} --depth 1 https://github.com/openembedded/meta-openembedded.git poky/meta-openembedded +git clone --branch conan2/${yocto_release} https://github.com/conan-io/meta-conan.git poky/meta-conan + +mkdir -p poky/meta-conan/recipes-example +cp conan-mosquitto_2.0.18.bb poky/meta-conan/recipes-example/conan-mosquitto_2.0.18.bb + +cd poky +source oe-init-build-env + +echo "INFO: Adding layers" +bitbake-layers add-layer ../meta-openembedded/meta-oe +bitbake-layers add-layer ../meta-openembedded/meta-python +bitbake-layers add-layer ../meta-conan + +echo "INFO: Present layers" +bitbake-layers show-layers + + +echo 'IMAGE_INSTALL:append = " conan-mosquitto"' >> conf/local.conf + +echo "INFO: Fetching mosquitto" +bitbake -v -c fetch conan-mosquitto + +if [ -n "${CONAN_YOCTO_BUILD_MOSQUITTO}" ]; then + echo "INFO: Building mosquitto" + bitbake -v -c configure conan-mosquitto + bitbake -v -c compile conan-mosquitto + bitbake -v -c package conan-mosquitto +else: + echo "INFO: Skipping mosquitto build due large time. Set CONAN_YOCTO_BUILD_MOSQUITTO to build mosquitto." +fi + +if [ -n "${CONAN_YOCTO_BUILD_IMAGE}" ]; then + echo "INFO: Building core-image-minimal" + bitbake -v core-image-minimal +else: + echo "INFO: Skipping image build due large time. Set CONAN_YOCTO_BUILD_IMAGE to build image." +fi diff --git a/examples/cross_build/yocto/conan-mosquitto_2.0.18.bb b/examples/cross_build/yocto/conan-mosquitto_2.0.18.bb new file mode 100644 index 00000000..e8298e41 --- /dev/null +++ b/examples/cross_build/yocto/conan-mosquitto_2.0.18.bb @@ -0,0 +1,5 @@ +inherit conan + +DESCRIPTION = "An open source MQTT broker" +LICENSE = "EPL-1.0" +CONAN_PKG = "mosquitto/2.0.18" \ No newline at end of file From a398f4fc413fd426a70e6b40edf79c53e8777a14 Mon Sep 17 00:00:00 2001 From: Uilian Ries Date: Thu, 6 Mar 2025 08:33:53 +0100 Subject: [PATCH 2/3] Skip fetching mosquitto Signed-off-by: Uilian Ries --- examples/cross_build/yocto/ci_test_example.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/examples/cross_build/yocto/ci_test_example.sh b/examples/cross_build/yocto/ci_test_example.sh index 5fa2cf03..8dab2dab 100755 --- a/examples/cross_build/yocto/ci_test_example.sh +++ b/examples/cross_build/yocto/ci_test_example.sh @@ -27,13 +27,12 @@ bitbake-layers add-layer ../meta-conan echo "INFO: Present layers" bitbake-layers show-layers +if [ -n "${CONAN_YOCTO_BUILD_MOSQUITTO}" ]; then + echo 'IMAGE_INSTALL:append = " conan-mosquitto"' >> conf/local.conf -echo 'IMAGE_INSTALL:append = " conan-mosquitto"' >> conf/local.conf - -echo "INFO: Fetching mosquitto" -bitbake -v -c fetch conan-mosquitto + echo "INFO: Fetching mosquitto" + bitbake -v -c fetch conan-mosquitto -if [ -n "${CONAN_YOCTO_BUILD_MOSQUITTO}" ]; then echo "INFO: Building mosquitto" bitbake -v -c configure conan-mosquitto bitbake -v -c compile conan-mosquitto From 9ac69940e1d23cd65ffad75aa52c024a77865c87 Mon Sep 17 00:00:00 2001 From: Uilian Ries Date: Mon, 10 Mar 2025 09:03:04 +0100 Subject: [PATCH 3/3] Skip Yocto build on Mac Signed-off-by: Uilian Ries --- examples/cross_build/yocto/ci_test_example.sh | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/examples/cross_build/yocto/ci_test_example.sh b/examples/cross_build/yocto/ci_test_example.sh index 8dab2dab..6315ebe0 100755 --- a/examples/cross_build/yocto/ci_test_example.sh +++ b/examples/cross_build/yocto/ci_test_example.sh @@ -1,6 +1,11 @@ #!/bin/bash -set -e +set -ex + +if [ "$(uname)" != "Linux" ]; then + echo "INFO: Skipping Yocto build on non-Linux platform." + exit 0 +fi yocto_release=scarthgap @@ -16,18 +21,20 @@ git clone --branch conan2/${yocto_release} https://github.com/conan-io/meta-cona mkdir -p poky/meta-conan/recipes-example cp conan-mosquitto_2.0.18.bb poky/meta-conan/recipes-example/conan-mosquitto_2.0.18.bb -cd poky +cd poky/ source oe-init-build-env -echo "INFO: Adding layers" -bitbake-layers add-layer ../meta-openembedded/meta-oe -bitbake-layers add-layer ../meta-openembedded/meta-python -bitbake-layers add-layer ../meta-conan +if [ -n "${CONAN_YOCTO_BUILD_MOSQUITTO}" ]; then + + echo "INFO: Adding layers" + bitbake-layers add-layer ../meta-openembedded/meta-oe + bitbake-layers add-layer ../meta-openembedded/meta-python + bitbake-layers add-layer ../meta-conan + + echo "INFO: Present layers" + bitbake-layers show-layers -echo "INFO: Present layers" -bitbake-layers show-layers -if [ -n "${CONAN_YOCTO_BUILD_MOSQUITTO}" ]; then echo 'IMAGE_INSTALL:append = " conan-mosquitto"' >> conf/local.conf echo "INFO: Fetching mosquitto" @@ -38,12 +45,12 @@ if [ -n "${CONAN_YOCTO_BUILD_MOSQUITTO}" ]; then bitbake -v -c compile conan-mosquitto bitbake -v -c package conan-mosquitto else: - echo "INFO: Skipping mosquitto build due large time. Set CONAN_YOCTO_BUILD_MOSQUITTO to build mosquitto." + echo "INFO: Skipping mosquitto build due large time. Set the environment variable CONAN_YOCTO_BUILD_MOSQUITTO to build mosquitto." fi if [ -n "${CONAN_YOCTO_BUILD_IMAGE}" ]; then echo "INFO: Building core-image-minimal" bitbake -v core-image-minimal else: - echo "INFO: Skipping image build due large time. Set CONAN_YOCTO_BUILD_IMAGE to build image." + echo "INFO: Skipping image build due large time. Set the environment variable CONAN_YOCTO_BUILD_IMAGE to build image." fi