diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml new file mode 100644 index 0000000000..7c06a99490 --- /dev/null +++ b/.github/workflows/conda.yml @@ -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/tesseract_planning + - name: install-depends + shell: cmd + run: | + python -m pip install vcstool -q + - name: vcs import + run: > + vcs import --input "${{ github.workspace }}/workspace/src/tesseract_planning/.github/workflows/windows_dependencies.repos" workspace/src/ + - uses: conda-incubator/setup-miniconda@v3 + with: + channel-priority: strict + environment-file: workspace/src/tesseract_planning/.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\tesseract_planning\.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 --build-only . + + conda-linux: + runs-on: ubuntu-latest + defaults: + run: + shell: bash -el {0} + steps: + - uses: actions/checkout@v3 + with: + path: workspace/src/tesseract_planning + - name: install-depends + run: | + python -m pip install vcstool -q + - name: vcs import + run: > + vcs import --input "${{ github.workspace }}/workspace/src/tesseract_planning/.github/workflows/windows_dependencies.repos" workspace/src/ + - uses: conda-incubator/setup-miniconda@v3 + with: + channel-priority: strict + environment-file: workspace/src/tesseract_planning/.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/tesseract_planning/.github/workflows/conda ./conda + cd conda + touch conda-forge.yml + conda smithy regenerate + + conda mambabuild -m .ci_support/linux_64_.yaml --build-only . diff --git a/.github/workflows/conda/environment.yml b/.github/workflows/conda/environment.yml new file mode 100644 index 0000000000..909dc29d5e --- /dev/null +++ b/.github/workflows/conda/environment.yml @@ -0,0 +1,6 @@ +name: tesseract-build +channels: + - conda-forge +dependencies: + - boa + - conda-smithy \ No newline at end of file diff --git a/.github/workflows/conda/recipe/activate.bat b/.github/workflows/conda/recipe/activate.bat new file mode 100644 index 0000000000..0e01a3a569 --- /dev/null +++ b/.github/workflows/conda/recipe/activate.bat @@ -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 \ No newline at end of file diff --git a/.github/workflows/conda/recipe/activate.sh b/.github/workflows/conda/recipe/activate.sh new file mode 100644 index 0000000000..b4f0242294 --- /dev/null +++ b/.github/workflows/conda/recipe/activate.sh @@ -0,0 +1 @@ +source "${CONDA_PREFIX}/opt/tesseract_robotics/setup.sh" \ No newline at end of file diff --git a/.github/workflows/conda/recipe/bld.bat b/.github/workflows/conda/recipe/bld.bat new file mode 100644 index 0000000000..1ca24598f6 --- /dev/null +++ b/.github/workflows/conda/recipe/bld.bat @@ -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% \ No newline at end of file diff --git a/.github/workflows/conda/recipe/build.sh b/.github/workflows/conda/recipe/build.sh new file mode 100644 index 0000000000..28dbdc0d4e --- /dev/null +++ b/.github/workflows/conda/recipe/build.sh @@ -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 \ No newline at end of file diff --git a/.github/workflows/conda/recipe/deactivate.bat b/.github/workflows/conda/recipe/deactivate.bat new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/workflows/conda/recipe/deactivate.sh b/.github/workflows/conda/recipe/deactivate.sh new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/workflows/conda/recipe/meta.yaml b/.github/workflows/conda/recipe/meta.yaml new file mode 100644 index 0000000000..711ba1d04e --- /dev/null +++ b/.github/workflows/conda/recipe/meta.yaml @@ -0,0 +1,80 @@ +package: + name: tesseract_planning + 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: + - libboost-devel + - 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 + - ompl + - taskflow + run: + - 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 + - ompl + - taskflow + +build: + skip: true # [py<37] + number: 0 + +about: + home: https://github.com/tesseract-robotics/tesseract_planning + summary: Tesseract robot motion planners \ No newline at end of file