Skip to content

Commit

Permalink
Had to force PYTHONPATH to update during build because setup script i…
Browse files Browse the repository at this point in the history
…s not created yet to run.
  • Loading branch information
HorvathDawson committed Dec 29, 2021
1 parent cb0a8d0 commit 16a1217
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 22 deletions.
11 changes: 8 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,15 @@ if(OPENSIM2REAL_USES_PYTHON)
message(STATUS "OPENSIM2REAL_SUPERBUILD_PYTHON_INSTALL_DIR_SETUP_SH: ${OPENSIM2REAL_SUPERBUILD_PYTHON_INSTALL_DIR_SETUP_SH}")

endif()
set(PYTHONPATHS "${YCM_EP_INSTALL_DIR}/${OPENSIM2REAL_SUPERBUILD_PYTHON_INSTALL_DIR_SETUP_SH}:\
${YCM_EP_INSTALL_DIR}/${IDYNTREE_PYTHON_INSTALL_DIR_SETUP_SH}")

# If scenario is enabled. make sure gym ignition and scenario are uninstalled
IF(OPENSIM2REAL_USES_PYTHON)
# Make sure gym-ignition and scenario is uninstalled before running
execute_process(
COMMAND "${Python3_EXECUTABLE}" -c "import sys; from contextlib import suppress; import os; import importlib; \
COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${PYTHONPATHS} "${Python3_EXECUTABLE}" -c "import sys; \
from contextlib import suppress; import os; import importlib; \
PYPATHS = [] if 'PYTHONPATH' not in os.environ else os.environ['PYTHONPATH'].split(':'); \
sys.path = [p for p in sys.path if p not in [os.path.abspath(x) for x in PYPATHS]]; \
print(importlib.util.find_spec('idyntree'))"
Expand All @@ -99,7 +102,8 @@ IF(OPENSIM2REAL_USES_PYTHON)
endif()
# Make sure Scenario is uninstalled before Runinng
execute_process(
COMMAND "${Python3_EXECUTABLE}" -c "import sys; from contextlib import suppress; import os; import importlib; \
COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${PYTHONPATHS} "${Python3_EXECUTABLE}" -c "import sys; \
from contextlib import suppress; import os; import importlib; \
PYPATHS = [] if 'PYTHONPATH' not in os.environ else os.environ['PYTHONPATH'].split(':'); \
sys.path = [p for p in sys.path if p not in [os.path.abspath(x) for x in PYPATHS]]; \
print(importlib.util.find_spec('scenario'))"
Expand All @@ -116,7 +120,8 @@ IF(OPENSIM2REAL_USES_PYTHON)
endif()
# Make sure gym-ignition and scenario is uninstalled before running
execute_process(
COMMAND "${Python3_EXECUTABLE}" -c "import sys; from contextlib import suppress; import os; import importlib; \
COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${PYTHONPATHS} "${Python3_EXECUTABLE}" -c "import sys; \
from contextlib import suppress; import os; import importlib; \
PYPATHS = [] if 'PYTHONPATH' not in os.environ else os.environ['PYTHONPATH'].split(':'); \
sys.path = [p for p in sys.path if p not in [os.path.abspath(x) for x in PYPATHS]]; \
print(importlib.util.find_spec('gym_ignition'))"
Expand Down
8 changes: 6 additions & 2 deletions cmake/Buildgym-ignition.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ if(OPENSIM2REAL_USES_PYTHON)
set(EGG_BASE_PATH_SCENARIO "${YCM_EP_INSTALL_DIR}/${OPENSIM2REAL_SUPERBUILD_PYTHON_INSTALL_DIR_SETUP_SH}")
message(STATUS "Using \'${Python3_EXECUTABLE} setup.py egg_info --egg-base=${EGG_BASE_PATH_SCENARIO}\' To create each egg info for python modules sceanrio and gym-ignition.")
add_custom_command(TARGET gym-ignition POST_BUILD
COMMAND ${Python3_EXECUTABLE} setup.py egg_info --egg-base=${EGG_BASE_PATH_SCENARIO}
COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${PYTHONPATHS} ${Python3_EXECUTABLE} setup.py egg_info --egg-base=${EGG_BASE_PATH_SCENARIO}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src/gym-ignition/scenario
DEPENDS iDynTree
COMMENT "Installing egg files for scenario..."
)

Expand All @@ -45,11 +46,14 @@ if(OPENSIM2REAL_USES_PYTHON)
set(gym_ignition_install_dir ${EGG_BASE_PATH_SCENARIO}/gym_ignition)
add_custom_command(TARGET gym-ignition POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/src/gym-ignition ${gym_ignition_install_dir}
DEPENDS iDynTree
COMMENT "Moving gym-ignition into build python directory ${gym_ignition_install_dir}...")

add_custom_command(TARGET gym-ignition POST_BUILD
VERBATIM COMMAND ${Python3_EXECUTABLE} -c "import setuptools;import site;import sys;site.ENABLE_USER_SITE = 1;sys.argv[1:]=[\"develop\",\"--user\"];setuptools.setup()"
VERBATIM COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${PYTHONPATHS} ${Python3_EXECUTABLE} -c "import setuptools; \
import site;import sys;site.ENABLE_USER_SITE = 1;sys.argv[1:]=[\"develop\",\"--user\"];setuptools.setup()"
WORKING_DIRECTORY ${gym_ignition_install_dir}
DEPENDS iDynTree
COMMENT "Installing egg files link for gym-ignition..."
)

Expand Down
4 changes: 2 additions & 2 deletions cmake/BuildiDynTree.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ ycm_ep_helper(iDynTree TYPE GIT

if(OPENSIM2REAL_USES_PYTHON)
# Status message
message(STATUS "Using \'${Python3_EXECUTABLE} setup.py egg_info --egg-base=${EGG_BASE_PATH}\' To create each egg info for idyntree python modules.")

set(EGG_BASE_PATH_IDYNTREE "${YCM_EP_INSTALL_DIR}/${IDYNTREE_PYTHON_INSTALL_DIR_SETUP_SH}")
message(STATUS "Using \'${Python3_EXECUTABLE} setup.py egg_info --egg-base=${EGG_BASE_PATH_IDYNTREE}\' To create each egg info for idyntree python modules.")

add_custom_command(TARGET iDynTree POST_BUILD
COMMAND ${Python3_EXECUTABLE} setup.py egg_info --egg-base=${EGG_BASE_PATH_IDYNTREE}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src/iDynTree
Expand Down
1 change: 1 addition & 0 deletions cmake/OpenSim2RealSuperbuildLogic.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ endif()

# Robot scenario packages
if(OPENSIM2REAL_ENABLE_SCENARIO)
find_or_build_package(iDynTree)
find_or_build_package(gym-ignition)
# find_or_build_package(scenario_monopod)
endif()
20 changes: 10 additions & 10 deletions cmake/template/setup.sh.in
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# Automatically generated setup file for @PROJECT_NAME@
export BAESIANBALANCER_SUPERBUILD_SOURCE_DIR=@PROJECT_SOURCE_DIR_SETUP_SH@
export BAESIANBALANCER_SUPERBUILD_INSTALL_PREFIX=@YCM_EP_INSTALL_DIR_SETUP_SH@
export OPENSIM2REAL_SUPERBUILD_SOURCE_DIR=@PROJECT_SOURCE_DIR_SETUP_SH@
export OPENSIM2REAL_SUPERBUILD_INSTALL_PREFIX=@YCM_EP_INSTALL_DIR_SETUP_SH@
# Extend PATH (see https://en.wikipedia.org/wiki/PATH_(variable) )
export PATH=$PATH:$BAESIANBALANCER_SUPERBUILD_INSTALL_PREFIX/bin
export PATH=$PATH:$OPENSIM2REAL_SUPERBUILD_INSTALL_PREFIX/bin

# Extend CMAKE_PREFIX_PATH (see https://cmake.org/cmake/help/v3.8/variable/CMAKE_PREFIX_PATH.html )
export CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH:+${CMAKE_PREFIX_PATH}:}${BAESIANBALANCER_SUPERBUILD_INSTALL_PREFIX}
export CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH:+${CMAKE_PREFIX_PATH}:}${OPENSIM2REAL_SUPERBUILD_INSTALL_PREFIX}
# Extend path for shared libraries (see http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html)
export @SHLIB_ENV_VAR@=${@SHLIB_ENV_VAR@:+${@SHLIB_ENV_VAR@}:}${BAESIANBALANCER_SUPERBUILD_INSTALL_PREFIX}/lib
export @SHLIB_ENV_VAR@=${@SHLIB_ENV_VAR@:+${@SHLIB_ENV_VAR@}:}${OPENSIM2REAL_SUPERBUILD_INSTALL_PREFIX}/lib

# # Setup the path of blockfactory plugins
# export BLOCKFACTORY_PLUGIN_PATH=${BLOCKFACTORY_PLUGIN_PATH:+${BLOCKFACTORY_PLUGIN_PATH}:}$ROBOTOLOGY_SUPERBUILD_INSTALL_PREFIX/@BLOCKFACTORY_PLUGIN_PATH_DIRECTORY@/blockfactory

# Extend path for bash completion (see https://github.com/robotology/robotology-superbuild/issues/622#issuecomment-847586406)
export XDG_DATA_DIRS=${XDG_DATA_DIRS:+${XDG_DATA_DIRS}:}$BAESIANBALANCER_SUPERBUILD_INSTALL_PREFIX/share
export XDG_DATA_DIRS=${XDG_DATA_DIRS:+${XDG_DATA_DIRS}:}$OPENSIM2REAL_SUPERBUILD_INSTALL_PREFIX/share

# export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH:+${ROS_PACKAGE_PATH}:}${ROBOTOLOGY_SUPERBUILD_INSTALL_PREFIX}/share
# export AMENT_PREFIX_PATH=${AMENT_PREFIX_PATH:+${AMENT_PREFIX_PATH}:}${ROBOTOLOGY_SUPERBUILD_INSTALL_PREFIX}
# export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH:+${GAZEBO_MODEL_PATH}:}${ROBOTOLOGY_SUPERBUILD_INSTALL_PREFIX}/share/gazebo/models:${ROBOTOLOGY_SUPERBUILD_INSTALL_PREFIX}/share/iCub/robots:${ROBOTOLOGY_SUPERBUILD_INSTALL_PREFIX}/share

@cmakeif BAESIANBALANCER_USES_PYTHON
@cmakeif OPENSIM2REAL_USES_PYTHON
# Add the python bindings directory to the PYTHON_PATH
export PYTHONPATH=${PYTHONPATH:+${PYTHONPATH}:}${BAESIANBALANCER_SUPERBUILD_INSTALL_PREFIX}/@BAESIANBALANCER_SUPERBUILD_PYTHON_INSTALL_DIR_SETUP_SH@
export PYTHONPATH=${PYTHONPATH:+${PYTHONPATH}:}${BAESIANBALANCER_SUPERBUILD_INSTALL_PREFIX}/@IDYNTREE_PYTHON_INSTALL_DIR_SETUP_SH@
@endcmakeif BAESIANBALANCER_USES_PYTHON
export PYTHONPATH=${PYTHONPATH:+${PYTHONPATH}:}${OPENSIM2REAL_SUPERBUILD_INSTALL_PREFIX}/@OPENSIM2REAL_SUPERBUILD_PYTHON_INSTALL_DIR_SETUP_SH@
export PYTHONPATH=${PYTHONPATH:+${PYTHONPATH}:}${OPENSIM2REAL_SUPERBUILD_INSTALL_PREFIX}/@IDYNTREE_PYTHON_INSTALL_DIR_SETUP_SH@
@endcmakeif OPENSIM2REAL_USES_PYTHON
10 changes: 5 additions & 5 deletions releases/latest.releases.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
repositories:
pybind11:
type: git
url: https://github.com/pybind/pybind11.git
version: master
# repositories:
# pybind11:
# type: git
# url: https://github.com/pybind/pybind11.git
# version: master

0 comments on commit 16a1217

Please sign in to comment.