Funtoo Kits

From Funtoo
Jump to: navigation, search

Funtoo Kits

'Kits' are logical parts of the Gentoo Portage tree that we have turned into overlays for the purpose of stability and other purposes. In the past, we have used internal auto-generated overlays called 'shards' to help stabilize Funtoo, but our users don't interact with them directly -- they are used by our merge scripts. 'Kits' are the new generation of shards, and they differ in that they are a real overlay that exists on your system. Kits give us better control over the quality and reliability of ebuilds and give our users more flexibility as to whether they want to run reliable packages or bleeding-edge code.

Kits allow us to set stability levels on logical sets of packages rather than the entire tree as a whole (such as by using funtoo-stable)-- so we can have the latest and greatest version of gimp, for example, but choose to have a very stable xorg. Or if we delve into newer, less-tested packages, we get to put our toe in the water rather than jumping in the deep-end of the pool.

The mantra and vision of kits is as follows: "If my system becomes unstable, I want it to become unstable because I choose to use a more experimental or new set of packages, not just because I applied regular updates via emerge -auDN @world" This is the strategic vision of the effort and what we are striving to deliver. At the same time, we don't want to take away the ability of users to run newer versions of packages if they choose.

Ultimately, this means that we need to maintain a "curated" set of ebuilds that are very stable and that we trust, and that only get improvements that we can trust fix specific stability issues, vulnerabilities and bugs without introducing new code that can potentially make things less stable. And of course we also need to support the ability for Funtoo users to run the latest (and to some) greatest versions of ebuilds if they want. Kits makes this possible -- allowing us to deliver rock-solid stability and bleeding-edge code at the same time.

Welcome meta-repo

Meta-repo is a git repository that contains all the ports trees for Funtoo Linux. The ports trees for Funtoo Linux are stored in the kits sub-directory, as git submodules. For those who are unfamiliar with submodules, they are essentially git's flavor of 'symbolic links' to other repositories, so that a git repository can link to other repositories.

Please note that meta-repo is currently in beta. If you use meta-repo at the moment, it should be for the primary purpose of testing meta-repo for Funtoo Linux. It will receive significantly fewer updates than our regular ports tree, so this if this concerns you, you should not be using meta-repo at this time.

Using Meta-Repo

To use meta-repo as your meta-repository for Funtoo Linux, perform the following steps on your Funtoo Linux system, as root:

# cd /var/git
# git clone https://github.com/funtoo/meta-repo.git
# cd meta-repo
# git submodule init
# git submodule update
# rm /usr/share/portage/config/repos.conf
# mv /etc/portage/repos.conf /etc/portage/repos.conf.bak
# mkdir /etc/portage/repos.conf
# ln -s /var/git/meta-repo/repos.conf /etc/portage/repos.conf/funtoo
# chown -R portage:portage /var/git/meta-repo

At this point, you should be able to use the emerge command and use Portage normally.

What is Included

Meta-repo consists of a number of 'kits', which are independent overlays that contain ebuilds related to a specific set of functionality. The following kits currently exist as submodules in meta-repo. Note that xorg-kit is the only one that is currently documented:


  • core-kit - Core-kit contains a set of what we consider 'core' ebuilds -- ebuilds needed to build a stage3, plus essential userland utilities, firmware, development tools and libraries, except for perl and python.
  • python-kit - As the name suggests, python-kit contains all ebuilds related to python, which includes dev-lang/python as well as all all dev-python ebuilds.
  • perl-kit - Similar to python-kit, perl-kit contains all ebuilds related to perl.
  • php-kit - Similar to python-kit, php-kit contains ebuilds that provide core PHP support.
  • security-kit - Security-kit contains all core ebuilds related to Kerberos, SELinux and other security-enhanced Linux technologies.
  • editors-kit - Editors-kit contains all ebuilds related to text editors, including vim, emacs and xemacs and their plugins.
  • media-kit - Media-kit contains all ebuilds related to media, which typically includes all ebuilds in the media-* category other than those that are included in xorg-kit.
  • xorg-kit - Xorg-kit contains all ebuilds that provide core graphics functionality, including xorg-server, OpenGL/Mesa, Vulkan, etc.
  • desktop-kit - Desktop-kit includes all non-GNOME, KDE or GNUSTEP desktop environments and applications. This includes all window managers, leechcraft, office suites, lxde, lxqt, MATE, XFCE and general X applications, terms and themes.
  • gnome-kit - Gnome-kit includes all ebuilds related to setting up a GNOME environment.
  • kde-kit - Kde-kit includes all ebuilds that compose a KDE environment, and associated KDE/QT applications.
  • media-kit - Media-kit contains all media and graphics-related applications and tools.
  • net-kit - Net-kit contains all network applications, including Web and other application servers, as well as Web browsers.
  • science-kit - Science-kit contains all ebuilds related to scientific research.
  • text-kit - Text-kit contains text-related tools and libraries, TeX, texlive, dictionaries and documentation.
  • java-kit - Java-kit contains all Java-related ebuilds -- JDKs, JREs, java libraries, etc.
  • dev-kit - Dev-kit contains all development tools, libraries and utilities, except for core dev tools and libraries, perl, python, PHP and Java.
  • games-kit - Games-kit contains all games, except for certain games included by default with desktop environments (which will be bundled in gnome-kit, for exmaple.)
  • nokit - The 'nokit' kit contains all ebuilds that have not yet been 'kitted', or added to their own kit. If an ebuild isn't in one of the kits above, and it's in Funtoo, then it's part of nokit.

Active Branches

The following branches are active by default in meta-kit:

kit name branch
core-kit 1.0-prime
python-kit 3.4-prime
perl-kit 5.24-prime
security-kit 1.0-prime
media-kit 1.0-snap
xorg-kit 1.17-prime
xorg-kit 1.19-snap
gnome-kit 3.20-prime
php-kit 7.1.3-prime
java-kit master
dev-kit master
kde-kit master
desktop-kit master
editors-kit master
net-kit master
text-kit master
science-kit master
games-kit master
nokit master

"-prime" indicates an enterprise-stable branch, "-snap" indicates a stable branch, and "master" indicates a branch that exists simply to group ebuilds -- no freezing of ebuilds occurs here and the latest ebuilds from Gentoo are made available.

These are the branches that we plan to maintain going forward.

Reporting Bugs

To report bugs or suggest improvements to meta-kit, please use the Funtoo Linux bug tracker at https://bugs.funtoo.org. Thank you! :)