Warning: there may be occasional oddness due to css and blog edits. **KNOWN ISSUE: possible hidden text**

Sunday, October 25, 2020

Just stop scfb

Every so often, while building ports, my box will either stall seemingly forever or lockup or some other oddness will make it next to impossible to use my system.  I wish I knew exactly what causes it each time but I doubt that I will.  These moments are usually when any flaw of previously installed ports will rear their ugly head and sneer 'gotcha' in my face.  I had thought I found a way to avoid these issues with missing ports or dependencies or whatever, which have caused my system to unexpectedly fail to function as I desire, most especially to break my GUI.  I thought that my using poudriere which guaranteed to successfully build the port and its dependencies or fail completely was my solution until recently.

As I described, I was building some ports and doing other things on my pc.  It suddenly became less responsive and then appeared to lockup.  I tried going to another tty by way of control-alt-F2 but all I saw was an odd bit of screen overlapping the top couple inches of my prior screen.  This was in triplicate and did seem to be the tty I requested but it was next to useless and I couldn't manage to kill any hung processes using it.  My only way out is to reboot, and this began my return to a broken GUI.  Broken this time meant that it wouldn't even load, and all it gave was this error message which was saved in /var/log/Xorg.0.log.

[ 47230.647] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[ 47230.647] (II) scfb: driver for wsdisplay framebuffer: scfb
[ 47230.647] (II) VESA: driver for VESA chipsets: vesa
[ 47230.647] (--) Using syscons driver with X support (version 2.0)
[ 47230.647] (--) using VT number 9

[ 47230.648] (EE) open /dev/dri/card0: No such file or directory
[ 47230.648] (WW) Falling back to old probe method for modesetting
[ 47230.648] (EE) open /dev/dri/card0: No such file or directory
[ 47230.648] (WW) Falling back to old probe method for scfb
[ 47230.648] scfb trace: probe start
[ 47230.648] (II) scfb(1): using default device
[ 47230.648] scfb trace: probe done
[ 47230.648] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[ 47230.648] (EE) Screen 0 deleted because of no matching config section.
[ 47230.648] (II) UnloadModule: "modesetting"
[ 47230.649] (EE)
Fatal server error:
[ 47230.649] (EE) Cannot run in framebuffer mode. Please specify busIDs        for all framebuffer devices
[ 47230.649] (EE)
[ 47230.649] (EE)
Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
[ 47230.649] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 47230.649] (EE)
[ 47230.650] (EE) Server terminated with error (1). Closing log file.

The above lines come after a long list of AMD graphics chipsets that the last driver mentioned supported, the other (first) part of the log below:

[ 47230.605]
X.Org X Server 1.20.9
X Protocol Version 11, Revision 0
[ 47230.605] Build Operating System: FreeBSD 12.2-STABLE amd64
[ 47230.605] Current Operating System: FreeBSD ichigo 12.2-STABLE FreeBSD 12.2-STABLE #0 r366714: Thu Oct 15 00:39:36 CDT 2020     tigersharke@ichigo:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
[ 47230.606] Build Date: 23 October 2020  01:10:31AM
[ 47230.606]
[ 47230.606] Current version of pixman: 0.40.0
[ 47230.606]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[ 47230.606] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[ 47230.606] (==) Log file: "/var/log/Xorg.0.log", Time: Sun Oct 25 21:16:34 2020
[ 47230.607] (==) Using config directory: "/usr/local/etc/X11/xorg.conf.d"
[ 47230.607] (==) Using system config directory "/usr/local/share/X11/xorg.conf.d"
[ 47230.608] (==) No Layout section.  Using the first Screen section.
[ 47230.608] (==) No screen section available. Using defaults.
[ 47230.608] (**) |-->Screen "Default Screen Section" (0)
[ 47230.608] (**) |   |-->Monitor ""
[ 47230.609] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[ 47230.609] (**) Option "DontZap" "off"
[ 47230.609] (==) Automatically adding devices
[ 47230.609] (==) Automatically enabling devices
[ 47230.609] (==) Not automatically adding GPU devices
[ 47230.609] (==) Max clients allowed: 256, resource mask: 0x1fffff
[ 47230.610] (==) FontPath set to:
        /usr/local/share/fonts/misc/,
        /usr/local/share/fonts/TTF/,
        /usr/local/share/fonts/OTF/,
        /usr/local/share/fonts/Type1/,
        /usr/local/share/fonts/100dpi/,
        /usr/local/share/fonts/75dpi/,
        catalogue:/usr/local/etc/X11/fontpath.d
[ 47230.610] (==) ModulePath set to "/usr/local/lib/xorg/modules"
[ 47230.610] (II) The server relies on udev to provide the list of input devices.
        If no devices become available, reconfigure udev or disable AutoAddDevices.
[ 47230.610] (II) Loader magic: 0x434620
[ 47230.610] (II) Module ABI versions:
[ 47230.610]    X.Org ANSI C Emulation: 0.4
[ 47230.610]    X.Org Video Driver: 24.1
[ 47230.610]    X.Org XInput driver : 24.1
[ 47230.610]    X.Org Server Extension : 10.0
[ 47230.610] (--) PCI:*(1@0:0:0) 1002:67df:1da2:e353 rev 231, Mem @ 0xc0000000/268435456, 0xd0000000/2097152, 0xfea00000/262144, I/O @ 0x0000e000/256, BIOS @ 0x????????/65536
[ 47230.611] (II) LoadModule: "glx"
[ 47230.612] (II) Loading /usr/local/lib/xorg/modules/extensions/libglx.so
[ 47230.616] (II) Module glx: vendor="X.Org Foundation"
[ 47230.616]    compiled for 1.20.9, module version = 1.0.0
[ 47230.616]    ABI class: X.Org Server Extension, version 10.0
[ 47230.616] (==) Matched ati as autoconfigured driver 0
[ 47230.617] (==) Matched modesetting as autoconfigured driver 1
[ 47230.617] (==) Matched scfb as autoconfigured driver 2
[ 47230.617] (==) Matched vesa as autoconfigured driver 3
[ 47230.617] (==) Assigned the driver to the xf86ConfigLayout
[ 47230.617] (II) LoadModule: "ati"
[ 47230.617] (II) Loading /usr/local/lib/xorg/modules/drivers/ati_drv.so
[ 47230.618] (II) Module ati: vendor="X.Org Foundation"
[ 47230.618]    compiled for 1.20.9, module version = 19.1.0
[ 47230.618]    Module class: X.Org Video Driver
[ 47230.618]    ABI class: X.Org Video Driver, version 24.1
[ 47230.620] (II) LoadModule: "radeon"
[ 47230.621] (II) Loading /usr/local/lib/xorg/modules/drivers/radeon_drv.so
[ 47230.623] (II) Module radeon: vendor="X.Org Foundation"
[ 47230.623]    compiled for 1.20.9, module version = 19.1.0
[ 47230.623]    Module class: X.Org Video Driver
[ 47230.623]    ABI class: X.Org Video Driver, version 24.1
[ 47230.623] (II) LoadModule: "modesetting"
[ 47230.624] (II) Loading /usr/local/lib/xorg/modules/drivers/modesetting_drv.so
[ 47230.624] (II) Module modesetting: vendor="X.Org Foundation"
[ 47230.624]    compiled for 1.20.9, module version = 1.20.9
[ 47230.624]    Module class: X.Org Video Driver
[ 47230.624]    ABI class: X.Org Video Driver, version 24.1
[ 47230.624] (II) LoadModule: "scfb"
[ 47230.625] (II) Loading /usr/local/lib/xorg/modules/drivers/scfb_drv.so
[ 47230.625] (II) Module scfb: vendor="X.Org Foundation"
[ 47230.625]    compiled for 1.20.9, module version = 0.0.5
[ 47230.625]    ABI class: X.Org Video Driver, version 24.1
[ 47230.625] (II) LoadModule: "vesa"
[ 47230.626] (II) Loading /usr/local/lib/xorg/modules/drivers/vesa_drv.so
[ 47230.626] (II) Module vesa: vendor="X.Org Foundation"
[ 47230.626]    compiled for 1.20.9, module version = 2.5.0
[ 47230.626]    Module class: X.Org Video Driver
[ 47230.626]    ABI class: X.Org Video Driver, version 24.1
[ 47230.626] (II) RADEON: Driver for ATI/AMD Radeon chipsets:

I checked that the drivers were installed, and all three four graphics drivers were listed.

pkg origin | grep driver
databases/qt5-sqldrivers-sqlite3
x11-drivers/xf86-input-keyboard
x11-drivers/xf86-input-libinput
x11-drivers/xf86-input-mouse
x11-drivers/xf86-input-vmmouse
x11-drivers/xf86-video-amdgpu
x11-drivers/xf86-video-ati
x11-drivers/xf86-video-scfb
x11-drivers/xf86-video-vesa
x11-drivers/xorg-drivers

I thought that maybe if scfb was not available to use, that may solve the issue.  Unfortunately, it was rather tied to everything else I might need.

pkg remove xf86-video-scfb
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 3 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
        xf86-video-scfb: 0.0.5_2
        xorg: 7.7_3
        xorg-drivers: 7.7_6

This lead me to adjust the options config for xorg-drivers, to remove scfb.  My next step was to remove scfb which I hadn't yet done, and reinstall the drivers I needed, and finally to seal the deal by reinstalling xorg.

pkg install xorg
Updating poudriere repository catalogue...
poudriere repository is up to date.
All repositories are up to date.
Checking integrity... done (0 conflicting)
The following 2 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        xorg: 7.7_3 [poudriere]
        xorg-drivers: 7.7_6 [poudriere]

Number of packages to be installed: 2

Proceed with this action? [y/N]: y
[1/2] Installing xorg-drivers-7.7_6...
[2/2] Installing xorg-7.7_3...

My system once again has a functioning GUI and this time it wasn't too much effort to regain it.  I have been through this process enough times that regardless of the dependency hierarchy that pkg or ports may provide, I have lists which help to be certain that I install all of the needed ports.  I cannot say where automation was lost or guarantees of easy install by way of ports or pkg have failed to create a functioning GUI, but graphics in general have within the last few years become complicated.  Wayland support and the newer dri/kms stuff which due to our addiction to Linux developers and projects and products means we tag along which ever direction Linux goes, rather than chart our own course.  This is not the worst thing, but we certainly do need to remember that things in FreeBSD must be structured to function without surprises, and this truly means to eat our own dogfood.  Things in FreeBSD should always 'just work' at their lowest level (most tedious or manual methods) all the way up to the most complex or automated.

I wish I understood how graphics works for X, but it seems that for me I cannot have scfb available to be loaded because X will insist upon trying to use it, regardless of what I have set in my /etc/rc.conf (lines below).  I have toggled the 'without' knobs periodically to see if those affect anything, sometimes they do and sometimes they do not.  I mean, that if set a certain way that works, it continues to function that way until some time when my GUI breaks due to a new version of xorg or driver or some options config change, and then I will test those 'without' toggles again, and as I inferred, I do not really know when adjusting them will fix something or not.

kld_list="/boot/modules/radeonkms.ko linux64 amdtemp"

#WITHOUT_DRM_MODULE="YES"
#WITHOUT_DRM2_MODULE="YES"
#WITHOUT_VESA_MODULE="YES"

After all of this headache of scfb choosing to take control and then deny X from starting, my Xorg.0.log now shows a peculiar use of VESA but whether it is the vesa driver I left installed or something else or if it simply helps the driver to get used, I cannot say.  If you wish to look at that log file, there it is below. I wish I understood xorg graphics a lot better, it seems to be arcane magic these days.  I still tend to feel the same about networking and network configuration, but I have OPNsense to make that considerably easier.  I also have a secondary box (i386) which I can keep updated in order to have online access for problem solving, or a usbstick with NomadBSD to get me out of other pickles.  Poudriere was not the problem, nor was anything mysteriously missing, but possibly something with X changed again and the automation causes scfb to dominate when it hadn't before.  I have adjusted my make.conf file to solidify the xorg-drivers option config for future builds.  I expect that the lack of scfb will solve this graphics problem up to the day that another change in xorg causes it to be needed again.

[ 1166.174]

X.Org X Server 1.20.9
X Protocol Version 11, Revision 0
[  1166.174] Build Operating System: FreeBSD 12.2-STABLE amd64
[  1166.174] Current Operating System: FreeBSD ichigo 12.2-STABLE FreeBSD 12.2-STABLE #0 r366714: Thu Oct 15 00:39:36 CDT 2020     tigersharke@ichigo:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
[  1166.175] Build Date: 23 October 2020  01:10:31AM
[  1166.175]
[  1166.175] Current version of pixman: 0.40.0
[  1166.175]    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
[  1166.175] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[  1166.176] (==) Log file: "/var/log/Xorg.0.log", Time: Sun Oct 25 22:00:05 2020
[  1166.359] (==) Using config directory: "/usr/local/etc/X11/xorg.conf.d"
[  1166.359] (==) Using system config directory "/usr/local/share/X11/xorg.conf.d"
[  1166.384] (==) No Layout section.  Using the first Screen section.
[  1166.384] (==) No screen section available. Using defaults.
[  1166.385] (**) |-->Screen "Default Screen Section" (0)
[  1166.385] (**) |   |-->Monitor "<default monitor>"
[  1166.385] (==) No monitor specified for screen "Default Screen Section".
    Using a default monitor configuration.
[  1166.386] (**) Option "DontZap" "off"
[  1166.386] (==) Automatically adding devices
[  1166.386] (==) Automatically enabling devices
[  1166.386] (==) Not automatically adding GPU devices
[  1166.387] (==) Max clients allowed: 256, resource mask: 0x1fffff
[  1166.762] (==) FontPath set to:
    /usr/local/share/fonts/misc/,
    /usr/local/share/fonts/TTF/,
    /usr/local/share/fonts/OTF/,
    /usr/local/share/fonts/Type1/,
    /usr/local/share/fonts/100dpi/,
    /usr/local/share/fonts/75dpi/,
    catalogue:/usr/local/etc/X11/fontpath.d
[  1166.762] (==) ModulePath set to "/usr/local/lib/xorg/modules"
[  1166.762] (II) The server relies on udev to provide the list of input devices.
    If no devices become available, reconfigure udev or disable AutoAddDevices.
