diff --git a/.oebuild/features/oebridge-ros.yaml b/.oebuild/features/oebridge-ros.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3bd08e967b66910ad56fa1ad86c61a6932535266 --- /dev/null +++ b/.oebuild/features/oebridge-ros.yaml @@ -0,0 +1,7 @@ +type: feature + +local_conf: | + DISTRO_FEATURES:append = " oebridge oe-ros" + SERVER_MIRROR = "https://mirrors.tuna.tsinghua.edu.cn/openeuler" + SERVER_VERSION = "openEuler-24.03-LTS" + GLIBC_GENERATE_LOCALES:append = "en_US.UTF-8 zh_CN.UTF-8 " diff --git a/meta-openeuler/classes/image-oebridge.bbclass b/meta-openeuler/classes/image-oebridge.bbclass index a54ad3711adba5d45c04729fa149ac7c67c2a8e6..2368ee6a72ede4ac4cdae44d3a34aab74b93f073 100644 --- a/meta-openeuler/classes/image-oebridge.bbclass +++ b/meta-openeuler/classes/image-oebridge.bbclass @@ -192,6 +192,17 @@ fakeroot python do_dnf_install_pkgs(){ cwd=repo_dir) else: bb.error("openEuler.repo not found") + + ros_repo_path = f"{d.getVar('THISDIR')}/../../recipes-devtools/dnf/files/openEulerROS.repo" + if os.path.exists(ros_repo_path): + subprocess.run(f"cp {ros_repo_path} {repo_dir}", + shell=True, + cwd=repo_dir) + subprocess.run(f"sed -i 's/OPENEULER_VER/{d.getVar('SERVER_VERSION')}/g' openEulerROS.repo", + shell=True, + cwd=repo_dir) + else: + bb.error("openEuler.repo not found") # do some prepare action if len(real_list) > 0: diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-oebridge.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-oebridge.bb index e924bc27a621bdd46394becfb4c1645b7eff79b8..ee71f4c7c605396f7452d0a6c2c17e68d6f5cce3 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-oebridge.bb +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-oebridge.bb @@ -80,6 +80,12 @@ XFCE_PKG_LISTS = " \ " INSTALL_PKG_LISTS += "${@bb.utils.contains('DISTRO_FEATURES', 'oe-xfce', d.getVar('XFCE_PKG_LISTS'), '', d)}" +ROS_PKG_LISTS = " \ + ros-humble-ros-base:real \ + ros-humble-turtlesim:real \ +" +INSTALL_PKG_LISTS += "${@bb.utils.contains('DISTRO_FEATURES', 'oe-ros', d.getVar('ROS_PKG_LISTS'), '', d)}" + python do_install_list_prepare(){ import os import subprocess diff --git a/meta-openeuler/recipes-devtools/dnf/dnf_%.bbappend b/meta-openeuler/recipes-devtools/dnf/dnf_%.bbappend index 50d583842f483daeb09f03c72df2797addb85617..ed81d481c8155d32b70a55287665b15d4b3de18e 100644 --- a/meta-openeuler/recipes-devtools/dnf/dnf_%.bbappend +++ b/meta-openeuler/recipes-devtools/dnf/dnf_%.bbappend @@ -27,6 +27,7 @@ SRC_URI:append:class-nativesdk = " file://0001-dnf-write-the-log-lock-to-root.pa # add default repo SRC_URI:append:class-target = " \ file://openEuler.repo \ + file://openEulerROS.repo \ " S = "${WORKDIR}/${BP}" @@ -35,6 +36,7 @@ SRC_URI[sha256sum] = "7de4eb8e85c4d9a74db6f1f827d2dd3348e265631f8678a1dbf7e3346b FILES:${PN}:append:class-target = " \ /etc/yum.repos.d/openEuler.repo \ + ${@bb.utils.contains('DISTRO_FEATURES', 'oe-ros', '/etc/yum.repos.d/openEulerROS.repo', '', d)} \ " do_install:append:class-target() { @@ -42,4 +44,5 @@ do_install:append:class-target() { local version_dir="${@bb.utils.contains("DISTRO_FEATURES", "oebridge", "${SERVER_VERSION}", "openEuler-${DISTRO_VERSION}", d)}" sed -i "s/OPENEULER_VER/${version_dir}/g" ${WORKDIR}/openEuler.repo cp -f ${WORKDIR}/openEuler.repo ${D}/etc/yum.repos.d/ + cp -f ${WORKDIR}/openEulerROS.repo ${D}/etc/yum.repos.d/ } diff --git a/meta-openeuler/recipes-devtools/dnf/files/openEulerROS.repo b/meta-openeuler/recipes-devtools/dnf/files/openEulerROS.repo new file mode 100644 index 0000000000000000000000000000000000000000..2d011654843a0415de38fce63055e8e26069d3d7 --- /dev/null +++ b/meta-openeuler/recipes-devtools/dnf/files/openEulerROS.repo @@ -0,0 +1,5 @@ +[openEulerROS-humble] +name=openEulerROS-humble +baseurl=https://eulermaker.compass-ci.openeuler.openatom.cn/api/ems1/repositories/ROS-SIG-Multi-Version_ros-humble_openEuler-24.03-LTS-TEST4/openEuler%3A24.03-LTS/$basearch/ +enabled=1 +gpgcheck=0 \ No newline at end of file