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

Add conda tests #380

Merged
merged 14 commits into from
Jan 18, 2024
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
Loading