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
8 changes: 1 addition & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, macos-latest]
os: [ubuntu-22.04, ubuntu-24.04]
build-type: [Debug, RelWithDebInfo]
exclude:
# No Debug build in Windows
Expand All @@ -25,12 +25,6 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Install pip for Python 2 (Ubuntu 20.04)
run: |
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
sudo python2 get-pip.py
rm -f get-pip.py
if: matrix.os == 'ubuntu-20.04'
- name: Install dependencies
uses: jrl-umi3218/github-actions/install-dependencies@master
with:
Expand Down
8 changes: 2 additions & 6 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,8 @@ jobs:
deps: '["jrl-umi3218/SpaceVecAlg"]'
matrix: |
{
"dist": ["bionic", "focal", "jammy", "noble"],
"arch": ["amd64"],
"include":
[
{"dist": "bionic", "arch": "i386" }
]
"dist": ["jammy", "noble"],
"arch": ["amd64"]
}
secrets:
CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }}
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ eigen/eigen.pxd
*.pyc
*.cpp
setup.py
build
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ macro(ADD_BINDINGS PYTHON PYTHON_EXECUTABLE SOURCES)
endif()
endif()
add_custom_target(install-${TARGET_NAME}
COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION}" ${PYTHON_EXECUTABLE} -m pip install . ${PIP_EXTRA_OPTIONS} --upgrade
COMMAND ${CMAKE_COMMAND} -E chdir "${SETUP_LOCATION}" ${PYTHON_EXECUTABLE} -m pip install . --upgrade ${PIP_EXTRA_OPTIONS}
COMMENT "Install Eigen ${PYTHON} bindings"
)
endif()
Expand Down
23 changes: 23 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[build-system]
requires = ["setuptools>=61,<=68.1.2", "wheel", "Cython"]
build-backend = "setuptools.build_meta"

[project]
name = "eigen"
version = "1.0.0"
description = "Eigen3 Python bindings"
authors = [
{ name = "CNRS-UM LIRMM, CNRS-AIST JRL" }
]
dependencies = [
"Cython>=0.2",
"coverage",
"numpy>=1.8.2",
"pytest"
]

[tool.setuptools]
packages = ["eigen"]

[tool.setuptools.package-data]
eigen = ["__init__.py", "c_eigen.pxd", "eigen.pxd"]
88 changes: 45 additions & 43 deletions setup.in.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,77 +4,79 @@

from __future__ import print_function


import pkg_resources
requirements_file = "@CMAKE_CURRENT_SOURCE_DIR@/requirements.txt"
with open(requirements_file) as fd:
for pkg in fd:
pkg = pkg.strip()
pkg_resources.require(pkg)
# Project metadata and dependencies are managed in pyproject.toml

try:
from setuptools import setup
from setuptools import Extension
from setuptools import setup
from setuptools import Extension
except ImportError:
from distutils.core import setup
from distutils.extension import Extension
from distutils.core import setup
from distutils.extension import Extension
import sysconfig

from Cython.Build import cythonize

import numpy
import os
import subprocess
import sys

win32_build = os.name == 'nt'

from utils import generate_eigen_pyx

this_path = os.path.dirname(os.path.realpath(__file__))
src_files = ['eigen/c_eigen.pxd', 'eigen/c_eigen_private.pxd', 'include/eigen_wrapper.hpp']
src_files.extend(['utils/angleaxis.in.pyx', 'utils/generate_eigen_pyx.py', 'utils/quaternion.in.pyx'])
src_files = [ '{}/{}'.format(this_path, f) for f in src_files ]
this_path = os.path.dirname(os.path.realpath(__file__))
src_files = [
'eigen/c_eigen.pxd',
'eigen/c_eigen_private.pxd',
'include/eigen_wrapper.hpp',
'utils/angleaxis.in.pyx',
'utils/generate_eigen_pyx.py',
'utils/quaternion.in.pyx'
]
src_files = [f"{this_path}/{f}" for f in src_files]

generate_eigen_pyx(this_path + "/eigen", this_path + "/utils")
generate_eigen_pyx(f"{this_path}/eigen", f"{this_path}/utils")

def GenExtension(name):
pyx_src = name.replace('.', '/')
cpp_src = pyx_src + '.cpp'
pyx_src = pyx_src + '.pyx'
ext_src = pyx_src
include_dirs = [os.path.join(os.getcwd(), "include"), "@EIGEN3_INCLUDE_DIR@", numpy.get_include()]
compile_args = ['-std=c++11']
if win32_build:
compile_args = ['-DWIN32']
elif sys.platform == 'darwin':
from platform import machine
osx_arch = machine()
os.environ["ARCHFLAGS"] = "-arch " + osx_arch
compile_args += ["-arch", osx_arch]

return Extension(name, [ext_src], extra_compile_args = compile_args, include_dirs = include_dirs)
pyx_src = name.replace('.', '/') + '.pyx'
include_dirs = [os.path.join(os.getcwd(), "include"), "@EIGEN3_INCLUDE_DIR@", numpy.get_include()]
compile_args = ['-std=c++11']
if win32_build:
compile_args = ['-DWIN32']
elif sys.platform == 'darwin':
from platform import machine
osx_arch = machine()
os.environ["ARCHFLAGS"] = "-arch " + osx_arch
compile_args += ["-arch", osx_arch]

return Extension(name, [pyx_src], extra_compile_args=compile_args, include_dirs=include_dirs)

extensions = [
GenExtension('eigen.eigen')
GenExtension('eigen.eigen')
]

packages = ['eigen']
data = ['__init__.py', 'c_eigen.pxd', 'eigen.pxd']

cython_c_compiler_launcher="@CYTHON_C_COMPILER_LAUNCHER@"
cython_c_compiler_launcher = "@CYTHON_C_COMPILER_LAUNCHER@"
if cython_c_compiler_launcher:
sysconfig.get_config_vars()["CC"] = cython_c_compiler_launcher + " " + sysconfig.get_config_vars()["BINDIR"] + "/" + sysconfig.get_config_vars()["CC"]
cython_cxx_compiler_launcher="@CYTHON_CXX_COMPILER_LAUNCHER@"
sysconfig.get_config_vars()["CC"] = (
cython_c_compiler_launcher + " " +
sysconfig.get_config_vars()["BINDIR"] + "/" +
sysconfig.get_config_vars()["CC"]
)
cython_cxx_compiler_launcher = "@CYTHON_CXX_COMPILER_LAUNCHER@"
if cython_cxx_compiler_launcher:
sysconfig.get_config_vars()["CXX"] = cython_cxx_compiler_launcher + " " + sysconfig.get_config_vars()["BINDIR"] + "/" + sysconfig.get_config_vars()["CXX"]
sysconfig.get_config_vars()["CXX"] = (
cython_cxx_compiler_launcher + " " +
sysconfig.get_config_vars()["BINDIR"] + "/" +
sysconfig.get_config_vars()["CXX"]
)

extensions = cythonize(extensions, cache = True)
extensions = cythonize(extensions, cache=True)

setup(
name = 'eigen',
version='@PROJECT_VERSION@',
ext_modules = extensions,
package_data = { 'eigen': data },
packages = packages
ext_modules=extensions,
package_data={'eigen': data},
packages=packages
)