Skip to content

Commit 3a1bce8

Browse files
committed
feat!: update for a new plugify
1 parent 39201d1 commit 3a1bce8

File tree

4,282 files changed

+1240
-847
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,282 files changed

+1240
-847
lines changed

.github/workflows/cmake-multiple-platform.yml

Lines changed: 327 additions & 192 deletions
Large diffs are not rendered by default.

CMakeLists.txt

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,23 @@ endif()
1212
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/version.txt" VERSION_FILE_CONTENTS)
1313
string(STRIP "${VERSION_FILE_CONTENTS}" VERSION_FILE_CONTENTS)
1414
set(PY3LM_VERSION "${VERSION_FILE_CONTENTS}" CACHE STRING "Set version name")
15-
set(PY3LM_PACKAGE "plugify-module-python3.12" CACHE STRING "Set package name")
15+
set(PY3LM_PACKAGE "python3_module" CACHE STRING "Set package name")
1616
string(REPLACE "v" "" PY3LM_VERSION "${PY3LM_VERSION}")
1717
string(REGEX REPLACE "[.+-]" ";" PY3LM_VERSION_LIST ${PY3LM_VERSION})
1818
list(GET PY3LM_VERSION_LIST 0 PY3LM_VERSION_MAJOR)
1919
list(GET PY3LM_VERSION_LIST 1 PY3LM_VERSION_MINOR)
2020
list(GET PY3LM_VERSION_LIST 2 PY3LM_VERSION_PATCH)
2121

22-
project(plugify-module-python3.12
22+
project(plugify-module-python3
2323
VERSION "${PY3LM_VERSION_MAJOR}.${PY3LM_VERSION_MINOR}.${PY3LM_VERSION_PATCH}"
24-
DESCRIPTION "Python 3.12 Language Module"
25-
HOMEPAGE_URL "https://github.com/untrustedmodders/plugify-module-python3.12"
24+
DESCRIPTION "Python 3 Language Module"
25+
HOMEPAGE_URL "https://github.com/untrustedmodders/plugify-module-python3"
2626
LANGUAGES CXX)
2727

2828
set(CMAKE_CXX_STANDARD 23)
2929
set(CMAKE_CXX_STANDARD_REQUIRED ON)
3030
set(CMAKE_CXX_EXTENSIONS OFF)
31-
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
31+
#set(CMAKE_POSITION_INDEPENDENT_CODE ON)
3232

3333
if(NOT CMAKE_BUILD_TYPE MATCHES "Debug|Devel|MinSizeRel|RelWithDebInfo|Release")
3434
message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to Debug.")
@@ -39,15 +39,17 @@ if(UNIX AND NOT APPLE)
3939
set(LINUX TRUE)
4040
endif()
4141

42+
set(BUILD_SHARED_LIBS ON CACHE INTERNAL "")
43+
4244
#
4345
# Plugify
4446
#
4547
set(PLUGIFY_BUILD_SHARED_LIB ON CACHE INTERNAL "")
46-
set(PLUGIFY_BUILD_JIT ON CACHE INTERNAL "")
47-
set(PLUGIFY_BUILD_ASSEMBLY OFF CACHE INTERNAL "")
4848
set(PLUGIFY_BUILD_TESTS OFF CACHE INTERNAL "")
49-
set(PLUGIFY_INTERFACE ON CACHE INTERNAL "")
50-
set(PLUGIFY_DOWNLOADER OFF CACHE INTERNAL "")
49+
if(LINUX)
50+
set(PLUGIFY_USE_STATIC_STDLIB ON CACHE INTERNAL "")
51+
set(PLUGIFY_USE_ABI0 OFF CACHE INTERNAL "")
52+
endif()
5153
add_subdirectory(external/plugify)
5254

5355
#
@@ -58,7 +60,7 @@ set(PY3LM_SOURCES
5860
"${CMAKE_CURRENT_SOURCE_DIR}/src/module.cpp")
5961
add_library(${PROJECT_NAME} SHARED ${PY3LM_SOURCES})
6062

61-
set(PY3LM_LINK_LIBRARIES plugify::plugify plugify::plugify-jit asmjit::asmjit )
63+
set(PY3LM_LINK_LIBRARIES plugify::plugify)
6264

6365
if(NOT COMPILER_SUPPORTS_FORMAT)
6466
set(PY3LM_LINK_LIBRARIES ${PY3LM_LINK_LIBRARIES} fmt::fmt-header-only)
@@ -70,6 +72,12 @@ include(GenerateExportHeader)
7072
generate_export_header(${PROJECT_NAME} EXPORT_MACRO_NAME PY3LM_EXPORT EXPORT_FILE_NAME ${CMAKE_BINARY_DIR}/exports/module_export.h)
7173
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_BINARY_DIR}/exports)
7274

