Skip to main content

Small build system

Project description

Mapyr v.0.9.1

Mapyr is a small build system written in Python 3. It uses Python for build files (no new languages required) and inherits the Makefile rule system, extending and complementing it.

Advantages of Mapyr:

  • Small size
  • Project system
  • Simple hierarchy
  • Modular addon system for easily adding support for new languages (language modules are provided for convenience, but not required)

Quick start

C/C++ example:

build.py:

#!/usr/bin/env python

from mapyr import *

def get_project(name:str) -> ProjectBase:
    cfg = c.Config()

    # Dirs to find source files
    cfg.SRC_DIRS = ['src']

    # Create project ( name, output filename, config )
    project = c.Project('main','bin/main',cfg)

    # Default rules for C project like: build, clean, and executable
    c.add_default_rules(project)

    return project

if __name__ == "__main__":
    process(get_project)

Run ./build.py

Install

pip install mapyr

Usage

Mapyr starts with a build.py file, call process funcution and which calls get_project.

Rule System

Mapyr's rule system is derived from GNU Make:

  • Target: A file (or phony target) that must exist or be built.
  • Prerequisites: A list of rules that must be built before this rule.
  • Execution: The commands to build the target.

If any prerequisite is newer than the target, the rule is rebuilt.

Projects

Projects are used to share configurations. A project groups multiple rules into a single unit, managing private, protected, and public configurations. This is similar to access modifiers in C++, but less strict. You choose which configurations to inherit from subprojects. The separation helps clarify a project's public interface versus its internal implementation.

  • Private: Accessible only within the project.
  • Protected: Accessible within the project and its children.
  • Public: Accessible to any project that includes this one as a subproject.

Examples

See the examples in the test directory.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mapyr-0.9.1.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mapyr-0.9.1-py2.py3-none-any.whl (12.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file mapyr-0.9.1.tar.gz.

File metadata

  • Download URL: mapyr-0.9.1.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.10.12 Linux/5.15.0-153-generic

File hashes

Hashes for mapyr-0.9.1.tar.gz
Algorithm Hash digest
SHA256 ddf3369e35605993d7d47e17202cc1165f576bb4d9d232b735ad8244f675e9d4
MD5 462d7e06031429fe467b6766d2af3e72
BLAKE2b-256 124ee68f103d7424302e85c84b967e40669249b5ebc2ad4f1c0b86c2368c8aa8

See more details on using hashes here.

File details

Details for the file mapyr-0.9.1-py2.py3-none-any.whl.

File metadata

  • Download URL: mapyr-0.9.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 12.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.10.12 Linux/5.15.0-153-generic

File hashes

Hashes for mapyr-0.9.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d7cdafd3a269f0609e679eca175f643687018b4cca271c57fa5e39b2c48b5b29
MD5 4f942db01bc4b88627b99b735e224111
BLAKE2b-256 b655631eb8c6911ae81362a854ed4beb4991d927088996f7dbc214885eda7d4e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page