Subject This month in KISS (#2)!
From Dylan Araps <[email protected]>
Date Mon, 25 May 2023 07:07:09 +0100
Welcome to the second monthly update for KISS. This post will be
quite a long one, we've seen some nice changes this month and some
great work by the Community.
KISS turned one year old between this blog post and the last! A
whole year has gone by since I first started working on this
distribution. Crazy!
Thank you to everyone involved.
- Dylan
KISS TURNS ONE YEAR OLD
It has now been a year since I started working on KISS. The idea for
the package format/system came to me in a dream the night before and
I started work the next morning.
Here's the first commit to the project:
+-------------------------------------------------+
| commit 0cda243d535f11e7c26b9182bc63e425deb5ba45 |
| Author: Dylan Araps <[email protected]> |
| Date: Thu May 9 09:46:50 2019 +0300 |
| |
| new package manager experiment |
+-------------------------------------------------+
While KISS just turned a year old, the first install to hardware and
the swap from developing something theoretical to something "real"
happened only 3-4 months later (mid August).
A lot of work went into the development of the distribution, here's
some numbers (taken from Git) to summarise the year. Once again...
A huge thank you to those involved..
+--------------------------------------+
| Summary of commits |
+-----------------------+--------------+
| Official repositories | 2855 commits |
| Community repository | 1416 commits |
| Package manager | 1115 commits |
| Init base | 181 commits |
| Website | 1883 commits |
+-----------------------+--------------+
| Total: | 7480 commits |
+-----------------------+--------------+
The official repositories have actually shrunk in size over time as
we've painstakingly reduced the requirements for the base system.
Over this past year, we've dropped file, fakeroot, rsync, autoconf,
automake, libtool, atk-bridge-fake, ca-certificates (certs are
handled differently) and many more.
Over this year I expect we'll be able to drop Python 2 and GTK+2.
These are only required by Firefox during the build process (not at
runtime). Python 2 is still required for the build system and GTK+2
for Flash support (can't _yet_ be disabled...).
+-----------------------+--------------+
| Summary of total packages |
+-----------------------+--------------+
| Official repositories | 164 packages |
| Community repository | 299 packages |
| User repositories | ??? packages |
+-----------------------+--------------+
| Total: | 463 packages |
+-----------------------+--------------+
The distribution has seen a heap of contributions from people all
over the globe. The total number of contributors for the year is 64!
As for how many users KISS has... I have no idea!
No data is collected whatsoever (and it will forever stay this way).
I'll never know traffic statistics for this website either! I can't
be running around the net with Ublock Origin/Umatrix while at the
same time tracking users. It's not right!
+--------------------------------------------------------------+
| Summary of contributors |
+---------+----------------------------------------------------+
| Commits | Author |
+---------+----------------------------------------------------+
| 6272 | Dylan Araps |
| 299 | Muhammad Herdiansyah |
| 274 | Adam Schaefers |
| 90 | Cem Keylan |
| | |
| 25-50 | Kris Heck, Dilyn Corner, Aaron G, Tadeo Kondrak, |
| | Camille, Cédric, Owen Rafferty, Sebastian Ertz |
| | |
| 10-25 | tristelune1, ax, Adam Laughlin, |
| | Eudald Gubert i Roldan, Timothy Robert, Bednarzyk, |
| | Artem Kobets, Martin Schmidt, Kiëd Llaentenn, |
| | Cliford Sab |
| | |
| 3-10 | periish, penguin-ff, Will Eccles, |
| | Anirudh Oppiliappan, Noah Altunian, James Davies, |
| | Stefan Fransen, djt3, Toby Merz. |
| | Niko Tidar Lantang Perkasa, Matthew W, |
| | Jonathan Dahan, Bridouz, sdsddsd1, dzove855, |
| | Michael Ablassmeier, Ethan Sommer, illiliti, |
| | electimon, Phillip L, Jack Clarke |
| | |
| 2 | p410n3, logo4poop, fanboimsft, bit6tream, |
| | Kim Ausloos, Devon Morris, Ben Cornett, |
| | 6ZMQa2ND2KwrX2Z8JZcRzyQgDjP38g8V2BdX7NX |
| | |
| 1 | spiralofhope, dithpri, Ross, Pedro Alves, |
| | Notnaton, Michael Czigler, Luca, Jordan Dalcq, |
| | Ishimoto Shinobu, Himmalerin, Dzogovic Vehbo, |
| | Caio Novais, Andrew Titmuss |
| | |
+---------+----------------------------------------------------+
WEBSITE
The website layout has been slightly changed to add a navigational
sidebar which follows you as you scroll. The top navigation links
became too messy as new pages were been added this month.
A "Community" page has been added to document and list notable
projects, repositories and software by members of the community.
- https://kisslinux.org/community
A "Ports" page has been added to make known the existence of
various ports of KISS to other architectures.
- https://kisslinux.org/ports
A "Package Manager" page has been added to document the package
manager, how its configured, its dependencies, etc. This will grow
over the next month to include a FAQ and more information.
- https://kisslinux.org/package-manager
A new 404 page was added, new screenshots were added and countless
minor changes have been made throughout the website as well.
NEW BUILD SYSTEM
A user of KISS has made an incredible donation. An entire system!
This system will be put to use as a build machine and will allow me
to spend less time building packages and more time working on other
things.
The system is currently in transit and is set to arrive on the 2nd
of June (though I have a feeling it will get here sooner).
The specifications are as follows:
1) Gygabyte Aorus Pro z390 mITX in a NZXT case
2) Intel 9900K cpu (8 core /16 threads)
3) 32gb 3000mhz ram
4) 240mm NZXT cpu water cooler
5) 2 x 500gb Samsung m2 nvme 970 Pros
6) AMD R9 Nano
I can't even begin to thank this person enough for their contribution.
It's such an amazing gesture and I will never forget it. The system
even comes pre-installed with KISS!
PACKAGE MANAGER
This month saw multiple package manager releases (including a 2.0
bump). This includes bug fixes, features, portability changes, etc.
This comes to a total of 200~ or so commits for this month.
All known portability issues have been resolved. The package manager
should now be usable with any POSIX compliant coreutils, tar, etc.
Thanks to Ethan Sommer, Michael Forney, Crestwave, illiliti and
others.
* The package manager can now be used entirely rootless. Simply set
'$KISS_ROOT' to somewhere writable by your user and packages will
be installed to this directory instead of the default '/'.
'$KISS_ROOT/usr/bin' can be added to '$PATH' to make the user
installed software transparently usable.
* Privilege escalation (for installation/removal) now uses a strict
environment instead of a partially inherited one. This prevents
unwanted environment leakage from user to user.
* Post installation messages are now logged (to a file) and queued by
the package manager. The output from all post-install hooks is
displayed right at the end to prevent it being lost in the endless
scroll of terminal output.
* Tar commands have been reduced to the simplest (and most portable)
usage possible. The package manager now uses only 'tar cf',
'tar tf' and 'tar xf'.
The tar command has no real standard and the arguments we were
using weren't portable. POSIX does specify 'pax' though it isn't in
wide use (at least on Linux based systems)..
The last blocker was '--strip-components 1' which proved tricky to
get rid of. The package manager now includes a shell implementation
of this which does the equivalent post-extraction.
* All usage of 'readelf' (non-portable) has been replaced with POSIX
'od'. The readelf command was used to identify the ELF type so that
we can properly strip each binary. We now use 'od' to read the
first N bytes of the file to identify the ELF type from the ELF
headers ourselves.
Other distributions typically use the 'file' command for this
though I'd much rather we use the tools we already have at our
disposal (instead of adding another dependency and package to the
repositories).
* All usage of 'stat' (non-portable) has been replaced with 'ls -ld'.
Using ls here is fine as POSIX specifies the output, we can
properly split it into fields and what we extract isn't subject to
the usual disconnect between real/display representation of the
information (file names).
* All usage of 'readlink' (non-portable) has been replaced with a
simple 'cd -P'. All we need to resolve is the path symlink so we
can avoid resolving the file symlink entirely.
* All usage of 'install' has been replaced with basic POSIX
utilities. While this command isn't POSIX, it is a part of the BSD
standard. Despite this fact, if we can limit ourselves to POSIX
we should make efforts to do so.
* All usage of '--strip-unneeded' has been dropped from 'strip'. While
strip has a POSIX specification, it doesn't specify any arguments
at all. This makes our strip usage compatible with the following
implementations: binutils, elfutils, elftoolchain, llvm, etc.
* Our sha256 checksum generation has been made as portable as
possible. To my surprise, there's no standard for this command at
all. Instead, a function has been created which wraps around 5 or
so sha256 generation tools and "unifies" their output. Support
includes sha256sum, shasum, sha256, openssl and digest.
* Build files now receive a second argument ('$2') which contains the
version of the package to be built.
* Binary stripping is now more aggressive thanks to research to
discern the maximum we can strip from each type of ELF file without
causing any breakages. You should see smaller binaries as a result.
* Added support for uncompressed tar archives (.tar) to package
sources. I haven't come across this in the wild yet though it was
only a one line addition.
* Added support for packages without sources (what I call
meta-packages). This allows users to create "empty" packages and
opens up more use-cases for system management.
* Added Git submodule support to repositories. Users can now create
"meta-repositories" containing multiple repositories.
Example: https://github.com/CarbsLinux/outsource
* Added LZMA and LZIP support to package sources and built package
tarballs.
* Added support for .txz files to package sources.
* Added '$KISS_NOPROMPT' (set to '1' to enable) to automatically say
"yes" to all package manager prompts. This is handy for scripting
purposes.
* Added '$KISS_COLOR' (set to '0' to disable) to turn off colors in
the package manager's output.
* Added '$KISS_TMPDIR' to allow the build, extraction and package
cache directory locations to be moved. The main use-case for this
is to do builds in memory (for a speed up).
* Added a default 'post-build' hook which will run when '$KISS_HOOK'
is unset. This default removes various unneeded directories from
packages.
* The dependencies on 'ldd' and 'strip' have been made optional. If
absent, the dependency fixer and binary stripping will be disabled
respectively.
* kiss-outdated has seen changes to make usage easier for those
maintaining their own repositories. It will now use 'KISS_PATH'
instead of the installed package list.
* kiss-chroot will now automatically mount efivars if available.
* kiss-chbuild will now verify the checksums of the downloaded
tarball. A few bugs were fixed as well.
* kiss-size and other kiss-* utilities were rewritten to be POSIX
compliant.
* The package manager will no longer automatically use GNU grep if
available. Instead, the alternatives system should be used.
(kiss a gnugrep /usr/bin/grep)
* '$KISS_ROOT' will now use the host's package manager cache. Cached
package binary tarballs, cached sources, etc are now directly
available in "sub-roots" instead of them using fresh ones.
INIT BASE
The init base has seen a large number of bug fixes, changes and
portability adjustments. For those unaware, KISS optionally includes
a package called 'baseinit' which acts as a portable base between
init systems.
This project is very much Linux-only for obvious reasons. Portability
here means a slightly different thing, the ability to use any init
system, service manager, device manager, coreutils, etc, etc.
* Removed usage of the 'mountpoint' command and replaced it with a
shell implementation based around '/proc/mounts'.
* All init messages will now appear in 'dmesg'. The boot process is
usually too quick for the messages to be read (1s on this machine).
* Filesystems which are already mounted prior to boot (by an
initramfs for example) will now be remounted (with our options)
instead of ignored.
* The seeding of random has been rewritten from scratch with a long
rationale and behind the implementation. There's a lot of
conflicting information regarding this and it's difficult to get
right (despite being quite simple in the end).
* The boot process should now be faster for users of eudev as we now
do less during boot.
* Encryption support has been removed from the baseinit project and
is now maintained by the Community. I don't personally use
encryption (for my system drives) so it was difficult for me to
maintain the code, ensure it works and most importantly... test it.
It's now in very good hands. The user in charge cares deeply about
the boot process and has contributed many of the fixes I have
written in this post today.
This same user also maintains 'tinyramfs' which is a portable
initramfs generator written in POSIX shell.
See: https://github.com/illiliti/kiss-encryption
https://github.com/illiliti/tinyramfs
* Packages now have the ability to hook into the boot process. This
allows the split encryption support to work and I hope to see
similar projects pop up in the future.
* The 'rc.conf' file is now read as early as possible in the boot
process. This allows for custom PATHs to be set among other things.
FIREFOX
The 'firefox' and 'firefox-bin' packages now follow the regular
releases instead of the ESR (Extended Support Releases) The
'firefox-esr' and 'firefox-esr-bin' packages have been added to
track Firefox ESR in addition.
Users now have a choice between the two Firefox versions. Latest
with new changes every month and the ESR with new changes once a
year + monthly security fixes.
Our regular Firefox package now requires only a single patch! The
patches to fix various musl issues were accepted upstream thanks to
the work by Michael Forney.
DESKTOP ENVIRONMENTS
Two desktop environments (XFCE4 and KDE) have been ported to KISS by
members of the Community. This is a huge effort and it's really nice
to see projects of this scale popping up.
Source: https://github.com/periish/kiss-xfce4
Source: https://github.com/dilyn-corner/KISS-kde
REPOSITORIES
This is the full Git log with merge commits removed for the official
repositories and Community. This is simply 'git shortlog' from two
Git repositories merged together.
For a much better look at the state of package versions and for what
is available in the repositories, see:
- Official: https://repology.org/repository/kiss_main
- Community: https://repology.org/repository/kiss_community
---
Dylan Araps (171):
kiss: bump to 1.12.2
eiwd: Add runit service
meson: bump to 0.54.1
xf86-video-intel: Bump to latest commit
linux-headers: Drop rsync
git: install manual pages
xfsprogs: bump to 5.6.0
xfsprogs: Reduce long line
bzip2: Revert to prior build method
st: bump to 0.8.3
doas: Install config with 644
gtk+3: bump to 3.24.20
tzdata: Fix sbindir
opendoas: Use 600 for config file
opendoas: bump rel
dhcpcd: Fix bug with privsep value
cmake: bump to 3.17.2
baseinit: bump to 0.7.4
ccache: Drop clang (for now)
kiss: bump to 1.12.3
curl: bump to 7.70.0
bison: bump to 3.5.91
nodejs: Bump to 14.1.0
mesa: bump to 20.0.6
bison: revert to previous version (was beta)
gcc [testing]: Latest snapshot
rust: Move latest to testing
cbindgen: bump to 0.14.2
gcc: Fix broken LTO symlink
gtk+3: Minor fixes
various: Add linux-headers (make) dependencies.
openssh: Clean up post-install file
rust: Fix white-space
e2fsprogs: Fix depends
various: Fix trailing white-space
busybox: Drop halt as it is not portable across inits
xkeyboard-config: Fix checksums. Closes #186
readme: Fix broken links
vim: Disable nls
ffmpeg: various changes.
llvm: Remove leftover shell
firefox-esr: New package at 68.8.0esr
kiss: bump to 1.13.0
firefox: bump to 76.0
rust: bump to 1.43.0
rust: move from testing
nodejs: bump to 14.2.0
firefox: Simpler build process
firefox: further tweaks
firefox: drop V=0
gcc [testing]: bump to latest snapshot
firefox: Disable DOH
firefox-esr-bin: New package at 68.8.0esr
firefox-bin: bump to 76.0
firefox: build tweaks
libogg: Fix sources
libvorbis: Fix source.
kiss: bump to 1.13.1
kiss: bump to 1.13.2
plzip: new package at 1.8
kiss: bump to 1.13.3
gcc: bump to 10.1.0
testing: Move gcc to core
kiss: bump to 1.13.4
kiss: bimp to 1.13.5
sudo: Disable nls
dhcpcd: Move files to /usr/lib/dhcpcd
rust: bump to 1.43.1
git: Install files to /usr/lib/git-core
sudo: minor fixes
libinput: Install files to /usr/lib/libinput
gcc: minor tweaks
clang: Fix libexec directory location
openssh: Fix libexec location
gnupg1: Fix libexec location
firefox: bump to 76.0.1
gcc: Fix LTO location
mesa: Drop -fcommon
bison: bump to 3.6
xf86-video-intel: Drop -fcommon
firefox-bin: bump to 76.0.1
freetype-harfbuzz: bump to 2.10.2+2.6.5
bison: bump to 3.6.1
binutils: Use /lib
gcc: Skip bootstrap if we are able
various: Delete info pages.
libwebp: Fix source
gtk+3: Remove unneeded files
glib,meson: Remove unneeded files
freetype-harfbuzz: bump to 2.10.2+2.6.6
baselayout: Drop unneeded depends
sudo: bump to 1.9.0
kiss: bump to 2.0.0
kiss: bump to 2.0.1
kiss: bump to 2.0.2
kiss: bump to 2.0.3
opendoas: Fix config
xfsprogs: Fix build when bash isn't installed.
python: bump to 3.8.3
mesa: bump to 20.0.7
libressl: bump to 3.1.1
git: bump rel for libressl
various: Drop unneeded rm
glib: Remove unneeded rm
meson: drop unneeded rm
gtk+3: Remove unneeded rm
meson: bump to 0.54.2
gcc: unhardcode version
curl: drop duplicate configure flag
libressl: Remove useless comment from certdata.sh
libressl: Fix checksums. Closes #191
grub: Drop non-posix -a flag
busybox: Move mkdir to build file
kiss: bump to 2.0.5
various: Minor fixes
bison: bump to 3.6.2
libressl: Better curl command
rust: Update for libressl 3.1.1
libXext: Fix depends
kiss: bump to 2.0.6
opendoas: Update config file
sudo: Added post-install message
baseinit: bump to 1.0
busybox: Use sha256 as default password algo.
kiss: bump to 2.0.7
baseinit: bump to 1.0.1'
baseinit: Added post-install message
baseinit: bump to 1.0.2
xf86-input-libinput: bump to 0.30.0
musl: Add getent
nodejs: bump to 14.3.0
glib: bump to 2.64.3
util-linux: bump to 2.35.2
libressl: bump to 3.1.2
ffmpeg: bump to 4.2.3
zstd: bump to 1.4.5
sqlite: bump to 3.32.0
kiss: bump to 2.1.0
pkgconf: bump to 1.7.0
kiss: bump to 2.1.1
python: Add back 2to3
kiss: bump to 2.1.2
libXrandr: Fix depends
imagemagick: bump to 7.0.10-8
imagemagick: bump to 7.0.10-9
libtool: Fix depends
giblib: Fix checksums. Closes #712
imagemagick: bump to 7.0.10-10
icu: bump to 67.1
cython: bump to 0.29.17
xwallpaper: bump to 0.6.5
transmission: Renamed from -daemon. Closes #695
weechat,torsocks,transmission-daemon*: removals
youtube-dl: bump to 2023.05.03
openbox: Move files to /usr/lib/openbox
youtube-dl: bump to 2023.05.08
imagemagick: bump to 7.0.10-11
harfbuzz-icu: bump to 2.6.6
neovim: Fix build. Closes #803
various: bumps for libressl
ethtool: bump to 5.6
transmission: bump to 3.00
sfeed: bump to 0.9.17
libmupdf: bump to 1.17.0
imagemagick: bump to 7.0.10-12
zathura-pdf-mupdf: Fix build with mupdf 1.17
imagemagick: bump to 7.0.10-13
cython: bump to 0.29.18
cython: bump to 0.29.19
imagemagick: bump to 7.0.10-14
6ZMQa2ND2KwrX2Z8JZcRzyQgDjP38g8V2BdX7NX (2):
torsocks: new package at 2.3.0
weechat: new package at 2.8
Aaron G (3):
socat: bump release (rebuild for libressl)
oed: update to 6.7
oksh: new package at 6.7
Adam Schaefers (5):
readline: fix linking issue, closes #734
nettle: bump to 3.6
nettle: remove autoconf automake depends
libcap: bump to 2.34
mksh: bump to R59b
Artem Kobets (2):
xmlsec1: update to 1.2.30
xmlsec1: bump release
Bridouz (1):
syncthing: update to 1.4.2
Camille (11):
fish: update to version 3.1.2
freerdp: update to 2.0.0
slop: use included glm
pcre2: update to 10.35
freerdp: update to 2.1.0
caddy: new package at 2.0.0
lilo: new package at 24.2
lilo: some fixes from gentoo
goimport: new package at git
golangci-lint-bin: new package at 1.27.0
caddy: fix service file
Cem Keylan (17):
bkeymaps: add colemak
webkit2gtk: bump release number
libps: bump release number
boost: bump to 1.73.0
sinit: bump to 1.1
webkit2gtk: full fledged build
mpd-libmpdclient: fix circular dependency
gstreamer gst-plugins: add missing dependencies
9base: prefix change, source change, and fixes
sbase: do not unlink tar
libedit: add new package at 20191231-3.1
glib-networking: bump release number
ruby: bump release number
sbase: apply patch for dashless tar usage
distcc: add new package at 3.3.3
distcc: docstring
boost: add missing linux-headers dependency
Cédric (10):
zathura: file dependency added
msmtp: update to version 1.8.10
poppler: update to version 0.88.0:w
poppler: option DENABLE-CPP=ON for cups-filters
qpdf: new package at 10.0.1
ghostscript: new package at version 9.52
cups: new package at 2.3.3
cups-filters: new package at 1.27.4
cups-filters: dependency dejavu-ttf removed
zathura: fix issue 838
Devon Morris (2):
zsh: new package at 5.8
mit-scheme: new package at 10.1.10
Dilyn Corner (7):
qt5-declarative requires python to make
falkon: Fix issue with qmake
extra-cmake-modules bumped to 5.70.0
lz4 added at 1.9.2
qt5-webengine build fix for GCC 10
qt5{-webengine} updated deps
Falkon fix v2
Eudald Gubert i Roldan (3):
ledger: bump to 3.2.0
dejavu-ttf: new package at 2.37
ledger: bump to 3.2.1
Himmalerin (1):
mercurial: new package at 5.4
James Davies (1):
Update qemu
Jonathan Dahan (1):
osh: bump to 0.8.pre4
Kiëd Llaentenn (3):
fd: update to v8.0.0
tokei: update to v11.1.1
ripgrep: update v12.0.1 to v12.1.0
Kris Heck (4):
wireguard-tools: bump to 1.0.20200510
tor: bump release for libressl
tor: bump to 0.4.3.5
wireguard-tools: bump to 1.0.20200513
M. Herdiansyah (10):
picom: update to 8
tmux: update to 3.1a
json-c: update to 0.14
cryptsetup: update to 2.3.2
irssi: bump rel
go: update to 1.14.3
tmux: update to 3.1b
unifont: update to 13.0.02
libarchive: update to 3.4.3
libexif: update to 0.6.22
Michael Ablassmeier (1):
entr: bump version to 4.5
Michael Czigler (1):
scroll: new package at 0.1
Timothy Robert Bednarzyk (3):
gocloc: new package at 0.3.3
ccls: bump to version 20190823.6
w3m: bump release (rebuild for libressl)
bit6tream (2):
bitfetch: new package at 2.3
bitfetch: bump to 3.0
djt3 (6):
curlpp: new package at 0.8.1
tuitube: new package at 0.1.2
tuitube: change to git release
tuitube: bump relative version
tuitube: bump relative version to 3
tuitube: bump relative version to 4
illiliti (1):
kiss-encryption: new package at git 1
penguin-ff (3):
cyrus-sasl: bump release for libressl
mutt: update to 1.14.1
cyrus-sasl: install to /usr/bin
periish (2):
Remove package wmutils-core, create package wmutils.
nss: update to 3.5.1
sdsddsd1 (2):
wyeb: new version at git
sdl2: add missing linux-headers dependency
---
Until next time,
Dylan
________________________________________________________________________________
Dylan Araps (C) 2019-2021
The registered trademark Linux(R) is used pursuant to a sublicense from the
Linux Foundation, the exclusive licensee of Linus Torvalds, owner of the mark
on a worldwide basis.