{"id":23979448,"url":"https://github.com/ildus/jamp","last_synced_at":"2025-08-28T23:41:23.936Z","repository":{"id":270116080,"uuid":"909381220","full_name":"ildus/jamp","owner":"ildus","description":"Jam on Python","archived":false,"fork":false,"pushed_at":"2025-08-05T06:24:12.000Z","size":238,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-25T08:25:39.353Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ildus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-28T14:34:03.000Z","updated_at":"2025-08-05T06:22:39.000Z","dependencies_parsed_at":"2025-02-14T22:25:53.231Z","dependency_job_id":"f4f8d06e-c159-40b8-8462-d6b8b0d306ef","html_url":"https://github.com/ildus/jamp","commit_stats":null,"previous_names":["ildus/jamp","ildus/jan"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/ildus/jamp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fjamp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fjamp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fjamp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fjamp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ildus","download_url":"https://codeload.github.com/ildus/jamp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ildus%2Fjamp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272581461,"owners_count":24959411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-07T09:55:00.492Z","updated_at":"2025-08-28T23:41:23.923Z","avatar_url":"https://github.com/ildus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Jam build system on Python\n--------------------------\n\nThis is a Python reimplementation of the Jam build system\n([link](https://swarm.workshop.perforce.com/projects/perforce_software-jam)).\n\nSupported platforms: Linux (Unix), OpenVMS, Windows (WIP), MacOS (WIP)\n\nWhat is Jam\n------------\n\nJam is a build system (similar to meson, cmake, etc.). The key difference is that its core is\nessentially an interpreter for its internal language, with all building functionality\nwritten in this language.\n\nThe raw Jam language doesn't know how to build anything by itself, but it allows you to define rules\nand dependencies which construct the actual command sequence to build\nprojects using a dependency tree.\n\nJam includes `Jambase`, which is a collection of generic rules to build C, C++ and\nFortran projects. It can be easily extended (or modified)\nto support other types of projects.\n\nDifferences from the original Jam\n-----------------------------\n\n* Uses `ninja`, `samurai` or other `ninja`-compatible builders for\n    the actual building of executables.\n* `mkdir` is a built-in command that collects all created directories to the `dirs` target.\n* Built-in rules are case-insensitive (`Echo` and `ECHO` are the same).\n* Regular expressions are Python-based.\n* `Clean` actions are ignored in favor of `ninja -t clean`.\n\nQuick Start\n-----------\n\nInstall:\n\n    # Install jamp with the system pip\n    pip3 install jam-build\n\n    # Or from the latest main branch.\n    pip3 install git+https://github.com/ildus/jamp\n\n    # Using pypy3 provides approximately twice the performance\n    # pypy3 -m pip install jam-build\n\n    # Install ninja using your package manager\n    dnf install ninja\n    # or pacman -Syu ninja\n    # etc.\n\nExample project structure with a library and a main executable that uses math functions:\n\n    src\n        main.c\n    lib\n        print.c\n    include\n        common.h\n\n    Jamfile\n\nCorresponding Jamfile:\n\n    HDRS = include ;                    # common includes, affects all sources\n    Library libprint : lib/print.c ;    # on Unix this will create libprint.a\n    Main app : src/main.c ;             # executable\n    LinkLibraries app : libprint ;      # linking the executable with our library\n    LINKLIBS on app = -lm ;             # system libraries\n\nTo build the executable, simply run:\n\n    jamp \u0026\u0026 ninja\n\nFor more complex examples, look at the `tests` directory. When dealing with subdirectories,\nit's recommended to use the `SubDir` rule. Note that this example should work on Windows\nand Linux (because of explicit paths), but will not work on VMS.\n\nContributing\n-----------\n\n    git clone git@github.com:ildus/jamp.git\n\n    # To run without installing\n    export PYTHONPATH=$PYTHONPATH:\u003ccurrent_dir\u003e/jamp/src\n    python3 -m jamp\n\n    # Testing changes\n    pip install pytest\n    cd \u003cjamp root folder\u003e\n    pytest\n\nDocumentation\n-------------\n\nSee the `docs` directory.\n\nOpenVMS Notes\n---------------\n\nUse my `github.com/ildus/samurai` fork for compilation. It supports the additional '$^' escape\nsequence for newlines, allowing you to add full scripts to `build.ninja`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fildus%2Fjamp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fildus%2Fjamp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fildus%2Fjamp/lists"}