[  1166.763] (II) Loader magic: 0x434620
[  1166.763] (II) Module ABI versions:
[  1166.763]    X.Org ANSI C Emulation: 0.4
[  1166.763]    X.Org Video Driver: 24.1
[  1166.763]    X.Org XInput driver : 24.1
[  1166.763]    X.Org Server Extension : 10.0
[  1166.763] (--) PCI:*(1@0:0:0) 1002:67df:1da2:e353 rev 231, Mem @ 0xc0000000/268435456, 0xd0000000/2097152, 0xfea00000/262144, I/O @ 0x0000e000/256, BIOS @ 0x????????/65536
[  1166.764] (II) LoadModule: "glx"
[  1166.843] (II) Loading /usr/local/lib/xorg/modules/extensions/libglx.so
[  1167.332] (II) Module glx: vendor="X.Org Foundation"
[  1167.332]    compiled for 1.20.9, module version = 1.0.0
[  1167.332]    ABI class: X.Org Server Extension, version 10.0
[  1167.332] (==) Matched ati as autoconfigured driver 0
[  1167.332] (==) Matched modesetting as autoconfigured driver 1
[  1167.332] (==) Matched scfb as autoconfigured driver 2
[  1167.332] (==) Matched vesa as autoconfigured driver 3
[  1167.332] (==) Assigned the driver to the xf86ConfigLayout
[  1167.333] (II) LoadModule: "ati"
[  1167.333] (II) Loading /usr/local/lib/xorg/modules/drivers/ati_drv.so
[  1167.349] (II) Module ati: vendor="X.Org Foundation"
[  1167.349]    compiled for 1.20.9, module version = 19.1.0
[  1167.349]    Module class: X.Org Video Driver
[  1167.349]    ABI class: X.Org Video Driver, version 24.1
[  1167.352] (II) LoadModule: "radeon"
[  1167.353] (II) Loading /usr/local/lib/xorg/modules/drivers/radeon_drv.so
[  1167.590] (II) Module radeon: vendor="X.Org Foundation"
[  1167.590]    compiled for 1.20.9, module version = 19.1.0
[  1167.590]    Module class: X.Org Video Driver
[  1167.590]    ABI class: X.Org Video Driver, version 24.1
[  1167.590] (II) LoadModule: "modesetting"
[  1167.591] (II) Loading /usr/local/lib/xorg/modules/drivers/modesetting_drv.so
[  1167.604] (II) Module modesetting: vendor="X.Org Foundation"
[  1167.604]    compiled for 1.20.9, module version = 1.20.9
[  1167.604]    Module class: X.Org Video Driver
[  1167.604]    ABI class: X.Org Video Driver, version 24.1
[  1167.604] (II) LoadModule: "scfb"
[  1167.606] (WW) Warning, couldn't open module scfb
[  1167.606] (EE) Failed to load module "scfb" (module does not exist, 0)
[  1167.606] (II) LoadModule: "vesa"
[  1167.607] (II) Loading /usr/local/lib/xorg/modules/drivers/vesa_drv.so
[  1167.607] (II) Module vesa: vendor="X.Org Foundation"
[  1167.607]    compiled for 1.20.9, module version = 2.5.0
[  1167.608]    Module class: X.Org Video Driver
[  1167.608]    ABI class: X.Org Video Driver, version 24.1
[  1167.608] (II) RADEON: Driver for ATI/AMD Radeon chipsets:
    ATI Radeon Mobility X600 (M24), ATI FireMV 2400,
    ATI Radeon Mobility X300 (M24), ATI FireGL M24 GL,
    ATI Radeon X600 (RV380), ATI FireGL V3200 (RV380),
    ATI Radeon IGP320 (A3), ATI Radeon IGP330/340/350 (A4),
    ATI Radeon 9500, ATI Radeon 9600TX, ATI FireGL Z1, ATI Radeon 9800SE,
    ATI Radeon 9800, ATI FireGL X2, ATI Radeon 9600, ATI Radeon 9600SE,
    ATI Radeon 9600XT, ATI FireGL T2, ATI Radeon 9650, ATI FireGL RV360,
    ATI Radeon 7000 IGP (A4+), ATI Radeon 8500 AIW,
    ATI Radeon IGP320M (U1), ATI Radeon IGP330M/340M/350M (U2),
    ATI Radeon Mobility 7000 IGP, ATI Radeon 9000/PRO, ATI Radeon 9000,
    ATI Radeon X800 (R420), ATI Radeon X800PRO (R420),
    ATI Radeon X800SE (R420), ATI FireGL X3 (R420),
    ATI Radeon Mobility 9800 (M18), ATI Radeon X800 SE (R420),
    ATI Radeon X800XT (R420), ATI Radeon X800 VE (R420),
    ATI Radeon X850 (R480), ATI Radeon X850 XT (R480),
    ATI Radeon X850 SE (R480), ATI Radeon X850 PRO (R480),
    ATI Radeon X850 XT PE (R480), ATI Radeon Mobility M7,
    ATI Mobility FireGL 7800 M7, ATI Radeon Mobility M6,
    ATI FireGL Mobility 9000 (M9), ATI Radeon Mobility 9000 (M9),
    ATI Radeon 9700 Pro, ATI Radeon 9700/9500Pro, ATI FireGL X1,
    ATI Radeon 9800PRO, ATI Radeon 9800XT,
    ATI Radeon Mobility 9600/9700 (M10/M11),
    ATI Radeon Mobility 9600 (M10), ATI Radeon Mobility 9600 (M11),
    ATI FireGL Mobility T2 (M10), ATI FireGL Mobility T2e (M11),
    ATI Radeon, ATI FireGL 8700/8800, ATI Radeon 8500, ATI Radeon 9100,
    ATI Radeon 7500, ATI Radeon VE/7000, ATI ES1000,
    ATI Radeon Mobility X300 (M22), ATI Radeon Mobility X600 SE (M24C),
    ATI FireGL M22 GL, ATI Radeon X800 (R423), ATI Radeon X800PRO (R423),
    ATI Radeon X800LE (R423), ATI Radeon X800SE (R423),
    ATI Radeon X800 XTP (R430), ATI Radeon X800 XL (R430),
    ATI Radeon X800 SE (R430), ATI Radeon X800 (R430),
    ATI FireGL V7100 (R423), ATI FireGL V5100 (R423),
    ATI FireGL unknown (R423), ATI Mobility FireGL V5000 (M26),
    ATI Mobility Radeon X700 XL (M26), ATI Mobility Radeon X700 (M26),
    ATI Radeon X550XTX, ATI Radeon 9100 IGP (A5),
    ATI Radeon Mobility 9100 IGP (U3), ATI Radeon XPRESS 200,
    ATI Radeon XPRESS 200M, ATI Radeon 9250, ATI Radeon 9200,
    ATI Radeon 9200SE, ATI FireMV 2200, ATI Radeon X300 (RV370),
    ATI Radeon X600 (RV370), ATI Radeon X550 (RV370),
    ATI FireGL V3100 (RV370), ATI FireMV 2200 PCIE (RV370),
    ATI Radeon Mobility 9200 (M9+), ATI Mobility Radeon X800 XT (M28),
    ATI Mobility FireGL V5100 (M28), ATI Mobility Radeon X800 (M28),
    ATI Radeon X850, ATI unknown Radeon / FireGL (R480),
    ATI Radeon X800XT (R423), ATI FireGL V5000 (RV410),
    ATI Radeon X700 XT (RV410), ATI Radeon X700 PRO (RV410),
    ATI Radeon X700 SE (RV410), ATI Radeon X700 (RV410),
    ATI Radeon X1800, ATI Mobility Radeon X1800 XT,
    ATI Mobility Radeon X1800, ATI Mobility FireGL V7200,
    ATI FireGL V7200, ATI FireGL V5300, ATI Mobility FireGL V7100,
    ATI FireGL V7300, ATI FireGL V7350, ATI Radeon X1600, ATI RV505,
    ATI Radeon X1300/X1550, ATI Radeon X1550, ATI M54-GL,
    ATI Mobility Radeon X1400, ATI Radeon X1550 64-bit,
    ATI Mobility Radeon X1300, ATI Radeon X1300, ATI FireGL V3300,
    ATI FireGL V3350, ATI Mobility Radeon X1450,
    ATI Mobility Radeon X2300, ATI Mobility Radeon X1350,
    ATI FireMV 2250, ATI Radeon X1650, ATI Mobility FireGL V5200,
    ATI Mobility Radeon X1600, ATI Radeon X1300 XT/X1600 Pro,
    ATI FireGL V3400, ATI Mobility FireGL V5250,
    ATI Mobility Radeon X1700, ATI Mobility Radeon X1700 XT,
    ATI FireGL V5200, ATI Radeon X2300HD, ATI Mobility Radeon HD 2300,
    ATI Radeon X1950, ATI Radeon X1900, ATI AMD Stream Processor,
    ATI RV560, ATI Mobility Radeon X1900, ATI Radeon X1950 GT, ATI RV570,
    ATI FireGL V7400, ATI Radeon 9100 PRO IGP,
    ATI Radeon Mobility 9200 IGP, ATI Radeon X1200, ATI RS740,
    ATI RS740M, ATI Radeon HD 2900 XT, ATI Radeon HD 2900 Pro,
    ATI Radeon HD 2900 GT, ATI FireGL V8650, ATI FireGL V8600,
    ATI FireGL V7600, ATI Radeon 4800 Series, ATI Radeon HD 4870 x2,
    ATI Radeon HD 4850 x2, ATI FirePro V8750 (FireGL),
    ATI FirePro V7760 (FireGL), ATI Mobility RADEON HD 4850,
    ATI Mobility RADEON HD 4850 X2, ATI FirePro RV770,
    AMD FireStream 9270, AMD FireStream 9250, ATI FirePro V8700 (FireGL),
    ATI Mobility RADEON HD 4870, ATI Mobility RADEON M98,
    ATI FirePro M7750, ATI M98, ATI Mobility Radeon HD 4650,
    ATI Radeon RV730 (AGP), ATI Mobility Radeon HD 4670,
    ATI FirePro M5750, ATI RV730XT [Radeon HD 4670], ATI RADEON E4600,
    ATI Radeon HD 4600 Series, ATI RV730 PRO [Radeon HD 4650],
    ATI FirePro V7750 (FireGL), ATI FirePro V5700 (FireGL),
    ATI FirePro V3750 (FireGL), ATI Mobility Radeon HD 4830,
    ATI Mobility Radeon HD 4850, ATI FirePro M7740, ATI RV740,
    ATI Radeon HD 4770, ATI Radeon HD 4700 Series, ATI RV610,
    ATI Radeon HD 2400 XT, ATI Radeon HD 2400 Pro,
    ATI Radeon HD 2400 PRO AGP, ATI FireGL V4000, ATI Radeon HD 2350,
    ATI Mobility Radeon HD 2400 XT, ATI Mobility Radeon HD 2400,
    ATI RADEON E2400, ATI FireMV 2260, ATI RV670, ATI Radeon HD3870,
    ATI Mobility Radeon HD 3850, ATI Radeon HD3850,
    ATI Mobility Radeon HD 3850 X2, ATI Mobility Radeon HD 3870,
    ATI Mobility Radeon HD 3870 X2, ATI Radeon HD3870 X2,
    ATI FireGL V7700, ATI Radeon HD3690, AMD Firestream 9170,
    ATI Radeon HD 4550, ATI Radeon RV710, ATI Radeon HD 4350,
    ATI Mobility Radeon 4300 Series, ATI Mobility Radeon 4500 Series,
    ATI FirePro RG220, ATI Mobility Radeon 4330, ATI RV630,
    ATI Mobility Radeon HD 2600, ATI Mobility Radeon HD 2600 XT,
    ATI Radeon HD 2600 XT AGP, ATI Radeon HD 2600 Pro AGP,
    ATI Radeon HD 2600 XT, ATI Radeon HD 2600 Pro, ATI Gemini RV630,
    ATI Gemini Mobility Radeon HD 2600 XT, ATI FireGL V5600,
    ATI FireGL V3600, ATI Radeon HD 2600 LE,
    ATI Mobility FireGL Graphics Processor, ATI Radeon HD 3470,
    ATI Mobility Radeon HD 3430, ATI Mobility Radeon HD 3400 Series,
    ATI Radeon HD 3450, ATI Radeon HD 3430, ATI FirePro V3700,
    ATI FireMV 2450, ATI Radeon HD 3600 Series, ATI Radeon HD 3650 AGP,
    ATI Radeon HD 3600 PRO, ATI Radeon HD 3600 XT,
    ATI Mobility Radeon HD 3650, ATI Mobility Radeon HD 3670,
    ATI Mobility FireGL V5700, ATI Mobility FireGL V5725,
    ATI Radeon HD 3200 Graphics, ATI Radeon 3100 Graphics,
    ATI Radeon HD 3300 Graphics, ATI Radeon 3000 Graphics, SUMO, SUMO2,
    ATI Radeon HD 4200, ATI Radeon 4100, ATI Mobility Radeon HD 4200,
    ATI Mobility Radeon 4100, ATI Radeon HD 4290, ATI Radeon HD 4250,
    AMD Radeon HD 6310 Graphics, AMD Radeon HD 6250 Graphics,
    AMD Radeon HD 6300 Series Graphics,
    AMD Radeon HD 6200 Series Graphics, PALM, CYPRESS,
    ATI FirePro (FireGL) Graphics Adapter, AMD Firestream 9370,
    AMD Firestream 9350, ATI Radeon HD 5800 Series,
    ATI Radeon HD 5900 Series, ATI Mobility Radeon HD 5800 Series,
    ATI Radeon HD 5700 Series, ATI Radeon HD 6700 Series,
    ATI Mobility Radeon HD 5000 Series, ATI Mobility Radeon HD 5570,
    ATI Radeon HD 5670, ATI Radeon HD 5570, ATI Radeon HD 5500 Series,
    REDWOOD, ATI Mobility Radeon Graphics, CEDAR, ATI FirePro 2270,
    ATI Radeon HD 5450, CAYMAN, AMD Radeon HD 6900 Series,
    AMD Radeon HD 6900M Series, Mobility Radeon HD 6000 Series, BARTS,
    AMD Radeon HD 6800 Series, AMD Radeon HD 6700 Series, TURKS, CAICOS,
    ARUBA, TAHITI, PITCAIRN, VERDE, OLAND, HAINAN, BONAIRE, KABINI,
    MULLINS, KAVERI, HAWAII
[  1167.629] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[  1167.629] (II) VESA: driver for VESA chipsets: vesa
[  1167.630] (--) Using syscons driver with X support (version 2.0)
[  1167.630] (--) using VT number 9

[  1167.630] (EE) open /dev/dri/card0: No such file or directory
[  1167.630] (WW) Falling back to old probe method for modesetting
[  1167.630] (EE) open /dev/dri/card0: No such file or directory
[  1167.630] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[  1167.631] (EE) Screen 0 deleted because of no matching config section.
[  1167.631] (II) UnloadModule: "modesetting"
[  1167.631] (II) Loading sub module "vbe"
[  1167.631] (II) LoadModule: "vbe"
[  1167.632] (II) Loading /usr/local/lib/xorg/modules/libvbe.so
[  1167.651] (II) Module vbe: vendor="X.Org Foundation"
[  1167.651]    compiled for 1.20.9, module version = 1.1.0
[  1167.651]    ABI class: X.Org Video Driver, version 24.1
[  1167.651] (II) Loading sub module "int10"
[  1167.651] (II) LoadModule: "int10"
[  1167.652] (II) Loading /usr/local/lib/xorg/modules/libint10.so
[  1167.706] (II) Module int10: vendor="X.Org Foundation"
[  1167.706]    compiled for 1.20.9, module version = 1.0.0
[  1167.706]    ABI class: X.Org Video Driver, version 24.1
[  1167.706] (II) VESA(0): initializing int10
[  1167.707] (II) VESA(0): Primary V_BIOS segment is: 0xc000
[  1167.707] (II) VESA(0): VESA BIOS detected
[  1167.707] (II) VESA(0): VESA VBE Version 3.0
[  1167.707] (II) VESA(0): VESA VBE Total Mem: 49152 kB
[  1167.707] (II) VESA(0): VESA VBE OEM: AMD ATOMBIOS
[  1167.708] (II) VESA(0): VESA VBE OEM Software Rev: 15.50
[  1167.708] (II) VESA(0): VESA VBE OEM Vendor: (C) 1988-2010, Advanced Micro Devices, Inc.
[  1167.708] (II) VESA(0): VESA VBE OEM Product: POLARIS20
[  1167.708] (II) VESA(0): VESA VBE OEM Product Rev: 01.00
[  1167.756] (II) VESA(0): Creating default Display subsection in Screen section
    "Default Screen Section" for depth/fbbpp 24/32
