## 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"
}