From d7239dcbbea20dcf4250b22d09083fe400d0e7d2 Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Thu, 21 Mar 2024 22:26:10 +0500 Subject: [PATCH 1/9] Add skbuild --- .gitignore | 3 ++ CMakeLists.txt | 16 +++++----- install.py | 8 +---- pyproject.toml | 30 +++++++++++++++++- requirements.txt | 1 + setup.cfg | 34 --------------------- setup.py | 4 +-- src/__init__.py | 6 ---- src/eigen.py | 6 ++-- src/{lib => eigenlib}/eigen_API.cpp | 0 src/{lib => eigenlib}/eigen_API.h | 0 src/{lib => eigenlib}/logger.cpp | 0 src/{lib => eigenlib}/logger.h | 0 src/{lib => eigenlib}/rayleigh_quotient.cpp | 0 src/{lib => eigenlib}/rayleigh_quotient.h | 0 src/{lib => eigenlib}/utils.cpp | 0 src/{lib => eigenlib}/utils.h | 0 src/{lib => eigenlib}/von_mises.cpp | 0 src/{lib => eigenlib}/von_mises.h | 0 19 files changed, 48 insertions(+), 60 deletions(-) delete mode 100644 setup.cfg rename src/{lib => eigenlib}/eigen_API.cpp (100%) rename src/{lib => eigenlib}/eigen_API.h (100%) rename src/{lib => eigenlib}/logger.cpp (100%) rename src/{lib => eigenlib}/logger.h (100%) rename src/{lib => eigenlib}/rayleigh_quotient.cpp (100%) rename src/{lib => eigenlib}/rayleigh_quotient.h (100%) rename src/{lib => eigenlib}/utils.cpp (100%) rename src/{lib => eigenlib}/utils.h (100%) rename src/{lib => eigenlib}/von_mises.cpp (100%) rename src/{lib => eigenlib}/von_mises.h (100%) diff --git a/.gitignore b/.gitignore index 52cd117..14a3d6f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ __pycache__ *.egg-info dist/ build/ +_skbuild/ +lib/ +_cmake_test_compile/ *.log diff --git a/CMakeLists.txt b/CMakeLists.txt index f26de10..6fad1f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.28) +cmake_minimum_required(VERSION 3.22...3.28) project(vonMises) @@ -6,17 +6,19 @@ set(CMAKE_CXX_STANDARD 11) set(SOURCES - src/lib/eigen.cpp - src/lib/logger.cpp - src/lib/rayleigh_quotient.cpp - src/lib/utils.cpp - src/lib/von_mises.cpp + src/eigenlib/eigen_API.cpp + src/eigenlib/logger.cpp + src/eigenlib/rayleigh_quotient.cpp + src/eigenlib/utils.cpp + src/eigenlib/von_mises.cpp ) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/src/lib) + include_directories(src/lib) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fopenmp") -add_library(eigenlib SHARED ${SOURCES}) +add_library(eigen SHARED ${SOURCES}) diff --git a/install.py b/install.py index ed56024..d4c931f 100644 --- a/install.py +++ b/install.py @@ -5,14 +5,8 @@ wheel_cmd = shlex.split("python -m pip wheel . -v -w dist ") install_cmd = shlex.split("python -m pip install -e . -v") -with open("build.log", "w") as log: - subprocess.run("cd build", stdout=log, stderr=log) - subprocess.run("cmake ..", stdout=log, stderr=log) - subprocess.run("make", stdout=log, stderr=log) - -time.sleep(2) -with open("build.log", "a") as log: +with open("build.log", "w") as log: rv = subprocess.Popen(wheel_cmd, stdout=log, stderr=log) while rv.poll() is None: time.sleep(0.5) diff --git a/pyproject.toml b/pyproject.toml index c953815..f7e6e60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,2 +1,30 @@ [build-system] -requires = ["setuptools", "wheel"] \ No newline at end of file +build-backend = "setuptools.build_meta" +requires = [ + "setuptools>=64", + "setuptools_scm>=8", + "scikit-build>=0.16", + "cmake>=3.22", + "ninja", +] + +[project] +authors = [{name = "Saud Zahir", email = "m.saud.zahir@gmail.com"}] +classifiers = [ + "Programming Language :: Python :: 3", + "Programming Language :: C++ :: 11", + "License :: proprietary", + "Operating System :: Linux", +] +description = "Numerical Algorithm for Eigen Value Problems." +keywords = ["numerical"] +license = {file = "LICENSE"} +name = "vonMises" +requires-python = ">=3.11" +dynamic = ["version"] + +[project.urls] +"Homepage" = "https://github.com/saudzahirr/vonMises" + +[project.scripts] +"vonMises" = "src.__main__:main" diff --git a/requirements.txt b/requirements.txt index 82b4df5..da8be12 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ importlib-metadata; python_version < "3.10" wheel setuptools +scikit-build requests numpy scipy diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 2685414..0000000 --- a/setup.cfg +++ /dev/null @@ -1,34 +0,0 @@ -[metadata] -name = vonMises -version = 1.0.0 -author = Saud Zahir -author_email= m.saud.zahir@gmail.com -description = Numerical Algorithm for Eigen Value Problems -long_description = file: README.md -long_description_content_type = text/markdown; charset=UTF-8 -home_page = https://github.com/saudzahirr/vonMises -project_urls = - Source Code = https://github.com/saudzahirr/vonMises -license = MIT -classifiers = - Development Status :: 4 - Beta - License :: OSI Approved :: MIT License - Topic :: Scientific/Engineering - Programming Language :: C++ :: 11 - Programming Language :: Python :: 3 - Natural Language :: English - Operating System :: POSIX :: Linux - Operating System :: Microsoft :: Windows - Architecture :: AMD64 - -[options] -packages = find: -include_package_data = True -install_requires = - numpy - scipy - importlib-metadata; python_version < "3.10" - -[options.entry_points] -console_scripts = - vonMises = src.__main__:main diff --git a/setup.py b/setup.py index b908cbe..020e64c 100644 --- a/setup.py +++ b/setup.py @@ -1,3 +1,3 @@ -import setuptools +from skbuild import setup -setuptools.setup() +setup() diff --git a/src/__init__.py b/src/__init__.py index 4845801..e69de29 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,6 +0,0 @@ -import pkg_resources - -__version__ = pkg_resources.get_distribution("vonMises").version - -from src.eigen import * -from src.utils import * diff --git a/src/eigen.py b/src/eigen.py index f6cffc9..9680ec8 100644 --- a/src/eigen.py +++ b/src/eigen.py @@ -1,12 +1,12 @@ import ctypes -import platform +import sys import time from pathlib import Path -if platform.system() == "Windows": +if sys.platform == "win32": shared_file_path = Path.cwd() / "src/lib/eigen.dll" eigen_lib = ctypes.CDLL(str(shared_file_path), winmode=0) -elif platform.system() == "Linux": +elif sys.platform == "linux": shared_file_path = Path.cwd() / "src/lib/libeigen.so" eigen_lib = ctypes.CDLL(str(shared_file_path)) diff --git a/src/lib/eigen_API.cpp b/src/eigenlib/eigen_API.cpp similarity index 100% rename from src/lib/eigen_API.cpp rename to src/eigenlib/eigen_API.cpp diff --git a/src/lib/eigen_API.h b/src/eigenlib/eigen_API.h similarity index 100% rename from src/lib/eigen_API.h rename to src/eigenlib/eigen_API.h diff --git a/src/lib/logger.cpp b/src/eigenlib/logger.cpp similarity index 100% rename from src/lib/logger.cpp rename to src/eigenlib/logger.cpp diff --git a/src/lib/logger.h b/src/eigenlib/logger.h similarity index 100% rename from src/lib/logger.h rename to src/eigenlib/logger.h diff --git a/src/lib/rayleigh_quotient.cpp b/src/eigenlib/rayleigh_quotient.cpp similarity index 100% rename from src/lib/rayleigh_quotient.cpp rename to src/eigenlib/rayleigh_quotient.cpp diff --git a/src/lib/rayleigh_quotient.h b/src/eigenlib/rayleigh_quotient.h similarity index 100% rename from src/lib/rayleigh_quotient.h rename to src/eigenlib/rayleigh_quotient.h diff --git a/src/lib/utils.cpp b/src/eigenlib/utils.cpp similarity index 100% rename from src/lib/utils.cpp rename to src/eigenlib/utils.cpp diff --git a/src/lib/utils.h b/src/eigenlib/utils.h similarity index 100% rename from src/lib/utils.h rename to src/eigenlib/utils.h diff --git a/src/lib/von_mises.cpp b/src/eigenlib/von_mises.cpp similarity index 100% rename from src/lib/von_mises.cpp rename to src/eigenlib/von_mises.cpp diff --git a/src/lib/von_mises.h b/src/eigenlib/von_mises.h similarity index 100% rename from src/lib/von_mises.h rename to src/eigenlib/von_mises.h From ceccb2cf62efe0e2b1e59fa285c05338a75d5a9d Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Fri, 22 Mar 2024 20:11:06 +0500 Subject: [PATCH 2/9] Add version file --- .gitignore | 1 + CMakeLists.txt | 3 +++ pyproject.toml | 14 ++++++++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 14a3d6f..9ae88de 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ _skbuild/ lib/ _cmake_test_compile/ +_version.py *.log diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fad1f8..3cc0dac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,7 @@ cmake_minimum_required(VERSION 3.22...3.28) +set(CMAKE_CXX_COMPILER "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++") +set(CMAKE_CXX_COMPILER "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc") + project(vonMises) diff --git a/pyproject.toml b/pyproject.toml index f7e6e60..6a5fcf7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,10 @@ [build-system] build-backend = "setuptools.build_meta" requires = [ - "setuptools>=64", - "setuptools_scm>=8", - "scikit-build>=0.16", - "cmake>=3.22", + "setuptools", + "setuptools_scm", + "scikit-build", + "cmake", "ninja", ] @@ -28,3 +28,9 @@ dynamic = ["version"] [project.scripts] "vonMises" = "src.__main__:main" + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.setuptools_scm] +version_file = "src/_version.py" From 67c3ed2d14185ecf20f6217ebacff2ee6b45ac1f Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Thu, 28 Mar 2024 15:10:09 +0500 Subject: [PATCH 3/9] Add install TARGET --- CMakeLists.txt | 9 ++------- environment.yml | 15 +++++++++++++-- requirements.txt | 13 ------------- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cc0dac..bfcce46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,8 @@ cmake_minimum_required(VERSION 3.22...3.28) -set(CMAKE_CXX_COMPILER "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++") -set(CMAKE_CXX_COMPILER "C:\\Program Files\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc") - project(vonMises) - set(CMAKE_CXX_STANDARD 11) - set(SOURCES src/eigenlib/eigen_API.cpp src/eigenlib/logger.cpp @@ -20,8 +15,8 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/src/lib) include_directories(src/lib) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fopenmp") - add_library(eigen SHARED ${SOURCES}) + +install(TARGETS eigen LIBRARY DESTINATION lib) diff --git a/environment.yml b/environment.yml index 9b1769e..28675fa 100644 --- a/environment.yml +++ b/environment.yml @@ -4,5 +4,16 @@ channels: dependencies: - python=3.11 - pip - - pip: - - -r requirements.txt + - wheel + - setuptools + - scikit-build + - requests + - numpy + - scipy + - pandas + - matplotlib + - plotly + - psutil + - ruff + - pytest + - tqdm diff --git a/requirements.txt b/requirements.txt index da8be12..04bc36f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,14 +1 @@ importlib-metadata; python_version < "3.10" -wheel -setuptools -scikit-build -requests -numpy -scipy -pandas -matplotlib -plotly -psutil -ruff -pytest -tqdm From 21b4fcd7c9e3abedf38035992d1bf10960c96b1d Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Thu, 28 Mar 2024 15:19:12 +0500 Subject: [PATCH 4/9] Fix toml package find path --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6a5fcf7..ba77ff1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,6 +9,7 @@ requires = [ ] [project] +name = "vonMises" authors = [{name = "Saud Zahir", email = "m.saud.zahir@gmail.com"}] classifiers = [ "Programming Language :: Python :: 3", @@ -19,7 +20,6 @@ classifiers = [ description = "Numerical Algorithm for Eigen Value Problems." keywords = ["numerical"] license = {file = "LICENSE"} -name = "vonMises" requires-python = ">=3.11" dynamic = ["version"] @@ -30,7 +30,7 @@ dynamic = ["version"] "vonMises" = "src.__main__:main" [tool.setuptools.packages.find] -where = ["src"] +where = ["."] [tool.setuptools_scm] version_file = "src/_version.py" From 6e32e0685003d772ee6d6ef868382834b5da2348 Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Thu, 28 Mar 2024 15:12:51 +0500 Subject: [PATCH 5/9] Add build CI/CD --- .github/workflows/c-cpp.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index a383a52..6b3ce85 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -13,11 +13,11 @@ jobs: steps: - uses: actions/checkout@v3 - - name: configure - run: ./configure - - name: make - run: make - - name: make check - run: make check - - name: make distcheck - run: make distcheck + - name: Build and test + run: | + mkdir build + cd build + cmake .. + cmake --build . + cd .. + ./build/vonMises -m test-data/MATRIX.mat -k A From 664e2cd7949c6d9ce4d411075c8ac0e6a114cfd0 Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Thu, 28 Mar 2024 15:19:54 +0500 Subject: [PATCH 6/9] Fix CMakeLists --- CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 03f73a4..bfcce46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,8 +19,4 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -fopenmp") add_library(eigen SHARED ${SOURCES}) -<<<<<<< HEAD install(TARGETS eigen LIBRARY DESTINATION lib) -======= -add_library(eigen SHARED ${SOURCES}) ->>>>>>> master From 6528363c5e9f67a6c5fe27b263cb4555841b0fd2 Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Thu, 28 Mar 2024 15:23:04 +0500 Subject: [PATCH 7/9] Fix CI --- .github/workflows/c-cpp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 6b3ce85..3ebed38 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -20,4 +20,4 @@ jobs: cmake .. cmake --build . cd .. - ./build/vonMises -m test-data/MATRIX.mat -k A + vonMises -m test-data/MATRIX.mat -k A From dc92bd94d65e0fa23f2de1ddeb87c2b7ab680538 Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Thu, 28 Mar 2024 15:23:37 +0500 Subject: [PATCH 8/9] Fix CI --- .github/workflows/{c-cpp.yml => ci.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{c-cpp.yml => ci.yml} (100%) diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/ci.yml similarity index 100% rename from .github/workflows/c-cpp.yml rename to .github/workflows/ci.yml From ef7dbf4e3973ce1143210ae49dc638d9d8d2aced Mon Sep 17 00:00:00 2001 From: Saud Zahir Date: Thu, 28 Mar 2024 15:25:47 +0500 Subject: [PATCH 9/9] Fix CI --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ebed38..a47de43 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,4 +20,3 @@ jobs: cmake .. cmake --build . cd .. - vonMises -m test-data/MATRIX.mat -k A