Skip to content

Commit

Permalink
Rebase from 'upstream'
Browse files Browse the repository at this point in the history
  • Loading branch information
victorpaleologue committed Nov 22, 2023
1 parent be437a9 commit 8d00e72
Show file tree
Hide file tree
Showing 10 changed files with 171 additions and 83 deletions.
15 changes: 15 additions & 0 deletions .github/workflows/foxy_focal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: ros2-foxy-focal

on:
push

jobs:
ros2_foxy_focal_ci:
name: foxy (focal)
uses: ./.github/workflows/ros2.yml
with:
ROS_DISTRO: foxy
ROS_REPO: testing
OS_NAME: ubuntu
OS_CODE_NAME: focal
ALLOW_FAIL: false
15 changes: 15 additions & 0 deletions .github/workflows/galactic_focal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: ros2-galactic-focal

on:
push

jobs:
ros2_galactic_focal_ci:
name: galactic (focal)
uses: ./.github/workflows/ros2.yml
with:
ROS_DISTRO: galactic
ROS_REPO: testing
OS_NAME: ubuntu
OS_CODE_NAME: focal
ALLOW_FAIL: false
15 changes: 15 additions & 0 deletions .github/workflows/humble_jammy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: ros2-humble-jammy

on:
push

jobs:
ros2_humble_jammy_ci:
name: humble (jammy)
uses: ./.github/workflows/ros2.yml
with:
ROS_DISTRO: humble
ROS_REPO: testing
OS_NAME: ubuntu
OS_CODE_NAME: jammy
ALLOW_FAIL: false
15 changes: 15 additions & 0 deletions .github/workflows/iron_jammy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: ros2-iron-jammy

on:
push

jobs:
ros2_iron_jammy_ci:
name: iron (jammy)
uses: ./.github/workflows/ros2.yml
with:
ROS_DISTRO: iron
ROS_REPO: testing
OS_NAME: ubuntu
OS_CODE_NAME: jammy
ALLOW_FAIL: false
41 changes: 41 additions & 0 deletions .github/workflows/ros2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: ros2

on:
workflow_call:
inputs:
ROS_DISTRO:
required: true
type: string
ROS_REPO:
required: true
type: string
OS_NAME:
required: true
type: string
OS_CODE_NAME:
required: true
type: string
ALLOW_FAIL:
required: true
type: boolean

jobs:
ros2_ci:
name: ROS2
runs-on: ubuntu-latest
continue-on-error: ${{ inputs.ALLOW_FAIL }}
env:
CCACHE_DIR: "${{ github.workspace }}/.ccache"
steps:
- name: Check out the naoqi_driver2 repo
uses: actions/checkout@v2
- name: Fetch/store directory used by ccache
uses: actions/cache@v2
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ inputs.ROS_DISTRO }}-${{ inputs.ROS_REPO }}-${{github.run_id}}
restore-keys: |
ccache-${{ inputs.ROS_DISTRO }}-${{ inputs.ROS_REPO }}-
- name: Run industrial CI
uses: 'ros-industrial/industrial_ci@master'
env: ${{ inputs }}
11 changes: 11 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@
Changelog for package pepper_meshes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

3.0.0 (2023-11-22)
------------------
* Update status badges
* Add CI
* Interactive agreement by default
Explicit option in command line to agree to license.
Improved interaction and messages.
* Improved detection of the platform
* Update maintainers
* Contributors: Victor Paléologue

2.0.1 (2022-09-13)
------------------
* Merge branch 'fix_binaries' into main
Expand Down
102 changes: 26 additions & 76 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,101 +2,51 @@ cmake_minimum_required(VERSION 3.5)
project(pepper_meshes)

find_package(ament_cmake REQUIRED)
ament_package()

# When getting a new binay, the MD5 might change, and the folder hierarchy too
# read comments below to adapt

set(PACKAGE_SHARE_DIR ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME})
set(TMP_DIR ${PACKAGE_SHARE_DIR}/tmp)
set(TMP_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(INSTALLER_PATH ${TMP_DIR}/installer.run)

# Try to figure out the architecture
string(FIND ${CMAKE_INSTALL_PREFIX} "i686" IS_32)
message(STATUS "Architecture is apparently 32 (-1 for no): ${IS_32}")
if(${IS_32} STREQUAL "-1")
# Trust CMAKE_SYSTEM_PROCESSOR which does not work on the farm
if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(IS_32 FALSE)
if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "$i.86$")
message(STATUS "Downloading 32 bit installer")
set(INSTALLER_URL "https://github.com/ros-naoqi/pepper_meshes_installer/raw/master/peppermeshes-0.2.0-linux-installer.run")
set(INSTALLER_MD5 9e78f24b52838e704210881f92c0983d)
elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
message(STATUS "Downloading 64 bit installer")
set(INSTALLER_URL "https://github.com/ros-naoqi/pepper_meshes_installer/raw/master/peppermeshes-0.2.0-linux-x64-installer.run")
set(INSTALLER_MD5 9e78f24b52838e704210881f92c0983d)
else()
set(IS_32 TRUE)
endif()
message(FATAL_ERROR "Mesh installer is not compatible with your host architecture '${CMAKE_HOST_SYSTEM_PROCESSOR}'")
endif()

