You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yafox 259d48d3b1
initial commit.
3 years ago
lib initial commit. 3 years ago
.gitignore initial commit. 3 years ago
LICENSE initial commit. 3 years ago
README initial commit. 3 years ago
USAGE initial commit. 3 years ago initial commit. 3 years ago
makefile initial commit. 3 years ago initial commit. 3 years ago



takes a package name, a version, and a path. mounts scripts for patching,
configuring, building, and installing the given version of the package at the
given path in read-only mode using either overlayfs or, if no package-specific
scripts were found, a bind mount.

dependencies: `shsort` and `vercmp`, as well as 'how-defaults' and 'how-pkgs'
repositories. (see makefile.)

55 SLOC.

usage: how <package> <version> <path>

## package structure

if a package or version is not recognized, will bind-mount the `default`
directory in read-only mode at the requested path. a package and version is
recognized based on the presence of a subdirectory in the `pkg` directory
matching the package name with a subdirectory whose name translates to a version
equal to or less than version of the package requested, or a subdirectory named
`default`. the structure looks something like this:

|-- <package>/
| |-- <version>/

`version` is matched using `vercmp`. if `vercmp` has a format that matches the
package name, then that format is used to compare versions for the package.
otherwise, the default comparison function is used.

the version directories are sorted using `shsort` and `vercmp` and mounted as an
overlay filesystem with the lower versions being lower in the overlay and higher
versions being higher. `default` package subdirectories are always one layer
above the `default` directory; the `default` directory is always lowest.

## patches

multiple patches may be offered in a package. by convention, patches are kept
in the `patches` subdirectory of the package root. the default `patch` command
looks for a single combined patch, likely constructed by concatenating or
otherwise combining offered patches, under the filename `patch` in the package