Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 19 additions & 6 deletions core_recipe/build.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
mkdir build_core
cd build_core
export ISISROOT=$PWD
cd "$SRC_DIR"
CORE_DIR=$(find "$SRC_DIR" -type d -path "*/isis/src/core" | head -n 1)
CORE_DIR=$(realpath "$CORE_DIR")

mkdir build_core && cd build_core

export ISISROOT=$PREFIX

cmake -GNinja \
${CMAKE_ARGS} \
-DBUILD_CORE_TESTS=OFF \
-DISIS_BUILD_SWIG=ON \
-DBUILD_COVERAGE=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_INSTALL_DATADIR=$PREFIX \
-DPython_EXECUTABLE="$PYTHON" \
-DPython_ROOT_DIR="$PREFIX" \
"$CORE_DIR"

cmake -GNinja -DBUILD_CORE_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DISIS_BUILD_SWIG=ON -DCMAKE_INSTALL_PREFIX=$PREFIX ../isis/src/core
ninja install
cd swig/python/
${PYTHON} setup.py install
35 changes: 17 additions & 18 deletions core_recipe/meta.yaml
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
{% set version = "10.0.0" %}
{% set version = "10.0.0_RC2" %}
{% set build_number = "0" %}

package:
name: isiscore
version: {{ version }}

source:
url: https://github.com/DOI-USGS/ISIS3/archive/{{ version }}.tar.gz
sha256: 394ba889ceef5aaebc25e0e28f084209defb2c724e291ab86a587181bf095c7a
# git_url: https://github.com/DOI-USGS/ISIS3.git
# git_branch: new_pvl_core

url: https://github.com/DOI-USGS/ISIS3/releases/download/{{ version }}/isis-{{ version }}.tar.gz
sha256: 8031748b31c4321ef4598a58a20f895481edcf12d8b4c9290cd25584ad29583d
build:
skip: true # [win]
number: {{ build_number }}

requirements:
build:
- {{ compiler("cxx") }}
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- {{ stdlib('c') }}
- cmake >=3.27,<3.28
- ninja
- python =3.11
- python
- setuptools
host:
- gdal >=3.12.2,<4
- mesalib
- nlohmann_json=3.11.2
- python =3.11
- qt6-main >=6,<7
- python
- pip
- gdal
- libgl-devel # [linux]
- libgdal-core
- libvulkan-headers
- nlohmann_json
- setuptools
- qt6-main
- swig
run:
- python =3.11
- {{ pin_compatible('qt6-main', max_pin='x.x') }}
- {{ pin_compatible('nlohmann_json', min_pin='x.x.x', max_pin='x.x.x') }}
- python

test:
commands:
Expand All @@ -48,5 +48,4 @@ about:

extra:
recipe-maintainers:
- amystamile-usgs
- acpaquette
- amystamile-usgs
17 changes: 5 additions & 12 deletions isis/src/core/swig/python/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,34 +1,26 @@
# Include python
include(FindPythonAnaconda.cmake)
include_directories(${PYTHON_INCLUDE_DIR})
set(ISIS_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include")
include_directories(${PYTHON_INCLUDE_DIR} ${ISIS_INCLUDE_DIR})

set(CMAKE_SWIG_FLAGS "")
set(CMAKE_SWIG_OUTDIR isiscore)
set_source_files_properties(../isiscore.i
PROPERTIES CPLUSPLUS ON SWIG_FLAGS "-py3")

#Find dependencies
find_path(INCLUDE_DIR NAMES Pvl.h
PATH_SUFFIXES include
PATHS ${PROJECT_SOURCE_DIR}/)
message("-- Found Include: ${INCLUDE_DIR}")
include_directories(${INCLUDE_DIR})

# Add and link
swig_add_library(isiscore
LANGUAGE python
SOURCES ../isiscore.i)

set_target_properties(_isiscore PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SWIG_OUTDIR})

SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")

