This repository was archived by the owner on Apr 26, 2024. It is now read-only.
6.0.0
Pre-release
Pre-release
This changelog focuses solely on the larger and noticeable changes.
There are no backwards incompatible changes and existing packages, binaries
and what have you will continue to work as normal.
Minor features have been added; git tags are now pulled with git sources,
repositories can now contain white-space in their names, git sources no longer
fill the screen with messages about detached head, etc, etc.
Numerous bugs have been fixed, including crash fixes in dependency resolution
for circular dependencies, etc. There will likely be regressions in other
areas, expect more minor releases over the coming days.
* Most of the package manager has been rewritten. The code is now less squished
together and should be more readable. A large number of functions have been
simplified and things overall should be snappier.
* Package hooks (post-install, pre-remove) which aren't executable will now
have their contents printed to the screen. This limits code execution for
hooks which just display messages. Hooks that are executable function as
normal.
* All new tarballs created by the package manager will use '@' in place of '#'
as the separator between <pkg_name> and <version>-<release>. Using '#' isn't
ideal as it's the comment character in the shell and tab completion can be
finicky.
To maintain backwards compatibility, the package manager will look for '@'
first before falling back to '#'. This is a seamless change and existing
binary caches will function as normal. Support for '#' will be dropped in
the future.
* The dependency fixer now adds only top-level dependencies to depends files.
It no longer adds every dependency recursively. This makes the resulting
dependency list easier to understand and less misleading.
The new method requires readelf (from binutils, llvm, elfutils, etc). If
a readelf is not found, the old method (ldd) will be used. If the
environment variable KISS_ELF is set to 'ldd', the old method will be used.
* Package installation process now takes less time due to simplification of
code which runs once per installed file/directory. Very noticeable when
installing something like python (which contains 4000~ files).
continue in loops now occurs as soon as possible which avoids retrieving
file permissions unconditionally for all files. This effectively makes the
second install pass free when nothing needs to be done.
5.1.0 (previous release):
-> time kiss i python
-> Using '/usr/bin/sls' (to become root)
-> python Checking that manifest is valid
-> python Checking that all dependencies are installed
-> python Checking for package conflicts
-> python Installing package
-> python Verifying installation
-> python Installed successfully
real 0m 3.75s
user 0m 2.97s
sys 0m 1.22s
6.0.0 (current release):
-> time ~/projects/kiss/kiss i python
-> Using '/usr/bin/sls' (to become root)
-> python transforming package conflicts into alternatives
-> python installing package
-> python verifying installation
-> python installed successfully
real 0m 2.30s
user 0m 1.73s
sys 0m 0.93s
* Cache directory structure has been cleaned up. Navigation and usage in
the terminal should now be a more pleasant experience.
5.1.0 (previous release):
- cache_directory/
- build-<pid>/
- extract-<pid>/
- pkg-<pid>/
6.0.0 (current release):
- cache_directory/
- proc/
- <pid>/
- build/
- extract/
- pkg/
This also simplifies the cache clean-up code as we can just remove <pid>
which cleans up everything. For those with KISS_TMPDIR set, this will create
<pid> in the set directory.
* All temporary files created during execution now reside in a unified location
rather than being littered throughout the cache directories.
* kiss-outdated has been rewritten from scratch. It now prints clear error
messages and any naming conflicts with repology.org have been fixed for
$/kisslinux/repo and $/kisslinux/community.
Naming conflict code is extensible and also useful for finding incorrectly
named packages in repositories (send patches).
Usage is now:
$ kiss outdated /path/to/repository
It can be used to check your installed packages via:
$ kiss outdated /var/db/kiss/installed
* post-install log feature has been temporarily removed and will be replaced
with something less tacked-on in coming releases. This will coincide with
changes to build log files to create a proper logging system.
* Fixed bug in dependency fixer where (for example) firefox would have
firefox-bin added as a dependency (or vice versa). The dependency fixer
now skips files which are also owned by the to-be-installed package rather
than relying solely on the system.
* Fixed two crashes (from infinite recursion) in dependency resolution. These
were caused by packages which depend on themselves and circular dependencies.
In the former case, a warning is printed. In the latter case, the package
manager exits with an error message.
* The package manager will now print the current owner of the file during
conflict detection / choice cration.
Example:
-> ncurses transforming package conflicts into alternatives
alternative /usr/bin/reset (currently busybox)
alternative /usr/bin/clear (currently busybox)
* The handling of files in /etc/ is now a part of the existing file install
function rather than being its own thing. This prevents a second loop over
the contents of the package.
* GCC and LLVM are now explicit dependencies and the dependency fixer will no
longer ignore their existence. Packages linking to these libraries should
either have the dependency removed (if it makes sense) or their depends files
ammended.
Users may also find the CFLAGS -static-libgcc and -static-libstdc++ useful.
Setting these will statically link the libraries.
* kiss-orphans will now print all orphans (packages which depend on nothing)
rather than a hardcoded, filtered list. Users can filter this list to their liking
for the purposes of auto-remove or whatever else.
This filtering can be done via simple pipes (and grep, awk, etc) or via a meta
package with the depends file acting as the filter. There are many more ways
of doing this. The utility itself is 5LOC, users can also fork it to suit their needs.
What's more important is that it do what it says on the tin, list orphans.