Skip to content

Commit

Permalink
Add build files 2024-06-23-1100
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Jun 23, 2024
1 parent e8b9523 commit a1ef6ee
Show file tree
Hide file tree
Showing 21 changed files with 712 additions and 0 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
jobs:
stage_0_job_0:
name: mutex octomap urdfdom-py
runs-on: ubuntu-latest
strategy:
fail-fast: false
needs: []
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Build ros2-distro-mutex ros-humble-octomap ros-humble-urdfdom-py
env:
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
CURRENT_RECIPES: ros2-distro-mutex ros-humble-octomap ros-humble-urdfdom-py
DOCKER_IMAGE: condaforge/linux-anvil-cos7-x86_64
run: |
export CI=azure
export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
.scripts/run_docker_build.sh
name: build_linux
on:
push:
branches:
- buildbranch_linux
15 changes: 15 additions & 0 deletions activate.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
:: Generated by vinca http://github.com/RoboStack/vinca.
:: DO NOT EDIT!
@if not defined CONDA_PREFIX goto:eof

@REM Don't do anything when we are in conda build.
@if defined SYS_PREFIX exit /b 0

@set "QT_PLUGIN_PATH=%CONDA_PREFIX%\Library\plugins"

@call "%CONDA_PREFIX%\Library\local_setup.bat"
@set PYTHONHOME=
@set "ROS_OS_OVERRIDE=conda:win64"
@set "ROS_ETC_DIR=%CONDA_PREFIX%\Library\etc\ros"
@set "AMENT_PREFIX_PATH=%CONDA_PREFIX%\Library"
@set "AMENT_PYTHON_EXECUTABLE=%CONDA_PREFIX%\python.exe"
16 changes: 16 additions & 0 deletions activate.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Generated by vinca http://github.com/RoboStack/vinca.
# DO NOT EDIT!
if ($null -eq ${env:CONDA_PREFIX}) { Exit }

# Don't do anything when we are in conda build.
if ($null -ne ${env:SYS_PREFIX}) { Exit 0 }

$Env:QT_PLUGIN_PATH="${env:CONDA_PREFIX}\Library\plugins"

& "${env:CONDA_PREFIX}\Library\local_setup.ps1"

$Env:PYTHONHOME=''
$Env:ROS_OS_OVERRIDE='conda:win64'
$Env:ROS_ETC_DIR="${env:CONDA_PREFIX}\Library\etc\ros"
$Env:AMENT_PREFIX_PATH="${env:CONDA_PREFIX}\Library"
$Env:AMENT_PYTHON_EXECUTABLE="${env:CONDA_PREFIX}\python.exe"
26 changes: 26 additions & 0 deletions activate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by vinca http://github.com/RoboStack/vinca.
# DO NOT EDIT!
# if [ -z "${CONDA_PREFIX}" ]; then
# exit 0;
# fi

# Not sure if this is necessary on UNIX?
# export QT_PLUGIN_PATH=$CONDA_PREFIX\plugins

if [ "$CONDA_BUILD" = "1" -a "$target_platform" != "$build_platform" ]; then
# ignore sourcing
echo "Not activating ROS when cross-compiling";
else
source $CONDA_PREFIX/setup.sh
fi

case "$OSTYPE" in
darwin*) export ROS_OS_OVERRIDE="conda:osx"; export RMW_IMPLEMENTATION="rmw_cyclonedds_cpp";;
linux*) export ROS_OS_OVERRIDE="conda:linux";;
esac

export ROS_ETC_DIR=$CONDA_PREFIX/etc/ros
export AMENT_PREFIX_PATH=$CONDA_PREFIX

# Looks unnecessary for UNIX
# unset PYTHONHOME=
49 changes: 49 additions & 0 deletions bld_ament_cmake.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
:: Generated by vinca http://github.com/RoboStack/vinca.
:: DO NOT EDIT!
setlocal EnableDelayedExpansion

set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"

:: MSVC is preferred.
set CC=cl.exe
set CXX=cl.exe

rd /s /q build
mkdir build
pushd build

:: set "CMAKE_GENERATOR=Ninja"

:: try to fix long paths issues by using default generator
set "CMAKE_GENERATOR=Visual Studio %VS_MAJOR% %VS_YEAR%"

:: PYTHON_INSTALL_DIR should be a relative path, see
:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
:: python

:: This line is scary, but it basically assigns the output of the command inside (` and `)
:: to the variable specified after DO SET
:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']))"`) DO SET PYTHON_INSTALL_DIR=%%i

