The best way to contact me over Gentoo topics is to catch me in #gentoo or other channels on Freenode. Otherwise you can send e-mails to pavlix at pavlix.net. In very rare cases you may want to call me via phone number +420 775 996 256.
After learning a bit of programming, I was attracted by the networking world. I got from petty Pascal/C++ projects through web development using PHP and later Python, to years of freelancing work with most of the projects in server administration, network equipment configuration and a bit of programming. I was active in the community, wrote articles and spoke at conferences which finally led to my joining Red Hat in May 2012 to work on NetworkManager. I was already a Fedora user and package maintainer at that time. From August 2013 to November 2016 I was working on various network related packages and projects. Since December 2016 I am working on service containerization using Docker for Fedora Modularity and looking for a change.
I'm more of a pragmatic user of Gentoo. As an open source software developer digging into many projects, I'm taking advantage of portage, overlays, ebuilds and user patches. Gentoo serves the purpose of quickly turning my wishes into an installed package I can use for further testing or daily use. My motivation for being involved in Gentoo is simply to share my results with the community that shares so much with me.
My ebuilds and overlays
- ixit overlay (co-maintainer with User:Okias)
- NetworkManager, nm-applet, unbound and dnssec-trigger
- iproute2, pyroute2, libnl, libndp
- kernelconfig, systemd2rc
- Gentoo ebuilds for Fedora and CentOS development (maintainer)
- rpmdevtools, rpmlint
- fedora-packager, fedpkg, koji, bodhi, mock, packagedb, copr
- support for Python 3.x
- OpenWRT software packaged for Gentoo (maintainer)
- Enlightenment WM latest stable version and live ebuilds (silent co-maintainer with User:rafspiny, visit #gentoo-e on Freenode)
You can use gpo.zugaina.org to search the above overlays.
My suggestions and ideas
QA: Use sandbox to check dependencies
The sandbox already checks which files are written and protects the system from being tampered with whe building a package. It could also be used to check which files are read in order to ensure the following properties of the ebuild.
- When building, no files except those owned by the base system and packages explicitly stated in
DEPENDshould be read. Otherwise there's a hidden dependency.
- For each package in
DEPEND, at least one file should be read that belongs to the package. Otherwise there's a redundant dependency.
Note that this setup is very strict and would be only applicable for selected known good packages.
Project: Kernel configuration
I would like to configure kernel in a more sane and predictable way.
- I want to select a basic profile like generic for a best effort desktop/laptop configuration with a broad device support or minimal for a minimal Gentoo kernel configuration that needs to be tweaked to specific hardware.
- Then I want to develop a specific override for my hardware to be used with the minimal profile. I would share this override with fellow Gentoo users for example here in the Wiki. As a laptop user, I would generally use one override for the laptop and possibly also another override for extended support of external USB devices and stuff like that.
- Next I would like to be able to apply overrides for the purpose of the machine like advanced-router featuring routing and traffic control modules that are not normally needed on end user machines.
- Some of the features should also be triggered by overrides dropped by packages that require some kernel features like libvirt or qemu.
- When there would be still something to be configured, I would like to handle it using the last, user supplied, override to perform any remaining configuration changes.
Project: Convert systemd unit files to initscripts
The following is a list of hardware pages for hardware that I know something about.
- Lenovo ThinkPad X61
- Lenovo ThinkPad X201
- Lenovo ThinkPad T420s
- Lenovo ThinkPad X230
- Lenovo ThinkPad T540P
(See also: Category:Laptops)
(See also: Category:Motherboards)
Base operating system topics I'm interested in.
- systemd (primarily to make Gentoo close to my work setup)
- genkernel-next (formerly genkernel)
Developmnet / Testing
Tips and tricks
I already moved some of them to the respective wiki pages:
Force --autounmask-write changes
US and Czech qwerty keyboard layouts, toggled with Alt+Shift, with AltGr+Menu as Compose/Multi key.
setxkbmap "us,cz(qwerty)" -option grp:alt_shift_toggle,compose:menu-altgr
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Device Accel Profile" 8 3 xinput set-float-prop "TPPS/2 IBM TrackPoint" "Device Accel Velocity Scaling" 30 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation" 8 1 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Button" 8 2 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Timeout" 16 200 xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Axes" 8 6 7 4 5
Portage: Restart emerge automatically after autounmask-write
=======================================================--- portage-2.2.8.orig/pym/_emerge/depgraph.py +++ portage-2.2.8/pym/_emerge/depgraph.py @@ -27,7 +27,7 @@ from portage.dep._slot_operator import i from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use, \ _get_eapi_attrs from portage.exception import (InvalidAtom, InvalidData, InvalidDependString, - PackageNotFound, PortageException) + PackageNotFound, PortageException, RetryEmerge) from portage.output import colorize, create_color_func, \ darkgreen, green bad = create_color_func("BAD") @@ -7349,6 +7349,8 @@ class depgraph(object): for root in roots: chk_updated_cfg_files(root, [os.path.join(os.sep, USER_CONFIG_PATH)]) + if autounmask_write: + raise RetryEmerge("Re-try emerge") elif not pretend and not autounmask_write and roots: writemsg("\nUse --autounmask-write to write changes to config files (honoring\n" "CONFIG_PROTECT). Carefully examine the list of proposed changes,\n" Index: portage-2.2.8/pym/_emerge/main.py
=======================================================--- portage-2.2.8.orig/pym/_emerge/main.py +++ portage-2.2.8/pym/_emerge/main.py @@ -18,6 +18,7 @@ portage.proxy.lazyimport.lazyimport(glob '_emerge.is_valid_package_atom:insert_category_into_atom' ) from portage import os +from portage.exception import RetryEmerge from portage.util._argparse import ArgumentParser if sys.hexversion >= 0x3000000: @@ -1029,6 +1030,8 @@ def emerge_main(args=None): try: return run_action(emerge_config) + except RetryEmerge: + return emerge_main() finally: # Call destructors for our portdbapi instances. for x in emerge_config.trees.values(): Index: portage-2.2.8/pym/portage/exception.py
=======================================================--- portage-2.2.8.orig/pym/portage/exception.py +++ portage-2.2.8/pym/portage/exception.py @@ -74,6 +74,9 @@ class InvalidData(PortageException): class InvalidDataType(PortageException): """An incorrect type was passed instead of the expected one""" +class RetryEmerge(PortageException): + """Re-try the emerge request""" + class InvalidLocation(PortageException): """Data was not found when it was expected to exist or was specified incorrectly"""
Fedora rawhide on LXC
NAME=rawhide RELEASE=rawhide VGNAME=vg euse -E lua caps -p app-arch/rpm emerge -v1 rpm lxc-create -n $NAME -t fedora -B lvm --vgname $VGNAME -- -R $RELEASE
- With new LXC builds, LVM won't work.
- LXC container's systemd breaks host's ttys
From udev to systemd:
emerge --unmerge udev emerge -v systemd
What you need to have a dual boot Gentoo with systemd and OpenRC:
app-emulation/libvirt >= 1.2.3 sys-fs/lvm2 >= ???
Install the necessary packages:
euse -E zeroconf emerge -av cups nss-mdns system-config-printer-gnome
Make sure nss-mdns is configured:
# grep hosts /etc/nsswitch.conf hosts: files mdns_minimal dns mdns
Start cups and avahi-daemon.
Find and configure the printer:
Get rid of window tearing
compton -c --vsync opengl --backend glx --vsync opengl-swc
Screen lock using systemd
[Unit] Description=Lock X session using slock Before=sleep.target [Service] User=pavlix Environment=DISPLAY=:0 Type=simple ExecStart=/usr/bin/slock [Install] WantedBy=sleep.target WantedBy=lock.target
A multi-user variant can be prepared with xautolock.