aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.md
blob: 85f95c70912137749f1be4513f52e1275cae5bc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
CHANGELOG
================================================================================

This is the CHANGELOG for the Carbs Packaging Tools, initially a customised 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


[UNRELEASED]
--------------------------------------------------------------------------------

### Configuration Directory
- In order to simplify file locations and messing up the `/etc` directory, CPT
  now uses the `/etc/cpt` directory for reading related files. The location of
  your system configuration directory is defined by the `--sysconfdir` flag in
  the `./configure` script, it uses `/etc` if the prefix is `/usr`.
- Since the location of the configuration can differ between installations,
  `$cpt_confdir` variable can be used in programs using `cpt-lib` to get the
  user's configuration directory.
- This change currently doesn't break `cpt-base`, but you are advised to
  rename your configuration files.
- `/etc/cpt-base` is renamed to `/etc/cpt/base` (considering `$cpt_confdir` is
  `/etc/cpt`)

### Changes on hook behaviour
- `/etc/cpt-hook` will no longer be used.
- User hooks (as defined by `$CPT_HOOK` will be run regardless of the hook type.
  I have realised that overriding user hooks on some operations was a mistake.
  If the users already have the privilege to install packages, they should also
  be able to run hooks without an interruption of the package manager.
- Even though `/etc/cpt-hook` file is removed, a collection of systemwide hooks
  can be added to the `/etc/cpt/hooks`directory. Any file in this directory will
  be sourced by the package manager when running hooks. User hooks are run
  _after_ systemwide hooks are run.
- Added new hooks: `end-install` and `end-remove` that are run when
  installation/removal is complete (not per-package).
  
### Changed
- `cpt-update` is now re-entrant, meaning that it is no longer needed to run the
  update twice, `cpt-update` will continue the updates with the new version of
  itself.
- The package manager now can handle circular dependencies and exit gracefully.

### Library
- In order to get the `$deps` variable, one now has to use the new
  `pkg_depends_commit()` function.
  

[6.2.2] - 2021-11-09
--------------------------------------------------------------------------------

### Fixed
- `cpt-alternatives` now properly logs file swaps even when the original file
  no longer exists.
- Minor fixes


[6.2.1] - 2021-09-20
--------------------------------------------------------------------------------

### Fixed
- `cpt-fork` follows symbolic links when forking packages.
- Fixed "crux-like" usage in `cpt-size`
- Fixed documentation path in the manual page


[6.2.0] - 2021-08-14
--------------------------------------------------------------------------------

### BLAKE3 checksums

The package manager now uses `b3sum` for creating digests. The change is
backwards compatible, which means that BLAKE3 will slowly replace the SHA256
algorithm in packages. The `cpt` package in the repository will continue to use
the sha256 until the end of 2021.

The `checksums` files generated with BLAKE3 has the header `%BLAKE3` which is
used to distinguish digest algorithms. If the file does not include such a
header, it is assumed to be a file created using the SHA256 algorithm. This is
especially handy for keeping the /etc checksums intact. If the package being
built is already installed on the system `cpt` makes sure that the generated
etcsums are also backwards compatible.


### Description searching

`cpt-search` utility has a new mode for searching through the package names and
descriptions, which is enabled by the `-q` flag. The output is really similar to
how the `apt search` command works, but the output is not meant for scripting.
Descriptions are defined by the `description` keys in the meta file.

Instead of wildcards, the passed argument is expected to be a POSIX Basic
Regular Expression, and is interpreted by `grep`. `cpt-search` also accepts the
`-F` flag for passing literal expressions.


### Added
- `cpt-checksum` now has the `-s` flag to generate checksums using the SHA256
  digest algorithm.
- Added `CPT_DOWNLOADER` variable to change the download program. Available
  options are: `curl`, `wget`, `wget2`, `aria2c`, and `axel`.
- `cpt-chroot` now has the flag `-m` to disable mounting/unmounting pseudo
  filesystems.
- This changelog is now installed by the `Makefile`.
- `cpt-chbuild` now has `-r` flag to redownload the chroot.

### Changed
- `cpt-size` has been rewritten to support POSIX `du`, and to support packages
  with a file count of over 50,000.
- Installation now requires to run `./configure`.


[6.1.1] - 2021-08-04
--------------------------------------------------------------------------------

### Fixed
- Fixed a rare bug during manifest generation that caused an empty line inside
  the package manifest.


[6.1.0] - 2021-07-22
--------------------------------------------------------------------------------

### IMPORTANT
- The package manager now enforces the usage of `pax` instead of `tar`.

### Repository Backend

`cpt` now has a faster and modular repository backend. `fossil` is now supported
by the package manager. During the repository fetch process, the repository
backend is stored in the cache directory so that the update takes less time on
the next pull. The usage of the repository cache can be disabled by setting
`$CPT_REPO_CACHE` to 0.

### Added
- Added `-q, --quiet` flags to `cpt-list`.
- Re-added `cpt-maintainer`. It now supports `meta` and repository backends
  other than `git`.
- The package manager now prints out `MOTD` files found on the repository root.
- Added the `$CPT_VERBOSE` variable and the `--verbose` flags to some utilities.
  With the addition of these, some parts of the package manager will be more
  quiet unless verbosity is explicitly requested.

### Changed
- Reworked the package repository backend.


[6.0.4] - 2021-05-12
--------------------------------------------------------------------------------

### Fixed
- Fixed the declaration place of the `$pid` variable


[6.0.3] - 2021-05-10
--------------------------------------------------------------------------------

### Fixed
- Fixed interrupt behaviour when downloading package sources.
- Fixed `cpt --help` output when inside a directory prefixed with `cpt-`


[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 using `cpt-link`.
- Added manual pages for all `cpt-contrib` scripts.
- Added `lz` compression/decompression support to `$CPT_COMPRESS`.

### Changed
- Moved `cpt-lib` to `cpt-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 version `2.5.0`.

### Fixed
- Fixed `cpt-cat` not using the `CPT_ROOT` value.
- Fixed an error with the usage of `sbase grep` that resulted in exit when
  removing packages.

### Removed
- Removed C binaries `cpt-readlink` and `cpt-stat` and instead replaced them
  with `_readlink()` and `_stat()` library functions.


[ssu]: https://github.com/illiliti/ssu

[5.1.2] - 2021-01-04
--------------------------------------------------------------------------------

### Fixed
- Fixed the `Makefile` installing files other than `cpt-*` 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 to `pkg_fix_deps()`.
- `cpt-lib` now parses options for you if `parser_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 version `2.0.1`
- Added `git` to the default `cpt-base`.
- Temporary cache creation scheme is changed from `build-$pid/` to
  `proc/$pid/build/`

### Fixed
- Moved option parsing to cpt-lib if `parser_definition` exists. This shouldn't
  affect existing scripts where `cpt-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 of `cpt-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 (the `pre-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 removes `manifest` and `etcsums` 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 the `CPT_TEST` variable, so some tests that can't be
  done in a `test` 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 to `stderr` instead of `/dev/tty`. You can now
  have fully silent builds.

### Fixed
- Fixed the `as_root()` function when using `su`.


[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 on `cpt-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](https://github.com/carbslinux/docs)
- [Online User Manual](https://carbslinux.org/docs)
- `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 use `log "$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 the `cpt-chbuild` utility.

### Changed
- `cpt-chbuild` now uses library functions such `sh256()`, and `as_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 the `create_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-*` to `CPT-*`
- 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` and `kiss-which`.


[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
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 to `sh256` 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]

[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 privileges 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
  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 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.
- 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` 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 overridden 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 doc-strings 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 standardised.

### 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 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 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.