cmake ^
-G "%CMAKE_GENERATOR%" ^
-DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True ^
-DPYTHON_EXECUTABLE=%PYTHON% ^
-DPython_EXECUTABLE=%PYTHON% ^
-DPython3_EXECUTABLE=%PYTHON% ^
-DSETUPTOOLS_DEB_LAYOUT=OFF ^
-DBUILD_SHARED_LIBS=ON ^
-DBUILD_TESTING=OFF ^
-DCMAKE_OBJECT_PATH_MAX=255 ^
--compile-no-warning-as-error ^
-DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
%SRC_DIR%\%PKG_NAME%\src\work
if errorlevel 1 exit 1

cmake --build . --config Release --target install
if errorlevel 1 exit 1
25 changes: 25 additions & 0 deletions bld_ament_python.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
:: Generated by vinca http://github.com/RoboStack/vinca.
:: DO NOT EDIT!
setlocal

set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"

pushd %SRC_DIR%\%PKG_NAME%\src\work
set "PKG_NAME_SHORT=%PKG_NAME:*ros-jazzy-=%"
set "PKG_NAME_SHORT=%PKG_NAME_SHORT:-=_%"

:: If there is a setup.cfg that contains install-scripts then use pip to install
findstr install[-_]scripts setup.cfg
if "%errorlevel%" == "0" (
%PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
--prefix=%LIBRARY_PREFIX% ^
--install-lib=%SP_DIR% ^
--install-scripts=%LIBRARY_PREFIX%\lib\%PKG_NAME_SHORT%
) else (
%PYTHON% setup.py install --single-version-externally-managed --record=files.txt ^
--prefix=%LIBRARY_PREFIX% ^
--install-lib=%SP_DIR% ^
--install-scripts=%LIBRARY_PREFIX%\bin
)

if errorlevel 1 exit 1
81 changes: 81 additions & 0 deletions bld_catkin.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
:: Generated by vinca http://github.com/RoboStack/vinca.
:: DO NOT EDIT!
setlocal
set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"

:: MSVC is preferred.
set CC=cl.exe
set CXX=cl.exe

:: ROS_BUILD_SHARED_LIBS is always defined in CMake by catkin
:: if ROS (1) is build as shared library . However, some packages are not
:: passing compilation flags from CMake to other build systems (such as qmake),
:: so we enable it explicitly via the CL environment variable, see
:: https://learn.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=msvc-170
set CL=/DROS_BUILD_SHARED_LIBS=1 /DNOGDI=1

set "CATKIN_BUILD_BINARY_PACKAGE_ARGS=-DCATKIN_BUILD_BINARY_PACKAGE=1"
if "%PKG_NAME%" == "ros-jazzy-catkin" (
:: create catkin cookie to make it is a catkin workspace
type NUL > %LIBRARY_PREFIX%\.catkin
:: keep the workspace activation scripts (e.g., local_setup.bat)
set CATKIN_BUILD_BINARY_PACKAGE_ARGS=
)

rd /s /q build
mkdir build
pushd build

set SKIP_TESTING=ON

cmake ^
-G "Ninja" ^
--compile-no-warning-as-error ^
-DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=ON ^
-DBUILD_SHARED_LIBS=ON ^
-DPYTHON_EXECUTABLE=%PYTHON% ^
-DPython_EXECUTABLE=%PYTHON% ^
-DPython3_EXECUTABLE=%PYTHON% ^
-DSETUPTOOLS_DEB_LAYOUT=OFF ^
-DBoost_USE_STATIC_LIBS=OFF ^
%CATKIN_BUILD_BINARY_PACKAGE_ARGS% ^
-DCATKIN_SKIP_TESTING=%SKIP_TESTING% ^
%SRC_DIR%\%PKG_NAME%\src\work
if errorlevel 1 exit 1

if "%PKG_NAME%" == "ros-jazzy-eigenpy" (
cmake --build . --config Release --target all --parallel 1
if errorlevel 1 exit 1
) else (
cmake --build . --config Release --target all
if errorlevel 1 exit 1
)

if "%SKIP_TESTING%" == "OFF" (
cmake --build . --config Release --target run_tests
if errorlevel 1 exit 1
)

cmake --build . --config Release --target install
if errorlevel 1 exit 1

if "%PKG_NAME%" == "ros-jazzy-catkin" (
:: 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 "%PKG_NAME%" == "ros-jazzy-ros-workspace" (
:: 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
copy %RECIPE_DIR%\%%F.ps1 %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.ps1
)
)
34 changes: 34 additions & 0 deletions bld_catkin_merge.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
:: Generated by vinca http://github.com/RoboStack/vinca.
:: DO NOT EDIT!
setlocal

:: MSVC is preferred.
set CC=cl.exe
set CXX=cl.exe

