Skip to content

Commit

Permalink
Add conda tests (#380)
Browse files Browse the repository at this point in the history
  • Loading branch information
johnwason authored Jan 18, 2024
1 parent 988c079 commit 3f2c248
Show file tree
Hide file tree
Showing 14 changed files with 254 additions and 3 deletions.
81 changes: 81 additions & 0 deletions .github/workflows/conda.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Conda

on:
push:
branches:
- master
- 'dev**'
pull_request:
release:
types:
- released

jobs:
conda-win:
runs-on: windows-2019
defaults:
run:
shell: powershell
steps:
- uses: actions/checkout@v3
with:
path: workspace/src/trajopt
- name: install-depends
shell: cmd
run: |
python -m pip install vcstool -q
- name: vcs import
run: >
vcs import --input "${{ github.workspace }}/workspace/src/trajopt/.github/workflows/windows_dependencies.repos" workspace/src/
- uses: conda-incubator/setup-miniconda@v3
with:
channel-priority: strict
environment-file: workspace/src/trajopt/.github/workflows/conda/environment.yml
use-mamba: true
auto-update-conda: true
activate-environment: tesseract-build
- name: build and test
run: |
conda info
conda list
mkdir conda
xcopy /E workspace\src\trajopt\.github\workflows\conda conda
cd conda
New-Item -Name conda-forge.yml -ItemType File
conda smithy regenerate
conda mambabuild -m .ci_support/win_64_.yaml .
conda-linux:
runs-on: ubuntu-latest
defaults:
run:
shell: bash -el {0}
steps:
- uses: actions/checkout@v3
with:
path: workspace/src/trajopt
- name: install-depends
run: |
python -m pip install vcstool -q
- name: vcs import
run: >
vcs import --input "${{ github.workspace }}/workspace/src/trajopt/.github/workflows/windows_dependencies.repos" workspace/src/
- uses: conda-incubator/setup-miniconda@v3
with:
channel-priority: strict
environment-file: workspace/src/trajopt/.github/workflows/conda/environment.yml
use-mamba: true
auto-update-conda: true
activate-environment: tesseract-build
- name: build and test
run: |
conda info
conda list
cp -r workspace/src/trajopt/.github/workflows/conda ./conda
cd conda
touch conda-forge.yml
conda smithy regenerate
conda mambabuild -m .ci_support/linux_64_.yaml .
6 changes: 6 additions & 0 deletions .github/workflows/conda/environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
name: tesseract-build
channels:
- conda-forge
dependencies:
- boa
- conda-smithy
5 changes: 5 additions & 0 deletions .github/workflows/conda/recipe/activate.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@if not defined CONDA_PREFIX goto:eof

@call "%CONDA_PREFIX%\opt\tesseract_robotics\setup.bat"

@set TESSERACT_PYTHON_DLL_PATH=%CONDA_PREFIX%\opt\tesseract_robotics\bin
1 change: 1 addition & 0 deletions .github/workflows/conda/recipe/activate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
source "${CONDA_PREFIX}/opt/tesseract_robotics/setup.sh"
45 changes: 45 additions & 0 deletions .github/workflows/conda/recipe/bld.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
set CXXFLAGS=%CXXFLAGS% -DEIGEN_DONT_ALIGN=1 -DEIGEN_DONT_VECTORIZE=1
set CXXFLAGS=%CXXFLAGS% /std:c++17

colcon build --merge-install --install-base="%PREFIX%\opt\tesseract_robotics" ^
--event-handlers console_cohesion+ desktop_notification- status- terminal_title- ^
--packages-ignore gtest osqp osqp_eigen tesseract_examples trajopt_ifopt trajopt_sqp ^
--cmake-args -GNinja -DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING="/MD /O2 /Ob0 /Zi /DNDEBUG" ^
-DCMAKE_RELWITHDEBINFO_POSTFIX="" ^
-DBUILD_SHARED_LIBS=ON ^
-DUSE_MSVC_RUNTIME_LIBRARY_DLL=ON ^
-DBUILD_IPOPT=OFF ^
-DBUILD_SNOPT=OFF ^
-DCMAKE_PREFIX_PATH:PATH="%LIBRARY_PREFIX%" ^
-DTESSERACT_ENABLE_CLANG_TIDY=OFF ^
-DTESSERACT_ENABLE_CODE_COVERAGE=OFF ^
-DPYTHON_EXECUTABLE="%PREFIX%\python.exe" ^
-DTESSERACT_ENABLE_EXAMPLES=OFF ^
-DTESSERACT_BUILD_TRAJOPT_IFOPT=OFF ^
-DTESSERACT_ENABLE_TESTING=OFF ^
-DTRAJOPT_ENABLE_TESTING=ON

if %errorlevel% neq 0 exit /b %errorlevel%

set TESSERACT_RESOURCE_PATH=%PREFIX%\opt\tesseract_robotics\share

colcon test --event-handlers console_direct+ desktop_notification- status- terminal_title- ^
--return-code-on-test-failure ^
--packages-ignore gtest osqp osqp_eigen tesseract_examples trajopt_ifopt trajopt_sqp tesseract_common ^
tesseract_collision tesseract_environment tesseract_geometry tesseract_kinematics tesseract_scene_graph ^
tesseract_srdf tesseract_state_solver tesseract_support tesseract_urdf tesseract_visualization ^
--merge-install --install-base="%PREFIX%\opt\tesseract_robotics"

if %errorlevel% neq 0 exit /b %errorlevel%

setlocal EnableDelayedExpansion

:: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
:: This will allow them to be run on environment activation.
for %%F in (activate deactivate) DO (
if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
)

if %errorlevel% neq 0 exit /b %errorlevel%
33 changes: 33 additions & 0 deletions .github/workflows/conda/recipe/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
set -e

ln -s $BUILD_PREFIX/bin/x86_64-conda-linux-gnu-gcc $BUILD_PREFIX/bin/gcc

colcon build --merge-install --install-base="$PREFIX/opt/tesseract_robotics" \
--event-handlers console_cohesion+ \
--packages-ignore gtest osqp osqp_eigen tesseract_examples trajopt_ifopt trajopt_sqp \
--cmake-args -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_IPOPT=OFF \
-DBUILD_SNOPT=OFF \
-DCMAKE_PREFIX_PATH:PATH="$PREFIX" \
-DTESSERACT_ENABLE_CLANG_TIDY=OFF \
-DTESSERACT_ENABLE_CODE_COVERAGE=OFF \
-DTESSERACT_ENABLE_EXAMPLES=OFF \
-DTESSERACT_BUILD_TRAJOPT_IFOPT=OFF \
-DSETUPTOOLS_DEB_LAYOUT=OFF \
-DTESSERACT_ENABLE_TESTING=ON \
-DTRAJOPT_ENABLE_TESTING=ON

export TESSERACT_RESOURCE_PATH="$PREFIX/opt/tesseract_robotics/share"

colcon test --event-handlers console_direct+ \
--return-code-on-test-failure \
--packages-ignore gtest osqp osqp_eigen tesseract_examples trajopt_ifopt trajopt_sqp tesseract_common \
--merge-install --install-base="$PREFIX/opt/tesseract_robotics"


for CHANGE in "activate" "deactivate"
do
mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
done
Empty file.
Empty file.
77 changes: 77 additions & 0 deletions .github/workflows/conda/recipe/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package:
name: trajopt
version: "0.1.0"

source:
path: ../../workspace

requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- gtest
- gmock
- cmake
- ninja # [win]
- make # [linux]
- pkg-config
- colcon-common-extensions
- lcov
- {{ cdt('mesa-libgl-devel') }} # [linux]
- {{ cdt('mesa-dri-drivers') }} # [linux]
- git
host:
- boost-cpp
- eigen
- tinyxml2
- console_bridge
- assimp
- urdfdom
- fcl
- octomap
- orocos-kdl
- pcl
- gtest
- gmock
- pkg-config
- xz
- flann
- jsoncpp
- yaml-cpp
- bullet-cpp
- xorg-libx11 # [unix]
- xorg-libxext # [unix]
- blas
- osqp
- qpoases
run:
- boost-cpp
- eigen
- tinyxml2
- console_bridge
- assimp
- urdfdom
- fcl
- octomap
- orocos-kdl
- pcl
- gtest
- gmock
- xz
- jsoncpp
- taskflow
- yaml-cpp
- bullet-cpp
- xorg-libx11 # [unix]
- xorg-libxext # [unix]
- blas
- osqp
- qpoases

build:
skip: true # [py<37]
number: 0

about:
home: https://github.com/ros-industrial-consortium/trajopt
summary: Trajopt motion planner
2 changes: 1 addition & 1 deletion trajopt/test/benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ macro(add_benchmark benchmark_name benchmark_file)
target_link_libraries(
${benchmark_name}
${PROJECT_NAME}
osqp::osqpstatic
osqp::osqp
benchmark::benchmark)
target_include_directories(${benchmark_name} PRIVATE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
add_dependencies(${benchmark_name} ${PROJECT_NAME})
Expand Down
2 changes: 1 addition & 1 deletion trajopt_sco/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ if(HAVE_BPMPD)
HAVE_BPMPD=ON)
endif()
if(osqp_FOUND)
target_link_libraries(${PROJECT_NAME} PRIVATE osqp::osqpstatic)
target_link_libraries(${PROJECT_NAME} PRIVATE osqp::osqp)
target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_OSQP=ON)
endif()
if(qpOASES_FOUND AND TRAJOPT_BUILD_qpOASES)
Expand Down
2 changes: 2 additions & 0 deletions trajopt_sco/src/bpmpd_interface.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#include <trajopt_common/macros.h>
TRAJOPT_IGNORE_WARNINGS_PUSH
#include <cmath>
#include <fstream>
#include <csignal>
#include <array>
#include <mutex>
#include <trajopt_sco/bpmpd_io.hpp>
Expand Down
1 change: 1 addition & 0 deletions trajopt_sco/src/solver_interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ std::vector<ModelType> availableSolvers()

Model::Ptr createModel(ModelType model_type, const ModelConfig::ConstPtr& model_config)
{
UNUSED(model_config);
#ifdef HAVE_GUROBI
extern Model::Ptr createGurobiModel();
#endif
Expand Down
2 changes: 1 addition & 1 deletion trajopt_sco/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ target_link_libraries(
GTest::Main
${PROJECT_NAME})
if(osqp_FOUND)
target_link_libraries(${PROJECT_NAME}-test osqp::osqpstatic)
target_link_libraries(${PROJECT_NAME}-test osqp::osqp)
endif()
target_compile_options(${PROJECT_NAME}-test PRIVATE ${TRAJOPT_COMPILE_OPTIONS_PRIVATE}
${TRAJOPT_COMPILE_OPTIONS_PUBLIC})
Expand Down

0 comments on commit 3f2c248

Please sign in to comment.