[  1167.756] (==) VESA(0): Depth 24, (--) framebuffer bpp 32
[  1167.756] (==) VESA(0): RGB weight 888
[  1167.756] (==) VESA(0): Default visual is TrueColor
[  1167.756] (==) VESA(0): Using gamma correction (1.0, 1.0, 1.0)
[  1167.756] (II) Loading sub module "ddc"
[  1167.756] (II) LoadModule: "ddc"
[  1167.757] (II) Module "ddc" already built-in
[  1167.757] (II) VESA(0): VESA VBE DDC supported
[  1167.757] (II) VESA(0): VESA VBE DDC Level 2
[  1167.757] (II) VESA(0): VESA VBE DDC transfer in appr. 1 sec.
[  1167.931] (II) VESA(0): VESA VBE DDC read successfully
[  1167.932] (II) VESA(0): Manufacturer: SAM  Model: f35  Serial#: 809054789
[  1167.932] (II) VESA(0): Year: 2020  Week: 26
[  1167.932] (II) VESA(0): EDID Version: 1.4
[  1167.932] (II) VESA(0): Digital Display Input
[  1167.933] (II) VESA(0): 10 bits per channel
[  1167.933] (II) VESA(0): Digital interface is DisplayPort
[  1167.933] (II) VESA(0): Max Image Size [cm]: horiz.: 70  vert.: 39
[  1167.933] (II) VESA(0): Gamma: 2.20
[  1167.933] (II) VESA(0): DPMS capabilities: Off
[  1167.933] (II) VESA(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4 YCrCb 4:2:2
[  1167.933] (II) VESA(0): First detailed timing is preferred mode
[  1167.933] (II) VESA(0): Preferred mode is native pixel format and refresh rate
[  1167.933] (II) VESA(0): redX: 0.686 redY: 0.311   greenX: 0.261 greenY: 0.686
[  1167.933] (II) VESA(0): blueX: 0.150 blueY: 0.061   whiteX: 0.313 whiteY: 0.329
[  1167.933] (II) VESA(0): Supported established timings:
[  1167.933] (II) VESA(0): 720x400@70Hz
[  1167.933] (II) VESA(0): 640x480@60Hz
[  1167.933] (II) VESA(0): 640x480@67Hz
[  1167.934] (II) VESA(0): 640x480@72Hz
[  1167.934] (II) VESA(0): 640x480@75Hz
[  1167.934] (II) VESA(0): 800x600@56Hz
[  1167.934] (II) VESA(0): 800x600@60Hz
[  1167.934] (II) VESA(0): 800x600@72Hz
[  1167.934] (II) VESA(0): 800x600@75Hz
[  1167.934] (II) VESA(0): 832x624@75Hz
[  1167.934] (II) VESA(0): 1024x768@60Hz
[  1167.934] (II) VESA(0): 1024x768@70Hz
[  1167.934] (II) VESA(0): 1024x768@75Hz
[  1167.934] (II) VESA(0): 1280x1024@75Hz
[  1167.934] (II) VESA(0): 1152x864@75Hz
[  1167.934] (II) VESA(0): Manufacturer's mask: 0
[  1167.934] (II) VESA(0): Supported standard timings:
[  1167.934] (II) VESA(0): #0: hsize: 1152  vsize 864  refresh: 75  vid: 20337
[  1167.934] (II) VESA(0): #1: hsize: 1280  vsize 800  refresh: 60  vid: 129
[  1167.934] (II) VESA(0): #2: hsize: 1280  vsize 720  refresh: 60  vid: 49281
[  1167.934] (II) VESA(0): #3: hsize: 1280  vsize 1024  refresh: 60  vid: 32897
[  1167.934] (II) VESA(0): #4: hsize: 1600  vsize 900  refresh: 60  vid: 49321
[  1167.935] (II) VESA(0): #5: hsize: 1680  vsize 1050  refresh: 60  vid: 179
[  1167.935] (II) VESA(0): #6: hsize: 1440  vsize 900  refresh: 60  vid: 149
[  1167.935] (II) VESA(0): Supported detailed timing:
[  1167.935] (II) VESA(0): clock: 533.2 MHz   Image Size:  697 x 392 mm
[  1167.935] (II) VESA(0): h_active: 3840  h_sync: 3888  h_sync_end 3920 h_blank_end 4000 h_border: 0
[  1167.935] (II) VESA(0): v_active: 2160  v_sync: 2163  v_sync_end 2168 v_blanking: 2222 v_border: 0
[  1167.935] (II) VESA(0): Ranges: V min: 30 V max: 75 Hz, H min: 30 H max: 135 kHz, PixClock max 605 MHz
[  1167.935] (II) VESA(0): Monitor name: U32J59x
[  1167.935] (II) VESA(0): Serial No: HCHN603368
[  1167.935] (II) VESA(0): Number of EDID sections to follow: 1
[  1167.935] (II) VESA(0): EDID (in hex):
[  1167.935] (II) VESA(0):  00ffffffffffff004c2d350f45323930
[  1167.935] (II) VESA(0):  1a1e0104b54627783aaea5af4f42af26
[  1167.935] (II) VESA(0):  0f5054bfef80714f810081c08180a9c0
[  1167.935] (II) VESA(0):  b300950001014dd000a0f0703e803020
[  1167.936] (II) VESA(0):  3500b9882100001a000000fd001e4b1e
[  1167.936] (II) VESA(0):  873c000a202020202020000000fc0055
[  1167.936] (II) VESA(0):  33324a3539780a2020202020000000ff
[  1167.936] (II) VESA(0):  004843484e3630333336380a202001b7
[  1167.936] (II) VESA(0): EDID vendor "SAM", prod id 3893
[  1167.936] (II) VESA(0): Using EDID range info for horizontal sync
[  1167.936] (II) VESA(0): Using EDID range info for vertical refresh
[  1167.936] (II) VESA(0): Printing DDC gathered Modelines:
[  1167.936] (II) VESA(0): Modeline "3840x2160"x0.0  533.25  3840 3888 3920 4000  2160 2163 2168 2222 +hsync -vsync (133.3 kHz eP)
[  1167.936] (II) VESA(0): Modeline "800x600"x0.0   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)
[  1167.936] (II) VESA(0): Modeline "800x600"x0.0   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz e)
[  1167.936] (II) VESA(0): Modeline "640x480"x0.0   31.50  640 656 720 840  480 481 484 500 -hsync -vsync (37.5 kHz e)
[  1167.936] (II) VESA(0): Modeline "640x480"x0.0   31.50  640 664 704 832  480 489 492 520 -hsync -vsync (37.9 kHz e)
[  1167.937] (II) VESA(0): Modeline "640x480"x0.0   30.24  640 704 768 864  480 483 486 525 -hsync -vsync (35.0 kHz e)
[  1167.937] (II) VESA(0): Modeline "640x480"x0.0   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e)
[  1167.937] (II) VESA(0): Modeline "720x400"x0.0   28.32  720 738 846 900  400 412 414 449 -hsync +vsync (31.5 kHz e)
[  1167.937] (II) VESA(0): Modeline "1280x1024"x0.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz e)
[  1167.937] (II) VESA(0): Modeline "1024x768"x0.0   78.75  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.0 kHz e)
[  1167.937] (II) VESA(0): Modeline "1024x768"x0.0   75.00  1024 1048 1184 1328  768 771 777 806 -hsync -vsync (56.5 kHz e)
[  1167.937] (II) VESA(0): Modeline "1024x768"x0.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)
[  1167.937] (II) VESA(0): Modeline "832x624"x0.0   57.28  832 864 928 1152  624 625 628 667 -hsync -vsync (49.7 kHz e)
[  1167.937] (II) VESA(0): Modeline "800x600"x0.0   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz e)
[  1167.937] (II) VESA(0): Modeline "800x600"x0.0   50.00  800 856 976 1040  600 637 643 666 +hsync +vsync (48.1 kHz e)
[  1167.937] (II) VESA(0): Modeline "1152x864"x0.0  108.00  1152 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz e)
[  1167.937] (II) VESA(0): Modeline "1280x800"x0.0   83.50  1280 1352 1480 1680  800 803 809 831 -hsync +vsync (49.7 kHz e)
[  1167.937] (II) VESA(0): Modeline "1280x720"x60.0   74.48  1280 1336 1472 1664  720 721 724 746 -hsync +vsync (44.8 kHz e)
[  1167.937] (II) VESA(0): Modeline "1280x1024"x0.0  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz e)
[  1167.937] (II) VESA(0): Modeline "1600x900"x60.0  119.00  1600 1696 1864 2128  900 901 904 932 -hsync +vsync (55.9 kHz e)
[  1167.938] (II) VESA(0): Modeline "1680x1050"x0.0  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync (65.3 kHz e)
[  1167.938] (II) VESA(0): Modeline "1440x900"x0.0  106.50  1440 1520 1672 1904  900 903 909 934 -hsync +vsync (55.9 kHz e)
[  1167.938] (II) VESA(0): Searching for matching VESA mode(s):
[  1167.940] Mode: 110 (640x480)
[  1167.940]    ModeAttributes: 0xbb
[  1167.940]    WinAAttributes: 0x7
[  1167.940]    WinBAttributes: 0x0
[  1167.940]    WinGranularity: 64
[  1167.940]    WinSize: 64
[  1167.940]    WinASegment: 0xa000
[  1167.940]    WinBSegment: 0x0
[  1167.941]    WinFuncPtr: 0xc0004cc3
[  1167.941]    BytesPerScanline: 1280
[  1167.941]    XResolution: 640
[  1167.941]    YResolution: 480
[  1167.941]    XCharSize: 8
[  1167.941]    YCharSize: 16
[  1167.941]    NumberOfPlanes: 1
[  1167.941]    BitsPerPixel: 16
[  1167.941]    NumberOfBanks: 1
[  1167.941]    MemoryModel: 6
[  1167.941]    BankSize: 0
[  1167.941]    NumberOfImages: 75
[  1167.941]    RedMaskSize: 5
[  1167.941]    RedFieldPosition: 10
[  1167.941]    GreenMaskSize: 5
[  1167.941]    GreenFieldPosition: 5
[  1167.941]    BlueMaskSize: 5
[  1167.941]    BlueFieldPosition: 0
[  1167.941]    RsvdMaskSize: 0
[  1167.942]    RsvdFieldPosition: 0
[  1167.942]    DirectColorModeInfo: 0
[  1167.942]    PhysBasePtr: 0xc0000000
[  1167.942]    LinBytesPerScanLine: 1280
[  1167.942]    BnkNumberOfImagePages: 75
[  1167.942]    LinNumberOfImagePages: 75
[  1167.942]    LinRedMaskSize: 5
[  1167.942]    LinRedFieldPosition: 10
[  1167.942]    LinGreenMaskSize: 5
[  1167.942]    LinGreenFieldPosition: 5
[  1167.942]    LinBlueMaskSize: 5
[  1167.942]    LinBlueFieldPosition: 0
[  1167.942]    LinRsvdMaskSize: 0
[  1167.942]    LinRsvdFieldPosition: 0
[  1167.942]    MaxPixelClock: 400000000
[  1167.945] Mode: 111 (640x480)
[  1167.945]    ModeAttributes: 0xbb
[  1167.945]    WinAAttributes: 0x7
[  1167.945]    WinBAttributes: 0x0
[  1167.945]    WinGranularity: 64
[  1167.945]    WinSize: 64
[  1167.945]    WinASegment: 0xa000
[  1167.945]    WinBSegment: 0x0
[  1167.945]    WinFuncPtr: 0xc0004cc3
[  1167.945]    BytesPerScanline: 1280
[  1167.945]    XResolution: 640
[  1167.945]    YResolution: 480
[  1167.945]    XCharSize: 8
[  1167.945]    YCharSize: 16
[  1167.945]    NumberOfPlanes: 1
[  1167.945]    BitsPerPixel: 16
[  1167.945]    NumberOfBanks: 1
[  1167.945]    MemoryModel: 6
[  1167.945]    BankSize: 0
[  1167.946]    NumberOfImages: 75
[  1167.946]    RedMaskSize: 5
[  1167.946]    RedFieldPosition: 11
[  1167.946]    GreenMaskSize: 6
[  1167.946]    GreenFieldPosition: 5
[  1167.946]    BlueMaskSize: 5
[  1167.946]    BlueFieldPosition: 0
[  1167.946]    RsvdMaskSize: 0
[  1167.946]    RsvdFieldPosition: 0
[  1167.946]    DirectColorModeInfo: 0
[  1167.946]    PhysBasePtr: 0xc0000000
[  1167.946]    LinBytesPerScanLine: 1280
[  1167.946]    BnkNumberOfImagePages: 75
[  1167.946]    LinNumberOfImagePages: 75
[  1167.946]    LinRedMaskSize: 5
[  1167.946]    LinRedFieldPosition: 11
[  1167.946]    LinGreenMaskSize: 6
[  1167.946]    LinGreenFieldPosition: 5
[  1167.946]    LinBlueMaskSize: 5
[  1167.946]    LinBlueFieldPosition: 0
[  1167.947]    LinRsvdMaskSize: 0
[  1167.947]    LinRsvdFieldPosition: 0
[  1167.947]    MaxPixelClock: 400000000
[  1167.948] Mode: 113 (800x600)
[  1167.948]    ModeAttributes: 0xbb
[  1167.949]    WinAAttributes: 0x7
[  1167.949]    WinBAttributes: 0x0
[  1167.949]    WinGranularity: 64
[  1167.949]    WinSize: 64
[  1167.949]    WinASegment: 0xa000
[  1167.949]    WinBSegment: 0x0
[  1167.949]    WinFuncPtr: 0xc0004cc3
[  1167.949]    BytesPerScanline: 1664
[  1167.949]    XResolution: 800
[  1167.949]    YResolution: 600
[  1167.949]    XCharSize: 8
[  1167.949]    YCharSize: 14
[  1167.949]    NumberOfPlanes: 1
[  1167.949]    BitsPerPixel: 16
[  1167.949]    NumberOfBanks: 1
[  1167.949]    MemoryModel: 6
[  1167.949]    BankSize: 0
[  1167.949]    NumberOfImages: 47
[  1167.949]    RedMaskSize: 5
[  1167.949]    RedFieldPosition: 10
[  1167.950]    GreenMaskSize: 5
[  1167.950]    GreenFieldPosition: 5
[  1167.950]    BlueMaskSize: 5
[  1167.950]    BlueFieldPosition: 0
[  1167.950]    RsvdMaskSize: 0
[  1167.950]    RsvdFieldPosition: 0
[  1167.950]    DirectColorModeInfo: 0
[  1167.950]    PhysBasePtr: 0xc0000000
[  1167.950]    LinBytesPerScanLine: 1664
[  1167.950]    BnkNumberOfImagePages: 47
[  1167.950]    LinNumberOfImagePages: 47
[  1167.950]    LinRedMaskSize: 5
[  1167.950]    LinRedFieldPosition: 10
[  1167.950]    LinGreenMaskSize: 5
[  1167.950]    LinGreenFieldPosition: 5
[  1167.950]    LinBlueMaskSize: 5
[  1167.950]    LinBlueFieldPosition: 0
[  1167.950]    LinRsvdMaskSize: 0
[  1167.950]    LinRsvdFieldPosition: 0
[  1167.951]    MaxPixelClock: 400000000
[  1167.952] Mode: 114 (800x600)
[  1167.952]    ModeAttributes: 0xbb
[  1167.952]    WinAAttributes: 0x7
[  1167.952]    WinBAttributes: 0x0
[  1167.953]    WinGranularity: 64
[  1167.953]    WinSize: 64
[  1167.953]    WinASegment: 0xa000
[  1167.953]    WinBSegment: 0x0
[  1167.953]    WinFuncPtr: 0xc0004cc3
[  1167.953]    BytesPerScanline: 1664
[  1167.953]    XResolution: 800
[  1167.953]    YResolution: 600
[  1167.953]    XCharSize: 8
[  1167.953]    YCharSize: 14
[  1167.953]    NumberOfPlanes: 1
[  1167.953]    BitsPerPixel: 16
[  1167.953]    NumberOfBanks: 1
[  1167.953]    MemoryModel: 6
[  1167.953]    BankSize: 0
[  1167.953]    NumberOfImages: 47
[  1167.953]    RedMaskSize: 5
[  1167.953]    RedFieldPosition: 11
[  1167.954]    GreenMaskSize: 6
[  1167.954]    GreenFieldPosition: 5
[  1167.954]    BlueMaskSize: 5
[  1167.954]    BlueFieldPosition: 0
[  1167.954]    RsvdMaskSize: 0
[  1167.954]    RsvdFieldPosition: 0
[  1167.954]    DirectColorModeInfo: 0
[  1167.954]    PhysBasePtr: 0xc0000000
[  1167.954]    LinBytesPerScanLine: 1664
[  1167.954]    BnkNumberOfImagePages: 47
[  1167.954]    LinNumberOfImagePages: 47
[  1167.954]    LinRedMaskSize: 5
[  1167.954]    LinRedFieldPosition: 11
[  1167.954]    LinGreenMaskSize: 6
[  1167.954]    LinGreenFieldPosition: 5
[  1167.954]    LinBlueMaskSize: 5
[  1167.954]    LinBlueFieldPosition: 0
[  1167.954]    LinRsvdMaskSize: 0
[  1167.954]    LinRsvdFieldPosition: 0
[  1167.955]    MaxPixelClock: 400000000
[  1167.956] Mode: 116 (1024x768)
[  1167.957]    ModeAttributes: 0xbb
[  1167.957]    WinAAttributes: 0x7
[  1167.957]    WinBAttributes: 0x0
[  1167.957]    WinGranularity: 64
[  1167.957]    WinSize: 64
[  1167.957]    WinASegment: 0xa000
[  1167.957]    WinBSegment: 0x0
[  1167.957]    WinFuncPtr: 0xc0004cc3
[  1167.957]    BytesPerScanline: 2048
[  1167.957]    XResolution: 1024
[  1167.957]    YResolution: 768
[  1167.957]    XCharSize: 8
[  1167.957]    YCharSize: 16
[  1167.957]    NumberOfPlanes: 1
[  1167.957]    BitsPerPixel: 16
[  1167.957]    NumberOfBanks: 1
[  1167.957]    MemoryModel: 6
[  1167.957]    BankSize: 0
[  1167.957]    NumberOfImages: 29
[  1167.958]    RedMaskSize: 5
[  1167.958]    RedFieldPosition: 10
[  1167.958]    GreenMaskSize: 5
[  1167.958]    GreenFieldPosition: 5
[  1167.958]    BlueMaskSize: 5
[  1167.958]    BlueFieldPosition: 0
[  1167.958]    RsvdMaskSize: 0
[  1167.958]    RsvdFieldPosition: 0
[  1167.958]    DirectColorModeInfo: 0
[  1167.958]    PhysBasePtr: 0xc0000000
[  1167.958]    LinBytesPerScanLine: 2048
[  1167.958]    BnkNumberOfImagePages: 29
[  1167.958]    LinNumberOfImagePages: 29
[  1167.958]    LinRedMaskSize: 5
[  1167.958]    LinRedFieldPosition: 10
[  1167.958]    LinGreenMaskSize: 5
[  1167.958]    LinGreenFieldPosition: 5
[  1167.958]    LinBlueMaskSize: 5
[  1167.958]    LinBlueFieldPosition: 0
[  1167.959]    LinRsvdMaskSize: 0
[  1167.959]    LinRsvdFieldPosition: 0
[  1167.959]    MaxPixelClock: 400000000
[  1167.961] Mode: 117 (1024x768)
[  1167.961]    ModeAttributes: 0xbb
[  1167.961]    WinAAttributes: 0x7
[  1167.961]    WinBAttributes: 0x0
[  1167.961]    WinGranularity: 64
[  1167.961]    WinSize: 64
[  1167.961]    WinASegment: 0xa000
[  1167.961]    WinBSegment: 0x0
[  1167.961]    WinFuncPtr: 0xc0004cc3
[  1167.961]    BytesPerScanline: 2048
[  1167.961]    XResolution: 1024
[  1167.961]    YResolution: 768
[  1167.961]    XCharSize: 8
[  1167.961]    YCharSize: 16
[  1167.961]    NumberOfPlanes: 1
[  1167.961]    BitsPerPixel: 16
[  1167.961]    NumberOfBanks: 1
[  1167.961]    MemoryModel: 6
[  1167.962]    BankSize: 0
[  1167.962]    NumberOfImages: 29
[  1167.962]    RedMaskSize: 5
[  1167.962]    RedFieldPosition: 11
[  1167.962]    GreenMaskSize: 6
[  1167.962]    GreenFieldPosition: 5
[  1167.962]    BlueMaskSize: 5
[  1167.962]    BlueFieldPosition: 0
[  1167.962]    RsvdMaskSize: 0
[  1167.962]    RsvdFieldPosition: 0
[  1167.962]    DirectColorModeInfo: 0
[  1167.962]    PhysBasePtr: 0xc0000000
[  1167.962]    LinBytesPerScanLine: 2048
[  1167.962]    BnkNumberOfImagePages: 29
[  1167.962]    LinNumberOfImagePages: 29
[  1167.962]    LinRedMaskSize: 5
[  1167.962]    LinRedFieldPosition: 11
[  1167.962]    LinGreenMaskSize: 6
[  1167.963]    LinGreenFieldPosition: 5
[  1167.963]    LinBlueMaskSize: 5
[  1167.963]    LinBlueFieldPosition: 0
[  1167.963]    LinRsvdMaskSize: 0
[  1167.963]    LinRsvdFieldPosition: 0
[  1167.963]    MaxPixelClock: 400000000
[  1167.964] Mode: 119 (1280x1024)
[  1167.964]    ModeAttributes: 0xbb
[  1167.964]    WinAAttributes: 0x7
[  1167.964]    WinBAttributes: 0x0
[  1167.964]    WinGranularity: 64
[  1167.965]    WinSize: 64
[  1167.965]    WinASegment: 0xa000
[  1167.965]    WinBSegment: 0x0
[  1167.965]    WinFuncPtr: 0xc0004cc3
[  1167.965]    BytesPerScanline: 2560
[  1167.965]    XResolution: 1280
[  1167.965]    YResolution: 1024
[  1167.965]    XCharSize: 8
[  1167.965]    YCharSize: 16
[  1167.965]    NumberOfPlanes: 1
[  1167.965]    BitsPerPixel: 16
[  1167.965]    NumberOfBanks: 1
[  1167.965]    MemoryModel: 6
[  1167.965]    BankSize: 0
[  1167.965]    NumberOfImages: 17
[  1167.965]    RedMaskSize: 5
[  1167.965]    RedFieldPosition: 10
[  1167.965]    GreenMaskSize: 5
[  1167.965]    GreenFieldPosition: 5
[  1167.966]    BlueMaskSize: 5
[  1167.966]    BlueFieldPosition: 0
[  1167.966]    RsvdMaskSize: 0
[  1167.966]    RsvdFieldPosition: 0
[  1167.966]    DirectColorModeInfo: 0
[  1167.966]    PhysBasePtr: 0xc0000000
[  1167.966]    LinBytesPerScanLine: 2560
[  1167.966]    BnkNumberOfImagePages: 17
[  1167.966]    LinNumberOfImagePages: 17
[  1167.966]    LinRedMaskSize: 5
[  1167.966]    LinRedFieldPosition: 10
[  1167.966]    LinGreenMaskSize: 5
[  1167.966]    LinGreenFieldPosition: 5
[  1167.966]    LinBlueMaskSize: 5
[  1167.966]    LinBlueFieldPosition: 0
[  1167.966]    LinRsvdMaskSize: 0
[  1167.966]    LinRsvdFieldPosition: 0
[  1167.966]    MaxPixelClock: 400000000
[  1167.968] Mode: 11a (1280x1024)
[  1167.968]    ModeAttributes: 0xbb
[  1167.968]    WinAAttributes: 0x7
[  1167.968]    WinBAttributes: 0x0
[  1167.968]    WinGranularity: 64
[  1167.968]    WinSize: 64
[  1167.968]    WinASegment: 0xa000
[  1167.968]    WinBSegment: 0x0
[  1167.968]    WinFuncPtr: 0xc0004cc3
[  1167.968]    BytesPerScanline: 2560
[  1167.968]    XResolution: 1280
[  1167.968]    YResolution: 1024
[  1167.969]    XCharSize: 8
[  1167.969]    YCharSize: 16
[  1167.969]    NumberOfPlanes: 1
[  1167.969]    BitsPerPixel: 16
[  1167.969]    NumberOfBanks: 1
[  1167.969]    MemoryModel: 6
[  1167.969]    BankSize: 0
[  1167.969]    NumberOfImages: 17
[  1167.969]    RedMaskSize: 5
[  1167.969]    RedFieldPosition: 11
[  1167.969]    GreenMaskSize: 6
[  1167.969]    GreenFieldPosition: 5
[  1167.969]    BlueMaskSize: 5
[  1167.969]    BlueFieldPosition: 0
[  1167.969]    RsvdMaskSize: 0
[  1167.969]    RsvdFieldPosition: 0
[  1167.969]    DirectColorModeInfo: 0
[  1167.969]    PhysBasePtr: 0xc0000000
[  1167.969]    LinBytesPerScanLine: 2560
[  1167.969]    BnkNumberOfImagePages: 17
[  1167.970]    LinNumberOfImagePages: 17
[  1167.970]    LinRedMaskSize: 5
[  1167.970]    LinRedFieldPosition: 11
[  1167.970]    LinGreenMaskSize: 6
[  1167.970]    LinGreenFieldPosition: 5
[  1167.970]    LinBlueMaskSize: 5
[  1167.970]    LinBlueFieldPosition: 0
[  1167.970]    LinRsvdMaskSize: 0
[  1167.970]    LinRsvdFieldPosition: 0
[  1167.970]    MaxPixelClock: 400000000
[  1167.973] Mode: 165 (1280x960)
[  1167.973]    ModeAttributes: 0xbb
[  1167.973]    WinAAttributes: 0x7
[  1167.973]    WinBAttributes: 0x0
[  1167.973]    WinGranularity: 64
[  1167.973]    WinSize: 64
[  1167.973]    WinASegment: 0xa000
[  1167.973]    WinBSegment: 0x0
[  1167.973]    WinFuncPtr: 0xc0004cc3
[  1167.973]    BytesPerScanline: 2560
[  1167.973]    XResolution: 1280
[  1167.973]    YResolution: 960
[  1167.973]    XCharSize: 8
[  1167.973]    YCharSize: 16
[  1167.973]    NumberOfPlanes: 1
[  1167.973]    BitsPerPixel: 16
[  1167.973]    NumberOfBanks: 1
[  1167.974]    MemoryModel: 6
[  1167.974]    BankSize: 0
[  1167.974]    NumberOfImages: 19
[  1167.974]    RedMaskSize: 5
[  1167.974]    RedFieldPosition: 11
[  1167.974]    GreenMaskSize: 6
[  1167.974]    GreenFieldPosition: 5
[  1167.974]    BlueMaskSize: 5
[  1167.974]    BlueFieldPosition: 0
[  1167.974]    RsvdMaskSize: 0
[  1167.974]    RsvdFieldPosition: 0
[  1167.974]    DirectColorModeInfo: 0
[  1167.974]    PhysBasePtr: 0xc0000000
[  1167.974]    LinBytesPerScanLine: 2560
[  1167.974]    BnkNumberOfImagePages: 19
[  1167.974]    LinNumberOfImagePages: 19
[  1167.974]    LinRedMaskSize: 5
[  1167.974]    LinRedFieldPosition: 11
[  1167.974]    LinGreenMaskSize: 6
[  1167.975]    LinGreenFieldPosition: 5
[  1167.975]    LinBlueMaskSize: 5
[  1167.975]    LinBlueFieldPosition: 0
[  1167.975]    LinRsvdMaskSize: 0
[  1167.975]    LinRsvdFieldPosition: 0
[  1167.975]    MaxPixelClock: 400000000
[  1167.977] *Mode: 166 (1280x960)
[  1167.978]    ModeAttributes: 0xbb
[  1167.978]    WinAAttributes: 0x7
[  1167.978]    WinBAttributes: 0x0
[  1167.978]    WinGranularity: 64
[  1167.978]    WinSize: 64
[  1167.978]    WinASegment: 0xa000
[  1167.978]    WinBSegment: 0x0
[  1167.978]    WinFuncPtr: 0xc0004cc3
[  1167.978]    BytesPerScanline: 5120
[  1167.978]    XResolution: 1280
[  1167.978]    YResolution: 960
[  1167.978]    XCharSize: 8
[  1167.978]    YCharSize: 16
[  1167.978]    NumberOfPlanes: 1
[  1167.978]    BitsPerPixel: 32
[  1167.978]    NumberOfBanks: 1
[  1167.978]    MemoryModel: 6
[  1167.978]    BankSize: 0
[  1167.978]    NumberOfImages: 9
[  1167.979]    RedMaskSize: 8
[  1167.979]    RedFieldPosition: 16
[  1167.979]    GreenMaskSize: 8
[  1167.979]    GreenFieldPosition: 8
[  1167.979]    BlueMaskSize: 8
[  1167.979]    BlueFieldPosition: 0
[  1167.979]    RsvdMaskSize: 0
[  1167.979]    RsvdFieldPosition: 0
[  1167.979]    DirectColorModeInfo: 0
[  1167.979]    PhysBasePtr: 0xc0000000
[  1167.979]    LinBytesPerScanLine: 5120
[  1167.979]    BnkNumberOfImagePages: 9
[  1167.979]    LinNumberOfImagePages: 9
[  1167.979]    LinRedMaskSize: 8
[  1167.979]    LinRedFieldPosition: 16
[  1167.979]    LinGreenMaskSize: 8
[  1167.979]    LinGreenFieldPosition: 8
[  1167.979]    LinBlueMaskSize: 8
[  1167.979]    LinBlueFieldPosition: 0
[  1167.980]    LinRsvdMaskSize: 0
[  1167.980]    LinRsvdFieldPosition: 0
[  1167.980]    MaxPixelClock: 400000000
[  1167.982] *Mode: 121 (640x480)
[  1167.982]    ModeAttributes: 0xbb
[  1167.982]    WinAAttributes: 0x7
[  1167.982]    WinBAttributes: 0x0
[  1167.982]    WinGranularity: 64
[  1167.982]    WinSize: 64
[  1167.982]    WinASegment: 0xa000
[  1167.982]    WinBSegment: 0x0
[  1167.982]    WinFuncPtr: 0xc0004cc3
[  1167.982]    BytesPerScanline: 2560
[  1167.982]    XResolution: 640
[  1167.982]    YResolution: 480
[  1167.983]    XCharSize: 8
[  1167.983]    YCharSize: 16
[  1167.983]    NumberOfPlanes: 1
[  1167.983]    BitsPerPixel: 32
[  1167.983]    NumberOfBanks: 1
[  1167.983]    MemoryModel: 6
[  1167.983]    BankSize: 0
[  1167.983]    NumberOfImages: 39
[  1167.983]    RedMaskSize: 8
[  1167.983]    RedFieldPosition: 16
[  1167.983]    GreenMaskSize: 8
[  1167.983]    GreenFieldPosition: 8
[  1167.983]    BlueMaskSize: 8
[  1167.983]    BlueFieldPosition: 0
[  1167.983]    RsvdMaskSize: 0
[  1167.983]    RsvdFieldPosition: 0
[  1167.983]    DirectColorModeInfo: 0
[  1167.983]    PhysBasePtr: 0xc0000000
[  1167.983]    LinBytesPerScanLine: 2560
[  1167.984]    BnkNumberOfImagePages: 39
[  1167.984]    LinNumberOfImagePages: 39
[  1167.984]    LinRedMaskSize: 8
[  1167.984]    LinRedFieldPosition: 16
[  1167.984]    LinGreenMaskSize: 8
[  1167.984]    LinGreenFieldPosition: 8
[  1167.984]    LinBlueMaskSize: 8
[  1167.984]    LinBlueFieldPosition: 0
[  1167.984]    LinRsvdMaskSize: 0
[  1167.984]    LinRsvdFieldPosition: 0
[  1167.984]    MaxPixelClock: 400000000
[  1167.986] *Mode: 122 (800x600)
[  1167.986]    ModeAttributes: 0xbb
[  1167.986]    WinAAttributes: 0x7
[  1167.986]    WinBAttributes: 0x0
[  1167.986]    WinGranularity: 64
[  1167.986]    WinSize: 64
[  1167.986]    WinASegment: 0xa000
[  1167.986]    WinBSegment: 0x0
[  1167.986]    WinFuncPtr: 0xc0004cc3
[  1167.986]    BytesPerScanline: 3328
[  1167.986]    XResolution: 800
[  1167.986]    YResolution: 600
[  1167.986]    XCharSize: 8
[  1167.987]    YCharSize: 14
[  1167.987]    NumberOfPlanes: 1
[  1167.987]    BitsPerPixel: 32
[  1167.987]    NumberOfBanks: 1
[  1167.987]    MemoryModel: 6
[  1167.987]    BankSize: 0
[  1167.987]    NumberOfImages: 23
[  1167.987]    RedMaskSize: 8
[  1167.987]    RedFieldPosition: 16
[  1167.987]    GreenMaskSize: 8
[  1167.987]    GreenFieldPosition: 8
[  1167.987]    BlueMaskSize: 8
[  1167.987]    BlueFieldPosition: 0
[  1167.987]    RsvdMaskSize: 0
[  1167.987]    RsvdFieldPosition: 0
[  1167.987]    DirectColorModeInfo: 0
[  1167.987]    PhysBasePtr: 0xc0000000
[  1167.987]    LinBytesPerScanLine: 3328
[  1167.987]    BnkNumberOfImagePages: 23
[  1167.988]    LinNumberOfImagePages: 23
[  1167.988]    LinRedMaskSize: 8
[  1167.988]    LinRedFieldPosition: 16
[  1167.988]    LinGreenMaskSize: 8
[  1167.988]    LinGreenFieldPosition: 8
[  1167.988]    LinBlueMaskSize: 8
[  1167.988]    LinBlueFieldPosition: 0
[  1167.988]    LinRsvdMaskSize: 0
[  1167.988]    LinRsvdFieldPosition: 0
[  1167.988]    MaxPixelClock: 400000000
[  1167.990] *Mode: 123 (1024x768)
[  1167.990]    ModeAttributes: 0xbb
[  1167.990]    WinAAttributes: 0x7
[  1167.990]    WinBAttributes: 0x0
[  1167.990]    WinGranularity: 64
[  1167.990]    WinSize: 64
[  1167.990]    WinASegment: 0xa000
[  1167.990]    WinBSegment: 0x0
[  1167.990]    WinFuncPtr: 0xc0004cc3
[  1167.991]    BytesPerScanline: 4096
[  1167.991]    XResolution: 1024
[  1167.991]    YResolution: 768
[  1167.991]    XCharSize: 8
[  1167.991]    YCharSize: 16
[  1167.991]    NumberOfPlanes: 1
[  1167.991]    BitsPerPixel: 32
[  1167.991]    NumberOfBanks: 1
[  1167.991]    MemoryModel: 6
[  1167.991]    BankSize: 0
[  1167.991]    NumberOfImages: 14
[  1167.991]    RedMaskSize: 8
[  1167.991]    RedFieldPosition: 16
[  1167.991]    GreenMaskSize: 8
[  1167.991]    GreenFieldPosition: 8
[  1167.991]    BlueMaskSize: 8
[  1167.991]    BlueFieldPosition: 0
[  1167.991]    RsvdMaskSize: 0
[  1167.991]    RsvdFieldPosition: 0
[  1167.992]    DirectColorModeInfo: 0
[  1167.992]    PhysBasePtr: 0xc0000000
[  1167.992]    LinBytesPerScanLine: 4096
[  1167.992]    BnkNumberOfImagePages: 14
[  1167.992]    LinNumberOfImagePages: 14
[  1167.992]    LinRedMaskSize: 8
[  1167.992]    LinRedFieldPosition: 16
[  1167.992]    LinGreenMaskSize: 8
[  1167.992]    LinGreenFieldPosition: 8
[  1167.992]    LinBlueMaskSize: 8
[  1167.992]    LinBlueFieldPosition: 0
[  1167.992]    LinRsvdMaskSize: 0
[  1167.992]    LinRsvdFieldPosition: 0
[  1167.992]    MaxPixelClock: 400000000
[  1167.994] *Mode: 124 (1280x1024)
[  1167.994]    ModeAttributes: 0xbb
[  1167.994]    WinAAttributes: 0x7
[  1167.994]    WinBAttributes: 0x0
[  1167.994]    WinGranularity: 64
[  1167.994]    WinSize: 64
[  1167.994]    WinASegment: 0xa000
[  1167.994]    WinBSegment: 0x0
[  1167.994]    WinFuncPtr: 0xc0004cc3
[  1167.994]    BytesPerScanline: 5120
[  1167.994]    XResolution: 1280
[  1167.994]    YResolution: 1024
[  1167.994]    XCharSize: 8
[  1167.994]    YCharSize: 16
[  1167.994]    NumberOfPlanes: 1
[  1167.994]    BitsPerPixel: 32
[  1167.995]    NumberOfBanks: 1
[  1167.995]    MemoryModel: 6
[  1167.995]    BankSize: 0
[  1167.995]    NumberOfImages: 8
[  1167.995]    RedMaskSize: 8
[  1167.995]    RedFieldPosition: 16
[  1167.995]    GreenMaskSize: 8
[  1167.995]    GreenFieldPosition: 8
[  1167.995]    BlueMaskSize: 8
[  1167.995]    BlueFieldPosition: 0
[  1167.995]    RsvdMaskSize: 0
[  1167.995]    RsvdFieldPosition: 0
[  1167.995]    DirectColorModeInfo: 0
[  1167.995]    PhysBasePtr: 0xc0000000
[  1167.995]    LinBytesPerScanLine: 5120
[  1167.995]    BnkNumberOfImagePages: 8
[  1167.995]    LinNumberOfImagePages: 8
[  1167.995]    LinRedMaskSize: 8
[  1167.995]    LinRedFieldPosition: 16
[  1167.996]    LinGreenMaskSize: 8
[  1167.996]    LinGreenFieldPosition: 8
[  1167.996]    LinBlueMaskSize: 8
[  1167.996]    LinBlueFieldPosition: 0
[  1167.996]    LinRsvdMaskSize: 0
[  1167.996]    LinRsvdFieldPosition: 0
[  1167.996]    MaxPixelClock: 400000000
[  1168.000] Mode: 145 (1400x1050)
[  1168.000]    ModeAttributes: 0xbb
[  1168.000]    WinAAttributes: 0x7
[  1168.000]    WinBAttributes: 0x0
[  1168.000]    WinGranularity: 64
[  1168.000]    WinSize: 64
[  1168.000]    WinASegment: 0xa000
[  1168.000]    WinBSegment: 0x0
[  1168.000]    WinFuncPtr: 0xc0004cc3
[  1168.000]    BytesPerScanline: 2816
[  1168.000]    XResolution: 1400
[  1168.000]    YResolution: 1050
[  1168.000]    XCharSize: 8
[  1168.000]    YCharSize: 16
[  1168.000]    NumberOfPlanes: 1
[  1168.000]    BitsPerPixel: 16
[  1168.000]    NumberOfBanks: 1
[  1168.001]    MemoryModel: 6
[  1168.001]    BankSize: 0
[  1168.001]    NumberOfImages: 15
[  1168.001]    RedMaskSize: 5
[  1168.001]    RedFieldPosition: 11
[  1168.001]    GreenMaskSize: 6
[  1168.001]    GreenFieldPosition: 5
[  1168.001]    BlueMaskSize: 5
[  1168.001]    BlueFieldPosition: 0
[  1168.001]    RsvdMaskSize: 0
[  1168.001]    RsvdFieldPosition: 0
[  1168.001]    DirectColorModeInfo: 0
[  1168.001]    PhysBasePtr: 0xc0000000
[  1168.001]    LinBytesPerScanLine: 2816
[  1168.001]    BnkNumberOfImagePages: 15
[  1168.001]    LinNumberOfImagePages: 15
[  1168.001]    LinRedMaskSize: 5
[  1168.001]    LinRedFieldPosition: 11
[  1168.001]    LinGreenMaskSize: 6
[  1168.002]    LinGreenFieldPosition: 5
[  1168.002]    LinBlueMaskSize: 5
[  1168.002]    LinBlueFieldPosition: 0
[  1168.002]    LinRsvdMaskSize: 0
[  1168.002]    LinRsvdFieldPosition: 0
[  1168.002]    MaxPixelClock: 400000000
[  1168.006] *Mode: 146 (1400x1050)
[  1168.006]    ModeAttributes: 0xbb
[  1168.006]    WinAAttributes: 0x7
[  1168.006]    WinBAttributes: 0x0
[  1168.006]    WinGranularity: 64
[  1168.006]    WinSize: 64
[  1168.006]    WinASegment: 0xa000
[  1168.006]    WinBSegment: 0x0
[  1168.006]    WinFuncPtr: 0xc0004cc3
[  1168.006]    BytesPerScanline: 5632
[  1168.006]    XResolution: 1400
[  1168.006]    YResolution: 1050
[  1168.006]    XCharSize: 8
[  1168.006]    YCharSize: 16
[  1168.006]    NumberOfPlanes: 1
[  1168.006]    BitsPerPixel: 32
[  1168.006]    NumberOfBanks: 1
[  1168.006]    MemoryModel: 6
[  1168.006]    BankSize: 0
[  1168.007]    NumberOfImages: 7
[  1168.007]    RedMaskSize: 8
[  1168.007]    RedFieldPosition: 16
[  1168.007]    GreenMaskSize: 8
[  1168.007]    GreenFieldPosition: 8
[  1168.007]    BlueMaskSize: 8
[  1168.007]    BlueFieldPosition: 0
[  1168.007]    RsvdMaskSize: 0
[  1168.007]    RsvdFieldPosition: 0
[  1168.007]    DirectColorModeInfo: 0
[  1168.007]    PhysBasePtr: 0xc0000000
[  1168.007]    LinBytesPerScanLine: 5632
[  1168.007]    BnkNumberOfImagePages: 7
[  1168.007]    LinNumberOfImagePages: 7
[  1168.007]    LinRedMaskSize: 8
[  1168.007]    LinRedFieldPosition: 16
[  1168.007]    LinGreenMaskSize: 8
[  1168.007]    LinGreenFieldPosition: 8
[  1168.007]    LinBlueMaskSize: 8
[  1168.008]    LinBlueFieldPosition: 0
[  1168.008]    LinRsvdMaskSize: 0
[  1168.008]    LinRsvdFieldPosition: 0
[  1168.008]    MaxPixelClock: 400000000
[  1168.011] Mode: 175 (1600x1200)
[  1168.011]    ModeAttributes: 0xbb
[  1168.012]    WinAAttributes: 0x7
[  1168.012]    WinBAttributes: 0x0
[  1168.012]    WinGranularity: 64
[  1168.012]    WinSize: 64
[  1168.012]    WinASegment: 0xa000
[  1168.012]    WinBSegment: 0x0
[  1168.012]    WinFuncPtr: 0xc0004cc3
[  1168.012]    BytesPerScanline: 3200
[  1168.012]    XResolution: 1600
[  1168.012]    YResolution: 1200
[  1168.012]    XCharSize: 8
[  1168.012]    YCharSize: 16
[  1168.012]    NumberOfPlanes: 1
[  1168.012]    BitsPerPixel: 16
[  1168.012]    NumberOfBanks: 1
[  1168.012]    MemoryModel: 6
[  1168.012]    BankSize: 0
[  1168.012]    NumberOfImages: 12
[  1168.012]    RedMaskSize: 5
[  1168.013]    RedFieldPosition: 11
[  1168.013]    GreenMaskSize: 6
[  1168.013]    GreenFieldPosition: 5
[  1168.013]    BlueMaskSize: 5
[  1168.013]    BlueFieldPosition: 0
[  1168.013]    RsvdMaskSize: 0
[  1168.013]    RsvdFieldPosition: 0
[  1168.013]    DirectColorModeInfo: 0
[  1168.013]    PhysBasePtr: 0xc0000000
[  1168.013]    LinBytesPerScanLine: 3200
[  1168.013]    BnkNumberOfImagePages: 12
[  1168.013]    LinNumberOfImagePages: 12
[  1168.013]    LinRedMaskSize: 5
[  1168.013]    LinRedFieldPosition: 11
[  1168.013]    LinGreenMaskSize: 6
[  1168.013]    LinGreenFieldPosition: 5
[  1168.013]    LinBlueMaskSize: 5
[  1168.013]    LinBlueFieldPosition: 0
[  1168.013]    LinRsvdMaskSize: 0
[  1168.014]    LinRsvdFieldPosition: 0
[  1168.014]    MaxPixelClock: 400000000
[  1168.017] *Mode: 176 (1600x1200)
[  1168.017]    ModeAttributes: 0xbb
[  1168.017]    WinAAttributes: 0x7
[  1168.017]    WinBAttributes: 0x0
[  1168.018]    WinGranularity: 64
[  1168.018]    WinSize: 64
[  1168.018]    WinASegment: 0xa000
[  1168.018]    WinBSegment: 0x0
[  1168.018]    WinFuncPtr: 0xc0004cc3
[  1168.018]    BytesPerScanline: 6400
[  1168.018]    XResolution: 1600
[  1168.018]    YResolution: 1200
[  1168.018]    XCharSize: 8
[  1168.018]    YCharSize: 16
[  1168.018]    NumberOfPlanes: 1
[  1168.018]    BitsPerPixel: 32
[  1168.018]    NumberOfBanks: 1
[  1168.018]    MemoryModel: 6
[  1168.018]    BankSize: 0
[  1168.018]    NumberOfImages: 5
[  1168.018]    RedMaskSize: 8
[  1168.018]    RedFieldPosition: 16
[  1168.018]    GreenMaskSize: 8
[  1168.018]    GreenFieldPosition: 8
[  1168.019]    BlueMaskSize: 8
[  1168.019]    BlueFieldPosition: 0
[  1168.019]    RsvdMaskSize: 0
[  1168.019]    RsvdFieldPosition: 0
[  1168.019]    DirectColorModeInfo: 0
[  1168.019]    PhysBasePtr: 0xc0000000
[  1168.019]    LinBytesPerScanLine: 6400
[  1168.019]    BnkNumberOfImagePages: 5
[  1168.019]    LinNumberOfImagePages: 5
[  1168.019]    LinRedMaskSize: 8
[  1168.019]    LinRedFieldPosition: 16
[  1168.019]    LinGreenMaskSize: 8
[  1168.019]    LinGreenFieldPosition: 8
[  1168.019]    LinBlueMaskSize: 8
[  1168.019]    LinBlueFieldPosition: 0
[  1168.019]    LinRsvdMaskSize: 0
[  1168.019]    LinRsvdFieldPosition: 0
[  1168.019]    MaxPixelClock: 400000000
[  1168.023] Mode: 1d2 (3840x2160)
[  1168.023]    ModeAttributes: 0xbb
[  1168.023]    WinAAttributes: 0x7
[  1168.023]    WinBAttributes: 0x0
[  1168.023]    WinGranularity: 64
[  1168.023]    WinSize: 64
[  1168.023]    WinASegment: 0xa000
[  1168.024]    WinBSegment: 0x0
[  1168.024]    WinFuncPtr: 0xc0004cc3
[  1168.024]    BytesPerScanline: 7680
[  1168.024]    XResolution: 3840
[  1168.024]    YResolution: 2160
[  1168.024]    XCharSize: 8
[  1168.024]    YCharSize: 16
[  1168.024]    NumberOfPlanes: 1
[  1168.024]    BitsPerPixel: 16
[  1168.024]    NumberOfBanks: 1
[  1168.024]    MemoryModel: 6
[  1168.024]    BankSize: 0
[  1168.024]    NumberOfImages: 2
[  1168.024]    RedMaskSize: 5
[  1168.024]    RedFieldPosition: 11
[  1168.024]    GreenMaskSize: 6
[  1168.024]    GreenFieldPosition: 5
[  1168.024]    BlueMaskSize: 5
[  1168.024]    BlueFieldPosition: 0
[  1168.025]    RsvdMaskSize: 0
[  1168.025]    RsvdFieldPosition: 0
[  1168.025]    DirectColorModeInfo: 0
[  1168.025]    PhysBasePtr: 0xc0000000
[  1168.025]    LinBytesPerScanLine: 7680
[  1168.025]    BnkNumberOfImagePages: 2
[  1168.025]    LinNumberOfImagePages: 2
[  1168.025]    LinRedMaskSize: 5
[  1168.025]    LinRedFieldPosition: 11
[  1168.025]    LinGreenMaskSize: 6
[  1168.025]    LinGreenFieldPosition: 5
[  1168.025]    LinBlueMaskSize: 5
[  1168.025]    LinBlueFieldPosition: 0
[  1168.025]    LinRsvdMaskSize: 0
[  1168.025]    LinRsvdFieldPosition: 0
[  1168.025]    MaxPixelClock: 400000000
[  1168.029] *Mode: 1d4 (3840x2160)
[  1168.029]    ModeAttributes: 0xbb
[  1168.029]    WinAAttributes: 0x7
[  1168.029]    WinBAttributes: 0x0
[  1168.029]    WinGranularity: 64
[  1168.029]    WinSize: 64
[  1168.029]    WinASegment: 0xa000
[  1168.029]    WinBSegment: 0x0
[  1168.030]    WinFuncPtr: 0xc0004cc3
[  1168.030]    BytesPerScanline: 15360
[  1168.030]    XResolution: 3840
[  1168.030]    YResolution: 2160
[  1168.030]    XCharSize: 8
[  1168.030]    YCharSize: 16
[  1168.030]    NumberOfPlanes: 1
[  1168.030]    BitsPerPixel: 32
[  1168.030]    NumberOfBanks: 1
[  1168.030]    MemoryModel: 6
[  1168.030]    BankSize: 0
[  1168.030]    NumberOfImages: 0
[  1168.030]    RedMaskSize: 8
[  1168.030]    RedFieldPosition: 16
[  1168.030]    GreenMaskSize: 8
[  1168.030]    GreenFieldPosition: 8
[  1168.030]    BlueMaskSize: 8
[  1168.030]    BlueFieldPosition: 0
[  1168.030]    RsvdMaskSize: 0
[  1168.030]    RsvdFieldPosition: 0
[  1168.031]    DirectColorModeInfo: 0
[  1168.031]    PhysBasePtr: 0xc0000000
[  1168.031]    LinBytesPerScanLine: 15360
[  1168.031]    BnkNumberOfImagePages: 0
[  1168.031]    LinNumberOfImagePages: 0
[  1168.031]    LinRedMaskSize: 8
[  1168.031]    LinRedFieldPosition: 16
[  1168.031]    LinGreenMaskSize: 8
[  1168.031]    LinGreenFieldPosition: 8
[  1168.031]    LinBlueMaskSize: 8
[  1168.031]    LinBlueFieldPosition: 0
[  1168.031]    LinRsvdMaskSize: 0
[  1168.031]    LinRsvdFieldPosition: 0
[  1168.031]    MaxPixelClock: 400000000
[  1168.031]
[  1168.031] (II) VESA(0): Total Memory: 768 64KB banks (49152kB)
[  1168.031] (II) VESA(0): <default monitor>: Using hsync range of 30.00-135.00 kHz
[  1168.032] (II) VESA(0): <default monitor>: Using vrefresh range of 30.00-75.00 Hz
[  1168.032] (II) VESA(0): <default monitor>: Using maximum pixel clock of 605.00 MHz
[  1168.032] (WW) VESA(0): Unable to estimate virtual size
[  1168.032] (II) VESA(0): Not using built-in mode "1600x1200" (no mode of this name)
[  1168.032] (II) VESA(0): Not using built-in mode "1400x1050" (no mode of this name)
[  1168.032] (II) VESA(0): Not using built-in mode "1280x1024" (no mode of this name)
[  1168.032] (II) VESA(0): Not using built-in mode "1280x960" (no mode of this name)
[  1168.032] (II) VESA(0): Not using built-in mode "1024x768" (no mode of this name)
[  1168.032] (II) VESA(0): Not using built-in mode "800x600" (no mode of this name)
[  1168.033] (II) VESA(0): Virtual size is 3840x2160 (pitch 3840)
[  1168.033] (**) VESA(0): *Built-in mode "3840x2160"
[  1168.033] (**) VESA(0): *Built-in mode "640x480"
[  1168.033] (**) VESA(0): Display dimensions: (700, 390) mm
[  1168.033] (**) VESA(0): DPI set to (139, 140)
[  1168.033] (**) VESA(0): Using "Shadow Framebuffer"
[  1168.033] (II) Loading sub module "shadow"
[  1168.033] (II) LoadModule: "shadow"
[  1168.034] (II) Loading /usr/local/lib/xorg/modules/libshadow.so
[  1168.053] (II) Module shadow: vendor="X.Org Foundation"
[  1168.053]    compiled for 1.20.9, module version = 1.1.0
[  1168.053]    ABI class: X.Org ANSI C Emulation, version 0.4
[  1168.053] (II) Loading sub module "fb"
[  1168.053] (II) LoadModule: "fb"
[  1168.053] (II) Loading /usr/local/lib/xorg/modules/libfb.so
[  1168.079] (II) Module fb: vendor="X.Org Foundation"
[  1168.079]    compiled for 1.20.9, module version = 1.0.0
[  1168.080]    ABI class: X.Org ANSI C Emulation, version 0.4
[  1168.080] (II) UnloadModule: "radeon"
[  1168.080] (II) Unloading radeon
[  1168.080] (II) Loading sub module "int10"
[  1168.080] (II) LoadModule: "int10"
[  1168.081] (II) Loading /usr/local/lib/xorg/modules/libint10.so
[  1168.081] (II) Module int10: vendor="X.Org Foundation"
[  1168.081]    compiled for 1.20.9, module version = 1.0.0
[  1168.081]    ABI class: X.Org Video Driver, version 24.1
[  1168.081] (II) VESA(0): initializing int10
[  1168.081] (II) VESA(0): Primary V_BIOS segment is: 0xc000
[  1168.082] (II) VESA(0): VESA BIOS detected
[  1168.082] (II) VESA(0): VESA VBE Version 3.0
[  1168.082] (II) VESA(0): VESA VBE Total Mem: 49152 kB
[  1168.082] (II) VESA(0): VESA VBE OEM: AMD ATOMBIOS
[  1168.082] (II) VESA(0): VESA VBE OEM Software Rev: 15.50
[  1168.082] (II) VESA(0): VESA VBE OEM Vendor: (C) 1988-2010, Advanced Micro Devices, Inc.
[  1168.082] (II) VESA(0): VESA VBE OEM Product: POLARIS20
[  1168.082] (II) VESA(0): VESA VBE OEM Product Rev: 01.00
[  1168.100] (II) VESA(0): virtual address = 0x801e00000, VGAbase = 0x80197e000
    physical address = 0xc0000000, size = 50331648
