CHANGELOG
================================================================================

This is the CHANGELOG for the Carbs Linux fork of the `kiss` package manager.
The format is based on [Keep a Changelog], and this project _somewhat_ adheres
to [Semantic Versioning].

[Keep a Changelog]:    https://keepachangelog.com/en/1.0.0/
[Semantic Versioning]: https://semver.org/spec/v2.0.0.html


2.3.0 - 2020-07-16
--------------------------------------------------------------------------------

### Added
- Added `KISS_FETCH` to optionally disable repository fetches while performing
  a system update. You can now run `KISS_FETCH=0 kiss u` in order to update
  your system without syncing repositories.

### Changed
- Changed usage outputs for kiss and contrib utilities.
- `rsync` repositories are now synced based on checksums rather than timestamps.
- `kiss-chroot` now uses system flags if available.
- `kiss-chbuild` now installs extra packages if specified.
- hooks now default to `null` if no arguments are given
- `*-pull` hooks have been renamed to `*-fetch` and is run only once instead of
  for every single git repository.

### Fixed
- Fixed an issue where using `su` to install packages resulted in a wrong
  package ownership.


2.2.1 - 2020-06-11
--------------------------------------------------------------------------------

### Fixed
- Fixed directory checking on package removal


2.2.0 - 2020-06-10
--------------------------------------------------------------------------------

### Added
- Makefile configurations were moved to config.mk.

### Changed
- `kiss` no longer ignores musl and gcc on `fixdeps()`. This will result in an
  influx of musl dependencies. But you will be needing the C library to be
  installed anyway if you want your programs to work. If your program links
  to `libgcc`, you will need the gcc package for that given program to function.
- Makefile now properly accepts `LIBS`, `LDFLAGS`, and `CFLAGS`.
- Updated documentation.

### Fixed
- `C89` compatibility on C programs.
- Fixed an alternatives issue where a file containing special regular expression
  characters (such as `/usr/bin/[`) would result in a manifest deletion.


2.1.2 - 2020-06-03
--------------------------------------------------------------------------------

### Fixed
- Fixed a segmentation fault on `kiss-stat` when a file didn't have on owner on
  the `passwd` database.


2.1.1 - 2020-06-03
--------------------------------------------------------------------------------

### Fixed
- Fixed 'No message in queue' message being outputted for every single package.
- Fixed CFLAGS for x86_64 on `kiss-chroot`.
- Fixed setting binary packages as dependencies.


2.1.0 - 2020-05-29
--------------------------------------------------------------------------------

### Added
- Added '$2' '$3' for build scripts which specifies version and architecture
  information.

### Changed
- `kiss-chroot` now sets architecture based on the system
- Updated documentation

### Removed
- Removed strip messages


2.0.0 - 2020-05-28
--------------------------------------------------------------------------------

### Added
- Rsync repository support.
- pre/post hooks for package removal (pre-remove, post-remove).
- pre/post hooks for git pulls (pre-pull, post-pull).

### Changed
- `kiss` no longer removes empty directories if they are defined on a different
  package.
- `$KISS_NOPROMPT` has been renamed to `$KISS_PROMPT` and must be set to 0 in
  order to disable prompts.
- `kiss-chbuild` now checks tarball digest.
- `kiss-chbuild` now downloads tarballs according to arch (x86_64 or i686
  currently).
- Submodule repository fetching has been modified to match compatibility.

### Removed
- Removed `kiss-maintainer` and moved it to [kiss-extra]

[kiss-extra]: https://github.com/carbslinux/kiss-extra


1.22.4 - 2020-05-26
--------------------------------------------------------------------------------

**NOTE:** `1.22.x` is the last minor version before `2.0.0`, meaning I will not
be doing any releases except for patches and fixes. My attention is now on
impllementing binary repositories. I will be doing some 'release candidates'
before release, as binary repositories will need user feedback.

### Added
- Added new documents.
- Added `post-package` hook.

