f31522130f
Build system (5 gaps hardened): - COOKBOOK_OFFLINE defaults to true (fork-mode) - normalize_patch handles diff -ruN format - New 'repo validate-patches' command (25/25 relibc patches) - 14 patched Qt/Wayland/display recipes added to protected list - relibc archive regenerated with current patch chain Boot fixes (fixable): - Full ISO EFI partition: 16 MiB → 1 MiB (matches mini, BIOS hardcoded 2 MiB offset) - D-Bus system bus: absolute /usr/bin/dbus-daemon path (was skipped) - redbear-sessiond: absolute /usr/bin/redbear-sessiond path (was skipped) - daemon framework: silenced spurious INIT_NOTIFY warnings for oneshot_async services (P0-daemon-silence-init-notify.patch) - udev-shim: demoted INIT_NOTIFY warning to INFO (expected for oneshot_async) - relibc: comprehensive named semaphores (sem_open/close/unlink) replacing upstream todo!() stubs - greeterd: Wayland socket timeout 15s → 30s (compositor DRM wait) - greeter-ui: built and linked (header guard unification, sem_compat stubs removed) - mc: un-ignored in both configs, fixed glib/libiconv/pcre2 transitive deps - greeter config: removed stale keymapd dependency from display/greeter services - prefix toolchain: relibc headers synced, _RELIBC_STDLIB_H guard unified Unfixable (diagnosed, upstream): - i2c-hidd: abort on no-I2C-hardware (QEMU) — process::exit → relibc abort - kded6/greeter-ui: page fault 0x8 — Qt library null deref - Thread panics fd != -1 — Rust std library on Redox - DHCP timeout / eth0 MAC — QEMU user-mode networking - hwrngd/thermald — no hardware RNG/thermal in VM - live preload allocation — BIOS memory fragmentation, continues on demand
85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
|
|
# Copyright 2021 Collabora, Ltd.
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
# a copy of this software and associated documentation files (the
|
|
# "Software"), to deal in the Software without restriction, including
|
|
# without limitation the rights to use, copy, modify, merge, publish,
|
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
# permit persons to whom the Software is furnished to do so, subject to
|
|
# the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice (including the
|
|
# next paragraph) shall be included in all copies or substantial
|
|
# portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
# SOFTWARE.
|
|
|
|
# Helper script that reads drm_fourcc.h and writes a static table with the
|
|
# simpler format token modifiers
|
|
|
|
import sys
|
|
import re
|
|
|
|
filename = sys.argv[1]
|
|
towrite = sys.argv[2]
|
|
|
|
fm_re = {
|
|
'intel': r'^#define I915_FORMAT_MOD_(\w+)',
|
|
'others': r'^#define DRM_FORMAT_MOD_((?:ARM|SAMSUNG|QCOM|VIVANTE|NVIDIA|BROADCOM|ALLWINNER)\w+)\s',
|
|
'vendors': r'^#define DRM_FORMAT_MOD_VENDOR_(\w+)'
|
|
}
|
|
|
|
def print_fm_intel(f, f_mod):
|
|
f.write(' {{ DRM_MODIFIER_INTEL({}, {}) }},\n'.format(f_mod, f_mod))
|
|
|
|
# generic write func
|
|
def print_fm(f, vendor, mod, f_name):
|
|
f.write(' {{ DRM_MODIFIER({}, {}, {}) }},\n'.format(vendor, mod, f_name))
|
|
|
|
with open(filename, "r") as f:
|
|
data = f.read()
|
|
for k, v in fm_re.items():
|
|
fm_re[k] = re.findall(v, data, flags=re.M)
|
|
|
|
with open(towrite, "w") as f:
|
|
f.write('''\
|
|
/* AUTOMATICALLY GENERATED by gen_table_fourcc.py. You should modify
|
|
that script instead of adding here entries manually! */
|
|
static const struct drmFormatModifierInfo drm_format_modifier_table[] = {
|
|
''')
|
|
f.write(' { DRM_MODIFIER_INVALID(NONE, INVALID) },\n')
|
|
f.write(' { DRM_MODIFIER_LINEAR(NONE, LINEAR) },\n')
|
|
|
|
for entry in fm_re['intel']:
|
|
print_fm_intel(f, entry)
|
|
|
|
for entry in fm_re['others']:
|
|
(vendor, mod) = entry.split('_', 1)
|
|
if vendor == 'ARM' and (mod == 'TYPE_AFBC' or mod == 'TYPE_MISC' or mod == 'TYPE_AFRC'):
|
|
continue
|
|
print_fm(f, vendor, mod, mod)
|
|
|
|
f.write('''\
|
|
};
|
|
''')
|
|
|
|
f.write('''\
|
|
static const struct drmFormatModifierVendorInfo drm_format_modifier_vendor_table[] = {
|
|
''')
|
|
|
|
for entry in fm_re['vendors']:
|
|
f.write(" {{ DRM_FORMAT_MOD_VENDOR_{}, \"{}\" }},\n".format(entry, entry))
|
|
|
|
f.write('''\
|
|
};
|
|
''')
|