:: ROS_BUILD_SHARED_LIBS is always defined in CMake by catkin
:: if ROS (1) is build as shared library . However, some packages are not
:: passing compilation flags from CMake to other build systems (such as qmake),
:: so we enable it explicitly via the CL environment variable, see
:: https://learn.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=msvc-170
set CL=/DROS_BUILD_SHARED_LIBS=1 /DNOGDI=1

set CATKIN_MAKE_ISOLATED=src\ros-jazzy-catkin\bin\catkin_make_isolated
set CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH:\=/%

%PYTHON% %CATKIN_MAKE_ISOLATED% ^
--install-space %LIBRARY_PREFIX% ^
--use-ninja ^
--install ^
-DCMAKE_BUILD_TYPE=Release ^
-DBUILD_SHARED_LIBS=ON ^
-DPYTHON_EXECUTABLE=%PYTHON% ^
-DCATKIN_SKIP_TESTING=ON
if errorlevel 1 exit 1

:: 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
)
38 changes: 38 additions & 0 deletions bld_colcon_merge.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
:: Generated by vinca http://github.com/RoboStack/vinca.
:: DO NOT EDIT!
setlocal

:: MSVC is preferred.
set CC=cl.exe
set CXX=cl.exe

:: PYTHON_INSTALL_DIR should be a relative path, see
:: https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
:: So we compute the relative path of %SP_DIR% w.r.t. to LIBRARY_PREFIX,
:: but it is not trivial to do this in Command Prompt scripting, so let's do it via
:: python

:: This line is scary, but it basically assigns the output of the command inside (` and `)
:: to the variable specified after DO SET
:: The equivalent in bash is PYTHON_INSTALL_DIR=`python -c ...`
FOR /F "tokens=* USEBACKQ" %%i IN (`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['LIBRARY_PREFIX']))"`) DO SET PYTHON_INSTALL_DIR=%%i

colcon build ^
--event-handlers console_cohesion+ ^
--merge-install ^
--install-base %LIBRARY_PREFIX% ^
--cmake-args ^
--compile-no-warning-as-error ^
-G Ninja ^
-DCMAKE_BUILD_TYPE=Release ^
-DBUILD_TESTING=OFF ^
-DPYTHON_INSTALL_DIR=%PYTHON_INSTALL_DIR% ^
-DPYTHON_EXECUTABLE=%PYTHON%
if errorlevel 1 exit 1

:: 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
)
75 changes: 75 additions & 0 deletions build_ament_cmake.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Generated by vinca http://github.com/RoboStack/vinca.
# DO NOT EDIT!

rm -rf build
mkdir build
cd build

# necessary for correctly linking SIP files (from python_qt_bindings)
export LINK=$CXX

if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
PYTHON_EXECUTABLE=$PREFIX/bin/python
PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
OSX_DEPLOYMENT_TARGET="10.15"
else
PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
OSX_DEPLOYMENT_TARGET="11.0"
fi

echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"

export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
echo "Using Python ${ROS_PYTHON_VERSION}"

# see https://github.com/conda-forge/cross-python-feedstock/issues/24
if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
find $PREFIX/lib/cmake -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
find $PREFIX/share/rosidl* -type f -exec sed -i "s~$PREFIX/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
find $PREFIX/share/rosidl* -type f -exec sed -i "s~\${_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~${BUILD_PREFIX}/lib/python${ROS_PYTHON_VERSION}/site-packages~g" {} + || true
find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
fi

if [[ $target_platform =~ linux.* ]]; then
export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1"
export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
fi;

# Needed for qt-gui-cpp ..
if [[ $target_platform =~ linux.* ]]; then
ln -s $GCC ${BUILD_PREFIX}/bin/gcc
ln -s $GXX ${BUILD_PREFIX}/bin/g++
fi;

# PYTHON_INSTALL_DIR should be a relative path, see
# https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
# So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
# but it is not trivial to do this in bash scripting, so let's do it via python
export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"`
echo "Using site_packages: $PYTHON_INSTALL_DIR"

cmake \
-G "Ninja" \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_PREFIX_PATH=$PREFIX \
-DAMENT_PREFIX_PATH=$PREFIX \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_BUILD_TYPE=Release \
-DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
-DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
-DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
-DPython3_FIND_STRATEGY=LOCATION \
-DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
-DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \
-DSETUPTOOLS_DEB_LAYOUT=OFF \
-DCATKIN_SKIP_TESTING=$SKIP_TESTING \
-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
--compile-no-warning-as-error \
$SRC_DIR/$PKG_NAME/src/work

cmake --build . --config Release --target install
Loading

0 comments on commit a1ef6ee

Please sign in to comment.