### Changed
- Renamed the `hashcheck` function to `sh256` for compatibility.
- Enabled the usage of glob characters for `kiss-bin`.


1.22.3 - 2020-05-18
--------------------------------------------------------------------------------

### SECURITY
- Fixed a bug regarding privilige escalation using `$KISS_HOOK`. `kiss` will now
  use `$KISS_ROOT/etc/kiss-hook` on installation operations (which are run by
  root) so that the hooks are defined by the system administrator rather than the
  user. See [related proof-of-concept]

[related proof-of-concept]: https://github.com/kisslinux/kiss/pull/157#issuecomment-629880775


1.22.2 - 2020-05-16
--------------------------------------------------------------------------------

### Fixed
- Fixed an issue where `pkg_conflicts` would abort if `kiss-readlink` failed due
  to missing components. It now fallbacks to the original directory name.



1.22.1 - 2020-05-15
--------------------------------------------------------------------------------

### REMOVED
- Removed some contrib scripts and moved them to [kiss-extra]
- `kiss-cargo-urlgen`
- `kiss-cargolock-urlgen`
- `kiss-changelog`
- `kiss-depends-finder`
- `kiss-exec`
- `kiss-message`
- `kiss-orphans`
- `kiss-reporevdepends`


### Fixed
- Fixed a `kiss-owns` typo that caused it to fail.
- Fixed a `kiss-readlink` bug where it would fail if the last component wouldn't
  exist.
- Fixed an error on tarball extraction where a file name containing spaces would
  be parsed as two files.


[kiss-extra]: https://github.com/carbslinux/kiss-extra


1.22.0 - 2020-05-14
--------------------------------------------------------------------------------

### Added
- Added `kiss-exec`, a tool to execute commands inside the alternatives system.

### Changed
- Replaced `KISS_COLOUR` with `KISS_COLOR` to match upstream.
- Renamed `colour` variable to `color` for consistency.
- The package manager no longer needs root priviliges if the `KISS_ROOT` is
  writable by the user.
- `kiss` now uses the host cache regardless of `KISS_ROOT`.

### Fixed
- Fixed an issue where `kiss-owns` would output the wrong package because of
  symbolic links. The script now reads the link of the directory instead of the
  full file.


1.21.1 - 2020-05-14
--------------------------------------------------------------------------------

### Changed
- All contrib messages now output usage information when called with `--help`
  and `-h`.
- `hashcheck` function now uses `$1` instead of `${file#\*}`.

### Fixed
- Fixed a non-POSIX `find` call. Thanks to @illiliti.


1.21.0 - 2020-05-12
--------------------------------------------------------------------------------

### Added
- Added a `d|download` option to acquire the sources of given packages. If no
  packages are given, it acquires the sources of outdated packages. This can be
  used to acquire a package's sources to build it later, or periodically
  downloading outdated package sources, so the user doesn't wait for the download
  when updating the system.
- kiss now understands `.txz` tarballs. (BSD `src.txz` wink wink)
- `KISS_TMPDIR` can now be used to specify a temporary build directory. This
  will be useful for those of you who would want to build on ram or a different
  filesystem.

### Changed
- Simplified tarball extraction method.
- Removed the 'esc' function inside kiss.
- Added a 'warn' function to standardize warnings inside kiss

### Fixed
- Removed the `sys_db` usage on `pkg_find()` where directories could clash with
  external utilities.


1.20.3 - 2020-05-09
--------------------------------------------------------------------------------

### Fixed
- Fixed an alternatives bug caused by the previous patch, where the package
  moving to `/var/db/kiss/choices` would take the name of the preferred package.


1.20.2 - 2020-05-09
--------------------------------------------------------------------------------

### Fixed
- Fixed an issue regarding manifest format when using pkg_swap (alternatives).


1.20.1 - 2020-05-08
--------------------------------------------------------------------------------

### Changed
- Faster conflict resolution by using a conflict cache file.
- Standardized `kiss-readlink` usage output.


