User:Pavlix
This user page is outdated. I'm only keeping this for past reference.
Contact
My current information is at https://simerda.eu/.
About
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
Overlays:
- ixit overlay (co-maintainer with User:Okias)
- NetworkManager, nm-applet, unbound and dnssec-trigger
- iproute2, pyroute2, libnl, libndp
- netresolve
- kernelconfig, systemd2rc
- Gentoo ebuilds for Fedora and CentOS development (maintainer)
- rpm
- rpmdevtools, rpmlint
- fedora-packager, fedpkg, koji, bodhi, mock, packagedb, copr
- centpkg
- support for Python 3.x
- OpenWRT software packaged for Gentoo (maintainer)
- netifd
- procd
- 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
DEPEND
should 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
Hardware
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)
System
Base operating system topics I'm interested in.
PXE booting:
Tools
System
- systemd (primarily to make Gentoo close to my work setup)
- Bash
- eix
- genkernel-next (formerly genkernel)
- LVM
- sudo
- screen
- pm-utils
- iproute2
- networkmanager
- ntpd
- acpid
- laptop-mode-tools
- thermal-daemon
Developmnet / Testing
Desktop
- Enlightenment (formerly Awesome)
- nm-applet
Applications
- screen
- vim
- offlineimap
- mutt
- Firefox, www-client/midori
Tips and tricks
I already moved some of them to the respective wiki pages:
Force --autounmask-write changes
CONFIG_PROTECT_MASK="${CONFIG_PROTECT_MASK} /etc/portage"
SSD
vm.swappiness=10
Keyboard
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
Trackpoint
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
Index: portage-2.2.8/pym/_emerge/depgraph.py
===================================================================
--- 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"""
Debugging
FEATURES="splitdebug installsources"
Notes
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
Notes:
- With new LXC builds, LVM won't work.
- LXC container's systemd breaks host's ttys
Systemd
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 >= ???
Network printing
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:
system-config-printer
Get rid of window tearing
compton -c --vsync opengl --backend glx --vsync opengl-swc
Screen lock using systemd
/etc/systemd/system/slock.service:
[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.
Pages
My pages:
- /Install – How to install Gentoo a slightly different way
- /Kernel – How to configure Gentoo kernel in a reproducable way
- /Virtualization – How to configure Gentoo to provide virtualization service