if (APPLE)
set_target_properties(_isiscore PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
# On OSX, do not link python - this causes segfaults
swig_link_libraries(isiscore core)
else()
swig_link_libraries(isiscore core ${PYTHON_LIBRARY})
swig_link_libraries(isiscore core ${PYTHON_LIBRARIES})
endif()

# Build out a standard directory structure
Expand All @@ -45,5 +37,6 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/__init__.py
#file(COPY ${CMAKE_SOURCE_DIR}/python/tests
# DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

install(CODE "execute_process(COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/setup.py install --single-version-externally-managed --record=record.txt
install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install . --prefix=${CMAKE_INSTALL_PREFIX} --no-deps --no-build-isolation
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")

106 changes: 16 additions & 90 deletions isis/src/core/swig/python/FindPythonAnaconda.cmake
Original file line number Diff line number Diff line change
@@ -1,105 +1,31 @@
# tested on OSX Yosemite and Ubuntu 14.04 LTS
# handle anaconda dependencies
cmake_minimum_required(VERSION 3.7)
cmake_minimum_required(VERSION 3.12)

option(ANACONDA_PYTHON_VERBOSE "Anaconda dependency info" OFF)

if(NOT CMAKE_FIND_ANACONDA_PYTHON_INCLUDED)
set(CMAKE_FIND_ANACONDA_PYTHON_INCLUDED 1)

# find anaconda installation
set(_cmd conda info --root)
execute_process(
COMMAND ${_cmd}
RESULT_VARIABLE _r
OUTPUT_VARIABLE _o
ERROR_VARIABLE _e
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
find_package(Python REQUIRED COMPONENTS Interpreter Development)

if(ANACONDA_PYTHON_VERBOSE)
message("Executing conda info --root")
message("_r = ${_r}")
message("_o = ${_o}")
message("_e = ${_e}")
message(STATUS "Found Python:")
message(STATUS " Interpreter: ${Python_EXECUTABLE}")
message(STATUS " Version: ${Python_VERSION}")
message(STATUS " Include dirs: ${Python_INCLUDE_DIRS}")
message(STATUS " Libraries: ${Python_LIBRARIES}")
endif()

IF(IS_DIRECTORY ${_o})
set(ANACONDA_PYTHON_FOUND True)
endif()

if(ANACONDA_PYTHON_FOUND)
set( ANACONDA_PYTHON_DIR ${_o} )
message( "Found anaconda root directory ${ANACONDA_PYTHON_DIR}" )

# find python version
#
set(_cmd python --version)
execute_process(
COMMAND ${_cmd}
RESULT_VARIABLE _r
OUTPUT_VARIABLE _o
ERROR_VARIABLE _o
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)

if(ANACONDA_PYTHON_VERBOSE)
message("Executing python --version")
message("_r = ${_r}")
# Different python version pipe to stdout vs. stderr
message("_o = ${_o}")
message("_e = ${_o}")
endif()

string (REGEX MATCH "Python ([0-9]+)[.]([0-9]+)[.]([0-9]+)" _py_version_found "${_o}")
#message("_py_version_found = ${_py_version_found}")
#message("CMAKE_MATCH_0 = ${CMAKE_MATCH_0}")
set( _py_version_major ${CMAKE_MATCH_1} )
set( _py_version_minor ${CMAKE_MATCH_2} )
set( _py_version_patch ${CMAKE_MATCH_3} )
set( ANACONDA_PYTHON_VERSION ${_py_version_major}.${_py_version_minor} )
set(PYTHON_INCLUDE_DIRS "${Python_INCLUDE_DIRS}")
set(PYTHON_INCLUDE_DIR "${Python_INCLUDE_DIRS}")

set(PYTHON_LIBRARIES "${Python_LIBRARIES}")

if( (${_py_version_major} MATCHES 2) OR
(${_py_version_major} MATCHES 3 AND ${_py_version_minor} MATCHES 8) OR
(${_py_version_major} MATCHES 3 AND ${_py_version_minor} MATCHES 9) OR
(${_py_version_major} MATCHES 3 AND ${_py_version_minor} MATCHES 10) OR
(${_py_version_major} MATCHES 3 AND ${_py_version_minor} MATCHES 11) )
set( _py_ext "")
else()
set( _py_ext "m")
endif()
list(GET Python_LIBRARIES 0 _FIRST_LIB)
set(PYTHON_LIBRARY "${_FIRST_LIB}")

set(_py_id "python${ANACONDA_PYTHON_VERSION}${_py_ext}")
set(PYTHON_EXECUTABLE "${Python_EXECUTABLE}")
set(Python3_EXECUTABLE "${Python_EXECUTABLE}")

if( NOT DEFINED ENV{CONDA_PREFIX} )
set( env_CONDA_DEFAULT_ENV "root" )
message( WARNING "Could not find anaconda environment setting; using default root" )
else()
set( env_CONDA_DEFAULT_ENV $ENV{CONDA_PREFIX} )
endif()

message( "Using anaconda ${env_CONDA_DEFAULT_ENV} environment" )
if( env_CONDA_DEFAULT_ENV STREQUAL "root" )
set(PYTHON_INCLUDE_DIR "${ANACONDA_PYTHON_DIR}/include/${_py_id}" CACHE INTERNAL "")
set(PYTHON_LIBRARY "${ANACONDA_PYTHON_DIR}/lib/lib${_py_id}${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "")
else()
set(PYTHON_INCLUDE_DIR "${env_CONDA_DEFAULT_ENV}/include/${_py_id}" CACHE INTERNAL "")
set(PYTHON_LIBRARY "${env_CONDA_DEFAULT_ENV}/lib/lib${_py_id}${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "")
endif()

set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")

set(FOUND_PYTHONLIBS TRUE)
else()
message( "Not found: anaconda root directory..." )
message( "Trying system python install..." )
FindPythonLibs()
endif()
set(FOUND_PYTHONLIBS TRUE)

message( "PYTHON_INCLUDE_DIR = ${PYTHON_INCLUDE_DIR}")
message( "PYTHON_LIBRARY = ${PYTHON_LIBRARY}")
endif()
endif()
Loading