if (NOT ${IS_32})
message(STATUS "Downloading 64 bit installer")
file(DOWNLOAD
"https://github.com/ros-naoqi/pepper_meshes_installer/raw/master/peppermeshes-0.2.0-linux-x64-installer.run"
${INSTALLER_PATH} SHOW_PROGRESS
INACTIVITY_TIMEOUT 60
EXPECTED_MD5 9e78f24b52838e704210881f92c0983d
)
else()
message(STATUS "Downloading 32 bit installer")
file(DOWNLOAD
"https://github.com/ros-naoqi/pepper_meshes_installer/raw/master/peppermeshes-0.2.0-linux-installer.run"
${INSTALLER_PATH} SHOW_PROGRESS
file(DOWNLOAD ${INSTALLER_URL} ${INSTALLER_PATH}
SHOW_PROGRESS
INACTIVITY_TIMEOUT 60
EXPECTED_MD5 f48a610633d2db48bc84db16f4847b70
EXPECTED_MD5 ${INSTALLER_MD5}
)
endif()

# specify the interesting folder in the archive. You might want to change
# that for a new binary where the structure is different
set(TMP_MESH_PATH ${TMP_DIR}/meshes)

# final path in devel/install space
set(FINAL_MESH_PATH share/${PROJECT_NAME}/)

# make the file executable to install
file(COPY ${INSTALLER_TMP_PATH}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
DESTINATION ${TMP_DIR}
)
# Where to install the meshes and textures
# relative to the share folder of the package.
set(INSTALL_DESTINATION_IN_SHARE ${PROJECT_NAME})

# add a target for devel space
add_custom_target(${PROJECT_NAME}_meshes
COMMAND ${INSTALLER_PATH} --mode text --prefix ${TMP_DIR}
COMMAND cp -fr ${TMP_MESH_PATH} ${PACKAGE_SHARE_DIR}
COMMAND rm -fr ${TMP_DIR}/rollback*
)

# uncompress the meshes during install
install(CODE
"
# uncompress the archive
message(STATUS \"using ${INSTALLER_PATH} to decompress to ${TMP_DIR}\")
execute_process(COMMAND ${INSTALLER_PATH} --mode unattended --prefix ${TMP_DIR}
OUTPUT_VARIABLE OUT
ERROR_VARIABLE ERROR
RESULT_VARIABLE RESULT
)
message(STATUS \"intall out: \${OUT}\")
message(STATUS \"install error: \${ERROR}\")
message(STATUS \"install result: \${RESULT}\")
execute_process(COMMAND ls
WORKING_DIRECTORY ${TMP_DIR}
OUTPUT_VARIABLE OUT_LS
ERROR_VARIABLE ERROR_LS
RESULT_VARIABLE RESULT_LS
)
message(STATUS \"ls out: \${OUT_LS}\")
message(STATUS \"ls error: \${ERROR_LS}\")
message(STATUS \"ls result: \${RESULT_LS}\")
execute_process(COMMAND file ${TMP_DIR}/installer.run
OUTPUT_VARIABLE OUT_FILE
ERROR_VARIABLE ERROR_FILE_CMD
RESULT_VARIABLE RESULT_FILE
)
message(STATUS \"file out: \${OUT_FILE}\")
message(STATUS \"file error: \${ERROR_FILE_CMD}\")
message(STATUS \"file result: \${RESULT_FILE}\")
"
# install the meshes in the build directory when building
message(STATUS "Will unpack meshes from the installer: \n${INSTALLER_PATH} --prefix ${TMP_DIR} ${INSTALL_MODE_FLAG}")
add_custom_target(install_meshes ALL
COMMAND chmod +x ${INSTALLER_PATH}
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/install_with_auto_mode.sh ${INSTALLER_PATH} --prefix ${TMP_DIR}
BYPRODUCTS ${TMP_MESH_PATH}
TERMINAL
)

# install the archive
install(DIRECTORY ${TMP_MESH_PATH}
DESTINATION ${FINAL_MESH_PATH}/
DESTINATION share/${PROJECT_NAME}
)

ament_package()
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ of the meshes as this could result in heavy cloning.

## Status

ROS Distro | Binary Status | Source status |
|-------------------|-------------------|-------------------|
Humble | |
Galactic | [![Build Status](https://build.ros2.org/job/Gbin_uF64__pepper_meshes__ubuntu_focal_amd64__binary/badge/icon)](https://build.ros2.org/job/Gbin_uF64__pepper_meshes__ubuntu_focal_amd64__binary/) | [![Build Status](https://build.ros2.org/job/Gsrc_uF__pepper_meshes__ubuntu_focal__source/badge/icon)](https://build.ros2.org/job/Gsrc_uF__pepper_meshes__ubuntu_focal__source/)
Foxy | [![Build Status](https://build.ros2.org/job/Fbin_uF64__pepper_meshes__ubuntu_focal_amd64__binary/badge/icon)](https://build.ros2.org/job/Fbin_uF64__pepper_meshes__ubuntu_focal_amd64__binary/) | [![Build Status](https://build.ros2.org/job/Fsrc_uF__pepper_meshes__ubuntu_focal__source/badge/icon)](https://build.ros2.org/job/Fsrc_uF__pepper_meshes__ubuntu_focal__source/)
ROS Distro | Binary Status | Source status | GitHub Status |
|-------------------|-------------------|-------------------|--------------------|
Humble | [![ros2-humble-jammy-bin-status-badge](https://build.ros2.org/job/Hbin_uJ64__pepper_meshes__ubuntu_jammy_amd64__binary/badge/icon)](https://build.ros2.org/job/Hbin_uJ64__pepper_meshes__ubuntu_jammy_amd64__binary) | [![ros2-humble-jammy-src-status-badge](https://build.ros2.org/job/Hsrc_uJ__pepper_meshes__ubuntu_jammy__source/badge/icon)](https://build.ros2.org/job/Hsrc_uJ__pepper_meshes__ubuntu_jammy__source) | [![ros2-humble-jammy](https://github.com/ros-naoqi/pepper_meshes2/actions/workflows/humble_jammy.yml/badge.svg?branch=main)](https://github.com/ros-naoqi/pepper_meshes2/actions/workflows/humble_jammy.yml)
Iron | [![ros2-iron-jammy-bin-status-badge](https://build.ros2.org/job/Ibin_uJ64__pepper_meshes__ubuntu_jammy_amd64__binary/badge/icon)](https://build.ros2.org/job/Ibin_uJ64__pepper_meshes__ubuntu_jammy_amd64__binary) | [![ros2-iron-jammy-src-status-badge](https://build.ros2.org/job/Isrc_uJ__pepper_meshes__ubuntu_jammy__source/badge/icon)](https://build.ros2.org/job/Isrc_uJ__pepper_meshes__ubuntu_jammy__source) | [![ros2-iron-jammy](https://github.com/ros-naoqi/pepper_meshes2/actions/workflows/iron_jammy.yml/badge.svg?branch=main)](https://github.com/ros-naoqi/pepper_meshes2/actions/workflows/iron_jammy.yml)
27 changes: 27 additions & 0 deletions install_with_auto_mode.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash
set -e

# Installer should show up to the user if it is not an automated job.
if [ -n "$DEBIAN_FRONTEND" ]; then
if [ "$DEBIAN_FRONTEND" = "noninteractive" ]; then
INSTALL_MODE_FLAG=("--mode" "unattended")
elif [ "$DEBIAN_FRONTEND" = "readline" ]; then
INSTALL_MODE_FLAG=("--mode" "text")
fi
fi
# For GitHub Actions this works better
if [ -n "$CI" ] && [ "$CI" = 1 ]; then
INSTALL_MODE_FLAG=("--mode" "unattended")
fi
# For ROS 2 CI, we can check if we're in a Docker container.
if [ -f /.dockerenv ]; then
INSTALL_MODE_FLAG=("--mode" "unattended")
fi

# Unless they specifically agree to the license.
if [ -n "$I_AGREE_TO_PEPPER_MESHES_LICENSE" ] && [ "$I_AGREE_TO_PEPPER_MESHES_LICENSE" = 1 ]; then
INSTALL_MODE_FLAG=("--mode" "unattended")
fi

# Call the installer, pass our flag and all the remaining arguments
$1 "${INSTALL_MODE_FLAG[@]}" "${@:2}"
4 changes: 2 additions & 2 deletions package.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<?xml version="1.0"?>
<package format="3">
<name>pepper_meshes</name>
<version>2.0.1</version>
<version>3.0.0</version>
<description>Meshes for the Pepper robot, for ROS2</description>
<author email="mbusy@softbankrobotics.com">Maxime Busy</author>

<maintainer email="victor.paleologue@palaio.eu">Victor Paléologue</maintainer>
<maintainer email="mbusy@softbankrobotics.com">Maxime Busy</maintainer>
<maintainer email="surya.ambrose@gmail.com">Surya Ambrose</maintainer>
<maintainer email="natalia.lyubova@gmail.com">Natalia Lyubova</maintainer>
Expand All @@ -13,7 +14,6 @@
<url>http://github.com/ros-naoqi/pepper_meshes2/</url>

<buildtool_depend>ament_cmake</buildtool_depend>
<build_depend>java</build_depend>

<export>
<build_type>ament_cmake</build_type>
Expand Down

0 comments on commit 8d00e72

Please sign in to comment.