Skip to content

Commit f9242b2

Browse files
committed
Add build files 2025-10-02-1921
1 parent e9272c5 commit f9242b2

File tree

8 files changed

+1702
-0
lines changed

8 files changed

+1702
-0
lines changed

.github/workflows/linux.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
jobs:
2+
stage_0_job_0:
3+
name: cv-bridge
4+
runs-on: ubuntu-latest
5+
strategy:
6+
fail-fast: false
7+
needs: []
8+
steps:
9+
- name: Checkout code
10+
uses: actions/checkout@v4
11+
- name: Build ros-noetic-cv-bridge
12+
env:
13+
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
14+
CURRENT_RECIPES: ros-noetic-cv-bridge
15+
BUILD_TARGET: ''
16+
run: |
17+
export CI=azure
18+
export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME
19+
export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME})
20+
.scripts/build_unix.sh --target $BUILD_TARGET
21+
name: build_unix
22+
on:
23+
push:
24+
branches:
25+
- buildbranch_linux

buildorder.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ros-noetic-cv-bridge
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
:: Generated by vinca http://github.com/RoboStack/vinca.
2+
:: DO NOT EDIT!
3+
setlocal
4+
set "PYTHONPATH=%LIBRARY_PREFIX%\lib\site-packages;%SP_DIR%"
5+
6+
:: MSVC is preferred.
7+
set CC=cl.exe
8+
set CXX=cl.exe
9+
10+
:: ROS_BUILD_SHARED_LIBS is always defined in CMake by catkin
11+
:: if ROS (1) is build as shared library . However, some packages are not
12+
:: passing compilation flags from CMake to other build systems (such as qmake),
13+
:: so we enable it explicitly via the CL environment variable, see
14+
:: https://learn.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=msvc-170
15+
set CL=/DROS_BUILD_SHARED_LIBS=1 /DNOGDI=1
16+
17+
set "CATKIN_BUILD_BINARY_PACKAGE_ARGS=-DCATKIN_BUILD_BINARY_PACKAGE=1"
18+
if "%PKG_NAME%" == "ros-noetic-catkin" (
19+
:: create catkin cookie to make it is a catkin workspace
20+
type NUL > %LIBRARY_PREFIX%\.catkin
21+
:: keep the workspace activation scripts (e.g., local_setup.bat)
22+
set CATKIN_BUILD_BINARY_PACKAGE_ARGS=
23+
)
24+
25+
rd /s /q build
26+
mkdir build
27+
pushd build
28+
29+
set SKIP_TESTING=ON
30+
31+
cmake ^
32+
-G "Ninja" ^
33+
--compile-no-warning-as-error ^
34+
-DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^
35+
-DCMAKE_BUILD_TYPE=Release ^
36+
-DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=ON ^
37+
-DBUILD_SHARED_LIBS=ON ^
38+
-DPYTHON_EXECUTABLE=%PYTHON% ^
39+
-DPython_EXECUTABLE=%PYTHON% ^
40+
-DPython3_EXECUTABLE=%PYTHON% ^
41+
-DSETUPTOOLS_DEB_LAYOUT=OFF ^
42+
-DBoost_USE_STATIC_LIBS=OFF ^
43+
%CATKIN_BUILD_BINARY_PACKAGE_ARGS% ^
44+
-DCATKIN_SKIP_TESTING=%SKIP_TESTING% ^
45+
^
46+
%SRC_DIR%\%PKG_NAME%\src\work\
47+
if errorlevel 1 exit 1
48+
49+
if "%PKG_NAME%" == "ros-noetic-eigenpy" (
50+
cmake --build . --config Release --target all --parallel 1
51+
if errorlevel 1 exit 1
52+
) else (
53+
cmake --build . --config Release --target all
54+
if errorlevel 1 exit 1
55+
)
56+
57+
if "%SKIP_TESTING%" == "OFF" (
58+
cmake --build . --config Release --target run_tests
59+
if errorlevel 1 exit 1
60+
)
61+
62+
cmake --build . --config Release --target install
63+
if errorlevel 1 exit 1
64+
65+
if "%PKG_NAME%" == "ros-noetic-catkin" (
66+
:: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
67+
:: This will allow them to be run on environment activation.
68+
for %%F in (activate deactivate) DO (
69+
if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
70+
copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
71+
)
72+
)
73+
74+
if "%PKG_NAME%" == "ros-noetic-ros-workspace" (
75+
:: Copy the [de]activate scripts to %PREFIX%\etc\conda\[de]activate.d.
76+
:: This will allow them to be run on environment activation.
77+
for %%F in (activate deactivate) DO (
78+
if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
79+
copy %RECIPE_DIR%\%%F.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.bat
80+
copy %RECIPE_DIR%\%%F.ps1 %PREFIX%\etc\conda\%%F.d\%PKG_NAME%_%%F.ps1
81+
)
82+
)
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# Generated by vinca http://github.com/RoboStack/vinca.
2+
# DO NOT EDIT!
3+
4+
set -eo pipefail
5+
6+
CATKIN_BUILD_BINARY_PACKAGE="ON"
7+
8+
if [ "${PKG_NAME}" == "ros-noetic-catkin" ]; then
9+
# create catkin cookie to make it is a catkin workspace
10+
touch $PREFIX/.catkin
11+
# keep the workspace activation scripts (e.g., local_setup.bat)
12+
CATKIN_BUILD_BINARY_PACKAGE="OFF"
13+
fi
14+
15+
rm -rf build
16+
mkdir build
17+
cd build
18+
19+
# necessary for correctly linking SIP files (from python_qt_bindings)
20+
export LINK=$CXX
21+
22+
if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then
23+
PYTHON_EXECUTABLE=$PREFIX/bin/python
24+
PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config
25+
OSX_DEPLOYMENT_TARGET="10.15"
26+
else
27+
PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python
28+
PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config
29+
OSX_DEPLOYMENT_TARGET="11.0"
30+
fi
31+
32+
if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then
33+
export QT_HOST_PATH="$BUILD_PREFIX"
34+
else
35+
export QT_HOST_PATH="$PREFIX"
36+
fi
37+
38+
echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}"
39+
echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}"
40+
41+
export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"`
42+
echo "Using Python $ROS_PYTHON_VERSION"
43+
# Fix up SP_DIR which for some reason might contain a path to a wrong Python version
44+
FIXED_SP_DIR=$(echo $SP_DIR | sed -E "s/python[0-9]+\.[0-9]+/python$ROS_PYTHON_VERSION/")
45+
echo "Using site-package dir ${FIXED_SP_DIR}"
46+
47+
# see https://github.com/conda-forge/cross-python-feedstock/issues/24
48+
if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then
49+
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
50+
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
51+
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
52+
find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true
53+
# way around bad CPU type issues
54+
# rm $PREFIX/bin/doxygen || echo "doxygen not found"
55+
# rm $PREFIX/bin/dia || echo "dia not found"
56+
# rm $PREFIX/bin/dot || echo "dot not found"
57+
fi
58+
59+
# NOTE: there might be undefined references occurring
60+
# in the Boost.system library, depending on the C++ versions
61+
# used to compile Boost. We can avoid them by forcing the use of
62+
# the header-only version of the library.
63+
export CXXFLAGS="$CXXFLAGS -DBOOST_ERROR_CODE_HEADER_ONLY"
64+
65+
if [[ $target_platform =~ linux.* ]]; then
66+
export CFLAGS="$CFLAGS -D__STDC_FORMAT_MACROS=1";
67+
export CXXFLAGS="$CXXFLAGS -D__STDC_FORMAT_MACROS=1";
68+
# I am too scared to turn this on for now ...
69+
# export LDFLAGS="$LDFLAGS -lrt";
70+
# Some qt stuff uses g++ directly - fix these use cases
71+
ln -s $GXX $BUILD_PREFIX/bin/g++
72+
fi
73+
74+
if [[ $target_platform =~ emscripten.* ]]; then
75+
export CONDA_BUILD_CROSS_COMPILATION="1"
76+
echo "set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)"> $SRC_DIR/__vinca_shared_lib_patch.cmake
77+
echo "set(CMAKE_STRIP FALSE) # used by default in pybind11 on .so modules">> $SRC_DIR/__vinca_shared_lib_patch.cmake
78+
echo "set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) # fixes an error where numpy header files are not found correctly">> $SRC_DIR/__vinca_shared_lib_patch.cmake
79+
export EXTRA_CMAKE_ARGS=" \
80+
-DCMAKE_FIND_ROOT_PATH=$PREFIX \
81+
-DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
82+
-DCMAKE_PROJECT_INCLUDE=$SRC_DIR/__vinca_shared_lib_patch.cmake \
83+
"
84+
fi
85+
86+
export SKIP_TESTING=ON
87+
88+
if [ "${PKG_NAME}" == "ros-noetic-euslisp" ] || [ "${PKG_NAME}" = "ros-noetic-jskeus" ] || [ "${PKG_NAME}" = "ros-noetic-roseus" ]; then
89+
GENERATOR="Unix Makefiles"
90+
else
91+
GENERATOR="Ninja"
92+
fi
93+
94+
cmake ${CMAKE_ARGS} --compile-no-warning-as-error \
95+
-DCMAKE_INSTALL_PREFIX=$PREFIX \
96+
-DCMAKE_PREFIX_PATH=$PREFIX \
97+
-DCMAKE_BUILD_TYPE=Release \
98+
-DCMAKE_INSTALL_LIBDIR=lib \
99+
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=ON \
100+
-DCMAKE_FIND_FRAMEWORK=LAST \
101+
-DCMAKE_AUTOMOC_EXECUTABLE=$CMAKE_AUTOMOC_EXECUTABLE \
102+
-DBUILD_SHARED_LIBS=ON \
103+
-DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
104+
-DPython_EXECUTABLE=$PYTHON_EXECUTABLE \
105+
-DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \
106+
-DPython3_FIND_STRATEGY=LOCATION \
107+
-DPYTHON_INSTALL_DIR=$FIXED_SP_DIR \
108+
-DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \
109+
-DSETUPTOOLS_DEB_LAYOUT=OFF \
110+
-DCATKIN_SKIP_TESTING=$SKIP_TESTING \
111+
-DCATKIN_BUILD_BINARY_PACKAGE=$CATKIN_BUILD_BINARY_PACKAGE \
112+
-DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
113+
$EXTRA_CMAKE_ARGS \
114+
\
115+
-G "$GENERATOR" \
116+
$SRC_DIR/$PKG_NAME/src/work/
117+
118+
cmake --build . --config Release --target all
119+
120+
if [[ "$SKIP_TESTING" == "OFF" ]]; then
121+
cmake --build . --config Release --target run_tests
122+
fi
123+
124+
cmake --build . --config Release --target install
125+
126+
if [ "${PKG_NAME}" == "ros-noetic-catkin" ]; then
127+
# Copy the [de]activate scripts to $PREFIX/etc/conda/[de]activate.d.
128+
# This will allow them to be run on environment activation.
129+
for CHANGE in "activate" "deactivate"
130+
do
131+
mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
132+
cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
133+
done
134+
fi
135+
136+
if [ "${PKG_NAME}" == "ros-noetic-environment" ]; then
137+
for SCRIPT in "1.ros_distro.sh" "1.ros_etc_dir.sh" "1.ros_package_path.sh" "1.ros_python_version.sh" "1.ros_version.sh"
138+
do
139+
mkdir -p "${PREFIX}/etc/conda/activate.d"
140+
cp "${PREFIX}/etc/catkin/profile.d/${SCRIPT}" "${PREFIX}/etc/conda/activate.d/${SCRIPT}"
141+
done
142+
fi
143+
144+
if [ "${PKG_NAME}" == "ros-noetic-ros-workspace" ]; then
145+
# Copy the [de]activate scripts to $PREFIX/etc/conda/[de]activate.d.
146+
# This will allow them to be run on environment activation.
147+
for CHANGE in "activate" "deactivate"
148+
do
149+
mkdir -p "${PREFIX}/etc/conda/${CHANGE}.d"
150+
cp "${RECIPE_DIR}/${CHANGE}.sh" "${PREFIX}/etc/conda/${CHANGE}.d/${PKG_NAME}_${CHANGE}.sh"
151+
done
152+
fi
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index ef804b91..4ef849c4 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -3,28 +3,8 @@ project(cv_bridge)
6+
7+
find_package(catkin REQUIRED COMPONENTS rosconsole sensor_msgs)
8+
9+
-if(NOT ANDROID)
10+
- find_package(PythonLibs)
11+
-
12+
- if(PYTHONLIBS_VERSION_STRING VERSION_LESS "3.8")
13+
- # Debian Buster
14+
- find_package(Boost REQUIRED python37)
15+
- else()
16+
- # Ubuntu Focal
17+
- find_package(Boost REQUIRED python)
18+
- endif()
19+
-else()
20+
-find_package(Boost REQUIRED)
21+
-endif()
22+
-
23+
-set(_opencv_version 4)
24+
-find_package(OpenCV 4 QUIET)
25+
-if(NOT OpenCV_FOUND)
26+
- message(STATUS "Did not find OpenCV 4, trying OpenCV 3")
27+
- set(_opencv_version 3)
28+
-endif()
29+
-
30+
-find_package(OpenCV ${_opencv_version} REQUIRED
31+
+find_package(Boost REQUIRED CONFIG COMPONENTS python)
32+
+find_package(OpenCV REQUIRED
33+
COMPONENTS
34+
opencv_core
35+
opencv_imgproc
36+
@@ -43,7 +23,6 @@ catkin_package(
37+
catkin_python_setup()
38+
39+
include_directories(include ${Boost_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})
40+
-link_directories(${Boost_LIBRARY_DIRS})
41+
42+
if(NOT ANDROID)
43+
add_subdirectory(python)
44+
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
45+
index d1046922c..57ec2a26c 100644
46+
--- a/src/CMakeLists.txt
47+
+++ b/src/CMakeLists.txt
48+
@@ -1,8 +1,7 @@
49+
# add library
50+
-include_directories(./)
51+
add_library(${PROJECT_NAME} cv_bridge.cpp rgb_colors.cpp)
52+
add_dependencies(${PROJECT_NAME} ${catkin_EXPORTED_TARGETS})
53+
-target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES} ${catkin_LIBRARIES})
54+
+target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES} ${Boost_LIBRARIES} ${catkin_LIBRARIES})
55+
56+
install(TARGETS ${PROJECT_NAME}
57+
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
58+
@@ -12,38 +11,18 @@ install(TARGETS ${PROJECT_NAME}
59+
60+
if(NOT ANDROID)
61+
# add a Boost Python library
62+
-find_package(PythonInterp REQUIRED)
63+
-find_package(PythonLibs "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}")
64+
-
65+
-#Get the numpy include directory from its python module
66+
-if(NOT PYTHON_NUMPY_INCLUDE_DIR)
67+
- execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import numpy; print(numpy.get_include())"
68+
- RESULT_VARIABLE PYTHON_NUMPY_PROCESS
69+
- OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIR
70+
- OUTPUT_STRIP_TRAILING_WHITESPACE)
71+
-
72+
- if(PYTHON_NUMPY_PROCESS EQUAL 0)
73+
- file(TO_CMAKE_PATH "${PYTHON_NUMPY_INCLUDE_DIR}" PYTHON_NUMPY_INCLUDE_CMAKE_PATH)
74+
- set(PYTHON_NUMPY_INCLUDE_DIR ${PYTHON_NUMPY_INCLUDE_CMAKE_PATH} CACHE PATH "Numpy include directory")
75+
- else(PYTHON_NUMPY_PROCESS EQUAL 0)
76+
- message(SEND_ERROR "Could not determine the NumPy include directory, verify that NumPy was installed correctly.")
77+
- endif(PYTHON_NUMPY_PROCESS EQUAL 0)
78+
- endif(NOT PYTHON_NUMPY_INCLUDE_DIR)
79+
-
80+
-include_directories(${PYTHON_INCLUDE_PATH} ${Boost_INCLUDE_DIRS} ${PYTHON_NUMPY_INCLUDE_DIR})
81+
-
82+
-if (PYTHON_VERSION_MAJOR VERSION_EQUAL 3)
83+
- add_definitions(-DPYTHON3)
84+
-endif()
85+
+find_package(Python COMPONENTS Interpreter Development NumPy)
86+
+add_definitions(-DPYTHON3)
87+
88+
add_library(${PROJECT_NAME}_boost module.cpp module_opencv4.cpp)
89+
+target_include_directories(${PROJECT_NAME}_boost PUBLIC ${Python_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${Python_NumPy_INCLUDE_DIRS})
90+
target_link_libraries(${PROJECT_NAME}_boost ${Boost_LIBRARIES}
91+
${catkin_LIBRARIES}
92+
${PROJECT_NAME}
93+
)
94+
95+
if(NOT APPLE)
96+
- target_link_libraries(${PROJECT_NAME}_boost ${PYTHON_LIBRARIES})
97+
+ target_link_libraries(${PROJECT_NAME}_boost ${Python_LIBRARIES})
98+
endif()
99+
100+
set_target_properties(${PROJECT_NAME}_boost PROPERTIES
101+
diff --git a/src/cv_bridge.cpp b/src/cv_bridge.cpp
102+
index 44f23a32..8de258f7 100644
103+
--- a/src/cv_bridge.cpp
104+
+++ b/src/cv_bridge.cpp
105+
@@ -33,7 +33,9 @@
106+
* POSSIBILITY OF SUCH DAMAGE.
107+
*********************************************************************/
108+
109+
-#include "boost/endian/conversion.hpp"
110+
+#include <boost/predef/make.h>
111+
+
112+
+#include <boost/endian/conversion.hpp>
113+
114+
#include <map>
115+

0 commit comments

Comments
 (0)