Packaging system using Plan9 mk
See https://strahinja.srht.site/man/mkpk/mkpk.8.html.
https://strahinja.srht.site/man/mkpk/mkpk.8.html
https://tools.suckless.org/9base/
$ git clone https://git.sr.ht/~strahinja/mkpk $ su # mk install
# mkpk update # Pulls the MKFILESREPO repository # mkpk fetch foo # fetches the sources of foo to SRCBASEDIR # mkpk build foo # builds the foo tarball and puts it into PKGDIR # mkpk install foo # installs the built tarball # mkpk list foo # lists files in the installed tarball # mkpk info foo # shows information about the installed tarball # mkpk uninstall foo # uninstalls the package using the installed # tarball as a filelist # mkpk upgrade foo # upgrades the existing package, by running # fetch -> build -> uninstall -> install
With table:
$ tsvtable /pkg/pkgdb.tsv # Displays a nicely formatted table of all # installed tarballs and their versions
$ cd /path/to/project $ cat <<! >mkfile mkpklib=/lib/mkpk <$mkpklib/defaults.mk # ... <$mkpklib/standard.mk # or add your own rules # ... <$mkpklib/package.mk # ... ! $ mk package # creates mypackage-1.2.3.{tar.xz,sha512} $ doas mk package-install # installs the above to PKGDIR
mkpklib Directory holding the library mkfiles. By default, /lib/mkpk.
BINDDIRS Passed to PRoot as an argument. Defaults to -b /etc, which bind-mounts /etc when creating a package.
MKFILESREPO URL of the repository with the mkfiles with information on how to build individual packages. Defaults to galeb-mkfiles repository.
NOBINDDIRS If set to 1, no directories will be bind-mounted by PRoot when creating a package.
PKG Full name of a package. For example, gcc-12.1.0-2 or vim-9.0.135.
PKGBASE Base name of a package. For example, gcc or vim.
PKGDB Package database; TSV file holding the names, versions and installation timestamps of all installed packages. By default, /pkg/pkgdb.tsv.
SRCBASEDIR Base directory for source code. Defaults to /src.
SRCDIRS Space-separated list of directories which are created by extracting archives.
SRCCRDIRS Space-separated list of directories to be created, to which the archives are to be extracted. Useful when a source archive doesn't have a root directory like it should.
SRCEXDIRS Space-separated list of directories to which the archive will be extracted. An alternative to SRCCRDIRS, when the directories already exist.
SRCTODIRS Space-separated list of directories to which the directories from SRCDIRS will be renamed after extracting source archives.
SRCMKFILES Directory holding mkfiles. By default, /src/mkfiles.
SRCREPOS Space separated list of repository URLs holding the source code for the package.
SRCTARBALLS Space separated list of tarballs (archives) with the source code of the package.
mkpk - Packaging system using Plan9 mk
Copyright (C) 2022 Страхиња Радић
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Generated by slw2gmi © 2021-2024 Strahinya Radich.