ChangeLog
This is the CHANGELOG for the Carbs Packaging Tools, initially a customized fork
of the kiss
package manager. The format is based on Keep a Changelog, and
this project somewhat adheres to Semantic Versioning.
6.0.2 - 2021-04-05
Fixed
- Fixed
make dist
target.
6.0.1 - 2021-04-05
Fixed
- Fixed inconsistencies of the
Ctrl+C
interrupt behaviour
6.0.0 - 2021-04-03
Added
- Added unit tests using
shellspec
. - Added support for
pax
for tarball extraction. - ssu support has been added for privilege escalation.
- Added
-p
flag for specifying package when usingcpt-link
. - Added manual pages for all
cpt-contrib
scripts. - Added
lz
compression/decompression support to$CPT_COMPRESS
.
Changed
- Moved
cpt-lib
tocpt-lib.in
. - All
src
scripts now exit with success after being called with--help
. - Minor optimisations on
contrib
scripts. - Huge speed improvement on
cpt-export
. - Updated the
getoptions
library to version2.5.0
.
Fixed
- Fixed
cpt-cat
not using theCPT_ROOT
value. - Fixed an error with the usage of
sbase grep
that resulted in exit when removing packages.
Removed
- Removed C binaries
cpt-readlink
andcpt-stat
and instead replaced them with_readlink()
and_stat()
library functions.
5.1.2 - 2021-01-04
Fixed
- Fixed the
Makefile
installing files other thancpt-*
files. - Fixed
pkg_swap()
bug where swapping a prefix file would change the following file locations on the manifest as well.
5.1.1 - 2020-12-20
Fixed
- Fixed an issue where the package build is continued even when it failed when
$CPT_DEBUG
was set
5.1.0 - 2020-11-25
IMPORTANT
- The
pkg_fixdeps()
function has been renamed topkg_fix_deps()
. cpt-lib
now parses options for you ifparser_definition()
is defined before being called.
Changed
cpt-fork
can now take full path for packages.cpt-size
can now display the total size of multiple packages.- Updated
getoptions()
parser to version2.0.1
- Added
git
to the defaultcpt-base
. - Temporary cache creation scheme is changed from
build-$pid/
toproc/$pid/build/
Fixed
- Moved option parsing to cpt-lib if
parser_definition
exists. This shouldn't affect existing scripts wherecpt-lib
is called before the parser is defined.
5.0.0 - 2020-10-06
IMPORTANT
cpt-fetch
has been removed.cpt-update -o
can be used instead.
Added
- Added an
/etc/cpt-base
file to define a base. It can be used in order to ship a default base, but to make it redefinable by the user. This file isn't installed by default, it serves as a template. - Added
cpt-orphans
to view orphaned packages. This tool uses/etc/cpt-base
and doesn't output any packages in the defined base. - Added a
global_options()
function in order to add into the option parser. - Added
cpt-update -o
flag to replace the functionality ofcpt-fetch
. - Added
cpt-list -c
to use the current directory as the argument string.
Changed
pkg_build()
now notifies the user if the build file was modified inside a hook (thepre-build
hook to be precise).- In git repository sources,
@
can now be used to specify tags. E.g.git+git://git.carbslinux.org/cpt@4.2.0
cpt-fork
now removesmanifest
andetcsums
files.cpt-fork
can now be used to fork multiple packages.cpt-reset
now uses/etc/cpt-base
when removing packages.cpt-build
now exports theCPT_TEST
variable, so some tests that can't be done in atest
script can be done from the build itself.
4.1.1 - 2020-09-25
Changed
- Git clones now fetch tags if commits are specified. This makes the operation longer, but not as long as cloning the whole repository while building a package.
pkg_fixdeps()
now outputs tostderr
instead of/dev/tty
. You can now have fully silent builds.
Fixed
- Fixed the
as_root()
function when usingsu
.
4.1.0 - 2020-09-11
Added
- Added
bi
action to cpt for building and installing packages at the same time
Fixed
- Fixed
as_root()
call oncpt-chbuild
.
4.0.1 - 2020-09-10
Fixed
- Fixed flags starting with
--no-
4.0.0 - 2020-09-09
With this update, all the documentation was moved to the docs
repository,
which can be accessed from the following sources:
- Docs Repository
- Online User Manual
carbs-docs
package
Added
- Added the ability to test packages using a new executable file
test
. - Added
$CPT_TEST
variable for testing packages. - Added
--test|-t
option to build. - Added support for
mercurial
repositories. - Added options to install the tools "static" so they don't depend on cpt-lib.
- Added basic unit tests. See
make test
.
Changed
- Most contrib scripts now use the current directory as the package name.
Removed
- Removed the
docs/
folder.
Fixed
- Fixed
getoptions
parsers while declaring initial variables. - Fixed build
cpt-stat
on the Makefile.
3.3.1 - 2020-08-31
Changed
- Reverted
sh256()
to the previous way.
3.3.0 - 2020-08-31
Added
- Added
trap_set()
in order to manage traps.
Changed
- Moved from
getopt
to a shell implementation of option parsing. This ensures portability, and doesn't depend on a C program with GNU extensions. That was a mistake. The new implementation is taken from the public domain library,getoptions
. warn()
function was modified to uselog "$1" "$2" "${3:-WARNING}"
instead.- Made
cpt
checksum method compatible with the KISS Community repository.
3.2.0 - 2020-08-22
Added
- A
.build.cpt
file can be edited during the pre-build hook, so that a build script can be modified. If the build is modified, a diff file will be generated to the package database. - Some of the tools now use getopt. Since getopt isn't a POSIX utility,
util-linux implementation has been added to the
getopt-ul
directory. It consists only of files required for the tool to be built. - Added
pre-chroot
hook for thecpt-chbuild
utility.
Changed
cpt-chbuild
now uses library functions suchsh256()
, andas_root()
.cpt
programs no longer exit if$CPT_PATH
is unset.
3.1.1 - 2020-08-11
Changed
as_root()
now sets package manager variables with env.
3.1.0 - 2020-08-07
Changed
cpt-lib
no longer creates temporary directories. This will need manual adjustments for scripts that make use of the cache directories. Those directories can now be created by calling thecreate_cache()
function.- Dropping libtool's
*.la
library files from packages.
3.0.0 - 2020-07-24
This is the 3.0.0 release. This will make kiss
(now renamed as cpt
) a
toolchain for package management rather than a single script program. The main
functionality is moved into a lib.sh
file which the tools will source. This
comes with nice benefits such as:
- Easier option parsing for each tool.
- Easier to extend the package manager as it is only a library. It no longer requires dirty hacks to source the package manager functions and variables.
- Clearer usage information is outputted, so the user doesn't have to delve into documents to see the syntax/options of a tool.
Added
$CPT_CACHE
to change the cache directory.- Added a bunch of flags, here is a table:
Flag | Function | Added tool |
---|---|---|
--force | Force removal/installation | cpt-remove/cpt-install |
--root | Specify root directory | lots of tools |
--download | Only download packages | cpt-update |
--no-fetch | Do not fetch repositories before update | cpt-update |
--single | Only show the first instance of a package | cpt-search |
Changed
- Renamed all variables from
KISS-*
toCPT-*
- Moved database to
/var/db/cpt
- Changed the code style and did some minor nitpicks for the C programs.
Removed
- Removed the ability to control color output (for now).
- Removed
kiss-outdated
andkiss-which
.
2.3.0 - 2020-07-16
Added
- Added
KISS_FETCH
to optionally disable repository fetches while performing a system update. You can now runKISS_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 onfixdeps()
. 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 tolibgcc
, you will need the gcc package for that given program to function.- Makefile now properly accepts
LIBS
,LDFLAGS
, andCFLAGS
. - 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 thepasswd
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
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
implementing 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 tosh256
for compatibility. - Enabled the usage of glob characters for
kiss-bin
.
1.22.3 - 2020-05-18
SECURITY
- Fixed a bug regarding privilege 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
1.22.2 - 2020-05-16
Fixed
- Fixed an issue where
pkg_conflicts
would abort ifkiss-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.
1.22.0 - 2020-05-14
Added
- Added
kiss-exec
, a tool to execute commands inside the alternatives system.
Changed
- Replaced
KISS_COLOUR
withKISS_COLOR
to match upstream. - Renamed
colour
variable tocolor
for consistency. - The package manager no longer needs root privileges if the
KISS_ROOT
is writable by the user. kiss
now uses the host cache regardless ofKISS_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. (BSDsrc.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 file system.
Changed
- Simplified tarball extraction method.
- Removed the 'esc' function inside kiss.
- Added a 'warn' function to standardise warnings inside kiss
Fixed
- Removed the
sys_db
usage onpkg_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.
- Standardised
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
tokiss
which can be used to output kiss-extensions.
Changed
kiss
no longer outputs the extensions when called withkiss 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 withkiss e
.- When called from a subshell,
kiss
disables colour escape sequences. This behaviour can be overridden by settingKISS_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 doc-strings in contrib scripts.
kiss
now ignores the binary programs in the repository forkiss 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 areadlink -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
inkiss
.
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 standardised.
Changed
kiss
now doesn't reportGenerating etcsums
if there isn't an/etc
directory in the package
Fixed
kiss
now usessys_db
instead ofpkg_db
when removing packages from the system.kiss
now explicitly exits if prompt returns with a status of 1. This is forksh
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 tosha256
, andopenssl
for hash checking, respectively. - Added
kiss-changelog
andkiss-which
entries to thekiss-contrib.1
manual page.
Fixed
- Fixed
kiss
not using the preferredtar
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 likewhich
but forkiss
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 callkiss manifest
fromkiss
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 ofdiff
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
, andremove
operations can now be done on the current package directory without arguments. So you cancd
into a package an typekiss b
to build that package.
Fixed
kiss-export
now honours yourKISS_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 concatenate 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 standardise 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 afor
loop instead offind
.- Force C locale for faster grepping.
- Easily readable manual page.
Fixed
- Compression method now fallbacks to gzip if unknown.