-
-
Notifications
You must be signed in to change notification settings - Fork 13
Description
If basilisp becomes a self-hosting pep517 build backend, then pip, poetry, and other build frontends can build and install basilisp and other basilisp projects.
In a pep517 build backend, build_sdist
puts lpy
files in sdist, and build_wheel
should put lpy
files and lpyc
files in wheel. With precompiled lpyc files in wheels, basilisp projects can be installed onto linux distribution's python site-packages directories where users can't write after installation. As a self-hosting pep517 build backend, basilisp will become a system scripting language whose packages can be installed onto gnu guix, gentoo linux, and all other linux distributions. People may even write native GUI applications or linux distribution's internal tools in basilisp and deploy them as linux distribution packages. If pre-built wheels are uploaded to pypi, startup speed will become faster as well.
According to PEP 517 and PEP 621, basilisp's pyproject.toml
should look like
[project]
name = "basilisp"
version = "1.0.0"
dependencies = ["requests >= 2.25.1"]
[project.optional-dependencies]
test = ["pytest >= 6.0", "pytest-cov"]
dev = ["black", "flake8"]
[build-system]
requires = []
build-backend = "basilisp.pep517"
backend-path=["src"]
To run tests,
pip install .[test]
basilisp test
Other basilisp projects' pyproject.toml can look like
[project]
name = "basilisp-blender"
version = "1.0.0"
dependencies = ["requests >= 2.25.1"]
[project.optional-dependencies]
test = ["pytest >= 6.0", "pytest-cov"]
dev = ["black", "flake8"]
[build-system]
requires = ["basilisp"]
build-backend = "basilisp.pep517"
I think this is the simplest and cleanest way to incorporate project management into basilisp.