[  1168.539] (II) VESA(0): Setting up VESA Mode 0x1D4 (3840x2160)
[  1168.539] (II) VESA(0): VBESetVBEMode failed, mode set without customized refresh.
[  1168.881] (==) VESA(0): Default visual is TrueColor
[  1168.885] (==) VESA(0): Backing store enabled
[  1168.886] (==) VESA(0): DPMS enabled
[  1168.886] (II) Initializing extension Generic Event Extension
[  1168.887] (II) Initializing extension SHAPE
[  1168.888] (II) Initializing extension MIT-SHM
[  1168.889] (II) Initializing extension XInputExtension
[  1168.891] (II) Initializing extension XTEST
[  1168.892] (II) Initializing extension BIG-REQUESTS
[  1168.893] (II) Initializing extension SYNC
[  1168.894] (II) Initializing extension XKEYBOARD
[  1168.895] (II) Initializing extension XC-MISC
[  1168.896] (II) Initializing extension SECURITY
[  1168.897] (II) Initializing extension XFIXES
[  1168.898] (II) Initializing extension RENDER
[  1168.898] (II) Initializing extension RANDR
[  1168.900] (II) Initializing extension COMPOSITE
[  1168.901] (II) Initializing extension DAMAGE
[  1168.902] (II) Initializing extension MIT-SCREEN-SAVER
[  1168.903] (II) Initializing extension DOUBLE-BUFFER
[  1168.904] (II) Initializing extension RECORD
[  1168.905] (II) Initializing extension DPMS
[  1168.906] (II) Initializing extension Present
[  1168.906] (II) Initializing extension DRI3
[  1168.907] (II) Initializing extension X-Resource
[  1168.907] (II) Initializing extension XVideo
[  1168.908] (II) Initializing extension XVideo-MotionCompensation
[  1168.908] (II) Initializing extension GLX
[  1168.909] (II) AIGLX: Screen 0 is not DRI2 capable
[  1170.088] (II) IGLX: Loaded and initialized swrast
[  1170.088] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[  1170.088] (II) Initializing extension XFree86-VidModeExtension
[  1170.089] (II) Initializing extension XFree86-DGA
[  1170.089] (II) Initializing extension XFree86-DRI
[  1170.090] (II) Initializing extension DRI2
[  1171.492] (II) config/udev: Adding input device System keyboard multiplexer (/dev/input/event0)
[  1171.493] (**) System keyboard multiplexer: Applying InputClass "Evdev keyboard"
[  1171.493] (**) System keyboard multiplexer: Applying InputClass "libinput keyboard catchall"
[  1171.493] (II) LoadModule: "libinput"
[  1171.493] (II) Loading /usr/local/lib/xorg/modules/input/libinput_drv.so
[  1171.941] (II) Module libinput: vendor="X.Org Foundation"
[  1171.941]    compiled for 1.20.9, module version = 0.30.0
[  1171.941]    Module class: X.Org XInput Driver
[  1171.941]    ABI class: X.Org XInput driver, version 24.1
[  1171.942] (II) Using input driver 'libinput' for 'System keyboard multiplexer'
[  1171.942] (**) System keyboard multiplexer: always reports core events
[  1171.942] (**) Option "Device" "/dev/input/event0"
[  1171.942] (**) Option "_source" "server/udev"
[  1172.302] (II) event0  - System keyboard multiplexer: is tagged by udev as: Keyboard
[  1172.302] (II) event0  - System keyboard multiplexer: device is a keyboard
[  1172.304] (II) event0  - System keyboard multiplexer: device removed
[  1172.304] (**) Option "config_info" "udev:/dev/input/event0"
[  1172.304] (II) XINPUT: Adding extended input device "System keyboard multiplexer" (type: KEYBOARD, id 6)
[  1172.304] (**) Option "xkb_rules" "evdev"
[  1172.467] (II) event0  - System keyboard multiplexer: is tagged by udev as: Keyboard
[  1172.467] (II) event0  - System keyboard multiplexer: device is a keyboard
[  1172.469] (II) config/udev: Adding input device System mouse (/dev/input/event1)
[  1172.469] (**) System mouse: Applying InputClass "libinput pointer catchall"
[  1172.469] (II) Using input driver 'libinput' for 'System mouse'
[  1172.469] (**) System mouse: always reports core events
[  1172.469] (**) Option "Device" "/dev/input/event1"
[  1172.469] (**) Option "_source" "server/udev"
[  1172.472] (II) event1  - System mouse: is tagged by udev as: Mouse
[  1172.473] (II) event1  - System mouse: device is a pointer
[  1172.473] (II) event1  - System mouse: device removed
[  1172.474] (**) Option "config_info" "udev:/dev/input/event1"
[  1172.474] (II) XINPUT: Adding extended input device "System mouse" (type: MOUSE, id 7)
[  1172.474] (**) Option "AccelerationScheme" "none"
[  1172.475] (**) System mouse: (accel) selected scheme none/0
[  1172.475] (**) System mouse: (accel) acceleration factor: 2.000
[  1172.475] (**) System mouse: (accel) acceleration threshold: 4
[  1172.477] (II) event1  - System mouse: is tagged by udev as: Mouse
[  1172.478] (II) event1  - System mouse: device is a pointer
[  1172.479] (II) config/udev: Adding input device Power Button (/dev/input/event2)
[  1172.479] (**) Power Button: Applying InputClass "Evdev keyboard"
[  1172.479] (**) Power Button: Applying InputClass "libinput keyboard catchall"
[  1172.479] (II) Using input driver 'libinput' for 'Power Button'
[  1172.479] (**) Power Button: always reports core events
[  1172.479] (**) Option "Device" "/dev/input/event2"
[  1172.479] (**) Option "_source" "server/udev"
[  1172.482] (II) event2  - Power Button: is tagged by udev as: Keyboard
[  1172.482] (II) event2  - Power Button: device is a keyboard
[  1172.483] (II) event2  - Power Button: device removed
[  1172.483] (**) Option "config_info" "udev:/dev/input/event2"
[  1172.483] (II) XINPUT: Adding extended input device "Power Button" (type: KEYBOARD, id 8)
[  1172.483] (**) Option "xkb_rules" "evdev"
[  1172.486] (II) event2  - Power Button: is tagged by udev as: Keyboard
[  1172.486] (II) event2  - Power Button: device is a keyboard
[  1172.487] (II) config/udev: Adding input device AT keyboard (/dev/input/event3)
[  1172.487] (**) AT keyboard: Applying InputClass "Evdev keyboard"
[  1172.487] (**) AT keyboard: Applying InputClass "libinput keyboard catchall"
[  1172.487] (II) Using input driver 'libinput' for 'AT keyboard'
[  1172.488] (**) AT keyboard: always reports core events
[  1172.488] (**) Option "Device" "/dev/input/event3"
[  1172.488] (**) Option "_source" "server/udev"
[  1172.490] (II) event3  - AT keyboard: is tagged by udev as: Keyboard
[  1172.490] (II) event3  - AT keyboard: device is a keyboard
[  1172.492] (II) event3  - AT keyboard: device removed
[  1172.492] (**) Option "config_info" "udev:/dev/input/event3"
[  1172.492] (II) XINPUT: Adding extended input device "AT keyboard" (type: KEYBOARD, id 9)
[  1172.493] (**) Option "xkb_rules" "evdev"
[  1172.495] (II) event3  - AT keyboard: is tagged by udev as: Keyboard
[  1172.496] (II) event3  - AT keyboard: device is a keyboard
[  1172.498] (II) config/udev: Adding input device vendor 0x04d9 USB Keyboard (/dev/input/event4)
[  1172.498] (**) vendor 0x04d9 USB Keyboard: Applying InputClass "Evdev keyboard"
[  1172.498] (**) vendor 0x04d9 USB Keyboard: Applying InputClass "libinput keyboard catchall"
[  1172.498] (II) Using input driver 'libinput' for 'vendor 0x04d9 USB Keyboard'
[  1172.498] (**) vendor 0x04d9 USB Keyboard: always reports core events
[  1172.498] (**) Option "Device" "/dev/input/event4"
[  1172.498] (**) Option "_source" "server/udev"
[  1172.502] (II) event4  - vendor 0x04d9 USB Keyboard, class 0/0, rev 1.10/4.06, addr 3: is tagged by udev as: Keyboard
[  1172.502] (II) event4  - vendor 0x04d9 USB Keyboard, class 0/0, rev 1.10/4.06, addr 3: device is a keyboard
[  1172.504] (II) event4  - vendor 0x04d9 USB Keyboard, class 0/0, rev 1.10/4.06, addr 3: device removed
[  1172.504] (**) Option "config_info" "udev:/dev/input/event4"
[  1172.504] (II) XINPUT: Adding extended input device "vendor 0x04d9 USB Keyboard" (type: KEYBOARD, id 10)
[  1172.504] (**) Option "xkb_rules" "evdev"
[  1172.508] (II) event4  - vendor 0x04d9 USB Keyboard, class 0/0, rev 1.10/4.06, addr 3: is tagged by udev as: Keyboard
[  1172.508] (II) event4  - vendor 0x04d9 USB Keyboard, class 0/0, rev 1.10/4.06, addr 3: device is a keyboard
[  1172.510] (II) config/udev: Adding input device vendor 0x047d Kensington Expert Mouse (/dev/input/event5)
[  1172.510] (**) vendor 0x047d Kensington Expert Mouse: Applying InputClass "libinput pointer catchall"
[  1172.510] (II) Using input driver 'libinput' for 'vendor 0x047d Kensington Expert Mouse'
[  1172.510] (**) vendor 0x047d Kensington Expert Mouse: always reports core events
[  1172.510] (**) Option "Device" "/dev/input/event5"
[  1172.511] (**) Option "_source" "server/udev"
[  1172.515] (II) event5  - vendor 0x047d Kensington Expert Mouse, class 0/0, rev 2.00/1.06, addr 2: is tagged by udev as: Mouse
[  1172.516] (II) event5  - vendor 0x047d Kensington Expert Mouse, class 0/0, rev 2.00/1.06, addr 2: device is a pointer
[  1172.518] (II) event5  - vendor 0x047d Kensington Expert Mouse, class 0/0, rev 2.00/1.06, addr 2: device removed
[  1172.518] (**) Option "config_info" "udev:/dev/input/event5"
[  1172.518] (II) XINPUT: Adding extended input device "vendor 0x047d Kensington Expert Mouse" (type: MOUSE, id 11)
[  1172.518] (**) Option "AccelerationScheme" "none"
[  1172.518] (**) vendor 0x047d Kensington Expert Mouse: (accel) selected scheme none/0
[  1172.519] (**) vendor 0x047d Kensington Expert Mouse: (accel) acceleration factor: 2.000
[  1172.519] (**) vendor 0x047d Kensington Expert Mouse: (accel) acceleration threshold: 4
[  1172.523] (II) event5  - vendor 0x047d Kensington Expert Mouse, class 0/0, rev 2.00/1.06, addr 2: is tagged by udev as: Mouse
[  1172.524] (II) event5  - vendor 0x047d Kensington Expert Mouse, class 0/0, rev 2.00/1.06, addr 2: device is a pointer

