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
3 changes: 3 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include SConstruct SConscript
graft msgq
global-exclude __pycache__ *.pyc *.o *.os *.d
4 changes: 2 additions & 2 deletions SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ msgq_objects = env.SharedObject([
'msgq/impl_fake.cc',
'msgq/msgq.cc',
])
msgq = env.Library('msgq', msgq_objects)
msgq = env.Library('msgq/libmsgq', msgq_objects)
msgq_python = envCython.Program('msgq/ipc_pyx.so', 'msgq/ipc_pyx.pyx', LIBS=envCython["LIBS"]+[msgq]+common)

# Build Vision IPC
Expand All @@ -23,7 +23,7 @@ else:
vipc_sources = [f'{visionipc_dir.abspath}/{f}' for f in vipc_files]

vipc_objects = env.SharedObject(vipc_sources)
visionipc = env.Library('visionipc', vipc_objects)
visionipc = env.Library('msgq/visionipc/libvisionipc', vipc_objects)


vipc_libs = envCython["LIBS"] + [visionipc, msgq] + common
Expand Down
9 changes: 8 additions & 1 deletion msgq/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
# must be built with scons
import os

# Native libraries and headers used by downstream C++ builds.
INCLUDE_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
LIB_PATH = os.path.join(os.path.dirname(__file__), "libmsgq.a")
VISIONIPC_LIB_PATH = os.path.join(os.path.dirname(__file__), "visionipc", "libvisionipc.a")
PYTHON_LIB_PATH = os.path.join(os.path.dirname(__file__), "ipc_pyx.so")

from msgq.ipc_pyx import Context, Poller, SubSocket, PubSocket, SocketEventHandle, toggle_fake_events, \
set_fake_prefix, get_fake_prefix, delete_fake_prefix, wait_for_one_event
from msgq.ipc_pyx import MultiplePublishersError, IpcError
Expand Down
6 changes: 5 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ classifiers = [
]
dependencies = []

[build-system]
requires = ["setuptools>=64", "Cython", "scons"]
build-backend = "setuptools.build_meta"

[project.optional-dependencies]
dev = [
"setuptools", # for distutils
Expand All @@ -27,7 +31,7 @@ dev = [
]

[tool.setuptools.package-data]
"*" = ["*.so"]
msgq = ["*.h", "*.a", "*.so", "*.dylib", "visionipc/*.h", "visionipc/*.a", "visionipc/*.so", "visionipc/*.dylib"]

# https://beta.ruff.rs/docs/configuration/#using-pyprojecttoml
[tool.ruff]
Expand Down
20 changes: 20 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import os
import subprocess

from setuptools import Distribution, setup
from setuptools.command.build_py import build_py


class BinaryDistribution(Distribution):
def has_ext_modules(self):
return True


class BuildPyWithScons(build_py):
def run(self):
root = os.path.dirname(os.path.abspath(__file__))
subprocess.check_call(["scons", f"-j{os.cpu_count() or 1}", "--minimal"], cwd=root)
super().run()


setup(cmdclass={"build_py": BuildPyWithScons}, distclass=BinaryDistribution)
Loading