Turns out that kiss extensions which call the package manager
inherit the parent _KISS_LVL value. This get incremented further
and the wrong cache clean path is taken on exit.
Closes#259
Previously, if kiss-size was ran on a package that owns a lot of
files, kiss-size would error out. This is because du wasn't
able to handle the number of files provided to it.
This patch solves this issue, by avoiding the generation of the 'files'
variable, and instead piping directly into xargs which then feeds the
files to du.
For an example package that breaks with the previous implementation,
see https://github.com/ehawkvu/kiss-tex/tree/master/texlive/texlive-fontsextra
which installs around 94,000 files.
This utility must be rewritten (with added complexity). There is
no portable way to tell tar to add a directory but not include its
contents (unless it is empty).
The simple approach of giving tar the package's manifest is not
workable without omitting directories. This causes issues when
installing an exported tarball and target directories do not exist.
The most obvious solution is to copy all of the package's files
to a temporary directory and then pass that to tar. This would
work fine but slow the process down substantially.
Another solution will be sought and if not possible the above will
be implemented instead.
Closes#254
- No longer hides errors from strip commands. Some errors may now
appear, these are bugs and should be reported.
- The whitelist of paths included subdirectories themselves. This
has been changed to only glob for files.
- Each strip command is now printed to the screen.
Hooks can now resolve paths if needed and tell the package manager
about the result. ie, a hook performing git retrieval can tell the
package manager the resolved path to the repository.
The package manager will then filter duplicates /correctly/ and
hooks can be sure they'll run once per *Git repository*.
#!/bin/sh -e
#
# Generic Git repository updater.
git remote >/dev/null 2>&1 || exit 0
case $1 in
update-resolve)
subm=$(git rev-parse --show-superproject-working-tree)
git -C "${subm:-"$PWD"}" rev-parse --show-toplevel
;;
pre-update)
case $(git config --get merge.verifySignatures) in true)
printf 'Signature verification enabled.\n'
esac
git pull
git submodule update --remote --init -f
;;
esac
NOTE: This may be reverted. Just merging to allow users to play
around with it. It's one possible solution to removing hook
boilerplate for updates.
- Update hooks now fire for non-Git repositories. This allows hooks
to add support for other update methods.
- Foundational work to explore other update methods in the package
manager itself.
- Added 'U|upgrade' to update the system without pulling new changes
from remotes.
- Other minor changes.