1.20.0 - 2020-05-07
--------------------------------------------------------------------------------

### Added
- `KISS_NOPROMPT` can be specified in order to skip prompts.


1.19.1 - 2020-05-07
--------------------------------------------------------------------------------

### Added
- Added `e|extension` to `kiss` which can be used to output kiss-extensions.

### Changed
- `kiss` no longer outputs the extensions when called with `kiss help`. The
  output was too large for an average terminal, and a user had to scroll up
  for actual package manager options. These can now be retrieved with `kiss e`.
- When called from a subshell, `kiss` disables colour escape sequences. This
  behaviour can be overriden by setting `KISS_COLOUR` environment variable.
  If set to 1, it will be enabled globally, if set to 0 it will be disabled
  globally.


1.19.0 - 2020-05-06
--------------------------------------------------------------------------------

### Added
- Added `kiss-reporevdepends` for finding all the packages on the repository
  that depends on the specified package.

### Changed
- Removed the `-p` flag from tar while installing packages. busybox ignores it
  and we don't need it.
- Replaced tar flags with keys for historical compatibility.
- `kiss` now decompresses a tarball once and uses the decompressed tarball for
  listing and extraction.

### Fixed
- Fixed the output of docstrings in contrib scripts.
- `kiss` now ignores the binary programs in the repository for
  `kiss extensions`.


1.18.0 - 2020-05-04
--------------------------------------------------------------------------------

### Added
- Added editorconfig file since we now have 4 languages (roff, Makefile, sh, C)
  in the repository.
- Added `kiss-readlink` as a `readlink -f` replacement.
- Added `kiss-message` for checking package messages.
- Added this CHANGELOG

### Changed
- Made tar calls portable. `kiss` is no longer limited to busybox, bsdtar, or
  gnu tar!

### Removed
- Dropped the usage of `readlink` in `kiss`.


1.17.0 - 2020-05-03
--------------------------------------------------------------------------------

### Added
- Added `kiss-stat`, a simple C program for getting the owner name of a
  file/directory.

### Removed
- Removed the usage of `stat` calls, as they are not standardized.

### Changed
- `kiss` now doesn't report `Generating etcsums` if there isn't an `/etc`
  directory in the package

### Fixed
- `kiss` now uses `sys_db` instead of `pkg_db` when removing packages from the
  system.
- `kiss` now explicitly exits if prompt returns with a status of 1. This is for
  `ksh` compatibility.


1.16.3 - 2020-05-03
--------------------------------------------------------------------------------

### Fixed
- Fixed etcsum location.


1.16.2 - 2020-05-03
--------------------------------------------------------------------------------

### Added
- Added fallbacks for sha256sum. `kiss` now fallbacks to `sha256`, and `openssl`
  for hash checking, respectively.
- Added `kiss-changelog` and `kiss-which` entries to the `kiss-contrib.1` manual
  page.

### Fixed
- Fixed `kiss` not using the preferred `tar` program on decompression.
- Fixed `pkg_conflicts()` getting stuck when you reinstall the same single
  package on a system.
- Fixed `pkg_conflicts()` giving an error if no packages are installed on a
  system.


1.16.1 - 2020-05-01
--------------------------------------------------------------------------------

### Fixed
- Fixed `ksh` Ctrl+C interrupt signals.


1.16.0 - 2020-05-01
--------------------------------------------------------------------------------

### Added
- New message queue system implementation. If a package includes a file named
  `message` it will output its contents in a pretty way.
- Added `kiss-which`, a tool like `which` but for `kiss` packages.
- Added `kiss-changelog`, a tool for outputting the git log of a given package.

### Fixed
- Fixed colour outputting on `OpenBSD ksh`.
- Made compatibility fixes on the Makefile
- Fixed an installation issue where `kiss` would look for the manifest with the
  `$KISS_ROOT` variable


1.15.0 - 2020-04-30
--------------------------------------------------------------------------------