Monday, October 19, 2020

Poudriere after a time

Poudriere is not perfect but it is brilliant and a powerful tool.  I think that it may have already become my primary ports build method as for the most part it does what I expect it to do.  With poudriere and pkg, used together and only my poudriere repo enabled, I can be fairly certain that what I install will be built how I wish it to be built.  I can go to any individual poudriere port directory in /usr/local/poudriere/ports/default to modify or manipulate the port build as I desire.  I have my minetest build adjustments copied to its poudriere path, the modified Makefile and hide or remove a patch in its files.  Whether something succeeds to build or not only affects what I will later install with pkg, and not necessarily cause other breakage or removals.

The testport function is very helpful and may one day assist me with porting something to FreeBSD.  This also helps to detect mistakes in the ports tree members we already have.  This capability can be enabled for bulk builds as well but sometimes requires skirting a problematic port.  One recent issue is a sort of build system regression which may only affect a subset of ports and as such it is not something I can solve.  The only way around it is to successfully build those ports which fail while ignoring the problem, then once built and in the poudriere cache the test mode can be reenabled.  Other ports which poudriere points out 'portlint' type errors are easily fixed, as most involve errors in the Makefile itself such as the preferred order of lines or missing dependencies, or typos.

I have been keeping an updated installed-pkgs list since this seems to be one of the few aspects of many of the other ports-mgmt tools that poudriere does not automate directly.  It is a very simple thing to do, to create this list, and even though poudriere chooses its own preferred build order, I still organize my list alphabetically for my own ease of use.  Below is how I periodically create the file.

