socketify.py/setup.py

86 wiersze
2.5 KiB
Python
Czysty Zwykły widok Historia

2022-05-28 19:59:08 +00:00
import sys
vi = sys.version_info
if vi < (3, 7):
raise RuntimeError('socketify requires Python 3.7 or greater')
if sys.platform in ('win32', 'cygwin', 'cli'):
raise RuntimeError('socketify does not support Windows at the moment')
import setuptools
from setuptools.command.sdist import sdist
2022-05-28 22:49:16 +00:00
from setuptools.command.build_ext import build_ext
2022-05-28 19:59:08 +00:00
import pathlib
import os
import shutil
import subprocess
_ROOT = pathlib.Path(__file__).parent
2022-05-28 22:49:16 +00:00
UWS_DIR = str(_ROOT / "src" / "socketify" /"uWebSockets")
UWS_BUILD_DIR = str(_ROOT / "build" /"uWebSockets")
NATIVE_CAPI_DIR = str(_ROOT / "build" / "native")
2022-11-01 12:40:45 +00:00
NATIVE_LIB_PATH = str(_ROOT / "build" / "libsocketify.so")
NATIVE_DIR = str(_ROOT / "src" / "socketify" /"native")
NATIVE_BUILD_DIR = str(_ROOT / "build" /"native")
2022-11-01 12:40:45 +00:00
NATIVE_LIB_OUTPUT = str(_ROOT / "src" / "socketify" / "libsocketify.so")
2022-05-28 22:49:16 +00:00
class Prepare(sdist):
def run(self):
super().run()
2022-05-28 22:49:16 +00:00
class Makefile(build_ext):
2022-05-28 19:59:08 +00:00
def run(self):
env = os.environ.copy()
2022-05-28 22:49:16 +00:00
2022-05-28 19:59:08 +00:00
if os.path.exists(UWS_BUILD_DIR):
shutil.rmtree(UWS_BUILD_DIR)
shutil.copytree(UWS_DIR, UWS_BUILD_DIR)
if os.path.exists(NATIVE_CAPI_DIR):
shutil.rmtree(NATIVE_CAPI_DIR)
shutil.copytree(NATIVE_DIR, NATIVE_CAPI_DIR)
subprocess.run(["make", "shared"], cwd=NATIVE_CAPI_DIR, env=env, check=True)
shutil.move(NATIVE_LIB_PATH, NATIVE_LIB_OUTPUT)
2022-05-28 19:59:08 +00:00
super().run()
with open("README.md", "r", encoding="utf-8") as fh:
long_description = fh.read()
setuptools.setup(
name="socketify",
version="0.0.1",
platforms=['macOS', 'POSIX'],
author="Ciro Spaciari",
author_email="ciro.spaciari@gmail.com",
description="Fast WebSocket and Http/Https server",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/cirospaciari/socketify.py",
project_urls={
"Bug Tracker": "https://github.com/cirospaciari/issues",
},
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
2022-05-28 22:49:16 +00:00
packages=["socketify"],
2022-05-28 19:59:08 +00:00
package_dir={"": "src"},
package_data={"": ['./*.so', './uWebSockets/*','./uWebSockets/*/*','./uWebSockets/*/*/*', './native/*','./native/*/*','./native/*/*/*']},
2022-05-28 19:59:08 +00:00
python_requires=">=3.7",
install_requires=["cffi>=1.0.0", "setuptools>=60.0.0"],
2022-05-28 22:49:16 +00:00
has_ext_modules=lambda: True,
cmdclass={'sdist': Prepare, 'build_ext': Makefile},
2022-05-28 22:49:16 +00:00
include_package_data=True
2022-05-28 19:59:08 +00:00
)