I have decided to revert to rsync installation method as it is faster and safer.
Now, rsync is not a huge dependency. Saving 500Kb is not worth it when you look
at the trade-off.

### REMOVED
- Removed the new installation method.

### Changed
- Reverted to `rsync` for installation.
- We are now forcing decompression to standard output while using `decompress()`
- `kiss` now accepts decompressed tar archives for package installation as well.


1.14.2/1.14.3 - 2020-04-27
--------------------------------------------------------------------------------

### Fixed
- The new installation method now complies to the `$KISS_ROOT` value.


1.14.1 - 2020-04-27
--------------------------------------------------------------------------------

### Removed
- Removed the unnecessary `[ -d ]` from the path query.

### Fixed
- Fixed directory permissions in the new installation method.
- Added support for `$KISS_ROOT` to the new installation method.
- Added a check for symlinks that could overwrite a directory during
  installation.
- Whitespace cleanup.


1.14.0 - 2020-04-25
--------------------------------------------------------------------------------

This release removes `rsync` from `kiss` and implements its own installation
method.

### Added
- `kiss` now implements user scripts available in the `$PATH`. This can be used
  to call `kiss manifest` from `kiss` itself.
- `kiss` now displays a warning if the user has a `$KISS_ROOT` that ends with
  a `/`.
- `kiss` now uses its own new package installation method.

### Removed
- usage of rsync as an installation method.
- usage of `old_ifs`


1.13.1 - 2020-04-19
--------------------------------------------------------------------------------

### Removed
- Reverted and removed `kiss ss` changes.


1.13.0 - 2020-04-19
--------------------------------------------------------------------------------

### Added
- `kiss ss` for outputting a single location for scripting.

### Changed
- `kiss` now elevates permissions during checksum if the file isn't owned by us.
- Hide read error messages when `version` file cannot be found.
- Made the `pkg_fixdeps()` usage of `diff` portable.

### Fixed
- Fixed a shellcheck error.


1.12.3 - 2020-04-17
--------------------------------------------------------------------------------

### Changed
- Changed indentation style on decompression.

### Fixed
- `kiss-export` fallbacks to gzip if the compression method is unknown.
- `kiss-repodepends` now outputs the proper depends file.


1.12.2 - 2020-04-15
--------------------------------------------------------------------------------

### Added
- `kiss` can now decompress zip files.

### Changed
- `checksum`, `build`, `install`, and `remove` operations can now be done on the
  current package directory without arguments. So you can `cd` into a package an
  type `kiss b` to build that package.

### Fixed
- `kiss-export` now honours your `KISS_COMPRESS` value


1.12.1 - 2020-04-12
--------------------------------------------------------------------------------

### Fixed
- Fixed printing empty arguments in `kiss-outdated`.


1.12.0 - 2020-04-05
--------------------------------------------------------------------------------

### Added
- `kiss-cargolock-urlgen`: a tool that can read a Cargo.lock file to generate a
  list of urls.
- `kiss-cat`: a tool to concatanate package build files.
- Manual page for `kiss-contrib`.

### Changed
- `kiss-owns` now gives an error on directories.
- `kiss-link` can now take multiple file names and will create symbolic links
  of them all.
- Simplified `kiss-link`

### Fixed
- `kiss-cargo-urlgen`: Fixed an issue where if a package version contained a '-'
  it could lead to wrong url generation.


1.9.0 - 1.11.2 - 2020-04-04
--------------------------------------------------------------------------------

### Added
- `kiss f` to fetch repositories without an update prompt.
- Support for submodules in the repository.
- Added a Makefile to standardize the installation.
- Zstd compression method.

### Changed
- Modified `kiss-chbuild` to fit Carbs Linux.
- Changed README to notify about forking status.
- `pkg_find()` now also checks for symlinks instead of just directories.
- `pkg_find()` now uses a `for` loop instead of `find`.
- Force C locale for faster grepping.
- Easily readable manual page.

### Fixed
- Compression method now fallbacks to gzip if unknown.