toltecmk


Nametoltecmk JSON
Version 0.3.4 PyPI version JSON
download
home_pageNone
SummaryBuild system used for the Toltec community repository
upload_time2024-09-08 23:09:06
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseNone
keywords build-tooling packaging distribution
VCS
bugtrack_url
requirements docker python-dateutil pyelftools
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## toltecmk

[![toltecmk on PyPI](https://img.shields.io/pypi/v/toltecmk)](https://pypi.org/project/toltecmk)
![Status of the main branch](https://github.com/toltec-dev/build/actions/workflows/checks.yml/badge.svg)

`toltecmk` is a Python tool used to build software packages for the [Toltec repository](https://github.com/toltec-dev/toltec) from _[PKGBUILD](https://wiki.archlinux.org/index.php/PKGBUILD)-like build recipes_.
It automates common tasks such as fetching sources, building artifacts in a reproducible environment, and creating [Opkg-compatible archives](docs/ipk.md).

**Disclaimer: This is beta-quality software. The recipe format may change at any time in future releases. If you use `toltecmk` in other projects, it is advised to pin to a specific version.**

<p align="center">
    <img src="https://github.com/toltec-dev/build/raw/main/media/overview.svg" alt="toltecmk input: recipe; output: packages. Fetches sources based on instructions in the recipe." title="Overview of toltecmk">
</p>

### Setup

`toltecmk` is available as a Python package on PyPI.

```sh
pip install toltecmk
```

There are a few system requirements to use this tool:

* Linux-based operating system
* Python ⩾ 3.11
* Docker

### Basic Usage

To build a recipe located in the current directory, simply run:

```sh
toltecmk
```

This will process the recipe in a subfolder called `build` (which can be adjusted using the `--work-dir` flag) and generate packages in a subfolder called `dist` (`--dist-dir` flag).

### Documentation

* Tutorials and resources
    - [Guide to writing recipes](docs/writing-recipes.md)
    - [About ipk packages](docs/ipk.md)
* Reference
    - [Recipe format reference](docs/recipe-format.md)
    - [Details on the build process](docs/build-process.md)

### Related Projects

Many other build tools exist today for creating software packages, each major distribution having invented its own recipe and package formats.
Some important ones are listed below.
`toltecmk` itself uses an Arch Linux-style recipe format to build Debian-style packages.

<table>
    <tr>
        <th>Name</th>
        <th>Used by</th>
        <th>Recipe format</th>
        <th>Package format</th>
    </tr>
    <tr>
        <td colspan="4" align="center"><em>Debian-style</em></th>
    </tr>
    <tr>
        <td><a href="https://salsa.debian.org/debian/debhelper">debhelper</a></td>
        <td><a href="https://www.debian.org/">Debian</a>, <a href="https://ubuntu.com">Ubuntu</a>, and <a href="https://en.wikipedia.org/wiki/List_of_Linux_distributions#DEB-based">others</a></td>
        <td><a href="https://www.debian.org/doc/manuals/debmake-doc/ch05.en.html">Source packages</a> (Makefiles)</td>
        <td><a href="https://man7.org/linux/man-pages/man5/deb.5.html">deb</a></td>
    </tr>
    <tr>
        <td><a href="https://openwrt.org/docs/guide-developer/using_the_sdk">OpenWrt SDK</a></td>
        <td><a href="https://openwrt.org/">OpenWrt</a>, <a href="https://entware.net/">Entware</a></td>
        <td><a href="https://openwrt.org/docs/guide-developer/package-policies">Source packages</a> (Makefiles)</td>
        <td><a href="docs/ipk.md">ipk</a></td>
    </tr>
    <tr>
        <td colspan="4" align="center"><em>Fedora-style</em></td>
    </tr>
    <tr>
        <td><a href="https://github.com/rpm-software-management/rpm">rpmbuild</a></td>
        <td><a href="https://getfedora.org/">Fedora</a>, <a href="https://www.opensuse.org/">openSUSE</a>, and <a href="https://en.wikipedia.org/wiki/List_of_Linux_distributions#RPM-based">others</a></td>
        <td><a href="https://rpm-packaging-guide.github.io/#what-is-a-spec-file">spec</a> (DSL)</td>
        <td><a href="https://rpm.org/devel_doc/file_format.html">rpm</a></td>
    </tr>
    <tr>
        <td colspan="4" align="center"><em>Arch Linux-style</em></td>
    </tr>
    <tr>
        <td><a href="https://wiki.archlinux.org/title/Makepkg">makepkg</a></td>
        <td><a href="https://archlinux.org/">Arch Linux</a> and <a href="https://en.wikipedia.org/wiki/List_of_Linux_distributions#Pacman-based">others</a></td>
        <td><a href="https://wiki.archlinux.org/index.php/PKGBUILD">PKGBUILD</a> (Bash scripts)</td>
        <td>pkg.tar.zst</td>
    </tr>
    <tr>
        <td><a href="https://gitlab.alpinelinux.org/alpine/abuild">abuild</a></td>
        <td><a href="https://alpinelinux.org/">Alpine Linux</a></td>
        <td><a href="https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package#Getting_some_help">APKBUILD</a> (Bash scripts)</td>
        <td><a href="https://wiki.alpinelinux.org/wiki/Alpine_package_format">apk</a></td>
    </tr>
    <tr>
        <td colspan="4" align="center"><em>Others</em></td>
    </tr>
    <tr>
        <td><a href="https://nixos.org/manual/nix/unstable/command-ref/nix-build.html">nix-build</a></td>
        <td><a href="https://nixos.org/">NixOS</a></td>
        <td><a href="https://nixos.org/manual/nix/stable/#chap-writing-nix-expressions">Expressions</a> (DSL)</td>
        <td><a href="https://gist.github.com/jbeda/5c79d2b1434f0018d693">nar</a></td>
    </tr>
    <tr>
        <td><a href="https://dev.gentoo.org/~zmedico/portage/doc/man/ebuild.1.html">ebuild</a></td>
        <td><a href="https://www.gentoo.org/">Gentoo</a></td>
        <td><a href="https://wiki.gentoo.org/wiki/Ebuild">ebuild</a> (Bash scripts)</td>
        <td><a href="https://wiki.gentoo.org/wiki/Binary_package_guide#Understanding_the_binary_package_format">tbz2</a></td>
    </tr>
</table>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "toltecmk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "build-tooling, packaging, distribution",
    "author": null,
    "author_email": "Matt\u00e9o Delabre <git.matteo@delab.re>, Eeems <eeems@eeems.email>",
    "download_url": "https://files.pythonhosted.org/packages/a6/f5/5facd6b8040077dd40ee431dba2cfbb6690af669eff6e4f220f2eca0cbfc/toltecmk-0.3.4.tar.gz",
    "platform": null,
    "description": "## toltecmk\n\n[![toltecmk on PyPI](https://img.shields.io/pypi/v/toltecmk)](https://pypi.org/project/toltecmk)\n![Status of the main branch](https://github.com/toltec-dev/build/actions/workflows/checks.yml/badge.svg)\n\n`toltecmk` is a Python tool used to build software packages for the [Toltec repository](https://github.com/toltec-dev/toltec) from _[PKGBUILD](https://wiki.archlinux.org/index.php/PKGBUILD)-like build recipes_.\nIt automates common tasks such as fetching sources, building artifacts in a reproducible environment, and creating [Opkg-compatible archives](docs/ipk.md).\n\n**Disclaimer: This is beta-quality software. The recipe format may change at any time in future releases. If you use `toltecmk` in other projects, it is advised to pin to a specific version.**\n\n<p align=\"center\">\n    <img src=\"https://github.com/toltec-dev/build/raw/main/media/overview.svg\" alt=\"toltecmk input: recipe; output: packages. Fetches sources based on instructions in the recipe.\" title=\"Overview of toltecmk\">\n</p>\n\n### Setup\n\n`toltecmk` is available as a Python package on PyPI.\n\n```sh\npip install toltecmk\n```\n\nThere are a few system requirements to use this tool:\n\n* Linux-based operating system\n* Python \u2a7e\u00a03.11\n* Docker\n\n### Basic Usage\n\nTo build a recipe located in the current directory, simply run:\n\n```sh\ntoltecmk\n```\n\nThis will process the recipe in a subfolder called `build` (which can be adjusted using the `--work-dir` flag) and generate packages in a subfolder called `dist` (`--dist-dir` flag).\n\n### Documentation\n\n* Tutorials and resources\n    - [Guide to writing recipes](docs/writing-recipes.md)\n    - [About ipk packages](docs/ipk.md)\n* Reference\n    - [Recipe format reference](docs/recipe-format.md)\n    - [Details on the build process](docs/build-process.md)\n\n### Related Projects\n\nMany other build tools exist today for creating software packages, each major distribution having invented its own recipe and package formats.\nSome important ones are listed below.\n`toltecmk` itself uses an Arch Linux-style recipe format to build Debian-style packages.\n\n<table>\n    <tr>\n        <th>Name</th>\n        <th>Used by</th>\n        <th>Recipe format</th>\n        <th>Package format</th>\n    </tr>\n    <tr>\n        <td colspan=\"4\" align=\"center\"><em>Debian-style</em></th>\n    </tr>\n    <tr>\n        <td><a href=\"https://salsa.debian.org/debian/debhelper\">debhelper</a></td>\n        <td><a href=\"https://www.debian.org/\">Debian</a>, <a href=\"https://ubuntu.com\">Ubuntu</a>, and <a href=\"https://en.wikipedia.org/wiki/List_of_Linux_distributions#DEB-based\">others</a></td>\n        <td><a href=\"https://www.debian.org/doc/manuals/debmake-doc/ch05.en.html\">Source packages</a> (Makefiles)</td>\n        <td><a href=\"https://man7.org/linux/man-pages/man5/deb.5.html\">deb</a></td>\n    </tr>\n    <tr>\n        <td><a href=\"https://openwrt.org/docs/guide-developer/using_the_sdk\">OpenWrt SDK</a></td>\n        <td><a href=\"https://openwrt.org/\">OpenWrt</a>, <a href=\"https://entware.net/\">Entware</a></td>\n        <td><a href=\"https://openwrt.org/docs/guide-developer/package-policies\">Source packages</a> (Makefiles)</td>\n        <td><a href=\"docs/ipk.md\">ipk</a></td>\n    </tr>\n    <tr>\n        <td colspan=\"4\" align=\"center\"><em>Fedora-style</em></td>\n    </tr>\n    <tr>\n        <td><a href=\"https://github.com/rpm-software-management/rpm\">rpmbuild</a></td>\n        <td><a href=\"https://getfedora.org/\">Fedora</a>, <a href=\"https://www.opensuse.org/\">openSUSE</a>, and <a href=\"https://en.wikipedia.org/wiki/List_of_Linux_distributions#RPM-based\">others</a></td>\n        <td><a href=\"https://rpm-packaging-guide.github.io/#what-is-a-spec-file\">spec</a> (DSL)</td>\n        <td><a href=\"https://rpm.org/devel_doc/file_format.html\">rpm</a></td>\n    </tr>\n    <tr>\n        <td colspan=\"4\" align=\"center\"><em>Arch Linux-style</em></td>\n    </tr>\n    <tr>\n        <td><a href=\"https://wiki.archlinux.org/title/Makepkg\">makepkg</a></td>\n        <td><a href=\"https://archlinux.org/\">Arch Linux</a> and <a href=\"https://en.wikipedia.org/wiki/List_of_Linux_distributions#Pacman-based\">others</a></td>\n        <td><a href=\"https://wiki.archlinux.org/index.php/PKGBUILD\">PKGBUILD</a> (Bash scripts)</td>\n        <td>pkg.tar.zst</td>\n    </tr>\n    <tr>\n        <td><a href=\"https://gitlab.alpinelinux.org/alpine/abuild\">abuild</a></td>\n        <td><a href=\"https://alpinelinux.org/\">Alpine Linux</a></td>\n        <td><a href=\"https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package#Getting_some_help\">APKBUILD</a> (Bash scripts)</td>\n        <td><a href=\"https://wiki.alpinelinux.org/wiki/Alpine_package_format\">apk</a></td>\n    </tr>\n    <tr>\n        <td colspan=\"4\" align=\"center\"><em>Others</em></td>\n    </tr>\n    <tr>\n        <td><a href=\"https://nixos.org/manual/nix/unstable/command-ref/nix-build.html\">nix-build</a></td>\n        <td><a href=\"https://nixos.org/\">NixOS</a></td>\n        <td><a href=\"https://nixos.org/manual/nix/stable/#chap-writing-nix-expressions\">Expressions</a> (DSL)</td>\n        <td><a href=\"https://gist.github.com/jbeda/5c79d2b1434f0018d693\">nar</a></td>\n    </tr>\n    <tr>\n        <td><a href=\"https://dev.gentoo.org/~zmedico/portage/doc/man/ebuild.1.html\">ebuild</a></td>\n        <td><a href=\"https://www.gentoo.org/\">Gentoo</a></td>\n        <td><a href=\"https://wiki.gentoo.org/wiki/Ebuild\">ebuild</a> (Bash scripts)</td>\n        <td><a href=\"https://wiki.gentoo.org/wiki/Binary_package_guide#Understanding_the_binary_package_format\">tbz2</a></td>\n    </tr>\n</table>\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Build system used for the Toltec community repository",
    "version": "0.3.4",
    "project_urls": {
        "Bug Tracker": "https://github.com/toltec-dev/build/issues",
        "Homepage": "https://github.com/toltec-dev/build"
    },
    "split_keywords": [
        "build-tooling",
        " packaging",
        " distribution"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dda86a6c10d4708837139f798717ef4cdf2782f287161d36abac44c073bed449",
                "md5": "4bdeb822e16f3803bff7d415dacd600c",
                "sha256": "905ffc255442f201a8013d6736290656d1b59806ea836b867f110249cf03b999"
            },
            "downloads": -1,
            "filename": "toltecmk-0.3.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4bdeb822e16f3803bff7d415dacd600c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 37171,
            "upload_time": "2024-09-08T23:09:04",
            "upload_time_iso_8601": "2024-09-08T23:09:04.807854Z",
            "url": "https://files.pythonhosted.org/packages/dd/a8/6a6c10d4708837139f798717ef4cdf2782f287161d36abac44c073bed449/toltecmk-0.3.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a6f55facd6b8040077dd40ee431dba2cfbb6690af669eff6e4f220f2eca0cbfc",
                "md5": "2dc4ba3584940612f5c4848251799a8e",
                "sha256": "3748148b5a8600bae5f9e1ea63f53d749f1cae245f9c47a6de77c697ffab7ef7"
            },
            "downloads": -1,
            "filename": "toltecmk-0.3.4.tar.gz",
            "has_sig": false,
            "md5_digest": "2dc4ba3584940612f5c4848251799a8e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 37424,
            "upload_time": "2024-09-08T23:09:06",
            "upload_time_iso_8601": "2024-09-08T23:09:06.230448Z",
            "url": "https://files.pythonhosted.org/packages/a6/f5/5facd6b8040077dd40ee431dba2cfbb6690af669eff6e4f220f2eca0cbfc/toltecmk-0.3.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-08 23:09:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "toltec-dev",
    "github_project": "build",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "docker",
            "specs": [
                [
                    "==",
                    "7.1.0"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "pyelftools",
            "specs": [
                [
                    "==",
                    "0.31"
                ]
            ]
        }
    ],
    "lcname": "toltecmk"
}
        
Elapsed time: 3.33747s