Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

6.0.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@dylanaraps dylanaraps released this 05 Oct 06:49
· 539 commits to master since this release
5c2d43e
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.