75+
if(MSVC)
76+
target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX)
77+
else()
78+
target_compile_options(${PROJECT_NAME} PRIVATE -Wextra -Wconversion -Werror -Wshadow -Wpedantic)
79+
endif()
80+
7381
if(APPLE)
7482
target_link_options(${PROJECT_NAME} PRIVATE "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/sym/exported_symbols.lds")
7583
elseif(UNIX)
@@ -90,10 +98,11 @@ endif()
9098
detect_system()
9199

92100
if(WIN32)
93-
set(PYTHON_DEBUG_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/debug/bin/python312_d.dll")
94-
set(PYTHON_DEBUG_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/debug/bin/python312_d.lib")
95-
set(PYTHON_RELEASE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/release/bin/python312.dll")
96-
set(PYTHON_RELEASE_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/release/bin/python312.lib")
101+
set(PYTHON_ARCH "win-64")
102+
set(PYTHON_DEBUG_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/debug/bin/python312_d.dll")
103+
set(PYTHON_DEBUG_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/debug/bin/python312_d.lib")
104+
set(PYTHON_RELEASE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/release/bin/python312.dll")
105+
set(PYTHON_RELEASE_IMPLIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/release/bin/python312.lib")
97106

98107
set_target_properties(python3 PROPERTIES
99108
IMPORTED_LOCATION_DEBUG ${PYTHON_DEBUG_LIB}
@@ -106,8 +115,9 @@ if(WIN32)
106115
IMPORTED_IMPLIB_MINSIZEREL ${PYTHON_RELEASE_IMPLIB}
107116
)
108117
elseif(LINUX)
109-
set(PYTHON_DEBUG_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/debug/bin/libpython3.12d.so.1.0")
110-
set(PYTHON_RELEASE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/release/bin/libpython3.12.so.1.0")
118+
set(PYTHON_ARCH "linux-64")
119+
set(PYTHON_DEBUG_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/debug/bin/libpython3.12d.so.1.0")
120+
set(PYTHON_RELEASE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/release/bin/libpython3.12.so.1.0")
111121

112122
set_target_properties(python3 PROPERTIES
113123
IMPORTED_LOCATION_DEBUG ${PYTHON_DEBUG_LIB}
@@ -118,8 +128,9 @@ elseif(LINUX)
118128

119129
set_property(TARGET ${PROJECT_NAME} PROPERTY LINK_FLAGS "-Wl,-rpath,\\\$ORIGIN/../python3.12")
120130
elseif(APPLE)
121-
set(PYTHON_DEBUG_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/debug/bin/libpython3.12d.dylib")
122-
set(PYTHON_RELEASE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/release/bin/libpython3.12.dylib")
131+
set(PYTHON_ARCH "osx-64")
132+
set(PYTHON_DEBUG_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/debug/bin/libpython3.12d.dylib")
133+
set(PYTHON_RELEASE_LIB "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/release/bin/libpython3.12.dylib")
123134

124135
set_target_properties(python3 PROPERTIES
125136
IMPORTED_LOCATION_DEBUG ${PYTHON_DEBUG_LIB}
@@ -144,7 +155,7 @@ endif()
144155
target_link_libraries(${PROJECT_NAME} PRIVATE python3)
145156
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/include/python3.12" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/_pyinclude")
146157

147-
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PLUGIFY_PLATFORM}/${PYTHON_ABSTRACT_BUILD_TYPE_LOWER}/include/pyconfig.h" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/_pyinclude/python3.12")
158+
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/python3.12/${PYTHON_ARCH}/${PYTHON_ABSTRACT_BUILD_TYPE_LOWER}/include/pyconfig.h" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/_pyinclude/python3.12")
148159
target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/_pyinclude/python3.12")
149160

150161
target_compile_definitions(${PROJECT_NAME} PRIVATE

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[![Русский](https://img.shields.io/badge/Русский-%F0%9F%87%B7%F0%9F%87%BA-green?style=for-the-badge)](README_ru.md)
2+
13
# Python Language Module for Plugify
24

35
The Plugify Python Language Module is a powerful extension for the Plugify project, enabling developers to write plugins in Python and seamlessly integrate them into the Plugify ecosystem. Whether you're a Python enthusiast or wish to leverage existing Python libraries for your plugins, this module provides the flexibility and ease of use you need.

README_ru.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
[![English](https://img.shields.io/badge/English-%F0%9F%87%AC%F0%9F%87%A7-blue?style=for-the-badge)](README.md)
2+
3+
# Модуль языка Python для Plugify
4+
5+
Модуль языка Python для Plugify — это мощное расширение проекта Plugify, позволяющее разработчикам писать плагины на Python и без труда интегрировать их в экосистему Plugify. Если вы энтузиаст Python или хотите использовать богатую экосистему библиотек Python, этот модуль обеспечит необходимую гибкость и удобство.
6+
7+
## Возможности
8+
9+
- **Плагины на Python**: Пишите плагины полностью на Python, используя мощные библиотеки и инструменты языка.
10+
- **Простая интеграция**: Лёгкое подключение Python-плагинов в систему Plugify, с поддержкой взаимодействия с плагинами на других языках.
11+
- **Кросс-языковое взаимодействие**: Бесшовное взаимодействие между Python-плагинами и плагинами на других поддерживаемых языках.
12+
- **Удобная конфигурация**: Простые конфигурационные файлы для настройки параметров Python-плагинов.
13+
14+
## Начало работы
15+
16+
### Требования
17+
18+
- Python `3.12` (обязателен)
19+
- Установленный фреймворк Plugify
20+
21+
### Установка
22+
23+
#### Вариант 1: Установка через менеджер плагинов Plugify
24+
25+
Вы можете установить модуль Python с помощью менеджера плагинов Plugify, выполнив команду:
26+
27+
```bash
28+
plg install plugify-module-python3.12
29+
```
30+
31+
#### Вариант 2: Ручная установка
32+
33+
1. Установите зависимости:
34+
35+
a. Windows
36+
> Настройка [CMake-инструментов через Visual Studio Installer](https://learn.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio#installation)
37+
38+
b. Linux:
39+
```sh
40+
sudo apt-get install -y build-essential cmake ninja-build
41+
```
42+
43+
c. Mac:
44+
```sh
45+
brew install cmake ninja
46+
```
47+
48+
2. Клонируйте репозиторий:
49+
50+
```bash
51+
git clone https://github.com/untrustedmodders/plugify-module-python3.12.git --recursive
52+
```
53+
54+
3. Соберите модуль языка Python:
55+
56+
```bash
57+
mkdir build && cd build
58+
cmake ..
59+
cmake --build .
60+
```
61+
62+
### Использование
63+
64+
1. **Интеграция с Plugify**
65+
66+
Убедитесь, что модуль Python находится в той же директории, что и ваша установка Plugify.
67+
68+
2. **Создание плагинов на Python**
69+
70+
Разрабатывайте плагины на Python с использованием API Plugify для Python. Подробности в [руководстве по Python-плагинам](https://untrustedmodders.github.io/languages/python/first-plugin).
71+
72+
3. **Сборка и установка плагинов**
73+
74+
Поместите ваши Python-скрипты в директорию, доступную для ядра Plugify.
75+
76+
4. **Запуск Plugify**
77+
78+
Запустите фреймворк Plugify — он автоматически загрузит ваши Python-плагины.
79+
80+
## Пример
81+
82+
```python
83+
from plugify.plugin import Plugin
84+
85+
86+
class ExamplePlugin(Plugin):
87+
def plugin_start(self):
88+
print('Python: OnPluginStart')
89+
90+
def plugin_update(self, dt):
91+
print("Python: OnPluginUpdate - Delta time:", dt)
92+
93+
def plugin_end(self):
94+
print('Python: OnPluginEnd')
95+
```
96+
97+
## Документация
98+
99+
Полную документацию по созданию Python-плагинов для Plugify вы найдёте в [официальной документации Plugify](https://untrustedmodders.github.io).
100+
101+
## Участие
102+
103+
Вы можете внести вклад, открыв issue или отправив pull request. Мы будем рады вашим идеям и отзывам!
104+
105+
## Лицензия
106+
107+
Этот модуль языка Python для Plugify распространяется по лицензии [MIT](LICENSE).

conda/LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2024 untrustedmodders
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

conda/bld.bat

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
@echo off
2+
REM bld.bat - For Windows builds
3+
4+
REM Create the target directories
5+
if not exist "%PREFIX%\bin" mkdir "%PREFIX%\bin"
6+
if not exist "%PREFIX%\lib" mkdir "%PREFIX%\lib"
7+
if not exist "%PREFIX%\python3.12" mkdir "%PREFIX%\python3.12"
8+
if not exist "%PREFIX%" mkdir "%PREFIX%"
9+
10+
REM Copy the DLL and module file
11+
copy bin\plugify-module-dotnet.dll "%PREFIX%\bin\" || exit 1
12+
xcopy lib "%PREFIX%\lib" /E /Y /I
13+
xcopy python3.12 "%PREFIX%\python3.12" /E /Y /I
14+
copy plugify-module-dotnet.pmodule "%PREFIX%\" || exit 1
15+
16+
REM Create activation scripts
17+
if not exist "%PREFIX%\etc\conda\activate.d" mkdir "%PREFIX%\etc\conda\activate.d"
18+
if not exist "%PREFIX%\etc\conda\deactivate.d" mkdir "%PREFIX%\etc\conda\deactivate.d"
19+
20+
REM Create activation script
21+
echo @echo off > "%PREFIX%\etc\conda\activate.d\plugify-module-python3.bat"
22+
echo set "PLUGIFY_PY3_MODULE_PATH=%%CONDA_PREFIX%%;%%PLUGIFY_PY3_MODULE_PATH%%" >> "%PREFIX%\etc\conda\activate.d\plugify-module-python3.bat"
23+
24+
REM Create deactivation script
25+
echo @echo off > "%PREFIX%\etc\conda\deactivate.d\plugify-module-python3.bat"
26+
echo set "PLUGIFY_PY3_MODULE_PATH=%%PLUGIFY_PY3_MODULE_PATH:%%CONDA_PREFIX%%;=%%" >> "%PREFIX%\etc\conda\deactivate.d\plugify-module-python3.bat"
27+
28+
exit 0

conda/build.sh

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
# build.sh - For Linux builds
3+
4+
set -ex
5+
6+
# Create the target directories
7+
mkdir -p $PREFIX/bin
8+
mkdir -p $PREFIX/lib
9+
mkdir -p $PREFIX/python3.12
10+
mkdir -p $PREFIX
11+
12+
# Copy the shared library and module file
13+
cp bin/libplugify-module-python3.so $PREFIX/bin/
14+
cp -r lib/* $PREFIX/lib/
15+
cp -r python3.12/* $PREFIX/python3.12/
16+
cp plugify-module-python3.pmodule $PREFIX/
17+
18+
# Set proper permissions
19+
chmod 755 $PREFIX/bin/libplugify-module-python3.so
20+
chmod -R 755 $PREFIX/lib
21+
chmod -R 755 $PREFIX/python3.12
22+
chmod 644 $PREFIX/plugify-module-python3.pmodule
23+
24+
# Create activation scripts for proper library path
25+
mkdir -p $PREFIX/etc/conda/activate.d
26+
mkdir -p $PREFIX/etc/conda/deactivate.d
27+
28+
cat > $PREFIX/etc/conda/activate.d/plugify-module-python3.sh << EOF
29+
#!/bin/bash
30+
export PLUGIFY_PY3_MODULE_PATH="\${CONDA_PREFIX}:\${PLUGIFY_PY3_MODULE_PATH}"
31+
EOF
32+
33+
cat > $PREFIX/etc/conda/deactivate.d/plugify-module-python3.sh << EOF
34+
#!/bin/bash
35+
export PLUGIFY_PY3_MODULE_PATH="\${PLUGIFY_PY3_MODULE_PATH//\${CONDA_PREFIX}:/}"
36+
EOF
37+
38+
chmod +x $PREFIX/etc/conda/activate.d/plugify-module-python3.sh
39+
chmod +x $PREFIX/etc/conda/deactivate.d/plugify-module-python3.sh

conda/meta.yaml.example

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{% set name = "plugify-module-python3" %}
2+
{% set version = "REPLACE_VERSION" %}
3+
4+
package:
5+
name: {{ name|lower }}
6+
version: {{ version }}
7+
8+
source:
9+
path: .
10+
11+
build:
12+
number: 0
13+
string: "{{ target_platform | replace('-', '_') }}"
14+
missing_dso_whitelist:
15+
- "*/ld-linux*.so.*" # [linux]
16+
- "*/libc.so.*" # [linux]
17+
- "*/libm.so.*" # [linux]
18+
- "*/libdl.so.*" # [linux]
19+
- "*/libpthread.so.*" # [linux]
20+
- "*/librt.so.*" # [linux]
21+
- "*/libplugify.so*" # [linux]
22+
- "*/libpython3.12.so*" # [linux]
23+
- "*/plugify.dll" # [win]
24+
- "*/python312.dll" # [win]
25+
26+
requirements:
27+
run:
28+
- __glibc >=2.17 # [linux64]
29+
30+
test:
31+
commands:
32+
- test -f $PREFIX/bin/libplugify-module-python3.so # [linux]
33+
- test -d $PREFIX/lib # [linux]
34+
- test -d $PREFIX/python3.12 # [linux]
35+
- test -f $PREFIX/plugify-module-python3.pmodule # [linux]
36+
- if not exist %PREFIX%\\bin\\plugify-module-python3.dll exit 1 # [win]
37+
- if not exist %PREFIX%\\lib exit 1 # [win]
38+
- if not exist %PREFIX%\\python3.12 exit 1 # [win]
39+
- if not exist %PREFIX%\\plugify-module-python3.pmodule exit 1 # [win]
40+
41+
about:
42+
home: https://github.com/{{ environ.get('GITHUB_REPOSITORY', 'your-org/your-repo') }}
43+
license: MIT
44+
license_family: MIT
45+
license_file: LICENSE
46+
summary: Python3 Language Module for Plugify
47+
description: |
48+
Python3 Language Module provides Python language support for the Plugify
49+
plugin system, enabling dynamic loading and execution of Py3 plugins.
50+
doc_url: https://github.com/{{ environ.get('GITHUB_REPOSITORY', 'your-org/your-repo') }}/blob/main/README.md
51+
dev_url: https://github.com/{{ environ.get('GITHUB_REPOSITORY', 'your-org/your-repo') }}
52+
53+
extra:
54+
recipe-maintainers:
55+
- {{ environ.get('GITHUB_ACTOR', 'your-username') }}

external/plugify

Submodule plugify updated 605 files

0 commit comments

Comments
 (0)