Go to file
Dylan Araps 8d2f470295
kiss: Various portability fixes.
- Added POSIX shell implementation of the 'readlink' utility for
  use _only_ when the 'readlink' utility is not available.

- Made tar usage more portable. All that is left now is the removal
  of --strip-components 1 for full (presumed) portability.

- Swapped from sha256sum to shasum as it's more portable. This is
  still not a full solution.

Here's a checklist of where we currently are:

POSIX Core utilities (depends coreutils)
- [x] sh        (POSIX)
- [x] find      (POSIX) -type f, -type d, -exec {} [+;], -o, -print, !
- [x] ls        (POSIX) -l, -d
- [x] sed       (POSIX) -n, s/<search>/<replace>/g, /<delete>/d
- [x] grep      (POSIX) -l, -F, -x, -f, -q, -v
- [x] sort      (POSIX) -r, -u, -k
- [x] tee       (POSIX)
- [x] date      (POSIX)
- [x] mkdir     (POSIX) -p
- [x] rm        (POSIX) -f, -r
- [x] rmdir     (POSIX)
- [x] cp        (POSIX) -f, -P, -p, -L, -R
- [x] mv        (POSIX) -f
- [x] chown     (POSIX) -h
- [x] diff      (POSIX) -U

BSD utilities
- [x] install   (BSD, not POSIX) (still portable) -o, -g, -m, -d

Misc
- [x] readlink  (NOT POSIX) (fallback shell implementation)
- [x] su*       (sudo, doas, su) (in order, optional)
- [x] git       (downloads from git) (must link to curl)

Compiler/libc utilities (depends cc & libc)
- [x] readelf   (Part of compiler toolchain) (GNU, LLVM or elfutils)
- [x] strip     (Part of compiler toolchain) (GNU, LLVM or elfutils)
- [x] ldd       (Part of libc)

Tarball compression
- [ ] tar       (must have --strip-components) (busybox, GNU, libarchive))
- [x] bzip2     (widely used) -d, -z
- [x] xz        (widely used) -d, -z, -c, -T
- [x] gzip      (widely used) -d, -6
- [x] zstd      (optional)    -d, -z, -c
- [x] unzip     (optional)
- [ ] shasum    (checksums) (NO standard. Portable across Linux/BSD)
2020-04-30 19:38:37 +03:00
.github/workflows ci: Run on pull requests 2020-01-08 22:21:10 +02:00
contrib kiss-fork: Add option to pick repository 2020-04-25 17:48:44 +03:00
.editorconfig kiss: Swap to ls -l for user name 2020-04-28 06:26:36 +03:00
kiss kiss: Various portability fixes. 2020-04-30 19:38:37 +03:00
kiss.1 kiss.1: Add missing hooks to manpage 2020-04-26 09:31:08 +03:00
LICENSE.md docs: update 2019-10-05 11:02:05 +03:00
README.md docs: update 2020-03-28 10:18:47 +02:00

kiss

Tiny and straightforward package manager for KISS written in POSIX sh.

  • Only 600~ lines of POSIX sh (See cloc).
  • Runtime dependency detection.
  • Incremental package installation.
  • Fast dependency solver.
  • File conflict detection.
  • Package alternatives system.
  • Binary stripping.
  • shellcheck compliant.

kiss Guidestones

Read: https://k1ss.org/guidestones.txt

Usage

-> kiss [a|b|c|i|l|r|s|u|v] [pkg] [pkg] [pkg]
-> alternatives: List and swap to alternatives
-> build:        Build a package
-> checksum:     Generate checksums
-> install:      Install a package
-> list:         List installed packages
-> remove:       Remove a package
-> search:       Search for a package
-> update:       Check for updates
-> version:      Package manager version

Index

Package format

See: https://k1ss.org/package-system

Extending the package manager

The contrib directory contains a set of simple scripts to extend the package manager. These are just simple and stupid automations which parse the package format.

  • kiss-cargo-urlgen: Generate sources for rust packages.
  • kiss-chbuild: Spawn a throwaway chroot.
  • kiss-chroot: Enter a KISS chroot.
  • kiss-depends-finder: Find missing dependencies by parsing 'ldd'.
  • kiss-depends: Display a package's dependencies.
  • kiss-export: Turn an installed package into a KISS tarball.
  • kiss-fork: Copy a package's repository files into the current directory.
  • kiss-link: Link a repository file to another repository.
  • kiss-manifest-tree: Display all files as tree owned by a package.
  • kiss-manifest: Display all files owned by a package.
  • kiss-maintainer: Display the package maintainers.
  • kiss-new: Create a boilerplate package.
  • kiss-orphans: List orphaned packages.
  • kiss-outdated: List outdated packages based on Repology versions.
  • kiss-owns: Check which package owns a file.
  • kiss-repodepends: Display a package's original dependencies.
  • kiss-reset: Reset the system to the base.
  • kiss-revdepends: Display packages which depend on package.
  • kiss-size: Show the size on disk for an installed package.

cloc

+---------------------------------------+
| Language  files  blank  comment  code |
|---------------------------------------|
| Shell     1      271    391       663 |
+---------------------------------------+