pkg origin | sort -u -d > installed-pkgs

This works quite well.  One may believe that the pkg origin command would deliver a concise list but it seems to include a number of duplicates.  Even if it was my own mistake causing the duplicates, it is likely a good idea to guard against them anyway.

There is one flaw of poudriere which if addressed would cover one further step I need to take for that list to be used without problems.  My system contains a number of ports which have since vanished from the tree.  I would have expected that placing their port origins into the blacklist file would solve the issue but it does not.  The peculiar thing about the blacklist file is that poudriere uses it to ignore buildable ports listed but still fails on those ports if they do not exist in the tree.  If the blacklist also filtered those ports from the set of files in the bulk build list given to it, we could add them to the blacklist once and forget about them with successive lists created with the instruction above.  This small flaw was not caused by adding anything else to the poudriere bulkbuild command, such as the -t which would cause other testing of each port, because I did not use it.  The only other possible cause is that my poudriere config file enables portlint scrutiny which I had not enabled, however, I still believe the blacklist ought to first filter the bulkbuild list as just described.  Instead of the desired expected function of the blacklist, I have to find and remove those specific presently non-existent ports from the buildlist.  Maybe I had built and installed something which had a directory in the ports tree (perhaps a new unsubmitted port), so pkg gains the registration of the port, then an update (such as fetch extract) or other rewrite of the ports tree causes it to vanish.  It might be speedier to add a port origin to avoid in the blacklist file than to go to the parent Makefile to add or remove a directory.  The point being, that the blacklist ought to be a universal exclude.  Below, when those port origins are not removed from the installed-pkgs file is an example output and its failure to build due to the flaw:

root@ichigo:~ # poudriere bulk -f ~/installed-pkgs -j 12amd64
[00:00:00] Creating the reference jail... done
[00:00:01] Mounting system devices for 12amd64-default
[00:00:01] Mounting ports/packages/distfiles
[00:00:01] Using packages from previously failed build: /usr/local/poudriere/data/packages/12amd64-default/.building
[00:00:01] Mounting ccache from: /var/cache/ccache
[00:00:01] Mounting packages from: /usr/local/poudriere/data/packages/12amd64-default
[00:00:01] Copying /var/db/ports from: /var/db/ports
[00:00:01] Appending to make.conf: /etc/make.conf
[00:00:01] Warning: Blacklisting (from /usr/local/etc/poudriere.d/12amd64-blacklist): sysutils/pcbsd-libsh
[00:00:01] Warning: Blacklisting (from /usr/local/etc/poudriere.d/12amd64-blacklist): x11-fonts/font-bitstream-speedo
[00:00:01] Warning: Blacklisting (from /usr/local/etc/poudriere.d/12amd64-blacklist): x11-fonts/fontconfig-reference
[00:00:01] Warning: Blacklisting (from /usr/local/etc/poudriere.d/12amd64-blacklist): x11-wm/fvwm-crystal
/etc/resolv.conf -> /usr/local/poudriere/data/.m/12amd64-default/ref/etc/resolv.conf
[00:00:01] Starting jail 12amd64-default
[00:00:01] Copying host static ccache from /usr/local/bin/ccache
[00:00:03] Logs: /usr/local/poudriere/data/logs/bulk/12amd64-default/2020-10-19_00h09m04s
[00:00:03] Loading MOVED for /usr/local/poudriere/data/.m/12amd64-default/ref/usr/ports<
[00:00:05] Ports supports: FLAVORS SELECTED_OPTIONS
[00:00:05] Gathering ports metadata
[00:00:05] Error: MOVED: x11-fonts/font-bitstream-speedo 2019-10-15 Deprecatd upstream
[00:00:05] Error: MOVED: x11-fonts/fontconfig-reference 2020-09-19 Remove outdated reference documentation
[00:00:05] Error: MOVED: x11-wm/fvwm-crystal 2020-09-19 Has expired: Uses deprecated version of python
[00:00:05] Error: Fatal errors encountered gathering initial ports metadata
[00:00:05] Cleaning up
12amd64-default: removed
12amd64-default-n: removed
[00:00:05] Unmounting file systems
root@ichigo:~ #

I created a script to iterate through the config of each port in the buildlist outside of the poudriere jail.  As you may recall, I setup the port config directory and the /etc/make.conf as symbolic links for poudriere, so any changes I would make to port options or the make.conf will affect any other ports builds including poudriere.  The make.conf file has become quite extensive, and will be mentioned in another blog post.  Each port config option has a keyword which I may add to OPTIONS_UNSET+= or OPTIONS_SET+= in the make.conf.  Many of these keywords are unique but a lot are used across multiple ports, sometimes with the same purpose, sometimes not, and sometimes the same purpose is triggered by multiple keywords.

When I use poudriere to build my ports, I am primarily using the content of my make.conf file to configure them, because the last step is another script which removes the saved configuration options for each port in the buildlist.  This technique works rather well, except when an option causes a cascade of failed or skipped ports builds.  The other wrinkle with this, is when two ports share some options but one of them uses all tick boxes and the other uses radio buttons.  This is easy to fix but it takes a moment to discover the issue and then code the exception into the make.conf.

Except for the possible build system flaw, using either -t with bulkbuild, or testport for individual ports will help triage problems.  With nearly 2000 ports listed as installed, it takes a LONG time to manually check the options for conflicts, as well as deciding which keywords need to be added into the make.conf before sending it to poudriere.  The config script helps with simply iterating through the list, taking away the need to repeatedly type the command make -C /path/to/port/origin config but I still have to verify that no new keywords affect my overall choices.  The config removal script works without prompting through all ports in the list and takes a bit of time though I can do other things until it finishes.

I choose not to use pulseaudio if possible, and rather have alsa or oss or both.  Other port option choices take a bit more investigation about which one to prefer, such as if ports are identical other than license, or author's philosophy, or if one is lighter or more efficient or more capable, or if any is a dependency for a larger percentage of other ports.  The default port config options are nice but it is a one-size-fits-all approach and tends not to favor something other than oss, or may include nVidia enhancements which I cannot use, or is not adapted for my processor or gpu.  I am likely not alone as an admin of my own system or a FreeBSD user, in that both tend to prefer a greater level of control, or we'd be using something else.

The combination of poudriere, no saved port configs, and a rather large, detailed make.conf (once it and the buildlist are mostly finalized) mean that I can have semi-regular updates to the ports I use with few surprises.  I can set the job to run while I am asleep and much of the time have it nearly finished before I wake.  If something doesn't build, the older pkg remains in cache, and pkg upgrade will not bite me.  Maybe eventually I will investigate the poudriere daemon option or using a cron job to get things a bit more automated, but this is how I relate to poudriere at the moment.  It is a reliable tool I can keep using.

Saturday, October 3, 2020

Revisiting the powder keg

I've just decided to install poudriere.  I used it many years ago during a time when the config for it or pkg or both were seemingly in a bit of flux.  Back then, I had set it up and liked how it worked, but I had some troubles over time.  All that I recall now, as its been quite a number of years, is that something relating to the configuration of something caused it to break, I fixed that config but it broke again.  It could be that part of the trouble was my own mistakes.  Whatever it was, I abandoned poudriere for other ports management tools which worked, or none at all.  I believe I went back to portmaster or portupgrade for some time, until having issues with those as well.  So for a while I also used the ports build mechanism directly which had always been rock solid and always should be rock solid, period.

For the last few years I have used synth or direct builds.  Since there have been in this last year or so, a bit of inconsistency with either the ports system itself or flaws with the build which synth cannot parse, I have also made a number of personal scripts.  These scripts help me to rebuild all ports which had been built with dependencies that I wish to remove, dependencies which may or may not have exposed configs.  One can remove a dependency with pkg, and it lists all the ports dependent upon it, but there is no way to reconfigure or rebuild each of them in turn so that an undesirable dependency is eliminated-- especially one not exposed by its config or Makefile.

The same situation is involved when switching default versions of python for example.  I realize that in the distant past (while using PC-BSD as an initial base os) I used a port origin change with portmaster or portupgrade, and I know pkg has something like this. The trouble being, I do not use the first two tools, and I suspect that pkg would affect which pkgs are installed, and may not do everything I desire.  That is, even if I were to instruct any of those ports management tools at invocation that any certain thing would have a port origin change, it would not necessarily rebuild everything involved.  I am not aware of a way to do it with synth alone, either, so went to my own scripts.

I am certainly not expert with #!/bin/sh scripting, and sometimes my errors or changes to tools I use within my scripts cause unintended catastrophic failures.  Recently though a failure lead to getting my GUI functioning again, since the error caused all of libdrm and dependents to be removed.  The script failed to capture the list of what might be removed before it did so, the removal part was intended of course.  I had no idea that libdrm needed to be rebuilt after a kernel rebuild, as I had not needed to do so in the past, it is now in the list of things to rebuild when I ever do so.  Much easier than trying to determine which of any number of things becomes broken, I simply force a reinstall of all candidates.

I had introduced this post with poudriere , which I have now installed, soon I will see what builds with it that fails with synth or which should always succeed with a direct build but does not.  I am uncertain whether any cruft remains from the previous attempt to use poudriere, but whether it is present or not, I still have to look at proper configuration for my system.  The manpage for poudriere mentions a sample self-documented config file /usr/local/etc/poudriere.conf.sample which would be a good beginning and is often what I use initially if such a file exists.  All I need to do (as root since any ports installs, management, and certain directory permissions would require it) is: cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf

But also of course, I shall look at the copy for what I might need to adjust, enable, disable.  It is good practice to keep the original and revise a copy, or make a backup before revising the original.  Either way, re-obtaining a file is at least a hassle and at most (worst case) impossible, we cannot guarantee remembering all the details.  I tend to refer to instructions for tasks I've done innumerable times like updating kernel & world, and though I sometimes recall some details, I know that "how to update the locate database" is near the end of its manpage, some bad habits I suppose but they remain.  Another recommendation which can be very helpful, is if any config file has a method for including comments or non-operative text, to add a comment to explain to your future self why you made any certain adjustment, possibly add where the tip was discovered.

One of the first things I notice is that poudriere can take advantage of my ZFS filesystem, so I toggle the appropriate settings.  It appears that one MUST adjust this config if adapting the sample file, because the download address for fetch needs to be defined, below is what you get to start.

# Suggested: https://download.FreeBSD.org
FREEBSD_HOST=_PROTO_://_CHANGE_THIS_

I am okay with the suggestion for now, so I substitute that.  Next, I uncomment the data location line and enable portlint with a change from 'no' to 'yes' because why not?

POUDRIERE_DATA=${BASEFS}/data
# Use portlint to check ports sanity
USE_PORTLINT=yes

For the most part I kept the defaults because they are a good starting point or meet my needs.  I chose to enable some debug type capabilities and limited it to 4 of my 6 processors.  I expect that this poudriere config will itself change over time, so this is why I am not providing it in whole nor commenting on every value.  I may list the few items I modified, but for now I believe I could try using poudriere , or perhaps not.  Proof the manpage might need a slight bit of update in that yes it is still technically a valid example but has been unsupported since July 31, 2012:

First you have to create a jail, which will hold all the building infrastructure needs.

poudriere jail -c -v 8.2-RELEASE -a amd64 -j 82amd64

I was about to use 12.1-RELEASE since that is closest to what I have installed on my system, it is actually 12-STABLE or should be-- I need to verify this, because not only do I see my gkrellm showing 12.2 but it says 12.2-PRERELEASE which seems odd if I actually have 12-STABLE installed now.  Maybe I need to make some adjustment to my /usr/src so it will be the newer -STABLE?  Because of these inconsistencies and to verify whether 12-STABLE is a thing for poudriere, I did a google search and found, https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/testing-poudriere.html#testing-poudriere-setup which gives me proof and a bit different syntax below.  The porters-handbook page appears to have been last modified September 11, 2020, 10:26:43 AM CDT, while the manpage is from March 4, 2019

poudriere jail -c -j 11i386 -v stable/11 -a i386 -m svn+https

I will adjust to my needs, and also arrange it to more closely match the command the manpage gave for easier comparison.  This creates a jail, using version STABLE-12, architecture amd64, jailname 12amd64, and mode svn over https.

poudriere jail -c -v stable/12 -a amd64 -j 12amd64 -m svn+https

The above seems to work, though I do not like that it sits there not providing more feedback than "Checking out the sources with svn+https..." and after a while that part finally ends while I am not watching, to transition into a full buildkernel and buildworld it seems.  I suspect that had I used a RELEASE version, It would simply download and unpack.  The next step is to create the ports tree for it:

poudriere ports -c

So, now I am nearly ready to test it or do a full-blown run of things I would update on my system.  The manpage tells me to create a plain text file with one port origin per line.  This would be sysutils/gkrellm2 for example, followed by audio/asunder on the next line, and the same for a series of port origins of things I want to build.  Lucky me, due to various struggles with things becoming uninstalled for one reason or other, I already have a number of file lists with this same formatting, both my scripts and synth use these when I have need of them.  In order to begin a bulk build, I reference the file list when I invoke poudriere , pkglist in my home directory is the list used, and the jail for the building is 12amd64:

poudriere bulk -f ~/pkglist -j 12amd64

I chose one of the various file lists, happened to be 'Bunch-of-games' and discovered that I will have to rebuild the kernel and world of the host.  I realize there is probably another way to solve the issue, but it is about time to update anyhow.  This will also guarantee that I have a most updated and proper /usr/src.  The error below is unlikely to occur if a RELEASE version is used since those do not fundamentally change with any applied updates, and such updates are rare in comparison to -STABLE.

[00:00:01] Warning: !!! Jail is newer than host. (Jail: 1202500, Host: 1201523) !!!
[00:00:01] Warning: This is not supported.
[00:00:01] Warning: Host kernel must be same or newer than jail.

In the process of writing another blog post relating to updating kernel and world, I verified that although oddly gkrellm says '12.2-PRERELEASE' my source directory is correct, as the output below shows.  However, even more oddly, gkrellm now shows '12.2-STABLE' after a recent update around the time of writing that blog post.

root@ichigo:/usr/src # svn info
Path: .
Working Copy Root Path: /usr/src
URL: https://svn0.us-west.freebsd.org/base/stable/12
Relative URL: ^/stable/12
Repository Root: https://svn0.us-west.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 365688
Node Kind: directory
Schedule: normal
Last Changed Author: kevans
Last Changed Rev: 365682
Last Changed Date: 2020-09-12 20:44:31 -0500 (Sat, 12 Sep 2020)

And so back to that previous command which was interrupted due to the poudriere jail install being newer than my host system.

poudriere bulk -f ~/pkglist -j 12amd64

Didn't I mention that often there always seems to be yet one more error to correct?  This is especially true in the process of doing something new, setting up a new tool or process.  Here is another interruption, another error.  I chose to use ccache and have used it with synth or with ordinary (direct) port builds too, but now a config for poudriere needs adjusting, or the ccache config, or the ccache install itself.

[00:00:00] Creating the reference jail... done
[00:00:01] Mounting system devices for 12amd64-default
[00:00:01] Mounting ports/packages/distfiles
[00:00:01] Using packages from previously failed build: /usr/local/poudriere/data/packages/12amd64-default/.building
[00:00:01] Mounting ccache from: /var/cache/ccache
[00:00:01] Mounting packages from: /usr/local/poudriere/data/packages/12amd64-default
/etc/resolv.conf -> /usr/local/poudriere/data/.m/12amd64-default/ref/etc/resolv.conf
[00:00:01] Starting jail 12amd64-default

[00:00:02] Error: CCACHE_STATIC_PREFIX used but /usr/local/bin/ccache is not static.

[00:00:02] Cleaning up
12amd64-default: removed
12amd64-default-n: removed
[00:00:02] Unmounting file systems

According to the error above, I believe the issue is that /usr/local/bin/ccache is a symlink, but I will have to check this to be certain and then I need to look at whether the poudriere config is what needs adjusting in some way to relate to it differently.

My first thought was wrong, static meant built with integral libraries instead of shared libraries, so the fix is an adjustment to the poudriere config, or a reconfigure and rebuild of ccache.  I want to use ccache, and I should have read the poudriere configuration file more closely because it describes my mistake perfectly.  My ccache was not built statically, so I will need to rebuild it.  Hopefully a statically build ccache will not cause trouble with any other use of it as with synth or direct port builds.  We usually learn more from our mistakes, but without this blog post I might not remember from one time to the next.  So the rebuild of ccache with the revised 'static' config option enabled went much faster than I would have ever expected.

Now one last time to repeat that same command to initiate the build of some games, the list renamed to pkglist.  No errors, it gets past the last hiccup and begins the building of those ports in the list.  It seems that pkg itself had updated since the last time I built any ports by any method recently, so it is the first thing poudriere builds.

[00:00:00] Creating the reference jail... done
[00:00:01] Mounting system devices for 12amd64-default
[00:00:01] Mounting ports/packages/distfiles
[00:00:01] Using packages from previously failed build: /usr/local/poudriere/data/packages/12amd64-default/.building
[00:00:01] Mounting ccache from: /var/cache/ccache
[00:00:01] Mounting packages from: /usr/local/poudriere/data/packages/12amd64-default
/etc/resolv.conf -> /usr/local/poudriere/data/.m/12amd64-default/ref/etc/resolv.conf
[00:00:01] Starting jail 12amd64-default
[00:00:01] Copying host static ccache from /usr/local/bin/ccache
[00:00:03] Logs: /usr/local/poudriere/data/logs/bulk/12amd64-default/2020-09-16_17h59m11s
[00:00:03] Loading MOVED for /usr/local/poudriere/data/.m/12amd64-default/ref/usr/ports
[00:00:04] Ports supports: FLAVORS SELECTED_OPTIONS
[00:00:04] Gathering ports metadata
[00:00:12] Calculating ports order and dependencies
[00:00:13] pkg package missing, skipping sanity
[00:00:13] Skipping incremental rebuild and repository sanity checks
[00:00:13] Cleaning the build queue
[00:00:13] Sanity checking build queue
[00:00:14] Processing PRIORITY_BOOST
[00:00:14] Balancing pool
[00:00:14] Recording filesystem state for prepkg... done
[00:00:15] Building 534 packages using 4 builders
[00:00:15] Starting/Cloning builders
[00:00:16] Hit CTRL+t at any time to see build progress and stats
[00:00:16] [01] [00:00:00] Building ports-mgmt/pkg | pkg-1.15.4
[00:02:11] [01] [00:01:55] Finished ports-mgmt/pkg | pkg-1.15.4: Success

Once this finally finishes, the next thing to figure out is how I will use the ports that poudriere builds into pkgs on the host system for poudriere, or in other words, how I can build with poudriere and use the pkgs it creates on the same box where they are built.  This could be sticky, I believe it is mostly how pkg repos are configured, and I believe I can simply add one more repo definition to those already present in the configuration file.  My system seems mostly responsive during this build of 534 packages, the list I gave was not even forty games, but gkrellm shows all six processor cores at above 90% use and top so far says load average of about 13!

In all fairness, right now I have firefox running with multiple windows, probably a hundred tabs, and one has a flash game in a tab.  I'd exit firefox to see but since things are responsive I'm not too concerned right now.  So far, 122 ports built in about 30 minutes with my loaded firefox running.  Since I am more curious, I will now quit firefox to see what the difference will be.  There was no drastic change as I may have expected.  The load average depending upon what was being built reached as high as 20, often hovering around 18, and gkrellm showed the processors at 90% much of the time.  All this means that firefox was not itself causing the high load averages or processor use.

The build finished and the last lines are below which followed a huge paragraph listing all the ports successfully built.

[07:18:43] Failed ports: lang/rust:build
[07:18:43] Skipped ports: games/veloren
[12amd64-default] [2020-09-16_17h59m11s] [committing:] Queued: 534 Built: 532 Failed: 1   Skipped: 1   Ignored: 0   Tobuild: 0    Time: 07:18:40
[07:18:43] Logs: /usr/local/poudriere/data/logs/bulk/12amd64-default/2020-09-16_17h59m11s
[07:18:43] Cleaning up
12amd64-default: removed
12amd64-default-n: removed
[07:18:43] Unmounting file systems

I cannot say right now whether my /etc/make.conf which is normally used would have meant that every port would build, or that port configurations which stray from default (as is often my preference) would affect the build either.  There is mention, I believe in the poudriere manpage about copying a directory or linking it into the poudriere jail which would cause those port configurations to be used.  I also realized after initiating the poudriere build that I forgot to set it up to use my make.conf as well.  This means that although all those ports built on my system, they all used defaults, and therefore any number of them would be incompatible with what I have installed now.  So I will need to correct those missing items I described and then do another build of the same things or other things.  The good part is that having been run once, some things will be in its cache or that of ccache and the successive runs should each be a little faster, especially when dependencies are satisfied without needing to be built or rebuilt.  There are quite a number of ports I build which use a default configuration.

First lets see what needs to be done for the port configs and then for the make.conf.  Once those are set properly, I will also need to investigate how the repo built by poudriere would be accessed so as to install those packages, and set that in the appropriate pkg configuration file.

The port configs that I already have been using, that have been set by having built them at least once can be copied, the manpage says this:

   As a starter, you may want to copy an existing /var/db/ports/ to
     /usr/local/etc/poudriere.d/options.

My customized make.conf can also be used by making a symbolic link because then all methods I might use for building will remain synchronized.  It would probably be better that the ports configuration directory be made accessible to poudriere as a symbolic link as well, but maybe I should have a seperate vanilla poudriere jail which would use default configurations.  The manpage mentions the make.conf as below:

    Create optional make.conf

     You can also specify a global make.conf which will be used for all the
     jails.  Any of the following are allowed and will all be used in the
     order shown:

           /usr/local/etc/poudriere.d/make.conf

There are additional filenames which poudriere will use but the above is the first one and the most simple which I believe is the global one.  If I were to set one per jail I would use a slightly different name:

/usr/local/etc/poudriere.d/<jailname>-make.conf

Now that I know how to get the port configs and my custom make.conf into the poudriere build system, there remains one more thing to clarify.  My minetest Makefile is modified, so do I modify the copy in the ports tree of the poudriere jail or use some other method?  Since I cannot find anything in the manpage that directly and specifically covers this situation in any other manner, I will copy or symbolic link to the modified Makefile for minetest or for any other port which has a custom Makefile I create.

Now that all of the details are finally set properly for that same list of games to be rebuilt, I can initiate a repeat poudriere build, but after I update the ports tree since it has been a few days.  The only remaining task is to configure the pkg repo.  Below, the manpage does mention the location of the poudriere created pkgs, the jailname will be different of course.

    [Find your packages]

     Once the bulk build is over, you can meet your shiny new packages here:

           /usr/local/poudriere/data/packages/81i386

     with 81i386 as the name of the jail.

The manpage for pkg mentions to see pkg.conf(5), which means:

man 5 pkg.conf

which gives you its manpage and contains the applicable instruction below:

REPOSITORY CONFIGURATION
     To use a repository you will need at least one repository configuration
     file.

     Repository configuration files are searched for in order of the
     directories listed in the REPOS_DIR array, which defaults to /etc/pkg/
     and /usr/local/etc/pkg/repos/.

     Filenames are arbitrary, but should end in ‘.conf’ For example
     /usr/local/etc/pkg/repos/myrepo.conf.

There is also mention of an example file /usr/local/etc/pkg/repos/example.conf and details for how the repo.conf file should be constructed using ucl format, as well as a repo.conf example in the manpage text itself.  Personally, I have more trouble adapting a rather specific example to my own needs than I do with adapting a generalized example or picking and choosing options in a very well commented configuration file.  I often have a weird corner case as my need which is different than much of the documentation examples or I expect to do something which is not illustrated.

So my next step is to get the make.conf file set:

ln -s /etc/make.conf /usr/local/etc/poudriere.d/12amd64-make.conf

Lets try to use a symbolic link for the ports config below, I believe this should work but the manpage was slightly unclear whether I should copy the contents or the directory into the poudriere location.  I will simply link the two, which would be more like copying the contents.  The options directory does not yet exist, even after the previous ports build so i can be rather certain they were all built with defaults.

ln -s /var/db/ports /usr/local/etc/poudriere.d/options

I am usually confused about the order of the two when I create a symbolic link, I happened to be right for the first one and used the same order for the second one.  If I do a long list for each of those two symbolic links, this is what I see which is correct:

# ls -l /usr/local/etc/poudriere.d/12amd64-make.conf
lrwxr-xr-x  1 root  wheel  14 Sep 19 14:26 /usr/local/etc/poudriere.d/12amd64-make.conf -> /etc/make.conf

# ls -l /usr/local/etc/poudriere.d/options
lrwxr-xr-x  1 root  wheel  13 Sep 19 14:45 /usr/local/etc/poudriere.d/options -> /var/db/ports

Since using the packages which poudriere builds involves the last step and would be pointless if the most recent changes fail, I am going to test those two symbolic links by having poudriere build that same list of games, the command was:

poudriere bulk -f ~/pkglist -j 12amd64

The two symbolic links work.  I am pleased that poudriere can handle an include at the end of one file to extend the make.conf with a second file, however, poudriere halts and gives the error message below:

make: "/etc/make.conf" line 67: Cannot open /usr/local/etc/synth/LiveSystem-make.conf
make: Fatal errors encountered -- cannot continue make: Unknown modifier ':'
make: Unknown modifier ':'
make: "/etc/make.conf" line 67: Cannot open /usr/local/etc/synth/LiveSystem-make.conf
make: Fatal errors encountered -- cannot continue eval: make:: not found
export: make:: bad variable name

After a little investigation I discover that where poudriere will balk, the error is otherwise ignored as far as I know, or it might silently fail and the lines that follow it are then ignored.  What it was, is a non-existent port which is referenced in my make.conf and due to no longer being present, the variable is invalid which poudriere doesn't like and halts.  This should be true regardless, but possibly another variable construction would silently fail as it should because in this section of my make.conf I am only offering potential areas which may require kerberos which is an issue for some builds.  Until I can figure out the new variable construction, I will leave things as they are and remove the lines which cause the failure.  The line given as the error is after the actual error which is interesting and can lead to frustration, so either look to the line prior to the error or doublecheck any such variables which rely upon existence of a directory in the ports tree.  The lines I removed from the/usr/local/etc/synth/LiveSystem-make.conf file are below, I highlighted the part which is the variable construction.

.if ${.CURDIR:M*/ports/devel/electron8}
  OPTIONS_UNSET+=KERBEROS
.endif

I'll try once more and see if poudriere will build.  Did I ever mention that I am rather gifted at discovering unexplainable errors?  So, the error above is something which did trip up poudriere, BUT, and this is the weird part: if I combine the two files which comprise my make.conf, the error which poudriere tells me still remains on the same line number will no longer be an error and the build will start just fine.  It looks like I will need to look closely at the two files, one which is rather tiny has an include for the second file which adds the bulk of my adjustments, and figure out what to do about having them both and whether synth needs them that way, or any other building needs them split.  Until I decide, and in order to finally succeed with poudriere, I am going to combine the files into one large make.conf, and be done with it for now.

Once more I have forgotten about the modified minetest Makefile, so the build poudriere is working on now will not be all that I would wish it to create.  It will be good enough for proof of build and for accessing as a pkg repo.  When it finally finishes after less than seven hours I expect, I can look at the pkg repo access part, those docs for it I really do not like.  I saw a BastilleBSD arrangement which would have poudriere building ports for a bastille jail, so maybe I can look at any repo configuration it has, except of course the rule of google says that any half-remembered data can not easily be re-found.

It built about 3 hours faster the second time but a number of things failed also.  I believe a good chunk of those items which did not build were due to my own port configuration choices.  Yes I am avoiding the pkg repo step.  Since I set poudriere to use the same ports options database as the ports tree outside of poudriere , I was able to adjust a couple ports which i saw failed to build.  Now I will try to get more successful builds in four hours or less but first lets update the poudriere ports tree:

poudriere ports -u

[00:00:00] Updating portstree "default" with portsnap...Looking up portsnap.FreeBSD.org mirrors... 4 mirrors found.
Fetching snapshot tag from ipv4.aws.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Fri Sep 11 14:55:09 CDT 2020 to Sat Sep 19 20:36:39 CDT 2020.
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 4 metadata files... done.
Fetching 839 patches.
(839/839) 100.00%  done.

Perhaps I should have updated the ports tree before the first attempt?  We are nearing another FreeBSD release but 839 patches to the ports tree seems like a rather large number to have all at once.  After some port config tweaks which I can do from outside of poudriere (because of the symlink to the ports config directory) all but one of the games successfully builds.

The last step, getting access to the built packages repo.  The answer seems to have always been present.  In /usr/local/etc/pkg/repos is a file for the synth repo which describes itself as automatically generated, and has all the information I need to create a repo file for the poudriere packages.  What it began as is below:

# Automatically generated.

Synth: {
url      : file:///var/synth/live_packages,
 priority : 0,
 enabled  : yes,
}

What I modified it to be for the new file called my_poudriere_repo.conf looks like this:

# Set for test 9-20-20 8:20pm

poudriere: {
  url      : file:///usr/local/poudriere/data/packages/12amd64,
  priority : 0,
  enabled  : yes,
}

I believe that when something is found by pkg for install it will place the name (highlighted) into square brackets.  This means that those names could be anything descriptive or useful but I would limit them to one word to be safe, spaces might need to be handled a special way but its easier to just keep the name simple.  The priority can be adjusted to make the new repo more important if I increase that value in the synth repo file.  It seems like most things are working but when I test the new pkg repo, it gives me an error:

root@ichigo:~ # pkg install minetest
Updating Synth repository catalogue...
Synth repository is up to date.
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
Updating poudriere repository catalogue...
pkg: file:///usr/local/poudriere/data/packages/12amd64/meta.txz: No such file or directory
repository poudriere has no meta file, using default settings
pkg: file:///usr/local/poudriere/data/packages/12amd64/packagesite.txz: No such file or directory
Unable to update repository poudriere
Error updating repositories!

I believe this was a sticking point when I used poudriere years ago.  I will have to look into how those files can be generated after any update to the built packages.  I would have hoped it might be automatic.  I looked in the poudriere.conf file and did not see anything right away.  I didn't notice that there was a slight error with the pkg repo path, which means the manpage for poudriere needs another adjustment for accuracy, so in order for it to work, I need to modify that repo file slightly to look like this:

poudriere: {
  url      : file:///usr/local/poudriere/data/packages/12amd64
  priority : 0,
  enabled  : yes,
}

I discovered the error because I was attempting the command below which I believe is what will finally initialize the repo as an accessible pkg repo on the system.  This might also automatically occur if the file above had been correct when I tried to install a pkg.  I am not sure whether this is now final and I will not need to repeat the command below, or if I should execute it periodically.  If I am right that pkg will self-update each repo when attempting to install a pkg, then I am done.

pkg repo /usr/local/poudriere/data/packages/12amd64-default

So now I will again attempt to install minetest and see what it does.

The following 3 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        libgee: 0.20.1 [poudriere]
        openblas: 0.3.10,1 [FreeBSD]

Installed packages to be REINSTALLED:
        minetest-5.3.0 [Synth] (direct dependency changed: jsoncpp)

Number of packages to be installed: 2
Number of packages to be reinstalled: 1

The process will require 87 MiB more space.
7 MiB to be downloaded.

Proceed with this action? [y/N]:

This is very interesting.  Three different pkg repos will be or could be used to satisfy the install.  I know that the FreeBSD repo is remote and uses all defaults, the synth and poudriere repos are local and both use my port configurations (not default) or modifications.  This also indicates to me that I may want to look at jsoncpp a little more closely.

Now I have multiple options to obtain a pkg to install as well as multiple methods for building them.  I do not have any definite plans on which method I will use most but I'm sure that eventually I may favor one over the others, possibly poudriere, and I still need to copy that minetest Makefile into the poudriere jail, and I should not forget to hide the patch file as well (all this mentioned in Minetest better).  The applicable directory is /usr/local/poudriere/ports/default/games/minetest but note default in the path, which I believe means I could possibly have a modified ports tree or other custom poudriere, and likely ties to the above mentioned repo config.

One other thing I have discovered while writing this blog post over the last week or so, is that it helped me be a bit more meticulous and detail oriented from start to finish because I wanted to provide all that information for anyone who may read this.  Writing about it nearly step by step meant that I could keep track of my progress and know where I left off when I had to put the project on hold.  I may have eventually succeeded but this process helped me work in a less random "scattershot" way.  I think I should write a blog post about any new things I attempt as it will be useful to us both.

Frequently viewed this week