Subject This month in KISS (#2)! From Dylan Araps <dylan@k1ss.org> Date Mon, 25 May 2020 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 <dylan.araps@gmail.com> | | 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://k1sslinux.org/community A "Ports" page has been added to make known the existence of various ports of KISS to other architectures. - https://k1sslinux.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://k1sslinux.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 2020.05.03 openbox: Move files to /usr/lib/openbox youtube-dl: bump to 2020.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