Skip to content

Turn basilisp into a self-hosting PEP 517 build backend for project management. #1221

Open
@amano-kenji

Description

@amano-kenji

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions