Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better agreement #1

Merged
merged 6 commits into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 }}
112 changes: 28 additions & 84 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,108 +2,52 @@ cmake_minimum_required(VERSION 3.5)
project(nao_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(INSTALLER_TMP_PATH ${TMP_DIR}/tmp/installer.run)
set(TMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/tmp)
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/nao_meshes_installer/raw/master/naomeshes-0.6.7-linux-installer.run")
set(INSTALLER_MD5 1984b2790930044b4ee00496315c0021)
elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
message(STATUS "Downloading 64-bit installer")
set(INSTALLER_URL "https://github.com/ros-naoqi/nao_meshes_installer/raw/master/naomeshes-0.6.7-linux-x64-installer.run")
set(INSTALLER_MD5 5f897a3328f217bae6c0ed2a934e524c)
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/nao_meshes_installer/raw/master/naomeshes-0.6.7-linux-x64-installer.run"
${INSTALLER_TMP_PATH} SHOW_PROGRESS
INACTIVITY_TIMEOUT 60
EXPECTED_MD5 5f897a3328f217bae6c0ed2a934e524c
)
else()
message(STATUS "Downloading 32 bit installer")
file(DOWNLOAD
"https://github.com/ros-naoqi/nao_meshes_installer/raw/master/naomeshes-0.6.7-linux-installer.run"
${INSTALLER_TMP_PATH} SHOW_PROGRESS
file(DOWNLOAD ${INSTALLER_URL} ${INSTALLER_PATH}
SHOW_PROGRESS
INACTIVITY_TIMEOUT 60
EXPECTED_MD5 1984b2790930044b4ee00496315c0021
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)
set(TMP_TEXTURE_PATH ${TMP_DIR}/texture)

# 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}
)

set(INSTALLER_PATH ${TMP_DIR}/installer.run)
# 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 cp -fr ${TMP_TEXTURE_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 "Unpacking meshes from the installer: \n${INSTALLER_PATH} --prefix ${TMP_DIR}")
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} ${TMP_TEXTURE_PATH}
TERMINAL
)

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

ament_package()
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_NAO_MESHES_LICENSE" ] && [ "$I_AGREE_TO_NAO_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}"
1 change: 1 addition & 0 deletions package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<description>ROS2 Meshes for the NAO robot</description>
<author email="mbusy@softbankrobotics.com">Maxime Busy</author>

<maintainer email="victor.paleologue@palaio.eu">Victor Paleologue</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 Down
Loading