From f886acdcc6017cb04a48ef6fdea6c3d10a0b72c3 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Tue, 5 Nov 2024 13:14:43 +0100 Subject: [PATCH 01/69] qemu-usb: limit control transfer to 1 sec timeout Fix genodelabs/genode#5376 --- repos/libports/src/lib/qemu-usb/host.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/repos/libports/src/lib/qemu-usb/host.cc b/repos/libports/src/lib/qemu-usb/host.cc index d4f5d85e6f..977e26feb9 100644 --- a/repos/libports/src/lib/qemu-usb/host.cc +++ b/repos/libports/src/lib/qemu-usb/host.cc @@ -274,6 +274,13 @@ class Device : public List_model::Element struct Urb : Usb::Device::Urb { + /** + * Unconditionally set control transfer timeout to 1 sec, + * otherwise it can block a device forever, as we do not + * cancel control transfers yet in this backend. + */ + enum { CONTROL_XFER_TIMEOUT = 1000 }; + using Request_type = Usb::Device::Packet_descriptor::Request_type::access_t; @@ -289,7 +296,8 @@ class Device : public List_model::Element : Usb::Device::Urb(device._device, request, (Request_type)request_type, - value, index, size), + value, index, size, + CONTROL_XFER_TIMEOUT), _packet(packet) { } }; From dffa32a72c173038137bd738f1186335c83df519 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 7 Nov 2024 15:13:32 +0100 Subject: [PATCH 02/69] menu_view: don't skip frames after idle When updating a dialog after a prolonged idle time with no active animatons, the next _handle_gui_sync would wrongly fast-forward animations for all the frames passed since the last _handle_gui_sync. On the PinePhone, this effect is clearly visible when switching between the main section. The GUI jumps from one state to another instead of transitioning. This patch solves the issue be resetting '_previous_sync' when waking up from idle. Related to issue #5347 --- repos/gems/src/app/menu_view/dialog.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repos/gems/src/app/menu_view/dialog.h b/repos/gems/src/app/menu_view/dialog.h index 7571541a40..80cc7e0e78 100644 --- a/repos/gems/src/app/menu_view/dialog.h +++ b/repos/gems/src/app/menu_view/dialog.h @@ -265,11 +265,12 @@ void Menu_view::Dialog::_handle_dialog() _action.hover_changed(); if (!_gui_sync_enabled) { + _previous_sync = _action.now(); _gui.framebuffer.sync_sigh(_gui_sync_handler); _gui_sync_enabled = true; } - _handle_gui_sync(); + _redraw(); } From 7fe7ca19686eac73bf53f2757fd5ffb5be15831d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 8 Nov 2024 13:57:37 +0100 Subject: [PATCH 03/69] driver/wifi: provide best practices in README --- repos/dde_linux/src/driver/wifi/README | 79 ++++++++++++++++++++++++-- 1 file changed, 73 insertions(+), 6 deletions(-) diff --git a/repos/dde_linux/src/driver/wifi/README b/repos/dde_linux/src/driver/wifi/README index 2350231d90..d4f812d98e 100644 --- a/repos/dde_linux/src/driver/wifi/README +++ b/repos/dde_linux/src/driver/wifi/README @@ -122,7 +122,9 @@ nodes. Such a node describes the parameters of a network and its existence implies the intent to join the network. It has the following attributes. -* :ssid: sets the name of the network. +* :ssid: sets the name of the network. It also serves as look-up key + for a network and adding multiple nodes with the same SSID are + treated as the same node whose attributes are changing. Note: the SSID is copied verbatim and at the moment, there is no way to express or escape non alphanumeric characters. @@ -155,12 +157,16 @@ It contains the following mandatory attribute. Note: the SSID is copied verbatim and at the moment, there is no way to express or escape non alphanumeric characters. +The number of hidden networks that can be scanned for is restricted to +a practical amount, around 48 networks, and all networks after hitting +the limit are silently omitted. + The following exemplary snippet showcases a config for two networks where the first one should be automatically considered for joining and uses 'WPA2' while the second one is hidden but should show up in the scan results. ! -! ! ! @@ -172,9 +178,9 @@ access points in the vicinity to other components. This exemplary 'accesspoints' report shows its general structure. ! -! -! -! +! +! +! ! The '' node can contain a fluctuating number of '' @@ -217,7 +223,7 @@ following additional attributes beside the ones already discussed. radio activity was temporarily disabled. * :not_found: is an optional attribute and is only set when a single - auto-connect network was configured but could not be found. + network was configured but could not be found. By subscribing to both reports and providing the required 'wifi_config' ROM module, a component is able control the wireless driver. @@ -230,6 +236,67 @@ label "devices" if requested in the config as depicted. ! +Best practices +~~~~~~~~~~~~~~ + +The following section describes common use-cases, like being managed +or configured explicitly by a user provided configuration, and how to +interact with the driver in each of these cases. The way Sculpt handles +the driver can serve as an example. + +Externally managed (Sculpt mode) +-------------------------------- + +When the driver is managed by an external component via its configuration +based on its 'state' and 'accesspoints' reports the configuration should +contain at most one '' node. This node contains the network the +management component has chosen to join after evaluating the 'accesspoints' +report. This makes it easier for the management component to process the +'state' reports as all reports are immediate and logically belong to one +network and there is no unexpected switch between different networks. +The 'state' report contains at least the mandatory 'state' attribute that +denotes the state of connectivity, the 'ssid' and 'bssid' as well as the +'freq' attribute. The existence of any other attributes is not certain and +depends on the state of connectivity. The signal quality may not always +be available and the external component should account for that. + +For every hidden network a '' node must be added for the +access points to appear in the 'accesspoints' report. Such a node should +not be added for non-hidden networks as it influences the scanning attempt +and could lead to longer join times. As it also proactively asks for the +network it could allow for fingerprinting a device according to its list +of hidden networks. + +Roaming within one network is performed according to the 'bgscan' settings +automatically. This implicitly also refreshes the 'accesspoints' report +that then may be considered by the management component to switch to a +different network by replacing the '' node in the configuration. +It is up to the management component to make an educated decision. For +roaming to work properly the management component should not specify +the 'bssid' attribute in the '' node. + +Removing the '' node will lead to a disconnect from the network. + +Manually managed +---------------- + +When the driver is manually or rather explicitly managed by a user provided +configuration it generally exhibits the same behavior. However, as a common +pattern, user generated configurations tend to contain multiple networks and +it is expected that the driver joins a known network if it encounters one. +Normally these networks do not overlap in locality, i.e. there is one at home, +another one at work, and still a different one at a friend's dwelling place. +Providing multiple nodes covers this use case in a fair fashion as a network +is made known to the driver by adding the corresponding '' node to +the configuration. + +Since the driver does not know in advance which network it will end up joining +providing immediate feedback is not possible and switching to a different +network may occur naturally. This behavior renders the configuration of +multiple network nodes impractical for management components and should be +avoided. + + Debugging ~~~~~~~~~ From 6f5bcd4446d9ea508040e1bbca3a70b45477264e Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Tue, 5 Nov 2024 14:29:08 +0100 Subject: [PATCH 04/69] intel/display: check for mappable framebuffer The driver code may allocate framebuffers which do not fit in the aperture. Trying to use such framebuffer may lead to only partial visible content on the screen and the rest either black or garbage. Instead check for this circumstance and deny to use such framebuffers and release them, since the user would get an unusable/hard to interpret state. Additionally, release the vma mappings earlier in order to reduce the likelihood of such un-mappable framebuffers. Issue #5377 --- .../src/driver/framebuffer/intel/pc/lx_user.c | 68 ++++++++++++++++--- 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c b/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c index 75ec819a0d..9e1ba48b94 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c +++ b/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c @@ -385,6 +385,41 @@ static int kernel_register_fb(struct fb_info const * const fb_info, } +static void destroy_fb_and_capture(struct drm_client_dev * const dev, + struct drm_connector const * const connector, + struct drm_framebuffer * const fb) +{ + struct drm_mode_create_dumb * dumb_create = NULL; + struct drm_mode_fb_cmd2 * fb_cmd = NULL; + struct gem_dumb * gem_dumb = NULL; + struct fb_info info = {}; + + if (!fb) + return; + + if (!dumb_meta(dev, fb, &dumb_create, &fb_cmd)) + return; + + if (!dumb_gem(dev, fb, &gem_dumb)) + return; + + info.var.bits_per_pixel = 32; + info.node = connector->index; + info.par = connector->name; + + kernel_register_fb(&info, 0, 0); + + if (gem_dumb->vma) { + intel_unpin_fb_vma(gem_dumb->vma, gem_dumb->flags); + + gem_dumb->vma = NULL; + gem_dumb->flags = 0; + } + + destroy_fb(dev, dumb_create, fb_cmd); +} + + struct drm_mode_fb_cmd2 fb_of_screen(struct drm_client_dev * const dev, struct genode_mode const * const conf_mode, struct fb_info * const fb_info, @@ -413,15 +448,9 @@ struct drm_mode_fb_cmd2 fb_of_screen(struct drm_client_dev * const dev, /* notify genode side about switch from connector specific fb to mirror fb */ if (fb && conf_mode->mirror && fb != fb_mirror) { - struct fb_info info = {}; - info.var.bits_per_pixel = 32; - info.node = connector->index; - info.par = connector->name; + destroy_fb_and_capture(dev, connector, fb); - kernel_register_fb(&info, mode->width_mm, mode->height_mm); - - destroy_fb(dev, gem_dumb, fb_cmd); } if (fb_mirror) @@ -771,7 +800,18 @@ static bool reconfigure(struct drm_client_dev * const dev) unsigned width_mm = mode->width_mm ? : connector->display_info.width_mm; unsigned height_mm = mode->height_mm ? : connector->display_info.height_mm; - user_register_fb(dev, &fb_info, &fb_cmd, width_mm, height_mm); + int err = user_register_fb(dev, &fb_info, &fb_cmd, width_mm, height_mm); + + if (err == -ENOSPC) { + + struct drm_framebuffer *fb = drm_framebuffer_lookup(dev->dev, + dev->file, + fb_cmd.fb_id); + if (fb) + drm_framebuffer_put(fb); + + destroy_fb_and_capture(dev, connector, fb); + } } break; @@ -1354,6 +1394,18 @@ static int user_register_fb(struct drm_client_dev const * const dev, return result; } + if (!i915_vma_is_map_and_fenceable(gem_dumb->vma)) { + printk("%s: framebuffer not mappable in aperture -> destroying framebuffer\n", + (info && info->par) ? (char *)info->par : "unknown"); + + intel_unpin_fb_vma(gem_dumb->vma, gem_dumb->flags); + + gem_dumb->vma = NULL; + gem_dumb->flags = 0; + + return -ENOSPC; + } + vaddr = i915_vma_pin_iomap(gem_dumb->vma); if (IS_ERR(vaddr)) { intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); From 188080e15f309f0a432d09e95f0d2be9cb2b2279 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Tue, 29 Oct 2024 13:36:47 +0100 Subject: [PATCH 05/69] intel/display: add i915_gem_evict_for_node When the aperture is close to full or such fragmented, this unimplemented function may be invoked. Fixes #5377 --- repos/dde_linux/patches/i915_ggtt.patch | 28 +++++++++++ repos/dde_linux/ports/linux.hash | 2 +- repos/dde_linux/ports/linux.port | 1 + .../src/driver/framebuffer/intel/pc/dummies.c | 48 +++++++++++++++++++ .../framebuffer/intel/pc/generated_dummies.c | 29 ----------- .../intel/pc/spec/x86_32/source.list | 1 + .../intel/pc/spec/x86_64/source.list | 1 + 7 files changed, 80 insertions(+), 30 deletions(-) create mode 100644 repos/dde_linux/patches/i915_ggtt.patch diff --git a/repos/dde_linux/patches/i915_ggtt.patch b/repos/dde_linux/patches/i915_ggtt.patch new file mode 100644 index 0000000000..17691b5ec2 --- /dev/null +++ b/repos/dde_linux/patches/i915_ggtt.patch @@ -0,0 +1,28 @@ +intel_fb: avoid pagefault, since gt not setup by our port + +--- src/linux/drivers/gpu/drm/i915/i915_gem_evict.c ++++ src/linux/drivers/gpu/drm/i915/i915_gem_evict.c +@@ -187,8 +187,9 @@ + if (i915_is_ggtt(vm)) { + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); + +- list_for_each_entry(gt, &ggtt->gt_list, ggtt_link) +- intel_gt_retire_requests(gt); ++ if (gt) ++ list_for_each_entry(gt, &ggtt->gt_list, ggtt_link) ++ intel_gt_retire_requests(gt); + } else { + intel_gt_retire_requests(vm->gt); + } +@@ -353,8 +354,9 @@ + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); + struct intel_gt *gt; + +- list_for_each_entry(gt, &ggtt->gt_list, ggtt_link) +- intel_gt_retire_requests(gt); ++ if (gt) ++ list_for_each_entry(gt, &ggtt->gt_list, ggtt_link) ++ intel_gt_retire_requests(gt); + } else { + intel_gt_retire_requests(vm->gt); + } diff --git a/repos/dde_linux/ports/linux.hash b/repos/dde_linux/ports/linux.hash index e5e5f25405..c86a76eb00 100644 --- a/repos/dde_linux/ports/linux.hash +++ b/repos/dde_linux/ports/linux.hash @@ -1 +1 @@ -501de7d0dc5363c9f271c2cd853b963b2a881438 +5e77186d61fe216b38cf516c5a40babcfdbd50ad diff --git a/repos/dde_linux/ports/linux.port b/repos/dde_linux/ports/linux.port index ba49c27c46..c9f4661b39 100644 --- a/repos/dde_linux/ports/linux.port +++ b/repos/dde_linux/ports/linux.port @@ -10,6 +10,7 @@ DIR(linux) := src/linux # Patches # PATCH_FILES := i915_irq.patch \ + i915_ggtt.patch \ iwlwifi_break_busy_loop.patch \ iwlwifi_enable_irq_before_pnvm.patch \ iwlwifi_limit_rx_bufs.patch \ diff --git a/repos/pc/src/driver/framebuffer/intel/pc/dummies.c b/repos/pc/src/driver/framebuffer/intel/pc/dummies.c index 5e3ead6fcc..d133c9db54 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/dummies.c +++ b/repos/pc/src/driver/framebuffer/intel/pc/dummies.c @@ -720,3 +720,51 @@ int intel_pxp_key_check(struct intel_pxp *pxp, struct drm_i915_gem_object *obj, lx_emul_trace(__func__); return -ENODEV; } + + +int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout) +{ + printk("%s - timeout=%ld\n", __func__, timeout); + lx_emul_trace(__func__); + return 0; +} + + +long intel_gt_retire_requests_timeout(struct intel_gt * gt, long timeout, long * remaining_timeout) +{ + printk("%s - timeout=%ld\n", __func__, timeout); + + if (remaining_timeout) + *remaining_timeout = 0; + + return 0; +} + + +void * vmap(struct page ** pages, unsigned int count, unsigned long flags, pgprot_t prot) +{ + bool contiguous = true; + void * vmap_addr = 0; + unsigned long prev_addr = 0; + + for (unsigned i = 0; i < count; i++) { + void * virt_addr = page_address(pages[i]); + + if (!i) + vmap_addr = virt_addr; + + if (i && contiguous) + contiguous = (void *)(prev_addr + 4096) == virt_addr; + + prev_addr = (unsigned long)virt_addr; + + if (!contiguous) + break; + } + + if (!contiguous) + printk("%s -- failed, pages are non contiguous count=%u\n", + __func__, count); + + return contiguous ? vmap_addr : 0; +} diff --git a/repos/pc/src/driver/framebuffer/intel/pc/generated_dummies.c b/repos/pc/src/driver/framebuffer/intel/pc/generated_dummies.c index 8277515973..d715fd6de5 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/generated_dummies.c +++ b/repos/pc/src/driver/framebuffer/intel/pc/generated_dummies.c @@ -712,20 +712,6 @@ struct intel_context * i915_gem_engines_iter_next(struct i915_gem_engines_iter * } -extern int i915_gem_evict_for_node(struct i915_address_space * vm,struct i915_gem_ww_ctx * ww,struct drm_mm_node * target,unsigned int flags); -int i915_gem_evict_for_node(struct i915_address_space * vm,struct i915_gem_ww_ctx * ww,struct drm_mm_node * target,unsigned int flags) -{ - lx_emul_trace_and_stop(__func__); -} - - -extern int i915_gem_evict_something(struct i915_address_space * vm,struct i915_gem_ww_ctx * ww,u64 min_size,u64 alignment,unsigned long color,u64 start,u64 end,unsigned flags); -int i915_gem_evict_something(struct i915_address_space * vm,struct i915_gem_ww_ctx * ww,u64 min_size,u64 alignment,unsigned long color,u64 start,u64 end,unsigned flags) -{ - lx_emul_trace_and_stop(__func__); -} - - extern int i915_gem_execbuffer2_ioctl(struct drm_device * dev,void * data,struct drm_file * file); int i915_gem_execbuffer2_ioctl(struct drm_device * dev,void * data,struct drm_file * file) { @@ -1227,13 +1213,6 @@ void intel_gt_mcr_unlock(struct intel_gt * gt,unsigned long flags) } -extern long intel_gt_retire_requests_timeout(struct intel_gt * gt,long timeout,long * remaining_timeout); -long intel_gt_retire_requests_timeout(struct intel_gt * gt,long timeout,long * remaining_timeout) -{ - lx_emul_trace_and_stop(__func__); -} - - extern int intel_gt_runtime_resume(struct intel_gt * gt); int intel_gt_runtime_resume(struct intel_gt * gt) { @@ -2086,14 +2065,6 @@ void update_group_capacity(struct sched_domain * sd,int cpu) } -#include - -void * vmap(struct page ** pages,unsigned int count,unsigned long flags,pgprot_t prot) -{ - lx_emul_trace_and_stop(__func__); -} - - #include void * vmap_pfn(unsigned long * pfns,unsigned int count,pgprot_t prot) diff --git a/repos/pc/src/driver/framebuffer/intel/pc/spec/x86_32/source.list b/repos/pc/src/driver/framebuffer/intel/pc/spec/x86_32/source.list index 2adf8fbe6d..61dd65c19a 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/spec/x86_32/source.list +++ b/repos/pc/src/driver/framebuffer/intel/pc/spec/x86_32/source.list @@ -191,6 +191,7 @@ drivers/gpu/drm/i915/i915_active.c drivers/gpu/drm/i915/i915_config.c drivers/gpu/drm/i915/i915_driver.c drivers/gpu/drm/i915/i915_drm_client.c +drivers/gpu/drm/i915/i915_gem_evict.c drivers/gpu/drm/i915/i915_gem_gtt.c drivers/gpu/drm/i915/i915_gem_ww.c drivers/gpu/drm/i915/i915_getparam.c diff --git a/repos/pc/src/driver/framebuffer/intel/pc/spec/x86_64/source.list b/repos/pc/src/driver/framebuffer/intel/pc/spec/x86_64/source.list index e80978deed..99c373c7d0 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/spec/x86_64/source.list +++ b/repos/pc/src/driver/framebuffer/intel/pc/spec/x86_64/source.list @@ -194,6 +194,7 @@ drivers/gpu/drm/i915/i915_active.c drivers/gpu/drm/i915/i915_config.c drivers/gpu/drm/i915/i915_driver.c drivers/gpu/drm/i915/i915_drm_client.c +drivers/gpu/drm/i915/i915_gem_evict.c drivers/gpu/drm/i915/i915_gem_gtt.c drivers/gpu/drm/i915/i915_gem_ww.c drivers/gpu/drm/i915/i915_getparam.c From 728ea95857f8a49f7ced7940ed459a4fe83f6320 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Thu, 7 Nov 2024 15:01:31 +0100 Subject: [PATCH 06/69] intel/display: improve mirror/discrete reporting Don't try to decide based on the hardware state, in which mode a connector is used. If a previous configuration failed, e.g. -ENOSPC, the detection whether the mirrored framebuffer is in use may fail and the connectors are reported wrongly as discrete. During modeset traversal take the appropriate lock to synchronize irq and user task, which may be de-scheduled by Linux code when invoking contrib code. Issue #5377 --- .../src/driver/framebuffer/intel/pc/lx_user.c | 109 +++++++++++++----- 1 file changed, 78 insertions(+), 31 deletions(-) diff --git a/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c b/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c index 9e1ba48b94..78ecb794e1 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c +++ b/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c @@ -239,6 +239,9 @@ static struct drm_framebuffer * lookup_framebuffer(struct drm_crtc *crtc, struct drm_plane_state *plane; struct drm_crtc_state *crtc_state; + if (!crtc || !crtc->dev || !ctx) + return NULL; + state = drm_atomic_state_alloc(crtc->dev); if (!state) return NULL; @@ -507,7 +510,8 @@ static void close_unused_captures(struct drm_client_dev * const dev) DRM_MODESET_ACQUIRE_INTERRUPTIBLE, err); - fb = lookup_framebuffer(connector->state->crtc, &ctx); + if (connector->state && connector->state->crtc) + fb = lookup_framebuffer(connector->state->crtc, &ctx); DRM_MODESET_LOCK_ALL_END(dev->dev, ctx, err); @@ -578,13 +582,17 @@ static bool reconfigure(struct drm_client_dev * const dev) if (!dev || !dev->dev || !gem_mirror || !mirror_fb_cmd) return false; + mutex_lock(&dev->modeset_mutex); + mirror_heuristic(dev->dev, &mirror_force, &mirror_compound, &mirror_minimum); if (!mirror_minimum.hdisplay || !mirror_minimum.vdisplay) { /* no valid modes on any connector on early boot */ - if (!mirror_fb_cmd->fb_id) + if (!mirror_fb_cmd->fb_id) { + mutex_unlock(&dev->modeset_mutex); return false; + } /* valid connectors but all are disabled by config */ mirror_minimum.hdisplay = mirror_fb_cmd->width; @@ -608,13 +616,17 @@ static bool reconfigure(struct drm_client_dev * const dev) printk("setting up mirrored framebuffer of %ux%u failed - error=%d\n", mirror_fb.hdisplay, mirror_fb.vdisplay, err); + mutex_unlock(&dev->modeset_mutex); return true; } } /* without fb handle created by check_resize_fb we can't proceed */ - if (!mirror_fb_cmd->fb_id) + if (!mirror_fb_cmd->fb_id) { + printk("%s:%u no mirror fb id\n", __func__, __LINE__); + mutex_unlock(&dev->modeset_mutex); return retry; + } /* prepare fb info for kernel_register_fb() evaluated by Genode side */ info.var.xres = mirror_fb.hdisplay; @@ -817,6 +829,7 @@ static bool reconfigure(struct drm_client_dev * const dev) break; } } + mutex_unlock(&dev->modeset_mutex); if (mirror.report) { mirror.info.par = "mirror_capture"; @@ -949,14 +962,12 @@ static int update_content(void *) unchanged[index] = 0; - if (!connector->state || !connector->state->crtc) - continue; - DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE, err); - fb = lookup_framebuffer(connector->state->crtc, &ctx); + if (connector->state && connector->state->crtc) + fb = lookup_framebuffer(connector->state->crtc, &ctx); DRM_MODESET_LOCK_ALL_END(dev, ctx, err); @@ -1021,28 +1032,26 @@ static bool mirrored_fb(struct drm_client_dev * client, static void _report_connectors(void * genode_data, bool const discrete) { struct drm_connector_list_iter conn_iter; - - struct drm_device const *dev = dev_client->dev; struct drm_connector *connector = NULL; struct drm_display_mode *mode = NULL; - bool has_modes = false; + struct drm_mode_set *modeset = NULL; - drm_connector_list_iter_begin(dev, &conn_iter); - drm_client_for_each_connector_iter(connector, &conn_iter) { + mutex_lock(&dev_client->modeset_mutex); + drm_client_for_each_modeset(modeset, dev_client) { - bool mirror = connector->state && connector->state->crtc && - mirrored_fb(dev_client, connector->state->crtc); + struct genode_mode conf_mode = {}; + bool has_modes = false; - if (!mirror && (!connector->state || !connector->state->crtc)) { - struct genode_mode conf_mode = { }; + if (!modeset->connectors || !*modeset->connectors) + continue; - /* check for connector configuration on Genode side */ - lx_emul_i915_connector_config(connector->name, &conf_mode); + /* set connector */ + connector = *modeset->connectors; - mirror = conf_mode.mirror; - } + /* read configuration for connector */ + lx_emul_i915_connector_config(connector->name, &conf_mode); - if ((discrete && mirror) || (!discrete && !mirror)) + if ((discrete && conf_mode.mirror) || (!discrete && !conf_mode.mirror)) continue; list_for_each_entry(mode, &connector->modes, head) { @@ -1055,12 +1064,36 @@ static void _report_connectors(void * genode_data, bool const discrete) lx_emul_i915_report_connector(connector, genode_data, connector->name, - connector->status == connector_status_connected, + connector->status != connector_status_disconnected, has_modes, get_brightness(connector, INVALID_BRIGHTNESS), connector->display_info.width_mm, connector->display_info.height_mm); } + mutex_unlock(&dev_client->modeset_mutex); + + /* report disconnected connectors */ + drm_connector_list_iter_begin(dev_client->dev, &conn_iter); + drm_client_for_each_connector_iter(connector, &conn_iter) { + + /* read configuration for connector */ + struct genode_mode conf_mode = {}; + lx_emul_i915_connector_config(connector->name, &conf_mode); + + if ((discrete && conf_mode.mirror) || (!discrete && !conf_mode.mirror)) + continue; + + if (connector->status != connector_status_disconnected) + continue; + + lx_emul_i915_report_connector(connector, genode_data, + connector->name, + connector->status != connector_status_disconnected, + false, /* has modes */ + get_brightness(connector, INVALID_BRIGHTNESS), + connector->display_info.width_mm, + connector->display_info.height_mm); + } drm_connector_list_iter_end(&conn_iter); } @@ -1174,19 +1207,19 @@ static int fb_client_hotplug(struct drm_client_dev *client) } /* - * (Re-)assign mirrored framebuffer to modeset (lost due to modeset_probe) + * (Re-)assign framebuffers to modeset (lost due to modeset_probe) * and commit the change. */ - if (fb_mirror) { + { struct drm_framebuffer * free_fbs[MAX_FBS] = { }; struct drm_modeset_acquire_ctx ctx; - bool mode_too_large = false; unsigned fb_count = 0; DRM_MODESET_LOCK_ALL_BEGIN(client->dev, ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE, result); + mutex_lock(&client->modeset_mutex); drm_client_for_each_modeset(modeset, client) { struct drm_connector *connector = NULL; @@ -1198,11 +1231,6 @@ static int fb_client_hotplug(struct drm_client_dev *client) if (modeset->crtc) fb = lookup_framebuffer(modeset->crtc, &ctx); - if (!mode_too_large && fb && modeset->mode && - (modeset->mode->hdisplay > fb->width || - modeset->mode->vdisplay > fb->height)) - mode_too_large = true; - if (!modeset->num_connectors || !modeset->connectors || !*modeset->connectors) { struct drm_mode_fb_cmd2 *fb_cmd = NULL; @@ -1228,6 +1256,25 @@ static int fb_client_hotplug(struct drm_client_dev *client) connector = *modeset->connectors; modeset->fb = fb ? fb : fb_mirror; + + /* try to avoid -ENOSPC by using next smaller resolution */ + if (fb_mirror && !fb && + (modeset->mode->hdisplay > fb_mirror->width || + modeset->mode->vdisplay > fb_mirror->height)) + { + struct drm_display_mode * mode = NULL; + list_for_each_entry(mode, &connector->modes, head) { + + if (mode->hdisplay > fb_mirror->width || + mode->vdisplay > fb_mirror->height) + continue; + + kfree(modeset->mode); + modeset->mode = drm_mode_duplicate(client->dev, mode); + + break; + } + } } mutex_unlock(&client->modeset_mutex); DRM_MODESET_LOCK_ALL_END(client->dev, ctx, result); @@ -1250,7 +1297,7 @@ static int fb_client_hotplug(struct drm_client_dev *client) /* triggers disablement of encoders attached to disconnected ports */ result = drm_client_modeset_commit(client); - if (result && !(mode_too_large && result == -ENOSPC)) { + if (result) { printk("%s: error on modeset commit %d%s\n", __func__, result, (result == -ENOSPC) ? " - ENOSPC" : " - unknown error"); } From d104ca0561fe0e04305216de45ca88907e076d90 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Fri, 8 Nov 2024 15:55:10 +0100 Subject: [PATCH 07/69] intel/display: adapt README to current implementation --- .../pc/src/driver/framebuffer/intel/pc/README | 43 ++++++++++--------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/repos/pc/src/driver/framebuffer/intel/pc/README b/repos/pc/src/driver/framebuffer/intel/pc/README index 5c7d49827a..caeb333bf5 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/README +++ b/repos/pc/src/driver/framebuffer/intel/pc/README @@ -4,15 +4,16 @@ Default behaviour ~~~~~~~~~~~~~~~~~ When no configuration is provided to the driver, it will enable all connectors -with attached displays and allocate for each display a discrete framebuffer. -It will use the highest resolution as provided by the BIOS or EDID information. -For each connector a separate Capture connection will be requested labeled -according to the connector name. When newly connected displays are detected -by the driver, the new connectors are enabled and another Capture session -labeled according to the connector will be requested. +with attached displays and allocate one shared framebuffer for all displays +(see non-discrete mode below). It will use the highest resolution as provided +by the BIOS or EDID information. For each discrete connector a separate +Capture connection will be requested labeled according to the connector name. +When newly connected displays are detected by the driver, the new connectors +are enabled and another Capture session labeled according to the connector +will be requested. By default, on hotplug of a display, the current config of the driver will be -re-parsed and re-applied. This behaviour can be disabled by +re-parsed and re-applied. This behaviour can be disabled by ! @@ -30,21 +31,23 @@ in the configuration as follows: The exported report has the following format: ! -! -! -! ... -! -! -! -! -! -! -! ... -! -! +! +! +! +! ... +! +! +! +! +! +! +! ... +! +! +! ! -The physical dimension of the display is reported as width_mm and height_mm +The physical dimension of the display is reported as 'width_mm' and 'height_mm' in millimeter per connector and if available, also per mode. The values can be used as input to DPI calculations. The currently used mode of the connector is tagged in the report explicitly. From 1f225b4b6f0dd4a271ac220974eece16a91c6798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Mon, 11 Nov 2024 14:13:57 +0100 Subject: [PATCH 08/69] gpu/intel: use fixed aperture size for GPU service This commit adapts the aperture splitting between the GPU multiplexer and the display driver where the former now always tries to reserve 32 MiB of aperture space for itself instead of limiting the space for the display driver. In case the aperture is not large enough the display driver takes precedence and the GPU service has to make do with remaining space. In the worst case that renders the GPU service unusable. Issue #5377. --- repos/gems/sculpt/gpu/intel | 2 +- repos/os/src/driver/gpu/intel/main.cc | 13 +---- .../src/driver/gpu/intel/platform_session.h | 51 +++++++++---------- 3 files changed, 26 insertions(+), 40 deletions(-) diff --git a/repos/gems/sculpt/gpu/intel b/repos/gems/sculpt/gpu/intel index 9537060485..27068b043f 100644 --- a/repos/gems/sculpt/gpu/intel +++ b/repos/gems/sculpt/gpu/intel @@ -1,4 +1,4 @@ - + diff --git a/repos/os/src/driver/gpu/intel/main.cc b/repos/os/src/driver/gpu/intel/main.cc index 7714511528..b7763a2861 100644 --- a/repos/os/src/driver/gpu/intel/main.cc +++ b/repos/os/src/driver/gpu/intel/main.cc @@ -2515,8 +2515,7 @@ struct Main : Irq_ack_handler, Gpu_reset_handler &Main::handle_irq }; Signal_handler
_config_sigh { _env.ep(), *this, &Main::_handle_config_update }; - Platform::Resources _dev { _env, _rm, _irq_dispatcher, - _config_aperture_size() }; + Platform::Resources _dev { _env, _rm, _irq_dispatcher }; Signal_handler
_system_sigh { _env.ep(), *this, &Main::_system_update }; String<16> _system_state { "" }; @@ -2573,16 +2572,6 @@ struct Main : Irq_ack_handler, Gpu_reset_handler }); } - Number_of_bytes _config_aperture_size() const - { - auto aperture_size = Number_of_bytes(64ull << 20); - - if (_config_rom.valid()) - aperture_size = _config_rom.xml().attribute_value("max_framebuffer_memory", aperture_size); - - return aperture_size; - } - void _handle_config_update() { _config_rom.update(); diff --git a/repos/os/src/driver/gpu/intel/platform_session.h b/repos/os/src/driver/gpu/intel/platform_session.h index a66ccd6d75..f4bbf6245c 100644 --- a/repos/os/src/driver/gpu/intel/platform_session.h +++ b/repos/os/src/driver/gpu/intel/platform_session.h @@ -466,51 +466,48 @@ class Platform::Resources : Noncopyable, public Hw_ready_state }); } - Number_of_bytes _sanitized_aperture_size(Number_of_bytes memory) const + Number_of_bytes _sanitized_aperture_size() const { /* - * Ranges of global GTT (ggtt) are handed in page granularity (4k) - * to the platform client (intel display driver). - * 512 page table entries a 4k fit into one page, which adds up to - * 2M virtual address space. + * Always try to reserve 32 MiB for the multiplexer itself but + * we also make sure that 32 MiB are available for the display + * driver (or at least all of the available aperture). We + * prioritize a working display over having the GPU service + * available because investigating the later is futil without + * the former. */ - auto constexpr shift_2mb = 21ull; - auto constexpr MIN_MEMORY_FOR_MULTIPLEXER = 4ull << shift_2mb; + auto constexpr GPU_SERVICE_APERTURE = (32ull << 20); + auto constexpr DISPLAY_MIN_APERTURE = (32ull << 20); - /* align requests to 2M and enforce 2M as minimum */ - memory = memory & _align_mask(shift_2mb); - if (memory < (1ull << shift_2mb)) - memory = 1ull << shift_2mb; + if (_gmadr->size() <= DISPLAY_MIN_APERTURE) + return _gmadr->size(); - if (_gmadr->size() >= MIN_MEMORY_FOR_MULTIPLEXER) { - if (memory > _gmadr->size() - MIN_MEMORY_FOR_MULTIPLEXER) - memory = _gmadr->size() - MIN_MEMORY_FOR_MULTIPLEXER; - } else { - /* paranoia case, should never trigger */ - memory = _gmadr->size() / 2; - error("aperture smaller than ", MIN_MEMORY_FOR_MULTIPLEXER, - " will not work properly"); - } + /* guard against non 2^x aperture size */ + if ((_gmadr->size() - GPU_SERVICE_APERTURE) < DISPLAY_MIN_APERTURE) + return DISPLAY_MIN_APERTURE; - log("Maximum aperture size ", Number_of_bytes(_gmadr->size())); - log(" - available framebuffer memory for display driver: ", memory); - - return memory; + return _gmadr->size() - GPU_SERVICE_APERTURE; } public: - Resources(Env &env, Rm_connection &rm, Signal_context_capability irq, - Number_of_bytes const &aperture) + Resources(Env &env, Rm_connection &rm, Signal_context_capability irq) : _env(env), _irq_cap(irq), - _aperture_reserved(_sanitized_aperture_size(aperture)), + _aperture_reserved(_sanitized_aperture_size()), _rm_gttmm(rm.create(_mmio->size())), _rm_gmadr(rm.create(aperture_reserved())), _range_gttmm(1ul << 30, _mmio->size()), _range_gmadr(1ul << 29, aperture_reserved()) { + log("Aperture max: ", Number_of_bytes(_gmadr->size()), + " display: ", Number_of_bytes(_aperture_reserved)); + + /* reserved space is used to calculate vGPU available */ + if (_gmadr->size() == _aperture_reserved) + warning("GPU service not usable due to insufficient aperture space"); + _irq->sigh(_irq_cap); /* GTT starts at half of the mmio memory */ From 7fb702a0d9fcb302ae4bdb8013fe2847bfe1159e Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 11 Nov 2024 15:26:06 +0100 Subject: [PATCH 09/69] tool/run: exit gracefully if depot/create failed With --depot-auto-update enabled, the run tool calls the depot/create tool, which in principle may fail. In this case, print a diagnostic info instead of a backtrace. Issue #5379 --- tool/run/depot.inc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tool/run/depot.inc b/tool/run/depot.inc index a1ed8974d3..9658a29d93 100644 --- a/tool/run/depot.inc +++ b/tool/run/depot.inc @@ -233,7 +233,10 @@ proc _depot_auto_update { archives } { puts "update depot: $cmd" - exec {*}$cmd >@ stdout 2>@ stderr + if {[catch {exec {*}$cmd >@ stdout 2>@ stderr}]} { + puts stderr "\nError: tool/depot/create during depot-auto-update failed\n" + exit 1 + } } From 4a5f80ddbf73cf314e9457afbcdba65ce391cda7 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 8 Nov 2024 14:14:20 +0100 Subject: [PATCH 10/69] tool/depot/extract: annotate version with src hash When extracting depot archives from the source tree, retain the content hash of the extracted information along the archive in .hash file. The .hash files of src and api archives become thereby usable for checking the consistency of bin archives with their ingredients. Issue #5379 --- tool/depot/mk/extract.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/depot/mk/extract.inc b/tool/depot/mk/extract.inc index e2390e0a89..192c9889c3 100644 --- a/tool/depot/mk/extract.inc +++ b/tool/depot/mk/extract.inc @@ -131,7 +131,7 @@ _rename_to_final_archive: _check_hash hint=" $(BRIGHT_COL)(new version)$(DEFAULT_COL)"; \ test $$hash = $(ORIG_RECIPE_HASH_VALUE) || \ $(VERSION_UPDATED_CMD); \ - rm -f $(DEPOT_ARCHIVE_DIR).hash; \ + mv $(DEPOT_ARCHIVE_DIR).hash $(DEPOT_SUB_DIR)/$$final_name.hash; \ $(ECHO) "$(DARK_COL)created$(DEFAULT_COL)" \ "$(USER)/$(notdir $(DEPOT_SUB_DIR))/$$final_name$$hint"; \ true; From b510394a6d1cde686b930e95310c51a280f91d5a Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 8 Nov 2024 15:02:19 +0100 Subject: [PATCH 11/69] depot/build_bin_archive: keep hash of ingredients This patch records the content hashes of the src and api ingredients used for creating a bin archive. This information allows for the detection of possible inconsistencies between a bin archive and its corresponding src archive within the depot. Issue #5379 --- tool/depot/mk/build_bin_archive | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tool/depot/mk/build_bin_archive b/tool/depot/mk/build_bin_archive index 78f4d82263..3970dcb336 100755 --- a/tool/depot/mk/build_bin_archive +++ b/tool/depot/mk/build_bin_archive @@ -125,6 +125,7 @@ endif DEPOT_BIN_ARCHIVE_DIR := $(DEPOT_BIN_DIR)/$(SPEC)/$(VERSIONED_ARCHIVE) DEPOT_DBG_ARCHIVE_DIR := $(DEPOT_DBG_DIR)/$(SPEC)/$(VERSIONED_ARCHIVE) DEPOT_ARCHIVE_BUILD_DIR := $(addsuffix .build,$(DEPOT_BIN_ARCHIVE_DIR)) +DEPOT_BIN_HASH_FILE := $(addsuffix .hash,$(DEPOT_BIN_ARCHIVE_DIR)) # @@ -230,7 +231,13 @@ $(DEPOT_DBG_ARCHIVE_DIR): $(DEPOT_ARCHIVE_BUILD_DIR)/debug $(VERBOSE)find $< -name *.debug -exec cp {} $@/ \; @$(ECHO) "$(DARK_COL)created$(DEFAULT_COL) $(USER)/dbg/$(SPEC)/$(VERSIONED_ARCHIVE)" -$(TARGET): $(DEPOT_BIN_ARCHIVE_DIR) +INGREDIENTS := $(addprefix src/,$(ARCHIVE)) $(addprefix api/,$(USED_APIS)) +INGREDIENTS_HASHES := $(foreach I,$(INGREDIENTS),$(call file_content,$(DEPOT_DIR)/$(USER)/$I.hash)) + +$(DEPOT_BIN_HASH_FILE): $(DEPOT_BIN_ARCHIVE_DIR) + $(VERBOSE)echo "$(INGREDIENTS_HASHES)" > $@ + +$(TARGET): $(DEPOT_BIN_HASH_FILE) ifneq ($(DBG),) $(TARGET): $(DEPOT_DBG_ARCHIVE_DIR) From dfd373fa0c1c658f6da678272c32176b1e4cbf9f Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 8 Nov 2024 16:44:09 +0100 Subject: [PATCH 12/69] depot/build: check bin against src if REBUILD= When using the depot/build tool with the 'REBUILD=' argument as done by the run tool's --depot-auto-update feature, the depot/build tool now checks that an existing bin archive was indeed created via the src and api archives present in the depot for the given version. This addresses consistency issues when switching between different git branches that refer to the same depot versions but with different content. Fixes #5379 --- tool/depot/build | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tool/depot/build b/tool/depot/build index 3594dcf448..7c26d2a904 100755 --- a/tool/depot/build +++ b/tool/depot/build @@ -159,9 +159,39 @@ execute_generated_build_mk_file: $(BUILD_MK_FILE) $(VERBOSE)$(MAKE) $(if $(VERBOSE),--quiet) -f $(BUILD_MK_FILE) \ -C $(DEPOT_DIR) VERBOSE=$(VERBOSE) +# +# Utilities to check consistency of bin archives with their src and used APIS +# +_eq = $(and $(findstring x$(1),x$(2)), $(findstring x$(2),x$(1))) +_libapi = $(if $(wildcard $(DEPOT_DIR)/$1/api),$(call file_content,$(DEPOT_DIR)/$1/api),) +_apis_of_src = $(call _libapi,$1) $(call file_content,$(DEPOT_DIR)/$1/used_apis) +_api_archives_of_src = $(addprefix $(call archive_user,$1)/api/,$(call _apis_of_src,$1)) +_api_hashes = $(foreach A,$(call _api_archives_of_src,$1),$(call file_content,$(DEPOT_DIR)/$A.hash)) +_src_hash = $(call file_content,$(DEPOT_DIR)/$1.hash) +_src_and_api_hashes = $(call _src_hash,$1) $(call _api_hashes,$1) +_src_of_bin = $(call archive_user,$1)/src/$(call bin_archive_recipe,$1)/$(call bin_archive_version,$1) +_bin_ingredient_hashes = $(call _src_and_api_hashes,$(call _src_of_bin,$1)) +_bin_hashes = $(call file_content,$(DEPOT_DIR)/$1.hash) +_bin_exists = $(wildcard $(DEPOT_DIR)/$1) +_bin_inconsistent = $(if $(call _bin_exists,$1),\ + $(if $(call _eq,$(call _bin_ingredient_hashes,$1),$(call _bin_hashes,$1)),,$1)) + ifneq ($(REBUILD),) execute_generated_build_mk_file: wipe_existing_archives +else +INCONSISTENT_BIN_ARCHIVES = $(strip $(foreach I,${ARCHIVES(bin)},$(call _bin_inconsistent,$I))) +ifneq ($(INCONSISTENT_BIN_ARCHIVES),) +execute_generated_build_mk_file: report_bin_src_inconsistencies endif +endif # REBUILD + +report_bin_src_inconsistencies: + @( \ + echo -e "\nError: the following bin archives do not match their src and apis:\n"; \ + for i in $(INCONSISTENT_BIN_ARCHIVES); do echo -e " $$i"; done; \ + echo -e "\nYou may consider removing those binary archives from the depot.\n" \ + ) + @false $(MAKECMDGOALS): execute_generated_build_mk_file @true From 79ab0cf98e30d96ec780840f45bc04cdc058a129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Mon, 11 Nov 2024 16:54:45 +0100 Subject: [PATCH 13/69] ports: remove sub-init from vbox6 pkgs Using a sub-init is no longer necessary and simplifies the runtime configuration. --- .../ports/recipes/pkg/vbox6-capture/archives | 1 - repos/ports/recipes/pkg/vbox6-capture/runtime | 105 +++++------------- repos/ports/recipes/pkg/vbox6/archives | 1 - repos/ports/recipes/pkg/vbox6/runtime | 102 +++++------------ 4 files changed, 53 insertions(+), 156 deletions(-) diff --git a/repos/ports/recipes/pkg/vbox6-capture/archives b/repos/ports/recipes/pkg/vbox6-capture/archives index fd5314ece3..2325c2c170 100644 --- a/repos/ports/recipes/pkg/vbox6-capture/archives +++ b/repos/ports/recipes/pkg/vbox6-capture/archives @@ -1,6 +1,5 @@ _/raw/vbox6 _/src/expat -_/src/init _/src/jpeg _/src/libc _/src/libdrm diff --git a/repos/ports/recipes/pkg/vbox6-capture/runtime b/repos/ports/recipes/pkg/vbox6-capture/runtime index 2947d60693..f87652527e 100644 --- a/repos/ports/recipes/pkg/vbox6-capture/runtime +++ b/repos/ports/recipes/pkg/vbox6-capture/runtime @@ -1,4 +1,4 @@ - + @@ -22,80 +22,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -103,7 +53,6 @@ - @@ -119,8 +68,8 @@ - - + + diff --git a/repos/ports/recipes/pkg/vbox6/archives b/repos/ports/recipes/pkg/vbox6/archives index fd5314ece3..2325c2c170 100644 --- a/repos/ports/recipes/pkg/vbox6/archives +++ b/repos/ports/recipes/pkg/vbox6/archives @@ -1,6 +1,5 @@ _/raw/vbox6 _/src/expat -_/src/init _/src/jpeg _/src/libc _/src/libdrm diff --git a/repos/ports/recipes/pkg/vbox6/runtime b/repos/ports/recipes/pkg/vbox6/runtime index ad971486af..5045d34c57 100644 --- a/repos/ports/recipes/pkg/vbox6/runtime +++ b/repos/ports/recipes/pkg/vbox6/runtime @@ -1,4 +1,4 @@ - + @@ -21,78 +21,29 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -100,7 +51,6 @@ - @@ -116,8 +66,8 @@ - - + + From 9a7fe5e7751354f982927e0f891b9c8ade9aada2 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Fri, 8 Nov 2024 15:59:41 +0100 Subject: [PATCH 14/69] hw: implement Core_region_map::detach Ref genodelabs/genode#5380 --- repos/base-hw/src/core/core_region_map.cc | 9 ++++++++- repos/base-hw/src/core/platform.h | 12 ++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/repos/base-hw/src/core/core_region_map.cc b/repos/base-hw/src/core/core_region_map.cc index 8965688c8a..f56d302efb 100644 --- a/repos/base-hw/src/core/core_region_map.cc +++ b/repos/base-hw/src/core/core_region_map.cc @@ -82,4 +82,11 @@ Core_region_map::attach(Dataspace_capability ds_cap, Attr const &attr) } -void Core_region_map::detach(addr_t) { } +void Core_region_map::detach(addr_t core_local_addr) +{ + size_t size = platform_specific().region_alloc_size_at((void *)core_local_addr); + + unmap_local(core_local_addr, size >> get_page_size_log2()); + + platform().region_alloc().free((void *)core_local_addr); +} diff --git a/repos/base-hw/src/core/platform.h b/repos/base-hw/src/core/platform.h index de24fa5150..62fd61469e 100644 --- a/repos/base-hw/src/core/platform.h +++ b/repos/base-hw/src/core/platform.h @@ -119,6 +119,18 @@ class Core::Platform : public Platform_generic static addr_t core_page_table(); static Hw::Page_table::Allocator & core_page_table_allocator(); + /** + * Determine size of a core local mapping required for a + * Core_region_map::detach(). + */ + size_t region_alloc_size_at(void * addr) + { + using Size_at_error = Allocator_avl::Size_at_error; + + return (_core_mem_alloc.virt_alloc())()->size_at(addr).convert( + [ ] (size_t s) { return s; }, + [ ] (Size_at_error) { return 0U; }); + } /******************************** ** Platform_generic interface ** From 7dbc9129db980a7cef03211ff08bdffb8b5f7514 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Mon, 11 Nov 2024 13:01:59 +0100 Subject: [PATCH 15/69] hw: detach UTCB from core PD in thread destruction Ref genodelabs/genode#5380 --- repos/base-hw/src/core/platform_thread.cc | 155 ++++++++++++++-------- repos/base-hw/src/core/platform_thread.h | 19 ++- 2 files changed, 116 insertions(+), 58 deletions(-) diff --git a/repos/base-hw/src/core/platform_thread.cc b/repos/base-hw/src/core/platform_thread.cc index 7ae23acd04..fb8f8d1b50 100644 --- a/repos/base-hw/src/core/platform_thread.cc +++ b/repos/base-hw/src/core/platform_thread.cc @@ -30,6 +30,79 @@ using namespace Core; +Ram_dataspace_capability Platform_thread::Utcb::_allocate_utcb(bool core_thread) +{ + Ram_dataspace_capability ds; + + if (core_thread) + return ds; + + try { + ds = core_env().pd_session()->alloc(sizeof(Native_utcb), CACHED); + } catch (...) { + error("failed to allocate UTCB"); + throw Out_of_ram(); + } + + return ds; +} + + +addr_t Platform_thread::Utcb::_core_local_address(addr_t utcb_addr, + bool core_thread) +{ + if (core_thread) + return utcb_addr; + + addr_t ret = 0; + + Region_map::Attr attr { }; + attr.writeable = true; + core_env().rm_session()->attach(_ds, attr).with_result( + [&] (Region_map::Range range) { + ret = range.start; }, + [&] (Region_map::Attach_error) { + error("failed to attach UTCB of new thread within core"); }); + + return ret; +} + + +Platform_thread::Utcb::Utcb(addr_t pd_addr, bool core_thread) +: + _ds(_allocate_utcb(core_thread)), + _core_addr(_core_local_address(pd_addr, core_thread)) +{ + /* + * All non-core threads use the typical dataspace/rm_session + * mechanisms to allocate and attach its UTCB. + * But for the very first core threads, we need to use plain + * physical and virtual memory allocators to create/attach its + * UTCBs. Therefore, we've to allocate and map those here. + */ + if (core_thread) { + platform().ram_alloc().try_alloc(sizeof(Native_utcb)).with_result( + + [&] (void *utcb_phys) { + map_local((addr_t)utcb_phys, _core_addr, + sizeof(Native_utcb) / get_page_size()); + }, + [&] (Range_allocator::Alloc_error) { + error("failed to allocate UTCB for core/kernel thread!"); + throw Out_of_ram(); + } + ); + } +} + + +Platform_thread::Utcb::~Utcb() +{ + /* detach UTCB from core/kernel */ + core_env().rm_session()->detach((addr_t)_core_addr); +} + + void Platform_thread::_init() { } @@ -37,21 +110,6 @@ Weak_ptr& Platform_thread::address_space() { return _address_space; } -Platform_thread::~Platform_thread() -{ - /* detach UTCB of main threads */ - if (_main_thread) { - Locked_ptr locked_ptr(_address_space); - if (locked_ptr.valid()) - locked_ptr->flush((addr_t)_utcb_pd_addr, sizeof(Native_utcb), - Address_space::Core_local_addr{0}); - } - - /* free UTCB */ - core_env().pd_session()->free(_utcb); -} - - void Platform_thread::quota(size_t const quota) { _quota = (unsigned)quota; @@ -64,26 +122,10 @@ Platform_thread::Platform_thread(Label const &label, Native_utcb &utcb) _label(label), _pd(_kernel_main_get_core_platform_pd()), _pager(nullptr), - _utcb_core_addr(&utcb), - _utcb_pd_addr(&utcb), + _utcb((addr_t)&utcb, true), _main_thread(false), _location(Affinity::Location()), - _kobj(_kobj.CALLED_FROM_CORE, _label.string()) -{ - /* create UTCB for a core thread */ - platform().ram_alloc().try_alloc(sizeof(Native_utcb)).with_result( - - [&] (void *utcb_phys) { - map_local((addr_t)utcb_phys, (addr_t)_utcb_core_addr, - sizeof(Native_utcb) / get_page_size()); - }, - [&] (Range_allocator::Alloc_error) { - error("failed to allocate UTCB"); - /* XXX distinguish error conditions */ - throw Out_of_ram(); - } - ); -} + _kobj(_kobj.CALLED_FROM_CORE, _label.string()) { } Platform_thread::Platform_thread(Platform_pd &pd, @@ -96,33 +138,39 @@ Platform_thread::Platform_thread(Platform_pd &pd, _label(label), _pd(pd), _pager(nullptr), - _utcb_pd_addr((Native_utcb *)utcb), + _utcb(utcb, false), _priority(_scale_priority(virt_prio)), _quota((unsigned)quota), _main_thread(!pd.has_any_thread), _location(location), _kobj(_kobj.CALLED_FROM_CORE, _priority, _quota, _label.string()) { - try { - _utcb = core_env().pd_session()->alloc(sizeof(Native_utcb), CACHED); - } catch (...) { - error("failed to allocate UTCB"); - throw Out_of_ram(); - } - - Region_map::Attr attr { }; - attr.writeable = true; - core_env().rm_session()->attach(_utcb, attr).with_result( - [&] (Region_map::Range range) { - _utcb_core_addr = (Native_utcb *)range.start; }, - [&] (Region_map::Attach_error) { - error("failed to attach UTCB of new thread within core"); }); - _address_space = pd.weak_ptr(); pd.has_any_thread = true; } +Platform_thread::~Platform_thread() +{ + /* core/kernel threads have no dataspace, but plain memory as UTCB */ + if (!_utcb._ds.valid()) { + error("UTCB of core/kernel thread gets destructed!"); + return; + } + + /* detach UTCB of main threads */ + if (_main_thread) { + Locked_ptr locked_ptr(_address_space); + if (locked_ptr.valid()) + locked_ptr->flush(user_utcb_main_thread(), sizeof(Native_utcb), + Address_space::Core_local_addr{0}); + } + + /* free UTCB */ + core_env().pd_session()->free(_utcb._ds); +} + + void Platform_thread::affinity(Affinity::Location const &) { /* yet no migration support, don't claim wrong location, e.g. for tracing */ @@ -147,16 +195,15 @@ void Platform_thread::start(void * const ip, void * const sp) error("invalid RM client"); return -1; }; - _utcb_pd_addr = (Native_utcb *)user_utcb_main_thread(); Hw::Address_space * as = static_cast(&*locked_ptr); - if (!as->insert_translation((addr_t)_utcb_pd_addr, dsc->phys_addr(), + if (!as->insert_translation(user_utcb_main_thread(), dsc->phys_addr(), sizeof(Native_utcb), Hw::PAGE_FLAGS_UTCB)) { error("failed to attach UTCB"); return -1; } return 0; }; - if (core_env().entrypoint().apply(_utcb, lambda)) + if (core_env().entrypoint().apply(_utcb._ds, lambda)) return; } @@ -174,9 +221,9 @@ void Platform_thread::start(void * const ip, void * const sp) utcb.cap_add(Capability_space::capid(_kobj.cap())); if (_main_thread) { utcb.cap_add(Capability_space::capid(_pd.parent())); - utcb.cap_add(Capability_space::capid(_utcb)); + utcb.cap_add(Capability_space::capid(_utcb._ds)); } - Kernel::start_thread(*_kobj, cpu, _pd.kernel_pd(), *_utcb_core_addr); + Kernel::start_thread(*_kobj, cpu, _pd.kernel_pd(), *(Native_utcb*)_utcb._core_addr); } diff --git a/repos/base-hw/src/core/platform_thread.h b/repos/base-hw/src/core/platform_thread.h index 4c386eb1ef..c02973303a 100644 --- a/repos/base-hw/src/core/platform_thread.h +++ b/repos/base-hw/src/core/platform_thread.h @@ -55,13 +55,24 @@ class Core::Platform_thread : Noncopyable using Label = String<32>; + struct Utcb + { + Ram_dataspace_capability _ds { }; /* UTCB ds of non-core threads */ + + addr_t const _core_addr; /* UTCB address within core/kernel */ + + Ram_dataspace_capability _allocate_utcb(bool core_thread); + addr_t _core_local_address(addr_t utcb_addr, bool core_thread); + + Utcb(addr_t pd_addr, bool core_thread); + ~Utcb(); + }; + Label const _label; Platform_pd &_pd; Weak_ptr _address_space { }; Pager_object * _pager; - Native_utcb * _utcb_core_addr { }; /* UTCB addr in core */ - Native_utcb * _utcb_pd_addr; /* UTCB addr in pd */ - Ram_dataspace_capability _utcb { }; /* UTCB dataspace */ + Utcb _utcb; unsigned _priority {0}; unsigned _quota {0}; @@ -241,7 +252,7 @@ class Core::Platform_thread : Noncopyable Platform_pd &pd() const { return _pd; } - Ram_dataspace_capability utcb() const { return _utcb; } + Ram_dataspace_capability utcb() const { return _utcb._ds; } }; #endif /* _CORE__PLATFORM_THREAD_H_ */ From ed2d9fef47db3e035f65dfbd152daedbb94afaa7 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Mon, 11 Nov 2024 13:54:00 +0100 Subject: [PATCH 16/69] hw: do not flush core/kernel's page-tables Fix genodelabs/genode#5380 --- repos/base-hw/src/core/platform_pd.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/repos/base-hw/src/core/platform_pd.cc b/repos/base-hw/src/core/platform_pd.cc index b96e1ee8b2..97d3e93977 100644 --- a/repos/base-hw/src/core/platform_pd.cc +++ b/repos/base-hw/src/core/platform_pd.cc @@ -60,6 +60,13 @@ bool Hw::Address_space::insert_translation(addr_t virt, addr_t phys, _tt.insert_translation(virt, phys, size, flags, _tt_alloc); return true; } catch(Hw::Out_of_tables &) { + + /* core/kernel's page-tables should never get flushed */ + if (_tt_phys == Platform::core_page_table()) { + error("core's page-table allocator is empty!"); + return false; + } + flush(platform().vm_start(), platform().vm_size()); } } From 28542e66ab52fbc33f8e8dc66994ae03d40d6576 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 13 Nov 2024 09:28:56 +0100 Subject: [PATCH 17/69] nova: support resume on AVX CPUs Issue #5314 --- repos/base-nova/ports/nova.hash | 2 +- repos/base-nova/ports/nova.port | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/repos/base-nova/ports/nova.hash b/repos/base-nova/ports/nova.hash index 5fb40aa103..f963782638 100644 --- a/repos/base-nova/ports/nova.hash +++ b/repos/base-nova/ports/nova.hash @@ -1 +1 @@ -dd4d2aba9dd83ec08e956cb31274c62cbcaf91f6 +3ca00c7332c39fe5be7fc14f3149e45bca428858 diff --git a/repos/base-nova/ports/nova.port b/repos/base-nova/ports/nova.port index 681aab6639..5b469baea7 100644 --- a/repos/base-nova/ports/nova.port +++ b/repos/base-nova/ports/nova.port @@ -4,7 +4,7 @@ DOWNLOADS := nova.git # r10 branch URL(nova) := https://github.com/alex-ab/NOVA.git -REV(nova) := 60419b83599fbe506308b0375371c49136e00985 +REV(nova) := f74d1d0d9252de6178e30f4402cbb39ea664f3f7 DIR(nova) := src/kernel/nova PATCHES := $(sort $(wildcard $(REP_DIR)/patches/*.patch)) From 591aadea54c3faeb1934a8f691824a8cd2d35a71 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Thu, 14 Nov 2024 11:47:17 +0100 Subject: [PATCH 18/69] lx_emul: take usb device lock before resetting it Fix genodelabs/genode#5381 --- repos/dde_linux/src/lib/lx_emul/usb.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/repos/dde_linux/src/lib/lx_emul/usb.c b/repos/dde_linux/src/lib/lx_emul/usb.c index a91d6e8188..e7ddb74e24 100644 --- a/repos/dde_linux/src/lib/lx_emul/usb.c +++ b/repos/dde_linux/src/lib/lx_emul/usb.c @@ -129,7 +129,12 @@ static void release_device(struct usb_per_dev_data * data) usb_driver_release_interface(&usb_drv, iface); } } + + if (usb_lock_device_for_reset(data->dev, NULL)) + return; + usb_reset_device(data->dev); + usb_unlock_device(data->dev); } From 052dd903a435101d0dc69909d57c133bacce56c0 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 14 Nov 2024 14:33:01 +0100 Subject: [PATCH 19/69] base-hw: rm C++ exception from syscall dispatcher This patch removes the only residual C++ exception from the kernel part of core, eliminating the risk of the kernel thread trying to enter the kernel itself via the C++ exception-handling path. When throwing an exception, __cxa_allocate_exception invokes the cxx_heap, which synchronizes accesses via a Genode::Mutex. In the contention case, the blocking of the mutex issues a syscall to pause the caller. The patch fixes the problem by replacing the exception with a return value. Fixes #5382 Issue #5245 --- repos/base-hw/src/core/kernel/thread.cc | 84 ++++++++++++++++--------- repos/base-hw/src/core/kernel/thread.h | 8 ++- 2 files changed, 59 insertions(+), 33 deletions(-) diff --git a/repos/base-hw/src/core/kernel/thread.cc b/repos/base-hw/src/core/kernel/thread.cc index b4febf8070..9a6374bf01 100644 --- a/repos/base-hw/src/core/kernel/thread.cc +++ b/repos/base-hw/src/core/kernel/thread.cc @@ -33,45 +33,42 @@ extern "C" void _core_start(void); using namespace Kernel; -void Thread::_ipc_alloc_recv_caps(unsigned cap_count) +Thread::Ipc_alloc_result Thread::_ipc_alloc_recv_caps(unsigned cap_count) { using Allocator = Genode::Allocator; + using Result = Ipc_alloc_result; Allocator &slab = pd().platform_pd().capability_slab(); for (unsigned i = 0; i < cap_count; i++) { if (_obj_id_ref_ptr[i] != nullptr) continue; - slab.try_alloc(sizeof(Object_identity_reference)).with_result( + Result const result = + slab.try_alloc(sizeof(Object_identity_reference)).convert( [&] (void *ptr) { - _obj_id_ref_ptr[i] = ptr; }, + _obj_id_ref_ptr[i] = ptr; + return Result::OK; }, [&] (Allocator::Alloc_error e) { - switch (e) { - case Allocator::Alloc_error::DENIED: - - /* - * Slab is exhausted, reflect condition to the client. - */ - throw Genode::Out_of_ram(); - - case Allocator::Alloc_error::OUT_OF_CAPS: - case Allocator::Alloc_error::OUT_OF_RAM: - - /* - * These conditions cannot happen because the slab - * does not try to grow automatically. It is - * explicitely expanded by the client as response to - * the 'Out_of_ram' condition above. - */ + /* + * Conditions other than DENIED cannot happen because the slab + * does not try to grow automatically. It is explicitely + * expanded by the client as response to the EXHAUSTED return + * value. + */ + if (e != Allocator::Alloc_error::DENIED) Genode::raw("unexpected recv_caps allocation failure"); - } + + return Result::EXHAUSTED; } ); + if (result == Result::EXHAUSTED) + return result; } _ipc_rcv_caps = cap_count; + return Result::OK; } @@ -87,11 +84,20 @@ void Thread::_ipc_free_recv_caps() } -void Thread::_ipc_init(Genode::Native_utcb &utcb, Thread &starter) +Thread::Ipc_alloc_result Thread::_ipc_init(Genode::Native_utcb &utcb, Thread &starter) { _utcb = &utcb; - _ipc_alloc_recv_caps((unsigned)(starter._utcb->cap_cnt())); - ipc_copy_msg(starter); + + switch (_ipc_alloc_recv_caps((unsigned)(starter._utcb->cap_cnt()))) { + + case Ipc_alloc_result::OK: + ipc_copy_msg(starter); + break; + + case Ipc_alloc_result::EXHAUSTED: + return Ipc_alloc_result::EXHAUSTED; + } + return Ipc_alloc_result::OK; } @@ -330,7 +336,13 @@ void Thread::_call_start_thread() /* join protection domain */ thread._pd = (Pd *) user_arg_3(); - thread._ipc_init(*(Native_utcb *)user_arg_4(), *this); + switch (thread._ipc_init(*(Native_utcb *)user_arg_4(), *this)) { + case Ipc_alloc_result::OK: + break; + case Ipc_alloc_result::EXHAUSTED: + user_arg_0(-2); + return; + } /* * Sanity check core threads! @@ -482,7 +494,14 @@ void Thread::_call_delete_pd() void Thread::_call_await_request_msg() { if (_ipc_node.ready_to_wait()) { - _ipc_alloc_recv_caps((unsigned)user_arg_1()); + + switch (_ipc_alloc_recv_caps((unsigned)user_arg_1())) { + case Ipc_alloc_result::OK: + break; + case Ipc_alloc_result::EXHAUSTED: + user_arg_0(-2); + return; + } _ipc_node.wait(); if (_ipc_node.waiting()) { _become_inactive(AWAITS_IPC); @@ -545,8 +564,14 @@ void Thread::_call_send_request_msg() if (!_ipc_node.ready_to_send()) { Genode::raw("IPC send request: bad state"); } else { - _ipc_alloc_recv_caps((unsigned)user_arg_2()); - _ipc_capid = oir ? oir->capid() : cap_id_invalid(); + switch (_ipc_alloc_recv_caps((unsigned)user_arg_2())) { + case Ipc_alloc_result::OK: + break; + case Ipc_alloc_result::EXHAUSTED: + user_arg_0(-2); + return; + } + _ipc_capid = oir ? oir->capid() : cap_id_invalid(); _ipc_node.send(dst->_ipc_node, help); } @@ -822,8 +847,6 @@ void Thread::_call_single_step() { void Thread::_call() { - try { - /* switch over unrestricted kernel calls */ unsigned const call_id = (unsigned)user_arg_0(); switch (call_id) { @@ -907,7 +930,6 @@ void Thread::_call() _die(); return; } - } catch (Genode::Allocator::Out_of_memory &e) { user_arg_0(-2); } } diff --git a/repos/base-hw/src/core/kernel/thread.h b/repos/base-hw/src/core/kernel/thread.h index 5feedebdf8..423c40665f 100644 --- a/repos/base-hw/src/core/kernel/thread.h +++ b/repos/base-hw/src/core/kernel/thread.h @@ -322,9 +322,13 @@ class Kernel::Thread : private Kernel::Object, public Cpu_job, private Timeout kobj.destruct(); } - void _ipc_alloc_recv_caps(unsigned rcv_cap_count); + enum Ipc_alloc_result { OK, EXHAUSTED }; + + [[nodiscard]] Ipc_alloc_result _ipc_alloc_recv_caps(unsigned rcv_cap_count); + void _ipc_free_recv_caps(); - void _ipc_init(Genode::Native_utcb &utcb, Thread &callee); + + [[nodiscard]] Ipc_alloc_result _ipc_init(Genode::Native_utcb &utcb, Thread &callee); public: From 0eefe2d872dc495d2c25f7bc02fcca9f4a32b712 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 15 Nov 2024 11:15:14 +0100 Subject: [PATCH 20/69] gems/vfs_font: improve glyph bb sanity check Issue #5374 --- repos/gems/include/gems/vfs_font.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repos/gems/include/gems/vfs_font.h b/repos/gems/include/gems/vfs_font.h index 8a8067530c..3fdf2ab41f 100644 --- a/repos/gems/include/gems/vfs_font.h +++ b/repos/gems/include/gems/vfs_font.h @@ -68,10 +68,10 @@ class Genode::Vfs_font : public Text_painter::Font void with_glyph(Text_painter::Area const bb, auto const &fn) const { /* consider glyph bounds exceeding the font's bounding box */ - uint8_t const clipped_h = uint8_t(_width ? (bb.count() / _width) : 0u); + unsigned const clipped_h = _width ? unsigned(bb.count() / _width) : 0u; fn(Glyph { .width = _width, - .height = min(_height, clipped_h), + .height = min(unsigned(_height), clipped_h), .vpos = _vpos, .advance = _advance(), .values = _values }); From 6e2a7e979e71733e5bef1ce242ea66813d5a33db Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 15 Nov 2024 11:22:23 +0100 Subject: [PATCH 21/69] tool/run/log/serial: be quiet by default As the initial output of picocom is hardly ever needed, disable it by default to reduce the log noise. Whenever needed, the output can still be enabled by specifying the run tool's --log-serial-cmd. --- tool/run/log/serial | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/run/log/serial b/tool/run/log/serial index 02baa7ce11..ab60eeabc3 100644 --- a/tool/run/log/serial +++ b/tool/run/log/serial @@ -8,7 +8,7 @@ source [genode_dir]/tool/run/log.inc -set default_serial_cmd "picocom -b 115200 /dev/ttyUSB0" +set default_serial_cmd "picocom --quiet -b 115200 /dev/ttyUSB0" proc log_serial_cmd { } { From 0f70cbd7048aea994b335576b8f4fe2c2a7b4368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Tue, 5 Nov 2024 16:31:10 +0100 Subject: [PATCH 22/69] sculpt_manager: query affinity-space immediately --- repos/gems/src/app/sculpt_manager/main.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/repos/gems/src/app/sculpt_manager/main.cc b/repos/gems/src/app/sculpt_manager/main.cc index ca2847ba01..b2467ea12e 100644 --- a/repos/gems/src/app/sculpt_manager/main.cc +++ b/repos/gems/src/app/sculpt_manager/main.cc @@ -1798,6 +1798,14 @@ struct Sculpt::Main : Input_event_handler, Main(Env &env) : _env(env) { + /* + * Read static platform information + */ + _drivers.with_platform_info([&] (Xml_node const &platform) { + platform.with_optional_sub_node("affinity-space", [&] (Xml_node const &node) { + _affinity_space = Affinity::Space(node.attribute_value("width", 1U), + node.attribute_value("height", 1U)); }); }); + _drivers.update_soc(_soc); _gui.input.sigh(_input_handler); _gui.info_sigh(_gui_mode_handler); @@ -1812,14 +1820,6 @@ struct Sculpt::Main : Input_event_handler, _handle_storage_devices(); - /* - * Read static platform information - */ - _drivers.with_platform_info([&] (Xml_node const &platform) { - platform.with_optional_sub_node("affinity-space", [&] (Xml_node const &node) { - _affinity_space = Affinity::Space(node.attribute_value("width", 1U), - node.attribute_value("height", 1U)); }); }); - /* * Generate initial config/managed/deploy configuration */ From f72fdf77ed2c4daedf025ee2f145f53420b9fd10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Tue, 5 Nov 2024 16:44:45 +0100 Subject: [PATCH 23/69] sculpt_manager: set affinity for child With this commit it is possible to specify the affinity for components directly managed by Sculpt, like drivers. --- repos/gems/src/app/sculpt_manager/deploy.h | 2 ++ repos/gems/src/app/sculpt_manager/driver/fb.h | 1 + repos/gems/src/app/sculpt_manager/driver/touch.h | 1 + .../src/app/sculpt_manager/model/child_state.h | 16 ++++++++++++++++ .../src/app/sculpt_manager/model/ram_fs_state.h | 1 + 5 files changed, 21 insertions(+) diff --git a/repos/gems/src/app/sculpt_manager/deploy.h b/repos/gems/src/app/sculpt_manager/deploy.h index 5ec2326dc7..b2aeed5432 100644 --- a/repos/gems/src/app/sculpt_manager/deploy.h +++ b/repos/gems/src/app/sculpt_manager/deploy.h @@ -65,6 +65,7 @@ struct Sculpt::Deploy _child_states, { .name = "depot_rom", .priority = Priority::STORAGE, .cpu_quota = 0, + .location = { }, .initial = { Ram_quota{24*1024*1024}, Cap_quota{200} }, .max = { Ram_quota{2*1024*1024*1024UL}, { } } } }; @@ -72,6 +73,7 @@ struct Sculpt::Deploy _child_states, { .name = "dynamic_depot_rom", .priority = Priority::STORAGE, .cpu_quota = 0, + .location = { }, .initial = { Ram_quota{8*1024*1024}, Cap_quota{200} }, .max = { Ram_quota{2*1024*1024*1024UL}, { } } } }; diff --git a/repos/gems/src/app/sculpt_manager/driver/fb.h b/repos/gems/src/app/sculpt_manager/driver/fb.h index 94c60fe394..9ba70766dd 100644 --- a/repos/gems/src/app/sculpt_manager/driver/fb.h +++ b/repos/gems/src/app/sculpt_manager/driver/fb.h @@ -169,6 +169,7 @@ struct Sculpt::Fb_driver : private Noncopyable .name = "fb", .priority = Priority::MULTIMEDIA, .cpu_quota = 20, + .location = { }, .initial = { Ram_quota { 16*1024*1024 }, Cap_quota { 250 } }, .max = { } } ); diff --git a/repos/gems/src/app/sculpt_manager/driver/touch.h b/repos/gems/src/app/sculpt_manager/driver/touch.h index 0fde42c103..1496adf103 100644 --- a/repos/gems/src/app/sculpt_manager/driver/touch.h +++ b/repos/gems/src/app/sculpt_manager/driver/touch.h @@ -51,6 +51,7 @@ struct Sculpt::Touch_driver : private Noncopyable .name = "touch", .priority = Priority::MULTIMEDIA, .cpu_quota = 10, + .location = { }, .initial = { Ram_quota { 10*1024*1024 }, Cap_quota { 250 } }, .max = { } } ); diff --git a/repos/gems/src/app/sculpt_manager/model/child_state.h b/repos/gems/src/app/sculpt_manager/model/child_state.h index b4a613c1d2..d9985981c6 100644 --- a/repos/gems/src/app/sculpt_manager/model/child_state.h +++ b/repos/gems/src/app/sculpt_manager/model/child_state.h @@ -36,6 +36,8 @@ struct Sculpt::Child_state : Noncopyable Priority priority; unsigned cpu_quota; + Affinity::Location location; + struct Initial { Ram_quota ram; Cap_quota caps; } initial; struct Max { Ram_quota ram; Cap_quota caps; } max; @@ -64,6 +66,11 @@ struct Sculpt::Child_state : Noncopyable Version _version { 0 }; + static bool _location_valid(Attr const attr) + { + return attr.location.width() != 0 && attr.location.height() != 0; + } + public: Child_state(Registry ®istry, Attr const attr) @@ -75,6 +82,7 @@ struct Sculpt::Child_state : Noncopyable Child_state(registry, { .name = name, .priority = priority, .cpu_quota = 0, + .location = { }, .initial = { initial_ram, initial_caps }, .max = { } }) { } @@ -108,6 +116,14 @@ struct Sculpt::Child_state : Noncopyable if (_attr.cpu_quota) gen_named_node(xml, "resource", "CPU", [&] { xml.attribute("quantum", _attr.cpu_quota); }); + + if (_location_valid(_attr)) + xml.node("affinity", [&] { + xml.attribute("xpos", _attr.location.xpos()); + xml.attribute("ypos", _attr.location.ypos()); + xml.attribute("width", _attr.location.width()); + xml.attribute("height", _attr.location.height()); + }); } /** diff --git a/repos/gems/src/app/sculpt_manager/model/ram_fs_state.h b/repos/gems/src/app/sculpt_manager/model/ram_fs_state.h index 97312fbf2b..0046868239 100644 --- a/repos/gems/src/app/sculpt_manager/model/ram_fs_state.h +++ b/repos/gems/src/app/sculpt_manager/model/ram_fs_state.h @@ -37,6 +37,7 @@ struct Sculpt::Ram_fs_state : Child_state, File_system Child_state(registry, { .name = name, .priority = Priority::LEITZENTRALE, .cpu_quota = 0, + .location = { }, .initial = { Ram_quota{1024*1024}, Cap_quota{300} }, .max = { Ram_quota{2*1024*1024*1024UL}, { } } }), File_system(File_system::UNKNOWN) From fe008e0884d2aacfc48f7fdceed1be69e06cff58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 15 Nov 2024 11:02:17 +0100 Subject: [PATCH 24/69] sculpt_manager: allow decoupling fb from first cpu This commit allows for expressing the intent to start the fb driver on a different CPU. Issue #5378. --- repos/gems/src/app/phone_manager/main.cc | 2 ++ repos/gems/src/app/sculpt_manager/main.cc | 2 ++ repos/gems/src/app/sculpt_manager/model/board_info.h | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/repos/gems/src/app/phone_manager/main.cc b/repos/gems/src/app/phone_manager/main.cc index 087e4cc0d5..d95bb59d93 100644 --- a/repos/gems/src/app/phone_manager/main.cc +++ b/repos/gems/src/app/phone_manager/main.cc @@ -210,6 +210,8 @@ struct Sculpt::Main : Input_event_handler, .mmc = false, .modem = false, /* depends on presence of battery */ .nic = false, + + .fb_on_dedicated_cpu = false }; Drivers _drivers { _env, _child_states, *this, *this }; diff --git a/repos/gems/src/app/sculpt_manager/main.cc b/repos/gems/src/app/sculpt_manager/main.cc index b2467ea12e..956dc4d2f8 100644 --- a/repos/gems/src/app/sculpt_manager/main.cc +++ b/repos/gems/src/app/sculpt_manager/main.cc @@ -301,6 +301,8 @@ struct Sculpt::Main : Input_event_handler, .mmc = _mnt_reform || _mnt_pocket, .modem = false, .nic = _mnt_reform || _mnt_pocket, + + .fb_on_dedicated_cpu = false }; Drivers _drivers { _env, _child_states, *this, *this }; diff --git a/repos/gems/src/app/sculpt_manager/model/board_info.h b/repos/gems/src/app/sculpt_manager/model/board_info.h index 9e838015e5..3b4fadb643 100644 --- a/repos/gems/src/app/sculpt_manager/model/board_info.h +++ b/repos/gems/src/app/sculpt_manager/model/board_info.h @@ -95,11 +95,14 @@ struct Sculpt::Board_info { bool fb, touch, wifi, usb, mmc, modem, nic; + bool fb_on_dedicated_cpu; + bool operator != (Soc const &other) const { return (fb != other.fb) || (touch != other.touch) || (wifi != other.wifi) || (usb != other.usb) - || (mmc != other.mmc) || (modem != other.modem); + || (mmc != other.mmc) || (modem != other.modem) + || (fb_on_dedicated_cpu != other.fb_on_dedicated_cpu); } } soc; From 59d951ed6a72e1750e5e0e48feafb886f3e3bdf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 15 Nov 2024 11:12:36 +0100 Subject: [PATCH 25/69] sculpt_manager: start fb on second CPU on Pocket With this commit the fb driver is started on the second CPU on the MNT Pocket Reform to decouple it from the other components started on the first CPU during the system's boot-up and mitigates bring-up issues with this driver that result in an often non-working display. Issue #5378. --- repos/gems/src/app/sculpt_manager/driver/fb.h | 6 +++++- repos/gems/src/app/sculpt_manager/main.cc | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/repos/gems/src/app/sculpt_manager/driver/fb.h b/repos/gems/src/app/sculpt_manager/driver/fb.h index 9ba70766dd..4962d7489c 100644 --- a/repos/gems/src/app/sculpt_manager/driver/fb.h +++ b/repos/gems/src/app/sculpt_manager/driver/fb.h @@ -164,12 +164,16 @@ struct Sculpt::Fb_driver : private Noncopyable registry, "vesa_fb", Priority::MULTIMEDIA, Ram_quota { 8*1024*1024 }, Cap_quota { 110 }); + Affinity::Location const fb_affinity = + board_info.soc.fb_on_dedicated_cpu ? Affinity::Location { 1, 0, 1, 1 } + : Affinity::Location { }; + _soc_fb.conditional(board_info.soc.fb && board_info.options.display, registry, Child_state::Attr { .name = "fb", .priority = Priority::MULTIMEDIA, .cpu_quota = 20, - .location = { }, + .location = fb_affinity, .initial = { Ram_quota { 16*1024*1024 }, Cap_quota { 250 } }, .max = { } } ); diff --git a/repos/gems/src/app/sculpt_manager/main.cc b/repos/gems/src/app/sculpt_manager/main.cc index 956dc4d2f8..6447bb52aa 100644 --- a/repos/gems/src/app/sculpt_manager/main.cc +++ b/repos/gems/src/app/sculpt_manager/main.cc @@ -302,7 +302,7 @@ struct Sculpt::Main : Input_event_handler, .modem = false, .nic = _mnt_reform || _mnt_pocket, - .fb_on_dedicated_cpu = false + .fb_on_dedicated_cpu = _mnt_pocket }; Drivers _drivers { _env, _child_states, *this, *this }; From f6a1956a303fbb02d7bd84dee0709e2ae37c27ce Mon Sep 17 00:00:00 2001 From: Benjamin Lamowski Date: Thu, 14 Nov 2024 16:26:16 +0100 Subject: [PATCH 26/69] sculpt_manager: bump quota boost limit for runtime_view When using the Files view with font size set to Large, the boosted runtime_view limit of 64MiB is still not enough for 4k screens. Double the RAM boost limit to 128MiB. Issue #5356 --- repos/gems/src/app/sculpt_manager/dialog/distant_runtime.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.h b/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.h index 6c1ab0ca16..f0063b9f2f 100644 --- a/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.h +++ b/repos/gems/src/app/sculpt_manager/dialog/distant_runtime.h @@ -105,7 +105,7 @@ class Dialog::Distant_runtime : Noncopyable return false; if (child.has_sub_node("ram") && child.sub_node("ram").has_attribute("requested")) { - _ram.value = min(2*_ram.value, 64*1024*1024u); + _ram.value = min(2*_ram.value, 128*1024*1024u); result = true; } From b05b7f17f3b0b95d2b04e9579da82e8e89b4ec1f Mon Sep 17 00:00:00 2001 From: Benjamin Lamowski Date: Fri, 15 Nov 2024 11:01:19 +0100 Subject: [PATCH 27/69] sculpt_manager: bump editor default quota for large fonts and 4k When trying to open a file in the Files view with font size set to Large on 4k screens, the editor's / `text_area`'s `view` child fails to bump its RAM quota when the editor's default quota is too small. To mitigate the issue, bump the editor's default quota to 80MiB. The long-term fix would be for the editor to request more RAM from the runtime to satisfy the `view` RAM request. Issue #5356 Issue #5383 --- repos/gems/src/app/sculpt_manager/main.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repos/gems/src/app/sculpt_manager/main.cc b/repos/gems/src/app/sculpt_manager/main.cc index 6447bb52aa..3d2f0d25b5 100644 --- a/repos/gems/src/app/sculpt_manager/main.cc +++ b/repos/gems/src/app/sculpt_manager/main.cc @@ -1488,7 +1488,7 @@ struct Sculpt::Main : Input_event_handler, Start_name const start_name("editor"); _file_browser_state.text_area.construct(_child_states, start_name, Priority::LEITZENTRALE, - Ram_quota{32*1024*1024}, Cap_quota{350}); + Ram_quota{80*1024*1024}, Cap_quota{350}); } } From 14e3339ce64d17adde7bad2c28f2c250dfff14bf Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 15 Nov 2024 09:11:42 +0100 Subject: [PATCH 28/69] base-hw: remove outdated comment --- repos/base-hw/src/core/kernel/signal_receiver.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/repos/base-hw/src/core/kernel/signal_receiver.h b/repos/base-hw/src/core/kernel/signal_receiver.h index f5b2df09f8..6f051213bc 100644 --- a/repos/base-hw/src/core/kernel/signal_receiver.h +++ b/repos/base-hw/src/core/kernel/signal_receiver.h @@ -158,10 +158,8 @@ class Kernel::Signal_context * * \param r receiver that the context shall be assigned to * \param imprint userland identification of the context - * - * \throw Assign_to_receiver_failed */ - Signal_context(Signal_receiver & r, addr_t const imprint); + Signal_context(Signal_receiver &, addr_t const imprint); /** * Submit the signal From 9e5e648073c8c6c50f750dd6dd2ef0de4bd27ff3 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Wed, 13 Nov 2024 13:18:05 +0100 Subject: [PATCH 29/69] tool/run/load/fastboot: case-insensitive match The success messages of different versions of the fastboot tool are printed in different upper/lower case. Tolerate both. The patch also removes a few superfluous semicolons. --- tool/run/load/fastboot | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tool/run/load/fastboot b/tool/run/load/fastboot index f41d99379a..06114b499f 100644 --- a/tool/run/load/fastboot +++ b/tool/run/load/fastboot @@ -47,14 +47,14 @@ proc run_load { } { set load_spawn_id $spawn_id set timeout 80 expect { - "finished. total time:" { return true; } + {[fF]inished. [tT]otal time:} { return true; } eof { - puts stderr "fastboot command process died unexpectedly"; - return false; + puts stderr "Fastboot command process died unexpectedly" + return false } timeout { - puts stderr "Loading timed out"; - return false; + puts stderr "Loading timed out" + return false } } } From 3bb894370aeb0cb06f1b0665f1e7ec590f2fb418 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 15 Nov 2024 10:11:06 +0100 Subject: [PATCH 30/69] tool/run/load/fastboot: detect fastboot driver Replace the unconditional sleep "until the board comes up" by the detection of the fastboot-driver message. This shortens the total boot time and reveals U-boots initial output, e.g., messages reporting trouble with bringing up the fastboot driver. --- tool/run/load/fastboot | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tool/run/load/fastboot b/tool/run/load/fastboot index 06114b499f..f47808dfa1 100644 --- a/tool/run/load/fastboot +++ b/tool/run/load/fastboot @@ -34,8 +34,27 @@ proc run_load { } { set device [load_fastboot_device] set uimg [file join [run_dir] boot uImage] - # sleep a bit, board might need some time to come up - sleep 8 + # show boot log up to the life sign of U-boot's fastboot driver + puts stderr "Waiting for U-boot's fastboot driver message" + spawn /bin/sh -c "[log_serial_cmd]" + set timeout 60 + set boot_loader_failed false + expect { + -re {.*musb-hdrc.*\n} { } + eof { + puts stderr "Aborting, boot log received EOF" + set boot_loader_failed true + } + timeout { + puts stderr "Loading of boot loader timed out" + set boot_loader_failed true + } + } + close + if {$boot_loader_failed} { + return false } + + puts stderr "U-boot fastboot driver is up" set fastboot_cmd [list fastboot] if {$device != ""} { From 7019b795a68bcfd338b4a75589d7d0f6611b4d82 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 18 Nov 2024 14:08:24 +0100 Subject: [PATCH 31/69] tool/run: tolerate absence of load_spawn_id Avoid backtrace in error message if load/fastboot fails at the boot-loader stage. --- tool/run/load.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tool/run/load.inc b/tool/run/load.inc index 4d540248ed..6f5e196696 100644 --- a/tool/run/load.inc +++ b/tool/run/load.inc @@ -3,5 +3,7 @@ # proc load_spawn_id { } { global load_spawn_id - return $load_spawn_id + if {[info exists load_spawn_id]} { + return $load_spawn_id } + return -1 } From 4d7a5b6829dddae2de74744cb0222369924f206c Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 14 Nov 2024 11:49:42 +0100 Subject: [PATCH 32/69] base: add Attached_dataspace::clear() This alleviates the need (and risk) of manually parametrizing 'memset' whenever the entire dataspace shall be cleared. Issue #3897 --- repos/base/include/base/attached_ram_dataspace.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/repos/base/include/base/attached_ram_dataspace.h b/repos/base/include/base/attached_ram_dataspace.h index b04c654c46..1f641f06e9 100644 --- a/repos/base/include/base/attached_ram_dataspace.h +++ b/repos/base/include/base/attached_ram_dataspace.h @@ -139,6 +139,8 @@ class Genode::Attached_ram_dataspace */ size_t size() const { return _size; } + void clear() { if (_at) memset((void *)_at, 0, _size); } + void swap(Attached_ram_dataspace &other) { _swap(_size, other._size); From 9e4b27a8290d44043deb4a3f1ca7be909b0cd658 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 14 Nov 2024 14:58:43 +0100 Subject: [PATCH 33/69] fs_rom: use dataspace bounds for clearing Avoid potential risk of exceeding the dataspace bounds should the stored file size be larger than the current ds size. Issue #3897 --- repos/os/src/server/fs_rom/main.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repos/os/src/server/fs_rom/main.cc b/repos/os/src/server/fs_rom/main.cc index 609f73bc32..478b07fdc7 100644 --- a/repos/os/src/server/fs_rom/main.cc +++ b/repos/os/src/server/fs_rom/main.cc @@ -258,7 +258,7 @@ class Fs_rom::Rom_session_component : public Rpc_object return false; } } else { - memset(_file_ds.local_addr(), 0x00, _file_ds.size()); + _file_ds.clear(); } /* omit read if file is empty */ @@ -333,7 +333,7 @@ class Fs_rom::Rom_session_component : public Rpc_object /* notify if the file is removed */ catch (File_system::Lookup_failed) { if (_file_size > 0) { - memset(_file_ds.local_addr(), 0x00, (size_t)_file_size); + _file_ds.clear(); _file_size = 0; Signal_transmitter(_sigh).submit(); } From d095945d6c188e37c7a2be8c0785e6c54b3ec8ed Mon Sep 17 00:00:00 2001 From: Roman Iten Date: Sat, 19 Sep 2020 20:33:05 +0200 Subject: [PATCH 34/69] fs_rom: clear dataspace if lookup failed Issue #3897 --- repos/os/src/server/fs_rom/main.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/repos/os/src/server/fs_rom/main.cc b/repos/os/src/server/fs_rom/main.cc index 478b07fdc7..1389600ea8 100644 --- a/repos/os/src/server/fs_rom/main.cc +++ b/repos/os/src/server/fs_rom/main.cc @@ -304,7 +304,13 @@ class Fs_rom::Rom_session_component : public Rpc_object catch (Watch_failed) { } try { return _read_dataspace(update_only); } - catch (Lookup_failed) { /* missing but may appear anytime soon */ } + catch (Lookup_failed) { + if (_file_size > 0) { + _file_ds.clear(); + _file_size = 0; + Signal_transmitter(_sigh).submit(); + } + } catch (Invalid_handle) { warning(_file_path, ": invalid handle"); } catch (Invalid_name) { warning(_file_path, ": invalid name"); } catch (Permission_denied) { warning(_file_path, ": permission denied"); } From 798b49fcc30a296bd57b45f14bda22b920d4fe61 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 18 Nov 2024 18:33:07 +0100 Subject: [PATCH 35/69] vfs server: survive malformed dynamic re-config The VFS server used to respond to any invalid config by exiting. By disregarding such configurations instead, this patch makes the VFS server robust against temporary malconfiguration. --- repos/os/src/server/vfs/main.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repos/os/src/server/vfs/main.cc b/repos/os/src/server/vfs/main.cc index 6081b4b15f..5874ea161b 100644 --- a/repos/os/src/server/vfs/main.cc +++ b/repos/os/src/server/vfs/main.cc @@ -782,7 +782,8 @@ class Vfs_server::Root : public Genode::Root_component, void _config_update() { _config_rom.update(); - _vfs_env.root_dir().apply_config(vfs_config()); + _config_rom.xml().with_optional_sub_node("vfs", [&] (Xml_node const &config) { + _vfs_env.root_dir().apply_config(config); }); /* * The VFS configuration change may result in watch notifications From a3193b919ccfa4a707c19c92fd1285f577ca1c0b Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 18 Nov 2024 18:46:42 +0100 Subject: [PATCH 36/69] terminal: survive malformed dynamic re-config --- repos/gems/src/server/terminal/main.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repos/gems/src/server/terminal/main.cc b/repos/gems/src/server/terminal/main.cc index 5a62f8e56a..fc66fbf7ff 100644 --- a/repos/gems/src/server/terminal/main.cc +++ b/repos/gems/src/server/terminal/main.cc @@ -267,7 +267,8 @@ void Terminal::Main::_handle_config() _font.destruct(); - _root_dir.apply_config(config.sub_node("vfs")); + config.with_optional_sub_node("vfs", [&] (Xml_node const &vfs_config) { + _root_dir.apply_config(vfs_config); }); Cached_font::Limit const cache_limit { config.attribute_value("cache", Number_of_bytes(256*1024)) }; From 011b44c282706b9c9e8765b5fc3a84aa9c4517c4 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Wed, 20 Nov 2024 08:54:01 +0100 Subject: [PATCH 37/69] depot: update recipe hashes --- repos/base-fiasco/recipes/src/base-fiasco/hash | 2 +- repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash | 2 +- repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash | 2 +- repos/base-foc/recipes/src/base-foc-pbxa9/hash | 2 +- repos/base-foc/recipes/src/base-foc-pc/hash | 2 +- repos/base-foc/recipes/src/base-foc-rpi3/hash | 2 +- repos/base-hw/recipes/src/base-hw-pbxa9/hash | 2 +- repos/base-hw/recipes/src/base-hw-pc/hash | 2 +- repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash | 2 +- repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash | 2 +- repos/base-linux/recipes/src/base-linux/hash | 2 +- repos/base-nova/recipes/src/base-nova/hash | 2 +- repos/base-okl4/recipes/src/base-okl4/hash | 2 +- repos/base-pistachio/recipes/src/base-pistachio/hash | 2 +- repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash | 2 +- repos/base-sel4/recipes/src/base-sel4-x86/hash | 2 +- repos/base/recipes/api/base/hash | 2 +- repos/base/recipes/pkg/test-alarm/hash | 2 +- repos/base/recipes/pkg/test-ds_ownership/hash | 2 +- repos/base/recipes/pkg/test-entrypoint/hash | 2 +- repos/base/recipes/pkg/test-log/hash | 2 +- repos/base/recipes/pkg/test-mmio/hash | 2 +- repos/base/recipes/pkg/test-new_delete/hash | 2 +- repos/base/recipes/pkg/test-reconstructible/hash | 2 +- repos/base/recipes/pkg/test-registry/hash | 2 +- repos/base/recipes/pkg/test-rm_fault/hash | 2 +- repos/base/recipes/pkg/test-rm_fault_no_nox/hash | 2 +- repos/base/recipes/pkg/test-rm_nested/hash | 2 +- repos/base/recipes/pkg/test-rm_stress/hash | 2 +- repos/base/recipes/pkg/test-sanitizer/hash | 2 +- repos/base/recipes/pkg/test-stack_smash/hash | 2 +- repos/base/recipes/pkg/test-synced_interface/hash | 2 +- repos/base/recipes/pkg/test-timer/hash | 2 +- repos/base/recipes/pkg/test-tls/hash | 2 +- repos/base/recipes/pkg/test-token/hash | 2 +- repos/base/recipes/pkg/test-xml_generator/hash | 2 +- repos/base/recipes/pkg/test-xml_node/hash | 2 +- repos/base/recipes/src/test-alarm/hash | 2 +- repos/base/recipes/src/test-ds_ownership/hash | 2 +- repos/base/recipes/src/test-entrypoint/hash | 2 +- repos/base/recipes/src/test-log/hash | 2 +- repos/base/recipes/src/test-mmio/hash | 2 +- repos/base/recipes/src/test-new_delete/hash | 2 +- repos/base/recipes/src/test-reconstructible/hash | 2 +- repos/base/recipes/src/test-registry/hash | 2 +- repos/base/recipes/src/test-rm_fault/hash | 2 +- repos/base/recipes/src/test-rm_nested/hash | 2 +- repos/base/recipes/src/test-rm_stress/hash | 2 +- repos/base/recipes/src/test-sanitizer/hash | 2 +- repos/base/recipes/src/test-segfault/hash | 2 +- repos/base/recipes/src/test-stack_smash/hash | 2 +- repos/base/recipes/src/test-synced_interface/hash | 2 +- repos/base/recipes/src/test-timer/hash | 2 +- repos/base/recipes/src/test-tls/hash | 2 +- repos/base/recipes/src/test-token/hash | 2 +- repos/base/recipes/src/test-xml_generator/hash | 2 +- repos/base/recipes/src/test-xml_node/hash | 2 +- repos/dde_bsd/recipes/pkg/bsd_audio/hash | 2 +- repos/dde_bsd/recipes/src/bsd_audio/hash | 2 +- repos/dde_ipxe/recipes/pkg/ipxe_nic/hash | 2 +- repos/dde_ipxe/recipes/src/ipxe_nic/hash | 2 +- repos/dde_linux/recipes/api/virt_linux/hash | 2 +- repos/dde_linux/recipes/pkg/wireguard/hash | 2 +- repos/dde_linux/recipes/src/usb_hid/hash | 2 +- repos/dde_linux/recipes/src/usb_net/hash | 2 +- repos/dde_linux/recipes/src/vfs_lxip/hash | 2 +- repos/dde_linux/recipes/src/wireguard/hash | 2 +- repos/dde_rump/recipes/pkg/ext2_fs/hash | 2 +- repos/dde_rump/recipes/src/vfs_rump/hash | 2 +- repos/demo/recipes/src/demo/hash | 2 +- repos/gems/recipes/api/gems/hash | 2 +- repos/gems/recipes/pkg/backdrop/hash | 2 +- repos/gems/recipes/pkg/cpu_load_display/hash | 2 +- repos/gems/recipes/pkg/dbg_download/hash | 2 +- repos/gems/recipes/pkg/depot_download/hash | 2 +- repos/gems/recipes/pkg/drivers_nic-pc/hash | 2 +- repos/gems/recipes/pkg/file_vault/hash | 2 +- repos/gems/recipes/pkg/fonts_fs/hash | 2 +- repos/gems/recipes/pkg/goa-linux/hash | 2 +- repos/gems/recipes/pkg/goa/hash | 2 +- repos/gems/recipes/pkg/motif_decorator/hash | 2 +- repos/gems/recipes/pkg/motif_wm/hash | 2 +- repos/gems/recipes/pkg/nano3d/hash | 2 +- repos/gems/recipes/pkg/osci/hash | 2 +- repos/gems/recipes/pkg/rom_osci/hash | 2 +- repos/gems/recipes/pkg/screenshot_trigger/hash | 2 +- repos/gems/recipes/pkg/sculpt/hash | 2 +- repos/gems/recipes/pkg/sculpt_distribution-pc/hash | 2 +- repos/gems/recipes/pkg/sculpt_distribution/hash | 2 +- repos/gems/recipes/pkg/sculpt_drivers-pc/hash | 2 +- repos/gems/recipes/pkg/sticks_blue_backdrop/hash | 2 +- repos/gems/recipes/pkg/terminal/hash | 2 +- repos/gems/recipes/pkg/test-depot_query_index/hash | 2 +- repos/gems/recipes/pkg/test-file_vault/hash | 2 +- repos/gems/recipes/pkg/test-file_vault_no_entropy/hash | 2 +- repos/gems/recipes/pkg/test-fs_tool/hash | 2 +- repos/gems/recipes/pkg/test-libc_vfs_audit/hash | 2 +- repos/gems/recipes/pkg/themed_decorator/hash | 2 +- repos/gems/recipes/pkg/themed_wm/hash | 2 +- repos/gems/recipes/pkg/touch_keyboard/hash | 2 +- repos/gems/recipes/pkg/trace_fs/hash | 2 +- repos/gems/recipes/pkg/trace_recorder/hash | 2 +- repos/gems/recipes/pkg/unconfigured_nano3d/hash | 2 +- repos/gems/recipes/pkg/window_layouter/hash | 2 +- repos/gems/recipes/pkg/wm/hash | 2 +- repos/gems/recipes/src/backdrop/hash | 2 +- repos/gems/recipes/src/cpu_load_display/hash | 2 +- repos/gems/recipes/src/dbg_download/hash | 2 +- repos/gems/recipes/src/decorator/hash | 2 +- repos/gems/recipes/src/depot_deploy/hash | 2 +- repos/gems/recipes/src/depot_download_manager/hash | 2 +- repos/gems/recipes/src/depot_query/hash | 2 +- repos/gems/recipes/src/depot_remove/hash | 2 +- repos/gems/recipes/src/file_terminal/hash | 2 +- repos/gems/recipes/src/file_vault/hash | 2 +- repos/gems/recipes/src/file_vault_gui/hash | 2 +- repos/gems/recipes/src/fs_query/hash | 2 +- repos/gems/recipes/src/fs_tool/hash | 2 +- repos/gems/recipes/src/gpt_write/hash | 2 +- repos/gems/recipes/src/gui_fader/hash | 2 +- repos/gems/recipes/src/menu_view/hash | 2 +- repos/gems/recipes/src/mixer_gui_qt/hash | 2 +- repos/gems/recipes/src/mixer_gui_qt6/hash | 2 +- repos/gems/recipes/src/nano3d/hash | 2 +- repos/gems/recipes/src/osci/hash | 2 +- repos/gems/recipes/src/rom_osci/hash | 2 +- repos/gems/recipes/src/screenshot_trigger/hash | 2 +- repos/gems/recipes/src/sculpt_manager/hash | 2 +- repos/gems/recipes/src/tcp_terminal/hash | 2 +- repos/gems/recipes/src/terminal/hash | 2 +- repos/gems/recipes/src/test-tiled_wm/hash | 2 +- repos/gems/recipes/src/test-tiled_wm_qt6/hash | 2 +- repos/gems/recipes/src/text_area/hash | 2 +- repos/gems/recipes/src/themed_decorator/hash | 2 +- repos/gems/recipes/src/touch_keyboard/hash | 2 +- repos/gems/recipes/src/trace_recorder/hash | 2 +- repos/gems/recipes/src/trace_recorder_policy/hash | 2 +- repos/gems/recipes/src/tresor/hash | 2 +- repos/gems/recipes/src/vfs_audit/hash | 2 +- repos/gems/recipes/src/vfs_gpu/hash | 2 +- repos/gems/recipes/src/vfs_import/hash | 2 +- repos/gems/recipes/src/vfs_oss/hash | 2 +- repos/gems/recipes/src/vfs_pipe/hash | 2 +- repos/gems/recipes/src/vfs_trace/hash | 2 +- repos/gems/recipes/src/vfs_ttf/hash | 2 +- repos/gems/recipes/src/window_layouter/hash | 2 +- repos/gems/recipes/src/wm/hash | 2 +- repos/libports/recipes/pkg/acpica/hash | 2 +- repos/libports/recipes/pkg/gcov/hash | 2 +- repos/libports/recipes/pkg/mesa_gears/hash | 2 +- repos/libports/recipes/pkg/mesa_gpu-cpu/hash | 2 +- repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash | 2 +- repos/libports/recipes/pkg/mesa_gpu-intel/hash | 2 +- repos/libports/recipes/pkg/mesa_gpu-lima/hash | 2 +- repos/libports/recipes/pkg/pdf_view/hash | 2 +- repos/libports/recipes/pkg/qt5_textedit/hash | 2 +- repos/libports/recipes/pkg/sntp_dummy_rtc/hash | 2 +- repos/libports/recipes/pkg/stdin2out/hash | 2 +- repos/libports/recipes/pkg/system_clock-dummy/hash | 2 +- repos/libports/recipes/pkg/system_clock-pc/hash | 2 +- repos/libports/recipes/pkg/system_rtc-linux/hash | 2 +- repos/libports/recipes/pkg/system_rtc-pc/hash | 2 +- repos/libports/recipes/pkg/test-expat/hash | 2 +- repos/libports/recipes/pkg/test-ldso/hash | 2 +- repos/libports/recipes/pkg/test-libc/hash | 2 +- repos/libports/recipes/pkg/test-libc_alarm/hash | 2 +- repos/libports/recipes/pkg/test-libc_connect_lwip/hash | 2 +- repos/libports/recipes/pkg/test-libc_connect_lxip/hash | 2 +- .../libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash | 2 +- .../libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash | 2 +- repos/libports/recipes/pkg/test-libc_counter/hash | 2 +- repos/libports/recipes/pkg/test-libc_deferred_unlink/hash | 2 +- repos/libports/recipes/pkg/test-libc_execve/hash | 2 +- repos/libports/recipes/pkg/test-libc_fifo_pipe/hash | 2 +- repos/libports/recipes/pkg/test-libc_fork/hash | 2 +- repos/libports/recipes/pkg/test-libc_getenv/hash | 2 +- repos/libports/recipes/pkg/test-libc_kqueue/hash | 2 +- repos/libports/recipes/pkg/test-libc_pipe/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_block/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_counter/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_fs/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_oss/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_ram/hash | 2 +- repos/libports/recipes/pkg/test-pipe_read_ready/hash | 2 +- repos/libports/recipes/pkg/test-pthread/hash | 2 +- repos/libports/recipes/pkg/test-sequence/hash | 2 +- repos/libports/recipes/pkg/test-spark/hash | 2 +- repos/libports/recipes/pkg/test-spark_exception/hash | 2 +- repos/libports/recipes/pkg/test-spark_secondary_stack/hash | 2 +- repos/libports/recipes/pkg/test-stdcxx/hash | 2 +- repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash | 2 +- repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash | 2 +- repos/libports/recipes/pkg/usb_webcam/hash | 2 +- repos/libports/recipes/src/acpi_event/hash | 2 +- repos/libports/recipes/src/acpica/hash | 2 +- repos/libports/recipes/src/extract/hash | 2 +- repos/libports/recipes/src/fetchurl/hash | 2 +- repos/libports/recipes/src/gcov/hash | 2 +- repos/libports/recipes/src/libc/hash | 2 +- repos/libports/recipes/src/libdrm/hash | 2 +- repos/libports/recipes/src/libqgenodeviewwidget/hash | 2 +- repos/libports/recipes/src/libusb/hash | 2 +- repos/libports/recipes/src/libyuv/hash | 2 +- repos/libports/recipes/src/mesa/hash | 2 +- repos/libports/recipes/src/mesa_gears/hash | 2 +- repos/libports/recipes/src/pcsc-lite/hash | 2 +- repos/libports/recipes/src/pdf_view/hash | 2 +- repos/libports/recipes/src/posix/hash | 2 +- repos/libports/recipes/src/qt5_base/hash | 2 +- repos/libports/recipes/src/qt5_component/hash | 2 +- repos/libports/recipes/src/qt5_launchpad/hash | 2 +- repos/libports/recipes/src/qt5_quickcontrols2/hash | 2 +- repos/libports/recipes/src/qt5_svg/hash | 2 +- repos/libports/recipes/src/qt6_base/hash | 2 +- repos/libports/recipes/src/qt6_component/hash | 2 +- repos/libports/recipes/src/qt6_launchpad/hash | 2 +- repos/libports/recipes/src/sanitizer/hash | 2 +- repos/libports/recipes/src/sntp_client/hash | 2 +- repos/libports/recipes/src/spark/hash | 2 +- repos/libports/recipes/src/system_rtc/hash | 2 +- repos/libports/recipes/src/test-ldso/hash | 2 +- repos/libports/recipes/src/test-libc_fifo_pipe/hash | 2 +- repos/libports/recipes/src/test-libc_vfs/hash | 2 +- repos/libports/recipes/src/test-libc_vfs_block/hash | 2 +- repos/libports/recipes/src/test-netty/hash | 2 +- repos/libports/recipes/src/test-pthread/hash | 2 +- repos/libports/recipes/src/test-spark/hash | 2 +- repos/libports/recipes/src/test-spark_exception/hash | 2 +- repos/libports/recipes/src/test-spark_secondary_stack/hash | 2 +- repos/libports/recipes/src/test-tcp/hash | 2 +- repos/libports/recipes/src/usb_webcam/hash | 2 +- repos/libports/recipes/src/vesa_fb/hash | 2 +- repos/libports/recipes/src/vfs_fatfs/hash | 2 +- repos/libports/recipes/src/vfs_jitterentropy/hash | 2 +- repos/libports/recipes/src/vfs_legacy_oss/hash | 2 +- repos/libports/recipes/src/vfs_libusb/hash | 2 +- repos/libports/recipes/src/vfs_lwip/hash | 2 +- repos/os/recipes/pkg/black_hole/hash | 2 +- repos/os/recipes/pkg/chroot/hash | 2 +- repos/os/recipes/pkg/clipboard/hash | 2 +- repos/os/recipes/pkg/cpu_balancer/hash | 2 +- repos/os/recipes/pkg/cpu_balancer_config/hash | 2 +- repos/os/recipes/pkg/cpu_burner/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-linux/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-pbxa9/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-pc/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash | 2 +- repos/os/recipes/pkg/drivers_nic-linux/hash | 2 +- repos/os/recipes/pkg/drivers_nic-pbxa9/hash | 2 +- repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash | 2 +- repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash | 2 +- repos/os/recipes/pkg/dynamic_rom/hash | 2 +- repos/os/recipes/pkg/fs_report/hash | 2 +- repos/os/recipes/pkg/fs_rom/hash | 2 +- repos/os/recipes/pkg/mixer/hash | 2 +- repos/os/recipes/pkg/nic_router-nat/hash | 2 +- repos/os/recipes/pkg/nic_uplink/hash | 2 +- repos/os/recipes/pkg/nit_focus/hash | 2 +- repos/os/recipes/pkg/nitpicker/hash | 2 +- repos/os/recipes/pkg/part_block/hash | 2 +- repos/os/recipes/pkg/ping/hash | 2 +- repos/os/recipes/pkg/recall_fs/hash | 2 +- repos/os/recipes/pkg/record_play_mixer/hash | 2 +- repos/os/recipes/pkg/record_rom/hash | 2 +- repos/os/recipes/pkg/report_rom/hash | 2 +- repos/os/recipes/pkg/rom_filter/hash | 2 +- repos/os/recipes/pkg/rom_reporter/hash | 2 +- repos/os/recipes/pkg/terminal_crosslink/hash | 2 +- repos/os/recipes/pkg/test-audio_out/hash | 2 +- repos/os/recipes/pkg/test-black_hole/hash | 2 +- repos/os/recipes/pkg/test-capture/hash | 2 +- repos/os/recipes/pkg/test-clipboard/hash | 2 +- repos/os/recipes/pkg/test-dynamic_config/hash | 2 +- repos/os/recipes/pkg/test-fault_detection/hash | 2 +- repos/os/recipes/pkg/test-fs_packet/hash | 2 +- repos/os/recipes/pkg/test-fs_report/hash | 2 +- repos/os/recipes/pkg/test-fs_rom_update/hash | 2 +- repos/os/recipes/pkg/test-fs_rom_update_fs/hash | 2 +- repos/os/recipes/pkg/test-fs_rom_update_ram/hash | 2 +- repos/os/recipes/pkg/test-init/hash | 2 +- repos/os/recipes/pkg/test-init_loop/hash | 2 +- repos/os/recipes/pkg/test-lx_block/hash | 2 +- repos/os/recipes/pkg/test-nic_loopback/hash | 2 +- repos/os/recipes/pkg/test-nic_perf/hash | 2 +- repos/os/recipes/pkg/test-nic_perf_router/hash | 2 +- repos/os/recipes/pkg/test-part_block_ahdi/hash | 2 +- repos/os/recipes/pkg/test-part_block_disk/hash | 2 +- repos/os/recipes/pkg/test-part_block_gpt/hash | 2 +- repos/os/recipes/pkg/test-part_block_mbr/hash | 2 +- repos/os/recipes/pkg/test-path/hash | 2 +- repos/os/recipes/pkg/test-ram_fs_chunk/hash | 2 +- repos/os/recipes/pkg/test-read_only_rom/hash | 2 +- repos/os/recipes/pkg/test-report_rom/hash | 2 +- repos/os/recipes/pkg/test-resource_request/hash | 2 +- repos/os/recipes/pkg/test-resource_yield/hash | 2 +- repos/os/recipes/pkg/test-rom_filter/hash | 2 +- repos/os/recipes/pkg/test-rtc/hash | 2 +- repos/os/recipes/pkg/test-sandbox/hash | 2 +- repos/os/recipes/pkg/test-signal/hash | 2 +- repos/os/recipes/pkg/test-slab/hash | 2 +- repos/os/recipes/pkg/test-terminal_crosslink/hash | 2 +- repos/os/recipes/pkg/test-trace/hash | 2 +- repos/os/recipes/pkg/test-trace_buffer/hash | 2 +- repos/os/recipes/pkg/test-trace_logger/hash | 2 +- repos/os/recipes/pkg/test-utf8/hash | 2 +- repos/os/recipes/pkg/test-vfs_block/hash | 2 +- repos/os/recipes/pkg/test-vfs_stress_fs/hash | 2 +- repos/os/recipes/pkg/test-vfs_stress_ram/hash | 2 +- repos/os/recipes/pkg/test-weak_ptr/hash | 2 +- repos/os/recipes/pkg/top/hash | 2 +- repos/os/recipes/pkg/trace_logger/hash | 2 +- repos/os/recipes/pkg/vfs/hash | 2 +- repos/os/recipes/pkg/vfs_block/hash | 2 +- repos/os/recipes/pkg/waveform_player/hash | 2 +- repos/os/recipes/src/acpi/hash | 2 +- repos/os/recipes/src/ahci/hash | 2 +- repos/os/recipes/src/black_hole/hash | 2 +- repos/os/recipes/src/block_tester/hash | 2 +- repos/os/recipes/src/boot_fb/hash | 2 +- repos/os/recipes/src/cached_fs_rom/hash | 2 +- repos/os/recipes/src/chroot/hash | 2 +- repos/os/recipes/src/clipboard/hash | 2 +- repos/os/recipes/src/cpu_balancer/hash | 2 +- repos/os/recipes/src/cpu_burner/hash | 2 +- repos/os/recipes/src/dummy/hash | 2 +- repos/os/recipes/src/dummy_rtc/hash | 2 +- repos/os/recipes/src/dynamic_rom/hash | 2 +- repos/os/recipes/src/event_filter/hash | 2 +- repos/os/recipes/src/fb_sdl/hash | 2 +- repos/os/recipes/src/fs_report/hash | 2 +- repos/os/recipes/src/fs_rom/hash | 2 +- repos/os/recipes/src/global_keys_handler/hash | 2 +- repos/os/recipes/src/gui_fb/hash | 2 +- repos/os/recipes/src/init/hash | 2 +- repos/os/recipes/src/intel_gpu/hash | 2 +- repos/os/recipes/src/lan9118_nic/hash | 2 +- repos/os/recipes/src/linux_nic/hash | 2 +- repos/os/recipes/src/linux_rtc/hash | 2 +- repos/os/recipes/src/log_core/hash | 2 +- repos/os/recipes/src/log_terminal/hash | 2 +- repos/os/recipes/src/lx_block/hash | 2 +- repos/os/recipes/src/lx_fs/hash | 2 +- repos/os/recipes/src/mixer/hash | 2 +- repos/os/recipes/src/monitor/hash | 2 +- repos/os/recipes/src/nic_bridge/hash | 2 +- repos/os/recipes/src/nic_loopback/hash | 2 +- repos/os/recipes/src/nic_perf/hash | 2 +- repos/os/recipes/src/nic_router/hash | 2 +- repos/os/recipes/src/nic_uplink/hash | 2 +- repos/os/recipes/src/nit_focus/hash | 2 +- repos/os/recipes/src/nitpicker/hash | 2 +- repos/os/recipes/src/nvme/hash | 2 +- repos/os/recipes/src/part_block/hash | 2 +- repos/os/recipes/src/pbxa9_drivers/hash | 2 +- repos/os/recipes/src/pc_rtc/hash | 2 +- repos/os/recipes/src/pci_decode/hash | 2 +- repos/os/recipes/src/ping/hash | 2 +- repos/os/recipes/src/platform/hash | 2 +- repos/os/recipes/src/ps2/hash | 2 +- repos/os/recipes/src/record_play_mixer/hash | 2 +- repos/os/recipes/src/record_rom/hash | 2 +- repos/os/recipes/src/report_rom/hash | 2 +- repos/os/recipes/src/rom_filter/hash | 2 +- repos/os/recipes/src/rom_logger/hash | 2 +- repos/os/recipes/src/rom_reporter/hash | 2 +- repos/os/recipes/src/rom_to_file/hash | 2 +- repos/os/recipes/src/sandbox/hash | 2 +- repos/os/recipes/src/sequence/hash | 2 +- repos/os/recipes/src/shim/hash | 2 +- repos/os/recipes/src/terminal_crosslink/hash | 2 +- repos/os/recipes/src/terminal_log/hash | 2 +- repos/os/recipes/src/test-audio_out/hash | 2 +- repos/os/recipes/src/test-black_hole/hash | 2 +- repos/os/recipes/src/test-bomb/hash | 2 +- repos/os/recipes/src/test-capture/hash | 2 +- repos/os/recipes/src/test-clipboard/hash | 2 +- repos/os/recipes/src/test-dynamic_config/hash | 2 +- repos/os/recipes/src/test-fault_detection/hash | 2 +- repos/os/recipes/src/test-fs_packet/hash | 2 +- repos/os/recipes/src/test-fs_report/hash | 2 +- repos/os/recipes/src/test-immutable_rom/hash | 2 +- repos/os/recipes/src/test-init/hash | 2 +- repos/os/recipes/src/test-init_loop/hash | 2 +- repos/os/recipes/src/test-nic_loopback/hash | 2 +- repos/os/recipes/src/test-path/hash | 2 +- repos/os/recipes/src/test-ram_fs_chunk/hash | 2 +- repos/os/recipes/src/test-report_rom/hash | 2 +- repos/os/recipes/src/test-resource_request/hash | 2 +- repos/os/recipes/src/test-resource_yield/hash | 2 +- repos/os/recipes/src/test-rtc/hash | 2 +- repos/os/recipes/src/test-sandbox/hash | 2 +- repos/os/recipes/src/test-signal/hash | 2 +- repos/os/recipes/src/test-slab/hash | 2 +- repos/os/recipes/src/test-terminal_crosslink/hash | 2 +- repos/os/recipes/src/test-terminal_echo/hash | 2 +- repos/os/recipes/src/test-trace/hash | 2 +- repos/os/recipes/src/test-trace_buffer/hash | 2 +- repos/os/recipes/src/test-trace_logger/hash | 2 +- repos/os/recipes/src/test-utf8/hash | 2 +- repos/os/recipes/src/test-vfs_capture/hash | 2 +- repos/os/recipes/src/test-vfs_stress/hash | 2 +- repos/os/recipes/src/test-weak_ptr/hash | 2 +- repos/os/recipes/src/top/hash | 2 +- repos/os/recipes/src/trace_logger/hash | 2 +- repos/os/recipes/src/trace_policy/hash | 2 +- repos/os/recipes/src/trace_subject_reporter/hash | 2 +- repos/os/recipes/src/usb_block/hash | 2 +- repos/os/recipes/src/vfs/hash | 2 +- repos/os/recipes/src/vfs_block/hash | 2 +- repos/os/recipes/src/vfs_capture/hash | 2 +- repos/os/recipes/src/vfs_tap/hash | 2 +- repos/os/recipes/src/virt_qemu_drivers/hash | 2 +- repos/os/recipes/src/virtdev_rom/hash | 2 +- repos/os/recipes/src/virtio_fb/hash | 2 +- repos/os/recipes/src/virtio_input/hash | 2 +- repos/os/recipes/src/virtio_nic/hash | 2 +- repos/os/recipes/src/vmm/hash | 2 +- repos/os/recipes/src/waveform_player/hash | 2 +- repos/pc/recipes/api/pc_linux/hash | 2 +- repos/pc/recipes/pkg/pc_nic/hash | 2 +- repos/pc/recipes/pkg/pc_wifi/hash | 2 +- repos/pc/recipes/pkg/test_usb_host-pc/hash | 2 +- repos/pc/recipes/src/pc_intel_fb/hash | 2 +- repos/pc/recipes/src/pc_nic/hash | 2 +- repos/pc/recipes/src/pc_platform/hash | 2 +- repos/pc/recipes/src/pc_usb_host/hash | 2 +- repos/pc/recipes/src/pc_wifi/hash | 2 +- repos/ports/recipes/pkg/gdb_x86/hash | 2 +- repos/ports/recipes/pkg/lighttpd/hash | 2 +- repos/ports/recipes/pkg/report_dump/hash | 2 +- repos/ports/recipes/pkg/socat_tcp/hash | 2 +- repos/ports/recipes/pkg/system_shell/hash | 2 +- repos/ports/recipes/pkg/vbox5-nova-capture/hash | 2 +- repos/ports/recipes/pkg/vbox5-nova-sculpt/hash | 2 +- repos/ports/recipes/pkg/vbox6-capture/hash | 2 +- repos/ports/recipes/pkg/vbox6/hash | 2 +- repos/ports/recipes/src/gdb_support/hash | 2 +- repos/ports/recipes/src/vbox5-nova/hash | 2 +- repos/ports/recipes/src/vbox6/hash | 2 +- repos/ports/recipes/src/verify/hash | 2 +- 443 files changed, 443 insertions(+), 443 deletions(-) diff --git a/repos/base-fiasco/recipes/src/base-fiasco/hash b/repos/base-fiasco/recipes/src/base-fiasco/hash index 20e214286e..203b281694 100644 --- a/repos/base-fiasco/recipes/src/base-fiasco/hash +++ b/repos/base-fiasco/recipes/src/base-fiasco/hash @@ -1 +1 @@ -2024-10-07 19deb3e25765c65bef7ec4b7dd7c657b0c63a49d +2024-11-19 82484aa58beccbef14406669d13425b07ebaf814 diff --git a/repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash b/repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash index d2f3570efa..644982726c 100644 --- a/repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash +++ b/repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash @@ -1 +1 @@ -2024-10-07 a906ce16359b301dda1031906fc6c9b3dd386d52 +2024-11-19 e8481f9398446af0a06a52ed1b1a15fe3a794158 diff --git a/repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash b/repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash index 5065118d5a..2c66f29c07 100644 --- a/repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash +++ b/repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash @@ -1 +1 @@ -2024-10-07 8f88c87b67888d3aedccf628ceb214ec7305b2eb +2024-11-19 d9eac6d28aaf218469bf2e7aa8b61a1e61e01a13 diff --git a/repos/base-foc/recipes/src/base-foc-pbxa9/hash b/repos/base-foc/recipes/src/base-foc-pbxa9/hash index 4704fee7dc..1e746f9cfa 100644 --- a/repos/base-foc/recipes/src/base-foc-pbxa9/hash +++ b/repos/base-foc/recipes/src/base-foc-pbxa9/hash @@ -1 +1 @@ -2024-10-07 f2d0f8e9e79f3c4a11498d1df055488910d87279 +2024-11-19 c86f3687baae33dd51bbb27930c1ac0036c514bf diff --git a/repos/base-foc/recipes/src/base-foc-pc/hash b/repos/base-foc/recipes/src/base-foc-pc/hash index 99bea661e6..0a98cbbcf9 100644 --- a/repos/base-foc/recipes/src/base-foc-pc/hash +++ b/repos/base-foc/recipes/src/base-foc-pc/hash @@ -1 +1 @@ -2024-10-07 af4a1a784fac28f321443a0659914f0aeb92e466 +2024-11-19 c7d62dda817a1f9eb692a0668981b7aa9261915c diff --git a/repos/base-foc/recipes/src/base-foc-rpi3/hash b/repos/base-foc/recipes/src/base-foc-rpi3/hash index ce2fb420cd..a51178f37e 100644 --- a/repos/base-foc/recipes/src/base-foc-rpi3/hash +++ b/repos/base-foc/recipes/src/base-foc-rpi3/hash @@ -1 +1 @@ -2024-10-07 184b4030fb20c203ab996d46ddc029a1d6856f9c +2024-11-19 93a156766fcdb9b1b52d2f93d5a2094aba71dd62 diff --git a/repos/base-hw/recipes/src/base-hw-pbxa9/hash b/repos/base-hw/recipes/src/base-hw-pbxa9/hash index 017ff3c100..d25317063b 100644 --- a/repos/base-hw/recipes/src/base-hw-pbxa9/hash +++ b/repos/base-hw/recipes/src/base-hw-pbxa9/hash @@ -1 +1 @@ -2024-10-29 4bbe6a0fc64e242b3df0a4f888c69592a35c2c59 +2024-11-19 9d23402bda8a1dcdb1ef86c44e601f3478a898b5 diff --git a/repos/base-hw/recipes/src/base-hw-pc/hash b/repos/base-hw/recipes/src/base-hw-pc/hash index c484ae4fe3..c6f5a6f9e8 100644 --- a/repos/base-hw/recipes/src/base-hw-pc/hash +++ b/repos/base-hw/recipes/src/base-hw-pc/hash @@ -1 +1 @@ -2024-10-29 eb59e89aad9feb09d6a868c30f68e6295439f06a +2024-11-19 0e968bd738bbbbce8284473e738e32cdeb3d78da diff --git a/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash b/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash index 8c4c57d360..93ecd2b578 100644 --- a/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash +++ b/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash @@ -1 +1 @@ -2024-10-29 499d391798850ba3b784250d3b8a63bbb0ac27ab +2024-11-19 2debd3a78f11991a41624459098e5e900b80f0c4 diff --git a/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash b/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash index cdd9b966b2..3a78913e5c 100644 --- a/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash +++ b/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash @@ -1 +1 @@ -2024-10-29 bc12b6bd4fc27e351d863c79752fcdc1173797ce +2024-11-19 efef5e8efd0955627ad4bcdaaafbca29bcb8604c diff --git a/repos/base-linux/recipes/src/base-linux/hash b/repos/base-linux/recipes/src/base-linux/hash index e89e5228a2..1f4f8eca43 100644 --- a/repos/base-linux/recipes/src/base-linux/hash +++ b/repos/base-linux/recipes/src/base-linux/hash @@ -1 +1 @@ -2024-10-07 acb4a463ec1b2b6868f923900c2b04ee1a6487a8 +2024-11-19 4fcfa0ce999b6918b5a6249be23b361c37ab93a6 diff --git a/repos/base-nova/recipes/src/base-nova/hash b/repos/base-nova/recipes/src/base-nova/hash index 8c752c1637..17e2c2b3d9 100644 --- a/repos/base-nova/recipes/src/base-nova/hash +++ b/repos/base-nova/recipes/src/base-nova/hash @@ -1 +1 @@ -2024-10-07 3fdd714b4cf479987b027a09aa2b470dfc46a92a +2024-11-19 a5b459cdc477384f4783a65dde7545d008235204 diff --git a/repos/base-okl4/recipes/src/base-okl4/hash b/repos/base-okl4/recipes/src/base-okl4/hash index 297d6e9cb6..7db792ada1 100644 --- a/repos/base-okl4/recipes/src/base-okl4/hash +++ b/repos/base-okl4/recipes/src/base-okl4/hash @@ -1 +1 @@ -2024-10-07 0dfc585477f27e02dbe67acf3a23f48718c113f7 +2024-11-19 108fb30d6aee379e8c7b7e1c635c5fb1929dc7f1 diff --git a/repos/base-pistachio/recipes/src/base-pistachio/hash b/repos/base-pistachio/recipes/src/base-pistachio/hash index 49e578f619..f666939ef6 100644 --- a/repos/base-pistachio/recipes/src/base-pistachio/hash +++ b/repos/base-pistachio/recipes/src/base-pistachio/hash @@ -1 +1 @@ -2024-10-07 4ec8eaa528d706f5b2a267f95443a48430a87a91 +2024-11-19 8be9622271b691373f83334115e771fbbf65f39e diff --git a/repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash b/repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash index 1372db3453..3b333a3a5b 100644 --- a/repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash +++ b/repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash @@ -1 +1 @@ -2024-10-07 b23d40bed9c8b9ed8fc8d8d1e2c5cac4e719580a +2024-11-19 314cfdc1fb86dfd04926ac48d2aa9d49839baa86 diff --git a/repos/base-sel4/recipes/src/base-sel4-x86/hash b/repos/base-sel4/recipes/src/base-sel4-x86/hash index 10956db5c2..cf40d90e9b 100644 --- a/repos/base-sel4/recipes/src/base-sel4-x86/hash +++ b/repos/base-sel4/recipes/src/base-sel4-x86/hash @@ -1 +1 @@ -2024-10-07 9929145b5c04edaf41b0f726743eabb2de9cc832 +2024-11-19 6d0d52161a7057e6ae1f1c639aa6ca0cdde13af4 diff --git a/repos/base/recipes/api/base/hash b/repos/base/recipes/api/base/hash index 78c6f92472..482df7dead 100644 --- a/repos/base/recipes/api/base/hash +++ b/repos/base/recipes/api/base/hash @@ -1 +1 @@ -2024-10-07 513edfd85657a2cea7224093f02ad8f2525056f3 +2024-11-19 650a6ef52bdd42e857a60cb4b8752efcd8e1666c diff --git a/repos/base/recipes/pkg/test-alarm/hash b/repos/base/recipes/pkg/test-alarm/hash index 0521bb9a5c..782b5e2373 100644 --- a/repos/base/recipes/pkg/test-alarm/hash +++ b/repos/base/recipes/pkg/test-alarm/hash @@ -1 +1 @@ -2024-10-29 123419fe0f679a41e6e836a82f46be56644d36af +2024-11-19 36479e73eafef752764909ea6a43d70f311a21da diff --git a/repos/base/recipes/pkg/test-ds_ownership/hash b/repos/base/recipes/pkg/test-ds_ownership/hash index ff2fbada53..c88d28dfa8 100644 --- a/repos/base/recipes/pkg/test-ds_ownership/hash +++ b/repos/base/recipes/pkg/test-ds_ownership/hash @@ -1 +1 @@ -2024-10-29 4121baf09683470114b15c6768cb939b7b78de65 +2024-11-19 d0b4de8db9df9292ff9961a60ab62cbfdc663310 diff --git a/repos/base/recipes/pkg/test-entrypoint/hash b/repos/base/recipes/pkg/test-entrypoint/hash index 1413671a5b..41216ade6a 100644 --- a/repos/base/recipes/pkg/test-entrypoint/hash +++ b/repos/base/recipes/pkg/test-entrypoint/hash @@ -1 +1 @@ -2024-10-29 964df1f1eebb297399d37ffc42cd5b717f81ac65 +2024-11-19 6f867291555833a69b995060498ef19141e28734 diff --git a/repos/base/recipes/pkg/test-log/hash b/repos/base/recipes/pkg/test-log/hash index e2ccca33d7..8228f78381 100644 --- a/repos/base/recipes/pkg/test-log/hash +++ b/repos/base/recipes/pkg/test-log/hash @@ -1 +1 @@ -2024-10-29 8acfdc522214ab48f3ba2662deca84562aedb62f +2024-11-19 c180fd59e8fea532a317fe86a98c7d4ede20ba12 diff --git a/repos/base/recipes/pkg/test-mmio/hash b/repos/base/recipes/pkg/test-mmio/hash index 19cdce938d..687dfb567c 100644 --- a/repos/base/recipes/pkg/test-mmio/hash +++ b/repos/base/recipes/pkg/test-mmio/hash @@ -1 +1 @@ -2024-10-29 511875353e93f226ff52c3a79be5e6847fa95c19 +2024-11-19 8351d49090f1a065a1ed3d313e26399eb82024b4 diff --git a/repos/base/recipes/pkg/test-new_delete/hash b/repos/base/recipes/pkg/test-new_delete/hash index de8d71f161..5ce325c027 100644 --- a/repos/base/recipes/pkg/test-new_delete/hash +++ b/repos/base/recipes/pkg/test-new_delete/hash @@ -1 +1 @@ -2024-10-29 4eb04b36a4589581afe4b8e5c09cd1a8202e389e +2024-11-19 33ba7a1936918d857e9a9293204ffc72d5ca0045 diff --git a/repos/base/recipes/pkg/test-reconstructible/hash b/repos/base/recipes/pkg/test-reconstructible/hash index 6c17d789ff..5a671c9a29 100644 --- a/repos/base/recipes/pkg/test-reconstructible/hash +++ b/repos/base/recipes/pkg/test-reconstructible/hash @@ -1 +1 @@ -2024-10-29 ec0ee7597f35852ed2a1f0a3250ebc9de125141d +2024-11-19 7494b6cdb82e6452208467bdf0a501fd4f9d3cc1 diff --git a/repos/base/recipes/pkg/test-registry/hash b/repos/base/recipes/pkg/test-registry/hash index 3ea9b9de66..7981b29322 100644 --- a/repos/base/recipes/pkg/test-registry/hash +++ b/repos/base/recipes/pkg/test-registry/hash @@ -1 +1 @@ -2024-10-29 2093c0cd6b5e73f07e682f8448abdf4bcc07ba90 +2024-11-19 604a27ec657cd8a63a26a8c0db7df2154302795d diff --git a/repos/base/recipes/pkg/test-rm_fault/hash b/repos/base/recipes/pkg/test-rm_fault/hash index 1860ffcbe8..3c85951f6d 100644 --- a/repos/base/recipes/pkg/test-rm_fault/hash +++ b/repos/base/recipes/pkg/test-rm_fault/hash @@ -1 +1 @@ -2024-10-29 ea454149147f8535060bf076432dd67d473658dd +2024-11-19 b5acdc41c6083e27be8967e004f6efff2e535fce diff --git a/repos/base/recipes/pkg/test-rm_fault_no_nox/hash b/repos/base/recipes/pkg/test-rm_fault_no_nox/hash index 8ca5e15339..2b84a863f7 100644 --- a/repos/base/recipes/pkg/test-rm_fault_no_nox/hash +++ b/repos/base/recipes/pkg/test-rm_fault_no_nox/hash @@ -1 +1 @@ -2024-10-29 dde16843a89b11f0c76e73ab66906ccc68d65a0c +2024-11-19 782f658a608b1d14f4313c6b98dc6bff53ade3f4 diff --git a/repos/base/recipes/pkg/test-rm_nested/hash b/repos/base/recipes/pkg/test-rm_nested/hash index fac22d7a78..00e94de079 100644 --- a/repos/base/recipes/pkg/test-rm_nested/hash +++ b/repos/base/recipes/pkg/test-rm_nested/hash @@ -1 +1 @@ -2024-10-29 0816774e285a09f371e1c7b11c661aeb9925e4dc +2024-11-19 948a9bf7d631d8d33716a3dc8664ffe08077ccba diff --git a/repos/base/recipes/pkg/test-rm_stress/hash b/repos/base/recipes/pkg/test-rm_stress/hash index c2bd76517c..ebed5f6bee 100644 --- a/repos/base/recipes/pkg/test-rm_stress/hash +++ b/repos/base/recipes/pkg/test-rm_stress/hash @@ -1 +1 @@ -2024-10-29 1d173f7880db1f1252ab54cea4d8e6ba8e7ea77c +2024-11-19 4f487af90f173db05174fe2ffd78aaadee630291 diff --git a/repos/base/recipes/pkg/test-sanitizer/hash b/repos/base/recipes/pkg/test-sanitizer/hash index bec03c90ef..ad02a2675c 100644 --- a/repos/base/recipes/pkg/test-sanitizer/hash +++ b/repos/base/recipes/pkg/test-sanitizer/hash @@ -1 +1 @@ -2024-10-29 50994e52f5f229a19d33169d3ae3aa1e1b06a83a +2024-11-19 6cbf337fb17bb1cd61548caa69b43b032e11cfda diff --git a/repos/base/recipes/pkg/test-stack_smash/hash b/repos/base/recipes/pkg/test-stack_smash/hash index 084bd78e79..2ccdaafb0e 100644 --- a/repos/base/recipes/pkg/test-stack_smash/hash +++ b/repos/base/recipes/pkg/test-stack_smash/hash @@ -1 +1 @@ -2024-10-29 54f3e743c82cc972eebb16023de863fa5e539812 +2024-11-19 ab67fa4ed6fd691c3aee87c0786a0f57036a97b4 diff --git a/repos/base/recipes/pkg/test-synced_interface/hash b/repos/base/recipes/pkg/test-synced_interface/hash index d84fc450c4..41bab54037 100644 --- a/repos/base/recipes/pkg/test-synced_interface/hash +++ b/repos/base/recipes/pkg/test-synced_interface/hash @@ -1 +1 @@ -2024-10-29 5fde64bdb410c3b1d31e97f0d21cf3d064bbc2ce +2024-11-19 80fd59216e9c833a1fa481ba05deb3037929e718 diff --git a/repos/base/recipes/pkg/test-timer/hash b/repos/base/recipes/pkg/test-timer/hash index 41390bd20e..81606ef53b 100644 --- a/repos/base/recipes/pkg/test-timer/hash +++ b/repos/base/recipes/pkg/test-timer/hash @@ -1 +1 @@ -2024-10-29 f5a700f137cf815f7ce15b3fa9f5634b7828425e +2024-11-19 eb422bc15bca23607dd821aa9da5d0e00ea97dab diff --git a/repos/base/recipes/pkg/test-tls/hash b/repos/base/recipes/pkg/test-tls/hash index 6ad96bf219..35c99d6f54 100644 --- a/repos/base/recipes/pkg/test-tls/hash +++ b/repos/base/recipes/pkg/test-tls/hash @@ -1 +1 @@ -2024-10-29 d326468bba3e8af5f49179103fb74567410c016b +2024-11-19 a6b94415e27eb0d2cc74b7907a7911d2ffddc5e0 diff --git a/repos/base/recipes/pkg/test-token/hash b/repos/base/recipes/pkg/test-token/hash index 5e36fce650..1a68bb1c71 100644 --- a/repos/base/recipes/pkg/test-token/hash +++ b/repos/base/recipes/pkg/test-token/hash @@ -1 +1 @@ -2024-10-29 f5aa7c4c7928b4aa750133798ab5ced2862627ef +2024-11-19 83f699412b71c1280ce4a129d5b5218a51397d42 diff --git a/repos/base/recipes/pkg/test-xml_generator/hash b/repos/base/recipes/pkg/test-xml_generator/hash index b56dd9133d..d882341377 100644 --- a/repos/base/recipes/pkg/test-xml_generator/hash +++ b/repos/base/recipes/pkg/test-xml_generator/hash @@ -1 +1 @@ -2024-10-29 0c302928b9f742d2dca1a7a7392217afc7d99518 +2024-11-19 3e2848ef89c80d00c8c8302ded21750df3b6eeeb diff --git a/repos/base/recipes/pkg/test-xml_node/hash b/repos/base/recipes/pkg/test-xml_node/hash index 2e8ca57bb3..b96ea39d4f 100644 --- a/repos/base/recipes/pkg/test-xml_node/hash +++ b/repos/base/recipes/pkg/test-xml_node/hash @@ -1 +1 @@ -2024-10-29 778c0e244d381f663a04913e3fd490c9029454e7 +2024-11-19 97f0fd82c375959c6cdb1d5ccd2d8ef0cb2a7fe8 diff --git a/repos/base/recipes/src/test-alarm/hash b/repos/base/recipes/src/test-alarm/hash index ff4cf7877e..6684be347b 100644 --- a/repos/base/recipes/src/test-alarm/hash +++ b/repos/base/recipes/src/test-alarm/hash @@ -1 +1 @@ -2024-10-07 a6a04c7c48e562c4450603757520e447af6ba3b7 +2024-11-19 7842d5de9532df859b9f1a3a2d404efa7dd90d80 diff --git a/repos/base/recipes/src/test-ds_ownership/hash b/repos/base/recipes/src/test-ds_ownership/hash index 966dc5efb3..6ac9e3a6ad 100644 --- a/repos/base/recipes/src/test-ds_ownership/hash +++ b/repos/base/recipes/src/test-ds_ownership/hash @@ -1 +1 @@ -2024-10-07 c65f3e117d0576e35c93be32795ae44e40905806 +2024-11-19 678a2d50b6571771925f2653589b57ed7ba845f0 diff --git a/repos/base/recipes/src/test-entrypoint/hash b/repos/base/recipes/src/test-entrypoint/hash index 158b59c957..3b3f7ef88e 100644 --- a/repos/base/recipes/src/test-entrypoint/hash +++ b/repos/base/recipes/src/test-entrypoint/hash @@ -1 +1 @@ -2024-10-07 fd12392cdb6e8a73927eddb831b5a4a03f1dba99 +2024-11-19 9ba0f46675d2e0559cee218ecbc88cdc3687121a diff --git a/repos/base/recipes/src/test-log/hash b/repos/base/recipes/src/test-log/hash index faf30cc537..0717accfc9 100644 --- a/repos/base/recipes/src/test-log/hash +++ b/repos/base/recipes/src/test-log/hash @@ -1 +1 @@ -2024-10-07 2d27a4ea191a544959688dddebc99c0158a2cc87 +2024-11-19 407f8b62ecc7038ee1c5a0d52c4bc5e00fe225de diff --git a/repos/base/recipes/src/test-mmio/hash b/repos/base/recipes/src/test-mmio/hash index 510ba70361..042ace7fe9 100644 --- a/repos/base/recipes/src/test-mmio/hash +++ b/repos/base/recipes/src/test-mmio/hash @@ -1 +1 @@ -2024-10-07 a2f19169350426a2c92bfa82cd57ea1126ff40f9 +2024-11-19 4a848d47cc64bc4224f54912a3ec452156d6f3cd diff --git a/repos/base/recipes/src/test-new_delete/hash b/repos/base/recipes/src/test-new_delete/hash index 313d5ccfb6..f908a8dd08 100644 --- a/repos/base/recipes/src/test-new_delete/hash +++ b/repos/base/recipes/src/test-new_delete/hash @@ -1 +1 @@ -2024-10-07 fdd7695261277dcba03643f98bb2804c30c0cf04 +2024-11-19 f65097697e558c0f05cc7156c6554f4bb17cca93 diff --git a/repos/base/recipes/src/test-reconstructible/hash b/repos/base/recipes/src/test-reconstructible/hash index 0689384df9..162cecd6f2 100644 --- a/repos/base/recipes/src/test-reconstructible/hash +++ b/repos/base/recipes/src/test-reconstructible/hash @@ -1 +1 @@ -2024-10-07 45ffa221854a16794e7325d8ed6d6b5ce90635a5 +2024-11-19 15fd9687267e027e22f77a88dd1e50d17218b581 diff --git a/repos/base/recipes/src/test-registry/hash b/repos/base/recipes/src/test-registry/hash index ae13dd0c20..fd5d3eec4e 100644 --- a/repos/base/recipes/src/test-registry/hash +++ b/repos/base/recipes/src/test-registry/hash @@ -1 +1 @@ -2024-10-07 96b39a93b70d6732cd2f6a7e30ac3404f4f017d5 +2024-11-19 6655f3f091e4df50a5177edd21d979a1a6ffac59 diff --git a/repos/base/recipes/src/test-rm_fault/hash b/repos/base/recipes/src/test-rm_fault/hash index c16620aff9..cc7d2c09a8 100644 --- a/repos/base/recipes/src/test-rm_fault/hash +++ b/repos/base/recipes/src/test-rm_fault/hash @@ -1 +1 @@ -2024-10-07 9843a171d4e781aec5597ce0b48ccc17431918d7 +2024-11-19 d40e79d840f66e89110caa0d3c21b416fd65c0c5 diff --git a/repos/base/recipes/src/test-rm_nested/hash b/repos/base/recipes/src/test-rm_nested/hash index b2e397aa10..e854b2b07b 100644 --- a/repos/base/recipes/src/test-rm_nested/hash +++ b/repos/base/recipes/src/test-rm_nested/hash @@ -1 +1 @@ -2024-10-07 b3d5f7577d058fd7d3a34846af555ba2ffec842b +2024-11-19 721a9634025955b105f4a82c093a5058fe741f85 diff --git a/repos/base/recipes/src/test-rm_stress/hash b/repos/base/recipes/src/test-rm_stress/hash index c0e516eebf..0f4bcdb130 100644 --- a/repos/base/recipes/src/test-rm_stress/hash +++ b/repos/base/recipes/src/test-rm_stress/hash @@ -1 +1 @@ -2024-10-07 40512d1349569b95538ce6c61613c295cf7f9487 +2024-11-19 fced932d7f9077b2b92bc84a31da4a23a1a909b7 diff --git a/repos/base/recipes/src/test-sanitizer/hash b/repos/base/recipes/src/test-sanitizer/hash index daca3375f5..589a8254be 100644 --- a/repos/base/recipes/src/test-sanitizer/hash +++ b/repos/base/recipes/src/test-sanitizer/hash @@ -1 +1 @@ -2024-10-07 4725441ba5bbe72651a38e5e13ac2ed3bda4af37 +2024-11-19 13b62a19e02caebc99f8522b1ab65ed763e29844 diff --git a/repos/base/recipes/src/test-segfault/hash b/repos/base/recipes/src/test-segfault/hash index cc4b1ac80e..8c3a77d292 100644 --- a/repos/base/recipes/src/test-segfault/hash +++ b/repos/base/recipes/src/test-segfault/hash @@ -1 +1 @@ -2024-10-07 5c9f35640dd353fe429cac6d93c022a99a609fb5 +2024-11-19 d1fa9839340b545f1cb1a8ad6a6764d297de5ae4 diff --git a/repos/base/recipes/src/test-stack_smash/hash b/repos/base/recipes/src/test-stack_smash/hash index ab49b6822a..6471b122ca 100644 --- a/repos/base/recipes/src/test-stack_smash/hash +++ b/repos/base/recipes/src/test-stack_smash/hash @@ -1 +1 @@ -2024-10-07 635ede2b3116c2dd4817b120ba9c346f72032fae +2024-11-19 d437d7f93f590fa30292c40c051eaefd1fc17feb diff --git a/repos/base/recipes/src/test-synced_interface/hash b/repos/base/recipes/src/test-synced_interface/hash index 2417a331ad..76385a6fdc 100644 --- a/repos/base/recipes/src/test-synced_interface/hash +++ b/repos/base/recipes/src/test-synced_interface/hash @@ -1 +1 @@ -2024-10-07 a1eb033228bdbe39301dd2fae6502870c3162b26 +2024-11-19 9fc1168e0576737a8b5d131c8c8c66be486a63c0 diff --git a/repos/base/recipes/src/test-timer/hash b/repos/base/recipes/src/test-timer/hash index c5e3dbabb8..6eb2e3ca99 100644 --- a/repos/base/recipes/src/test-timer/hash +++ b/repos/base/recipes/src/test-timer/hash @@ -1 +1 @@ -2024-10-07 f4fc22ec46e47ed91c121beb24657d911f6b7411 +2024-11-19 689a20fecdae4d72494bcbce0d253b56bad5d7a2 diff --git a/repos/base/recipes/src/test-tls/hash b/repos/base/recipes/src/test-tls/hash index 6f69226d42..bf6a6b3e48 100644 --- a/repos/base/recipes/src/test-tls/hash +++ b/repos/base/recipes/src/test-tls/hash @@ -1 +1 @@ -2024-10-07 83118776eba8117187854ababa680cb1fe4b2b77 +2024-11-19 ae2d7f33edf9640e277dd45bca7c88e7d7e73df0 diff --git a/repos/base/recipes/src/test-token/hash b/repos/base/recipes/src/test-token/hash index 66c1514965..8772fb0c6d 100644 --- a/repos/base/recipes/src/test-token/hash +++ b/repos/base/recipes/src/test-token/hash @@ -1 +1 @@ -2024-10-07 b1c7aacfa16f9ecbd103e3df98a0a2bb36bae272 +2024-11-19 cd712d0d6942a7b646c42de7a0f6bc6e1df5a83c diff --git a/repos/base/recipes/src/test-xml_generator/hash b/repos/base/recipes/src/test-xml_generator/hash index 17838a62ca..06ef4cb5df 100644 --- a/repos/base/recipes/src/test-xml_generator/hash +++ b/repos/base/recipes/src/test-xml_generator/hash @@ -1 +1 @@ -2024-10-07 472cfb4a2918d0ecb9251eba8cd3b624275a94ab +2024-11-19 514bebef8077ad2144756ee121a03ec383a76900 diff --git a/repos/base/recipes/src/test-xml_node/hash b/repos/base/recipes/src/test-xml_node/hash index d588964483..460fa8fcd8 100644 --- a/repos/base/recipes/src/test-xml_node/hash +++ b/repos/base/recipes/src/test-xml_node/hash @@ -1 +1 @@ -2024-10-07 17a0ac2f692ff963d89fab0ae111606a837bcaaf +2024-11-19 7f3629531edba64ddb5e524e2bea0cde76bb854d diff --git a/repos/dde_bsd/recipes/pkg/bsd_audio/hash b/repos/dde_bsd/recipes/pkg/bsd_audio/hash index e36f279361..f43d6502a2 100644 --- a/repos/dde_bsd/recipes/pkg/bsd_audio/hash +++ b/repos/dde_bsd/recipes/pkg/bsd_audio/hash @@ -1 +1 @@ -2024-10-07 49864c449ff2a8f7de7d54b6231c62ff4ad75dcd +2024-11-19 1837e2cb3b521b898a24111036be3461ba831d7d diff --git a/repos/dde_bsd/recipes/src/bsd_audio/hash b/repos/dde_bsd/recipes/src/bsd_audio/hash index 6282042f1a..6848db0a91 100644 --- a/repos/dde_bsd/recipes/src/bsd_audio/hash +++ b/repos/dde_bsd/recipes/src/bsd_audio/hash @@ -1 +1 @@ -2024-10-07 9c7c095fe94c898d473c97596e50a29d1cfaa088 +2024-11-19 97060dde5eb351c966d17e371f9b2cca52ec2aed diff --git a/repos/dde_ipxe/recipes/pkg/ipxe_nic/hash b/repos/dde_ipxe/recipes/pkg/ipxe_nic/hash index 71102cc094..8bd736f15b 100644 --- a/repos/dde_ipxe/recipes/pkg/ipxe_nic/hash +++ b/repos/dde_ipxe/recipes/pkg/ipxe_nic/hash @@ -1 +1 @@ -2024-10-07 ebc62d24f7c3bae4d285d96732c5c76a9d06da73 +2024-11-19 7a919345a769a4e56c436e2fd65a15a757b26b5b diff --git a/repos/dde_ipxe/recipes/src/ipxe_nic/hash b/repos/dde_ipxe/recipes/src/ipxe_nic/hash index 6f646b5082..ed9ec0da6f 100644 --- a/repos/dde_ipxe/recipes/src/ipxe_nic/hash +++ b/repos/dde_ipxe/recipes/src/ipxe_nic/hash @@ -1 +1 @@ -2024-10-07 11b76ee4b6ed52235d29283e1d8f377c65e71630 +2024-11-19 35ac9eb4a5aaf60f48737a7647f7e404ce277c52 diff --git a/repos/dde_linux/recipes/api/virt_linux/hash b/repos/dde_linux/recipes/api/virt_linux/hash index 644e1639a4..e066386daf 100644 --- a/repos/dde_linux/recipes/api/virt_linux/hash +++ b/repos/dde_linux/recipes/api/virt_linux/hash @@ -1 +1 @@ -2024-10-29 a0f80d05ac5f5d87e619cd2041ef4fab8f2c906f +2024-11-19 456f1dc7b465e43a487e98cae063f4b292ab14d0 diff --git a/repos/dde_linux/recipes/pkg/wireguard/hash b/repos/dde_linux/recipes/pkg/wireguard/hash index 157157097e..a9c29e11b9 100644 --- a/repos/dde_linux/recipes/pkg/wireguard/hash +++ b/repos/dde_linux/recipes/pkg/wireguard/hash @@ -1 +1 @@ -2024-10-29 29712abb79c1d33c6cfff831b0a41de51c1f0479 +2024-11-19 dc9d740da58bcb483dc708817daaffb30c492f18 diff --git a/repos/dde_linux/recipes/src/usb_hid/hash b/repos/dde_linux/recipes/src/usb_hid/hash index 6338f3928c..279a890bd1 100644 --- a/repos/dde_linux/recipes/src/usb_hid/hash +++ b/repos/dde_linux/recipes/src/usb_hid/hash @@ -1 +1 @@ -2024-10-29 a0864eb06b2b8f868a024feda080ec1be04ad1b8 +2024-11-19 c740c136f18d5b5354805713ac2a018b07b9f199 diff --git a/repos/dde_linux/recipes/src/usb_net/hash b/repos/dde_linux/recipes/src/usb_net/hash index dbc712324f..535b36133c 100644 --- a/repos/dde_linux/recipes/src/usb_net/hash +++ b/repos/dde_linux/recipes/src/usb_net/hash @@ -1 +1 @@ -2024-10-29 693dab02a78f3582895f1a44d60b2ac0f6712cc5 +2024-11-19 864da777b73ba39e5d557108cdcf51622752298f diff --git a/repos/dde_linux/recipes/src/vfs_lxip/hash b/repos/dde_linux/recipes/src/vfs_lxip/hash index fb31526d6e..761374186f 100644 --- a/repos/dde_linux/recipes/src/vfs_lxip/hash +++ b/repos/dde_linux/recipes/src/vfs_lxip/hash @@ -1 +1 @@ -2024-10-29 64e12d496d0d0e9949f01df8bd22be1c15c2f6bf +2024-11-19 1fe79c695ac8d0e3cbcb167954876fa5847656af diff --git a/repos/dde_linux/recipes/src/wireguard/hash b/repos/dde_linux/recipes/src/wireguard/hash index c1aaa8c37b..6d3a8704d5 100644 --- a/repos/dde_linux/recipes/src/wireguard/hash +++ b/repos/dde_linux/recipes/src/wireguard/hash @@ -1 +1 @@ -2024-10-29 eb4747d4055fa678c1fc6f4c517906eb91c0f98b +2024-11-19 67dfc8b7459ec7546e58d64f3b68552a5029f1d0 diff --git a/repos/dde_rump/recipes/pkg/ext2_fs/hash b/repos/dde_rump/recipes/pkg/ext2_fs/hash index 5a126489a6..7acb7e1ce5 100644 --- a/repos/dde_rump/recipes/pkg/ext2_fs/hash +++ b/repos/dde_rump/recipes/pkg/ext2_fs/hash @@ -1 +1 @@ -2024-10-07 3b78de56d7957b75c20d407055bd72ff08c5e231 +2024-11-19 ca112d157ca569ee42f5d31e1fa4ac4be5a70388 diff --git a/repos/dde_rump/recipes/src/vfs_rump/hash b/repos/dde_rump/recipes/src/vfs_rump/hash index 7b78474c92..2a526dbe48 100644 --- a/repos/dde_rump/recipes/src/vfs_rump/hash +++ b/repos/dde_rump/recipes/src/vfs_rump/hash @@ -1 +1 @@ -2024-10-07 ff61b93700f9eb0d7d2441c4bc17aba1785090d9 +2024-11-19 d5ca8bb47ac61714436f6e92e68faf35b6938aee diff --git a/repos/demo/recipes/src/demo/hash b/repos/demo/recipes/src/demo/hash index ed812ba23d..0c8f934811 100644 --- a/repos/demo/recipes/src/demo/hash +++ b/repos/demo/recipes/src/demo/hash @@ -1 +1 @@ -2024-10-29 32f67fc7f2de8d00e39e3c71d5401792f60cfcd8 +2024-11-19 c43fde7bd245aa5c0dd65998854ab3f64704bedd diff --git a/repos/gems/recipes/api/gems/hash b/repos/gems/recipes/api/gems/hash index 0609e828a0..4234b6281c 100644 --- a/repos/gems/recipes/api/gems/hash +++ b/repos/gems/recipes/api/gems/hash @@ -1 +1 @@ -2024-11-04 e8575582c9a41c25b2ac78247fcc22b7dd68d90d +2024-11-19 ad2e9aed3d7bc42713836999ef73700296bfe4a5 diff --git a/repos/gems/recipes/pkg/backdrop/hash b/repos/gems/recipes/pkg/backdrop/hash index e160576591..3949378759 100644 --- a/repos/gems/recipes/pkg/backdrop/hash +++ b/repos/gems/recipes/pkg/backdrop/hash @@ -1 +1 @@ -2024-11-04 b7d904eae19a37ba521331f044c657b5d0bf2c51 +2024-11-19 3eeb0bc7293a7166b4d877921fc6970c64fe222c diff --git a/repos/gems/recipes/pkg/cpu_load_display/hash b/repos/gems/recipes/pkg/cpu_load_display/hash index ccc4259fb3..4aaf27aaec 100644 --- a/repos/gems/recipes/pkg/cpu_load_display/hash +++ b/repos/gems/recipes/pkg/cpu_load_display/hash @@ -1 +1 @@ -2024-11-04 ab0ee9eddcc48d9dbb672980ae1d8c33641c240a +2024-11-19 5fdd81e0300ecb3e7fbcb01b514d4cbd23504b7e diff --git a/repos/gems/recipes/pkg/dbg_download/hash b/repos/gems/recipes/pkg/dbg_download/hash index 3ff8858309..514adc9128 100644 --- a/repos/gems/recipes/pkg/dbg_download/hash +++ b/repos/gems/recipes/pkg/dbg_download/hash @@ -1 +1 @@ -2024-10-29 bca2b717abc3762e5f804d1a2a1ad37ee7427f69 +2024-11-19 89a6be4572e06c1cc0497749d3744bb3a48408b2 diff --git a/repos/gems/recipes/pkg/depot_download/hash b/repos/gems/recipes/pkg/depot_download/hash index e85ffc0a87..5e4a779b8c 100644 --- a/repos/gems/recipes/pkg/depot_download/hash +++ b/repos/gems/recipes/pkg/depot_download/hash @@ -1 +1 @@ -2024-10-29 6ac7587114c7c5c0e0c39cec79d558e43be4b2a8 +2024-11-19 c3f66c0f2bb1948fd9b2b8e91ab02785727211f3 diff --git a/repos/gems/recipes/pkg/drivers_nic-pc/hash b/repos/gems/recipes/pkg/drivers_nic-pc/hash index 5c7aae4974..955396bbf5 100644 --- a/repos/gems/recipes/pkg/drivers_nic-pc/hash +++ b/repos/gems/recipes/pkg/drivers_nic-pc/hash @@ -1 +1 @@ -2024-10-29 ea2dd52023f432f627d9e73f126d32e33e7573b7 +2024-11-19 05ed49d8e008699b4026839a1845a4112f2bdabc diff --git a/repos/gems/recipes/pkg/file_vault/hash b/repos/gems/recipes/pkg/file_vault/hash index d8dd4d2e13..54073c402a 100644 --- a/repos/gems/recipes/pkg/file_vault/hash +++ b/repos/gems/recipes/pkg/file_vault/hash @@ -1 +1 @@ -2024-11-04 6b945368ee8885f1b91fee5e076d4d94902fca87 +2024-11-19 d75bd3eda46e45b89c70fddf4f1463302d01353e diff --git a/repos/gems/recipes/pkg/fonts_fs/hash b/repos/gems/recipes/pkg/fonts_fs/hash index f48d15133f..cfe79d1d39 100644 --- a/repos/gems/recipes/pkg/fonts_fs/hash +++ b/repos/gems/recipes/pkg/fonts_fs/hash @@ -1 +1 @@ -2024-11-04 5ddd8bd91018464d17194240747714267351aa4c +2024-11-19 f5894f25b47b8f46c10352fdeeebff089d5bccb4 diff --git a/repos/gems/recipes/pkg/goa-linux/hash b/repos/gems/recipes/pkg/goa-linux/hash index a3e0913fee..422aa90c3c 100644 --- a/repos/gems/recipes/pkg/goa-linux/hash +++ b/repos/gems/recipes/pkg/goa-linux/hash @@ -1 +1 @@ -2024-10-07 01f0f61a2be72c244afeb3f3d4db8a1f3dcd9ca7 +2024-11-19 21821b3e0c7a7144305bf42d1ef03b835e50a0a1 diff --git a/repos/gems/recipes/pkg/goa/hash b/repos/gems/recipes/pkg/goa/hash index f883d955fd..50873f17f5 100644 --- a/repos/gems/recipes/pkg/goa/hash +++ b/repos/gems/recipes/pkg/goa/hash @@ -1 +1 @@ -2024-11-04 ec3a99b55f1535f8a511e744745eedd567819f6e +2024-11-19 fa1ff6e73420da20143f792ff649ca4815357f22 diff --git a/repos/gems/recipes/pkg/motif_decorator/hash b/repos/gems/recipes/pkg/motif_decorator/hash index d506b56d99..b2c9c48805 100644 --- a/repos/gems/recipes/pkg/motif_decorator/hash +++ b/repos/gems/recipes/pkg/motif_decorator/hash @@ -1 +1 @@ -2024-11-04 77428f56c3e30b211537eb22ee53f7de1dbf72bb +2024-11-19 57aa308f7727a778ea05bf7027ce21d2c3f107c5 diff --git a/repos/gems/recipes/pkg/motif_wm/hash b/repos/gems/recipes/pkg/motif_wm/hash index 0093c330c5..0202160041 100644 --- a/repos/gems/recipes/pkg/motif_wm/hash +++ b/repos/gems/recipes/pkg/motif_wm/hash @@ -1 +1 @@ -2024-11-04 ff4665592a5f2ea8cff0116029e3943cfcdf9308 +2024-11-19 719db964a5921dbc7b0d1471c84f7380eb5b96cd diff --git a/repos/gems/recipes/pkg/nano3d/hash b/repos/gems/recipes/pkg/nano3d/hash index 00d77d01e5..6997403311 100644 --- a/repos/gems/recipes/pkg/nano3d/hash +++ b/repos/gems/recipes/pkg/nano3d/hash @@ -1 +1 @@ -2024-10-29 d7776f7094077fa04ee0772be0c9e10396764faf +2024-11-19 3d81e7a12de4179bc152746b3a02cea8cf39cb29 diff --git a/repos/gems/recipes/pkg/osci/hash b/repos/gems/recipes/pkg/osci/hash index 80fd4a4c94..65e150eb40 100644 --- a/repos/gems/recipes/pkg/osci/hash +++ b/repos/gems/recipes/pkg/osci/hash @@ -1 +1 @@ -2024-11-04 6b7b0b62150266b843955330f37422b37ee4e559 +2024-11-19 41f205a3ee07c3dbc801dade26daee64fbab30d3 diff --git a/repos/gems/recipes/pkg/rom_osci/hash b/repos/gems/recipes/pkg/rom_osci/hash index e05c0ecb6b..4bd7217a38 100644 --- a/repos/gems/recipes/pkg/rom_osci/hash +++ b/repos/gems/recipes/pkg/rom_osci/hash @@ -1 +1 @@ -2024-11-04 b97a63dfaa4d0fd364c9ad19db991cfa985f25dd +2024-11-19 aed3c9dae2b0be7449436e7330ec527c52c2d320 diff --git a/repos/gems/recipes/pkg/screenshot_trigger/hash b/repos/gems/recipes/pkg/screenshot_trigger/hash index 0d21544357..8492037502 100644 --- a/repos/gems/recipes/pkg/screenshot_trigger/hash +++ b/repos/gems/recipes/pkg/screenshot_trigger/hash @@ -1 +1 @@ -2024-11-04 cb0d924392ee07e3b3cb687fb26df8d668a5d4c9 +2024-11-19 51efdef9820f3086cad05794591d9793007c1c19 diff --git a/repos/gems/recipes/pkg/sculpt/hash b/repos/gems/recipes/pkg/sculpt/hash index 566149f89a..88b5126b25 100644 --- a/repos/gems/recipes/pkg/sculpt/hash +++ b/repos/gems/recipes/pkg/sculpt/hash @@ -1 +1 @@ -2024-11-05 96f60eda3ad22e3bfb01db3bae1614cc056e3f72 +2024-11-19 692923335fabc5893c262a476af9256b5d498187 diff --git a/repos/gems/recipes/pkg/sculpt_distribution-pc/hash b/repos/gems/recipes/pkg/sculpt_distribution-pc/hash index 71a2881a30..f29f9e38bf 100644 --- a/repos/gems/recipes/pkg/sculpt_distribution-pc/hash +++ b/repos/gems/recipes/pkg/sculpt_distribution-pc/hash @@ -1 +1 @@ -2024-11-05 dc53fdab465d5cb7d4f1d1d1ee8993988f075d26 +2024-11-19 761397fbf444c3ae9669e5fe246f36b430b9d532 diff --git a/repos/gems/recipes/pkg/sculpt_distribution/hash b/repos/gems/recipes/pkg/sculpt_distribution/hash index 136a979308..595cbd679c 100644 --- a/repos/gems/recipes/pkg/sculpt_distribution/hash +++ b/repos/gems/recipes/pkg/sculpt_distribution/hash @@ -1 +1 @@ -2024-11-04 72748639fae7b9e4bc6c73f57a294fc806ba16c8 +2024-11-19 17d50fb10f0f964266f79d11185b7279e74ef71d diff --git a/repos/gems/recipes/pkg/sculpt_drivers-pc/hash b/repos/gems/recipes/pkg/sculpt_drivers-pc/hash index e352ca1027..0a8ff4aa1b 100644 --- a/repos/gems/recipes/pkg/sculpt_drivers-pc/hash +++ b/repos/gems/recipes/pkg/sculpt_drivers-pc/hash @@ -1 +1 @@ -2024-10-30 88fea61b723ca4c2e4fb808c8f25490c22176c9f +2024-11-19 70717f5a6d90273add37ed460a0f89362e3328c2 diff --git a/repos/gems/recipes/pkg/sticks_blue_backdrop/hash b/repos/gems/recipes/pkg/sticks_blue_backdrop/hash index abf576dd73..9b60aca9ac 100644 --- a/repos/gems/recipes/pkg/sticks_blue_backdrop/hash +++ b/repos/gems/recipes/pkg/sticks_blue_backdrop/hash @@ -1 +1 @@ -2024-11-04 7af2fe6b6fb23b13402eecae0b2098b18cf637c3 +2024-11-19 b2c599d826d1e9587b3e919db4df8295c3684523 diff --git a/repos/gems/recipes/pkg/terminal/hash b/repos/gems/recipes/pkg/terminal/hash index a3b1c931b2..90f9c922d7 100644 --- a/repos/gems/recipes/pkg/terminal/hash +++ b/repos/gems/recipes/pkg/terminal/hash @@ -1 +1 @@ -2024-11-04 b58721f29f35c343c766718bc766716386202ba4 +2024-11-19 c9889655cf6502e2fa1bbb13830b056967dd8e02 diff --git a/repos/gems/recipes/pkg/test-depot_query_index/hash b/repos/gems/recipes/pkg/test-depot_query_index/hash index 1973ff45ec..9cfa53d52c 100644 --- a/repos/gems/recipes/pkg/test-depot_query_index/hash +++ b/repos/gems/recipes/pkg/test-depot_query_index/hash @@ -1 +1 @@ -2024-10-29 72a3f0fb92adc0a882a5ede26e3f31d599ce0381 +2024-11-19 c53bd04587ccf6260e98f39b1b2cca0bc5674297 diff --git a/repos/gems/recipes/pkg/test-file_vault/hash b/repos/gems/recipes/pkg/test-file_vault/hash index 303a5578dd..2b6bb3b025 100644 --- a/repos/gems/recipes/pkg/test-file_vault/hash +++ b/repos/gems/recipes/pkg/test-file_vault/hash @@ -1 +1 @@ -2024-11-04 24f21b93bf4e67d227e45e933bc2fb38f9321258 +2024-11-19 c075d838a56161d7287d05bbff80d7a643a49257 diff --git a/repos/gems/recipes/pkg/test-file_vault_no_entropy/hash b/repos/gems/recipes/pkg/test-file_vault_no_entropy/hash index 5f0f1adfe3..99c051f4cf 100644 --- a/repos/gems/recipes/pkg/test-file_vault_no_entropy/hash +++ b/repos/gems/recipes/pkg/test-file_vault_no_entropy/hash @@ -1 +1 @@ -2024-11-04 a0eded3d31598f6c4c6f5f41d9624c392e488424 +2024-11-19 feda749d1541fdc93edefad7a4d0a2af3d452ed7 diff --git a/repos/gems/recipes/pkg/test-fs_tool/hash b/repos/gems/recipes/pkg/test-fs_tool/hash index 80a3de1bc5..e509226076 100644 --- a/repos/gems/recipes/pkg/test-fs_tool/hash +++ b/repos/gems/recipes/pkg/test-fs_tool/hash @@ -1 +1 @@ -2024-11-04 038eeef0ad6223c508521b8abfa75cc3e39b2370 +2024-11-19 03564e62cf628a90fdaab9919e03e9f945b5793f diff --git a/repos/gems/recipes/pkg/test-libc_vfs_audit/hash b/repos/gems/recipes/pkg/test-libc_vfs_audit/hash index a4db8f0c42..6aa7e1d5b1 100644 --- a/repos/gems/recipes/pkg/test-libc_vfs_audit/hash +++ b/repos/gems/recipes/pkg/test-libc_vfs_audit/hash @@ -1 +1 @@ -2024-11-04 18bf3c0e89229b6ce5b65f1e739aea0dc78aba55 +2024-11-19 d35d0346d2e53a788047b967084b3e3bd5ceda4c diff --git a/repos/gems/recipes/pkg/themed_decorator/hash b/repos/gems/recipes/pkg/themed_decorator/hash index a1b4b0573f..05917411aa 100644 --- a/repos/gems/recipes/pkg/themed_decorator/hash +++ b/repos/gems/recipes/pkg/themed_decorator/hash @@ -1 +1 @@ -2024-11-04 26a4b14a416866e638c4dac9a2f9e9e171dfd98c +2024-11-19 4d62bb7ada981a8fe60675233f22514af307a026 diff --git a/repos/gems/recipes/pkg/themed_wm/hash b/repos/gems/recipes/pkg/themed_wm/hash index d811cad539..3b0c891271 100644 --- a/repos/gems/recipes/pkg/themed_wm/hash +++ b/repos/gems/recipes/pkg/themed_wm/hash @@ -1 +1 @@ -2024-11-04 7b5e9aecc8cad7964deebf322c09f79557bb77f1 +2024-11-19 cd84dd8935e5a41669943988687b7331bf1db952 diff --git a/repos/gems/recipes/pkg/touch_keyboard/hash b/repos/gems/recipes/pkg/touch_keyboard/hash index 54b9d7ba3f..2ea36cfbb5 100644 --- a/repos/gems/recipes/pkg/touch_keyboard/hash +++ b/repos/gems/recipes/pkg/touch_keyboard/hash @@ -1 +1 @@ -2024-11-04 23f8a049283137020972f4f72d112931bb4a3743 +2024-11-19 91451475ddb1fd1c53fb03b4ebfaea3582b9d261 diff --git a/repos/gems/recipes/pkg/trace_fs/hash b/repos/gems/recipes/pkg/trace_fs/hash index 5a48936967..5d743dae9a 100644 --- a/repos/gems/recipes/pkg/trace_fs/hash +++ b/repos/gems/recipes/pkg/trace_fs/hash @@ -1 +1 @@ -2024-11-04 2e60e4321df7fe203fcbfed2447293109c104d66 +2024-11-19 0058980d87cbd8be2a662f2b0890275d09a61782 diff --git a/repos/gems/recipes/pkg/trace_recorder/hash b/repos/gems/recipes/pkg/trace_recorder/hash index ddaa73201d..ac0b4011c3 100644 --- a/repos/gems/recipes/pkg/trace_recorder/hash +++ b/repos/gems/recipes/pkg/trace_recorder/hash @@ -1 +1 @@ -2024-10-07 78a8e28f934914e60e9f9bf78932ea62dc26339a +2024-11-19 37f6e8520ad9027c7245c37b3a2c8db7e555c125 diff --git a/repos/gems/recipes/pkg/unconfigured_nano3d/hash b/repos/gems/recipes/pkg/unconfigured_nano3d/hash index a8882f2941..7ceb962ee3 100644 --- a/repos/gems/recipes/pkg/unconfigured_nano3d/hash +++ b/repos/gems/recipes/pkg/unconfigured_nano3d/hash @@ -1 +1 @@ -2024-10-29 17aff7dfc9c2bc05e6ec9638c6f13ddc6654c6a9 +2024-11-19 9ea04f65a37f07b9939e4328dc94418f29694665 diff --git a/repos/gems/recipes/pkg/window_layouter/hash b/repos/gems/recipes/pkg/window_layouter/hash index eb82cd62b2..eb8aee470e 100644 --- a/repos/gems/recipes/pkg/window_layouter/hash +++ b/repos/gems/recipes/pkg/window_layouter/hash @@ -1 +1 @@ -2024-10-29 dcf3cb77e26c74535de7e8fdfef56f9bbf765eec +2024-11-19 16a054efa54f330606397b9f0c8a46d3b3581d56 diff --git a/repos/gems/recipes/pkg/wm/hash b/repos/gems/recipes/pkg/wm/hash index 5e3020d67f..248d3283c0 100644 --- a/repos/gems/recipes/pkg/wm/hash +++ b/repos/gems/recipes/pkg/wm/hash @@ -1 +1 @@ -2024-11-04 5a423707da25061829d09aad9b1151524c85e689 +2024-11-19 45d1c7ddd710b1131276760c857c0c2ffb666e59 diff --git a/repos/gems/recipes/src/backdrop/hash b/repos/gems/recipes/src/backdrop/hash index 30cfcc65fd..09a9bad5dc 100644 --- a/repos/gems/recipes/src/backdrop/hash +++ b/repos/gems/recipes/src/backdrop/hash @@ -1 +1 @@ -2024-11-04 cd4ebf9848f7f8e0833709331f02a8e5d49ef2d1 +2024-11-19 7f402b75b9fa41e89d9d7a7d47f6ceb7808cf230 diff --git a/repos/gems/recipes/src/cpu_load_display/hash b/repos/gems/recipes/src/cpu_load_display/hash index 0a4d8b4c96..fdc1fc4d8a 100644 --- a/repos/gems/recipes/src/cpu_load_display/hash +++ b/repos/gems/recipes/src/cpu_load_display/hash @@ -1 +1 @@ -2024-11-04 984d85c1768302dc435a6b51810cd2a09727ff14 +2024-11-19 23b1b6f733fc0999aab152f97341a8033f6a882c diff --git a/repos/gems/recipes/src/dbg_download/hash b/repos/gems/recipes/src/dbg_download/hash index 712036a186..882babebcf 100644 --- a/repos/gems/recipes/src/dbg_download/hash +++ b/repos/gems/recipes/src/dbg_download/hash @@ -1 +1 @@ -2024-10-07 9f120fbc7ad3f0217d48a3a861c27d626d8eac6f +2024-11-19 75b9a961522fd92772a0e6eb38f46da95dc715db diff --git a/repos/gems/recipes/src/decorator/hash b/repos/gems/recipes/src/decorator/hash index cf91d2f565..196b394ab1 100644 --- a/repos/gems/recipes/src/decorator/hash +++ b/repos/gems/recipes/src/decorator/hash @@ -1 +1 @@ -2024-11-04 1877a655ee50a7a34212f6aeea2030731cab471c +2024-11-19 d2ea819ac99467e05a32a9bfdde9cd68cfefbf8c diff --git a/repos/gems/recipes/src/depot_deploy/hash b/repos/gems/recipes/src/depot_deploy/hash index c6900682b4..da482f34d0 100644 --- a/repos/gems/recipes/src/depot_deploy/hash +++ b/repos/gems/recipes/src/depot_deploy/hash @@ -1 +1 @@ -2024-10-07 4ba817f5300e8d42b1eacdfc919094df88e0d6f4 +2024-11-19 ff45ee56db9b5cf323078005eaa5cc68cfc5bfe0 diff --git a/repos/gems/recipes/src/depot_download_manager/hash b/repos/gems/recipes/src/depot_download_manager/hash index b5bfc8f4b9..f1c8cda379 100644 --- a/repos/gems/recipes/src/depot_download_manager/hash +++ b/repos/gems/recipes/src/depot_download_manager/hash @@ -1 +1 @@ -2024-10-07 2b764ef33952424093d3e6a384cd8e0ea7aee2a4 +2024-11-19 5559eb97eaa051aece7c4e71fe7349047084aa10 diff --git a/repos/gems/recipes/src/depot_query/hash b/repos/gems/recipes/src/depot_query/hash index 80b4f53287..bc202cb85e 100644 --- a/repos/gems/recipes/src/depot_query/hash +++ b/repos/gems/recipes/src/depot_query/hash @@ -1 +1 @@ -2024-10-07 002a0b61bd9ba520bdbce30e195b1801e3fa563a +2024-11-19 335929bccb80e7e9d20be64dc433513b354ed9d9 diff --git a/repos/gems/recipes/src/depot_remove/hash b/repos/gems/recipes/src/depot_remove/hash index 7f79ec9b84..2a3676b9d5 100644 --- a/repos/gems/recipes/src/depot_remove/hash +++ b/repos/gems/recipes/src/depot_remove/hash @@ -1 +1 @@ -2024-10-07 e8cd8c20c24113a11f752d4a5beb8e7da2d5d687 +2024-11-19 6876b7151f8097ff49bb434563b373f696193db7 diff --git a/repos/gems/recipes/src/file_terminal/hash b/repos/gems/recipes/src/file_terminal/hash index 34e4bec47d..8876b03e8f 100644 --- a/repos/gems/recipes/src/file_terminal/hash +++ b/repos/gems/recipes/src/file_terminal/hash @@ -1 +1 @@ -2024-10-07 2bfba46c0b152486c07eb74709876b9e970940d6 +2024-11-19 839e01716ea25a4d40448e66ba83adca01bf3c4a diff --git a/repos/gems/recipes/src/file_vault/hash b/repos/gems/recipes/src/file_vault/hash index b544034512..23d90451e0 100644 --- a/repos/gems/recipes/src/file_vault/hash +++ b/repos/gems/recipes/src/file_vault/hash @@ -1 +1 @@ -2024-10-29 844ae174b2bf8a4c975d888110cf8f6f7eada868 +2024-11-19 dd3297064057727f52189113fa79c049ca885cdf diff --git a/repos/gems/recipes/src/file_vault_gui/hash b/repos/gems/recipes/src/file_vault_gui/hash index 99b0367070..c256c5a691 100644 --- a/repos/gems/recipes/src/file_vault_gui/hash +++ b/repos/gems/recipes/src/file_vault_gui/hash @@ -1 +1 @@ -2024-11-04 0e693d03c461bc078cfa2a35daf304863cd4937a +2024-11-19 af9339d080d11fa88403014870edfe2fe96e9339 diff --git a/repos/gems/recipes/src/fs_query/hash b/repos/gems/recipes/src/fs_query/hash index 34ef4f2ff1..a1b900095b 100644 --- a/repos/gems/recipes/src/fs_query/hash +++ b/repos/gems/recipes/src/fs_query/hash @@ -1 +1 @@ -2024-10-07 13adfc76913632fdc7a187b7464cd0e415499b95 +2024-11-19 2b1d6bb5c3c8f14bcb92c3e55298800ab4e78ee6 diff --git a/repos/gems/recipes/src/fs_tool/hash b/repos/gems/recipes/src/fs_tool/hash index 3adf42beaf..31233ed040 100644 --- a/repos/gems/recipes/src/fs_tool/hash +++ b/repos/gems/recipes/src/fs_tool/hash @@ -1 +1 @@ -2024-10-07 e7ab62b24bca24b83a885bf58f63c81634d11cd3 +2024-11-19 ec49d509696a7ce0a93871b6b3c1a48983f870d9 diff --git a/repos/gems/recipes/src/gpt_write/hash b/repos/gems/recipes/src/gpt_write/hash index 62afb3475b..19d3bca7d8 100644 --- a/repos/gems/recipes/src/gpt_write/hash +++ b/repos/gems/recipes/src/gpt_write/hash @@ -1 +1 @@ -2024-10-07 a230c20ee8fe8dc014c3458a5fd0ac4f6dae7e4e +2024-11-19 82c8096e525d5f14f6385a23f39534ba92145af7 diff --git a/repos/gems/recipes/src/gui_fader/hash b/repos/gems/recipes/src/gui_fader/hash index 107d74d4f9..49f8684810 100644 --- a/repos/gems/recipes/src/gui_fader/hash +++ b/repos/gems/recipes/src/gui_fader/hash @@ -1 +1 @@ -2024-10-29 517197ef1ccd99b7b509e74d659e0d96d8f6007c +2024-11-19 debee41787123d097fb565d5e9fd437da762197e diff --git a/repos/gems/recipes/src/menu_view/hash b/repos/gems/recipes/src/menu_view/hash index f8f134d6ea..040cae0170 100644 --- a/repos/gems/recipes/src/menu_view/hash +++ b/repos/gems/recipes/src/menu_view/hash @@ -1 +1 @@ -2024-11-04 136af1755f9ca89f179ef144638794f966f339b2 +2024-11-19 474b79d1771dd9f5727fd68e4df08e03f088cf18 diff --git a/repos/gems/recipes/src/mixer_gui_qt/hash b/repos/gems/recipes/src/mixer_gui_qt/hash index a8b760d9b7..9294722591 100644 --- a/repos/gems/recipes/src/mixer_gui_qt/hash +++ b/repos/gems/recipes/src/mixer_gui_qt/hash @@ -1 +1 @@ -2024-10-29 2806cdc96c4a22e4f1d12e9940f92afc1a0c2351 +2024-11-19 54fb2c3c7defa6a3c3038138f0b2e380c45e0bc7 diff --git a/repos/gems/recipes/src/mixer_gui_qt6/hash b/repos/gems/recipes/src/mixer_gui_qt6/hash index 85c7de8cfc..cb0da706ce 100644 --- a/repos/gems/recipes/src/mixer_gui_qt6/hash +++ b/repos/gems/recipes/src/mixer_gui_qt6/hash @@ -1 +1 @@ -2024-10-29 6fc354be1ef107b978dbc5fcbfd1bdba9d183b98 +2024-11-19 3f3f47b5cd65ce7d180e9d7cbb3def87332df28d diff --git a/repos/gems/recipes/src/nano3d/hash b/repos/gems/recipes/src/nano3d/hash index 9b4dcf930a..50df9d8dc7 100644 --- a/repos/gems/recipes/src/nano3d/hash +++ b/repos/gems/recipes/src/nano3d/hash @@ -1 +1 @@ -2024-10-29 f8e1d99330927e56c3f76bd91bcedd828e85b8c0 +2024-11-19 79af9b579ae25cad13b9c002c3a66408879e7dd6 diff --git a/repos/gems/recipes/src/osci/hash b/repos/gems/recipes/src/osci/hash index c304317b26..ccf99e2daf 100644 --- a/repos/gems/recipes/src/osci/hash +++ b/repos/gems/recipes/src/osci/hash @@ -1 +1 @@ -2024-11-04 d21739956a87a54decf6cf26f812016125d899e4 +2024-11-19 3b1bbb073abb316885f024fbd483b1d218c2ca93 diff --git a/repos/gems/recipes/src/rom_osci/hash b/repos/gems/recipes/src/rom_osci/hash index c0ea14409d..c411673ee7 100644 --- a/repos/gems/recipes/src/rom_osci/hash +++ b/repos/gems/recipes/src/rom_osci/hash @@ -1 +1 @@ -2024-11-04 079d9f672d29874d50b31ac0a86e8286de631f7e +2024-11-19 6574547dd65e2b270fb9642882b2e66fe309321a diff --git a/repos/gems/recipes/src/screenshot_trigger/hash b/repos/gems/recipes/src/screenshot_trigger/hash index 20587ae0f4..8a47ee2ab1 100644 --- a/repos/gems/recipes/src/screenshot_trigger/hash +++ b/repos/gems/recipes/src/screenshot_trigger/hash @@ -1 +1 @@ -2024-11-04 eac2549765608ddecb020918592b6b3b6821549c +2024-11-19 6364c7762b29c9c0dc4e462897e84f170b259f40 diff --git a/repos/gems/recipes/src/sculpt_manager/hash b/repos/gems/recipes/src/sculpt_manager/hash index d37633c8e7..3d21961e04 100644 --- a/repos/gems/recipes/src/sculpt_manager/hash +++ b/repos/gems/recipes/src/sculpt_manager/hash @@ -1 +1 @@ -2024-11-05 63ea2e1e236fe381a2c47ea40df825764007b355 +2024-11-19 d9714881a79ba951d805557fb9faf62d82052c71 diff --git a/repos/gems/recipes/src/tcp_terminal/hash b/repos/gems/recipes/src/tcp_terminal/hash index 05a3803733..15ca38a7a2 100644 --- a/repos/gems/recipes/src/tcp_terminal/hash +++ b/repos/gems/recipes/src/tcp_terminal/hash @@ -1 +1 @@ -2024-10-07 d52c83ad285ada383d82a345ddd9ee4ddbef8f68 +2024-11-19 fab980033c045bdc967977a0ee4b12121e8ce2a1 diff --git a/repos/gems/recipes/src/terminal/hash b/repos/gems/recipes/src/terminal/hash index 8784e65ead..d0769d669c 100644 --- a/repos/gems/recipes/src/terminal/hash +++ b/repos/gems/recipes/src/terminal/hash @@ -1 +1 @@ -2024-11-04 f7b9874f2aa64676737e620b95c8d5a6053abb2e +2024-11-19 78612745e2571c8053d70492780a7664f9f3d0ee diff --git a/repos/gems/recipes/src/test-tiled_wm/hash b/repos/gems/recipes/src/test-tiled_wm/hash index 54e62f6e0c..e76b3e4e47 100644 --- a/repos/gems/recipes/src/test-tiled_wm/hash +++ b/repos/gems/recipes/src/test-tiled_wm/hash @@ -1 +1 @@ -2024-10-29 0ca3dcde5cb933da2a158862d040c9f4befdfe14 +2024-11-19 1eaff06e7df4f2682f8ee0eaf5c5b8605e352d96 diff --git a/repos/gems/recipes/src/test-tiled_wm_qt6/hash b/repos/gems/recipes/src/test-tiled_wm_qt6/hash index 12b70d004d..9bc759600b 100644 --- a/repos/gems/recipes/src/test-tiled_wm_qt6/hash +++ b/repos/gems/recipes/src/test-tiled_wm_qt6/hash @@ -1 +1 @@ -2024-10-29 28f6501aa6aad89ae7d4339e732106158d7864f1 +2024-11-19 fb301901ffe6901892dd60574cd712f63b7c55fb diff --git a/repos/gems/recipes/src/text_area/hash b/repos/gems/recipes/src/text_area/hash index 6286ccbbec..26b4765dda 100644 --- a/repos/gems/recipes/src/text_area/hash +++ b/repos/gems/recipes/src/text_area/hash @@ -1 +1 @@ -2024-11-04 5a65000bba0acf7e7776eb45c751414e1bedd0f0 +2024-11-19 63d657cde06c928edfef149c25575b7354eb175b diff --git a/repos/gems/recipes/src/themed_decorator/hash b/repos/gems/recipes/src/themed_decorator/hash index 5bebf69efb..70f388c426 100644 --- a/repos/gems/recipes/src/themed_decorator/hash +++ b/repos/gems/recipes/src/themed_decorator/hash @@ -1 +1 @@ -2024-11-04 3dec6249d0627f3be6d6303ed052c25bfb3431e3 +2024-11-19 34770f4f11bc3bcd93a66eecfc68073895c34e66 diff --git a/repos/gems/recipes/src/touch_keyboard/hash b/repos/gems/recipes/src/touch_keyboard/hash index 0feb45aaac..7df5c7f7d4 100644 --- a/repos/gems/recipes/src/touch_keyboard/hash +++ b/repos/gems/recipes/src/touch_keyboard/hash @@ -1 +1 @@ -2024-11-04 4e2e933760a9dbecc8d9d3693d4ebe5f79524d93 +2024-11-19 a7c186f7193c348bd2687e62677d9a0b6784461f diff --git a/repos/gems/recipes/src/trace_recorder/hash b/repos/gems/recipes/src/trace_recorder/hash index a468239348..6187f268d3 100644 --- a/repos/gems/recipes/src/trace_recorder/hash +++ b/repos/gems/recipes/src/trace_recorder/hash @@ -1 +1 @@ -2024-10-07 7193fa188f5ae02451faac226d22c11b6fb9d4ea +2024-11-19 85996477a238d126fe6d463360aea2271983b623 diff --git a/repos/gems/recipes/src/trace_recorder_policy/hash b/repos/gems/recipes/src/trace_recorder_policy/hash index acae378cab..57a6baa760 100644 --- a/repos/gems/recipes/src/trace_recorder_policy/hash +++ b/repos/gems/recipes/src/trace_recorder_policy/hash @@ -1 +1 @@ -2024-10-07 defa1e47b0427922420d8db3c5dc8602c634c041 +2024-11-19 2b8019ad22a9b4b0bacae950dab987d25b849aa4 diff --git a/repos/gems/recipes/src/tresor/hash b/repos/gems/recipes/src/tresor/hash index 498e4b86d1..d83e8ac7ef 100644 --- a/repos/gems/recipes/src/tresor/hash +++ b/repos/gems/recipes/src/tresor/hash @@ -1 +1 @@ -2024-10-07 e7a9086e88543fdf7a1d308643f7e047c528420c +2024-11-19 2126ca74c9b308cb978481044f540e85d2af9b75 diff --git a/repos/gems/recipes/src/vfs_audit/hash b/repos/gems/recipes/src/vfs_audit/hash index 8359309d31..2df6b186bb 100644 --- a/repos/gems/recipes/src/vfs_audit/hash +++ b/repos/gems/recipes/src/vfs_audit/hash @@ -1 +1 @@ -2024-11-04 9500dfcbb3d75bc4f66e3e21e502883775df11cd +2024-11-19 8f69ffbd309a3f4795e0aff17f5fdfe6596e614b diff --git a/repos/gems/recipes/src/vfs_gpu/hash b/repos/gems/recipes/src/vfs_gpu/hash index 4d40e81e5c..d60af9ee55 100644 --- a/repos/gems/recipes/src/vfs_gpu/hash +++ b/repos/gems/recipes/src/vfs_gpu/hash @@ -1 +1 @@ -2024-11-04 bbd2777861c108a70b0aeafc5d79464049bf98aa +2024-11-19 1ce5ce167a5adab5f7eeefbdecec3bd102c539c2 diff --git a/repos/gems/recipes/src/vfs_import/hash b/repos/gems/recipes/src/vfs_import/hash index dc50e73eee..303eb27cec 100644 --- a/repos/gems/recipes/src/vfs_import/hash +++ b/repos/gems/recipes/src/vfs_import/hash @@ -1 +1 @@ -2024-11-04 a5a41d0d2f118244cce9cd20bf95ab235160e839 +2024-11-19 4f9ab392a2c8bd8651d13590dbde655f931ab392 diff --git a/repos/gems/recipes/src/vfs_oss/hash b/repos/gems/recipes/src/vfs_oss/hash index 3705a42347..eeead93c56 100644 --- a/repos/gems/recipes/src/vfs_oss/hash +++ b/repos/gems/recipes/src/vfs_oss/hash @@ -1 +1 @@ -2024-11-04 701bd1bc2031c85b796aaeb26e39a8adb38cb2af +2024-11-19 2a2dd334c4ec5c4033d1f0afb12d42b4653b627e diff --git a/repos/gems/recipes/src/vfs_pipe/hash b/repos/gems/recipes/src/vfs_pipe/hash index 20f229c9dd..851b9cb2d5 100644 --- a/repos/gems/recipes/src/vfs_pipe/hash +++ b/repos/gems/recipes/src/vfs_pipe/hash @@ -1 +1 @@ -2024-10-07 af8549e4e0e582ee8c77c64a81f64ea06aa448b7 +2024-11-19 60d21fa6c0f205f2d7a1601dc980af625af8ec1e diff --git a/repos/gems/recipes/src/vfs_trace/hash b/repos/gems/recipes/src/vfs_trace/hash index a2ed61c20f..32446d9ff2 100644 --- a/repos/gems/recipes/src/vfs_trace/hash +++ b/repos/gems/recipes/src/vfs_trace/hash @@ -1 +1 @@ -2024-11-04 5c8808ea2a3441606506bfd86985fe4be2baf3e9 +2024-11-19 87ce7e09b5499c10e55937fe8b73df50fed9e367 diff --git a/repos/gems/recipes/src/vfs_ttf/hash b/repos/gems/recipes/src/vfs_ttf/hash index 612209aefa..8ab0820e0d 100644 --- a/repos/gems/recipes/src/vfs_ttf/hash +++ b/repos/gems/recipes/src/vfs_ttf/hash @@ -1 +1 @@ -2024-11-04 0757f1b0bada35c6991a2009185e4388fbb046b3 +2024-11-19 4124503e63ec91be3acb359745855099c24331db diff --git a/repos/gems/recipes/src/window_layouter/hash b/repos/gems/recipes/src/window_layouter/hash index 9e9d950a67..1f937bd189 100644 --- a/repos/gems/recipes/src/window_layouter/hash +++ b/repos/gems/recipes/src/window_layouter/hash @@ -1 +1 @@ -2024-10-29 ae609775883e8aa8e89f7a31b420614922404a3a +2024-11-19 c1de7eba73107beb2caa2f1831aa6d390a13ab91 diff --git a/repos/gems/recipes/src/wm/hash b/repos/gems/recipes/src/wm/hash index a8facfbd31..3f5d96fafd 100644 --- a/repos/gems/recipes/src/wm/hash +++ b/repos/gems/recipes/src/wm/hash @@ -1 +1 @@ -2024-11-04 f1f330838199fffe4d8eecebf018b89fd89f0602 +2024-11-19 57e610855c68613d3bf0d2025832f623f2624168 diff --git a/repos/libports/recipes/pkg/acpica/hash b/repos/libports/recipes/pkg/acpica/hash index 3098b5e4a4..a8d35d0926 100644 --- a/repos/libports/recipes/pkg/acpica/hash +++ b/repos/libports/recipes/pkg/acpica/hash @@ -1 +1 @@ -2024-10-07 8375000b5531e0e9a73d31175a00b926c9168ece +2024-11-19 062be8139763e5af2e72de637c161a48bb069ec8 diff --git a/repos/libports/recipes/pkg/gcov/hash b/repos/libports/recipes/pkg/gcov/hash index d3d0a0f088..f542379300 100644 --- a/repos/libports/recipes/pkg/gcov/hash +++ b/repos/libports/recipes/pkg/gcov/hash @@ -1 +1 @@ -2024-10-29 2d739053a4eee45449bc7854a282d17ed57de897 +2024-11-19 6c928ca8672482c9d69ba1160f88f53a3da1f2f6 diff --git a/repos/libports/recipes/pkg/mesa_gears/hash b/repos/libports/recipes/pkg/mesa_gears/hash index ff46091f1b..0f0a1f2403 100644 --- a/repos/libports/recipes/pkg/mesa_gears/hash +++ b/repos/libports/recipes/pkg/mesa_gears/hash @@ -1 +1 @@ -2024-11-04 4983b0da01327998cc0d70573e3a67e43f5a3838 +2024-11-19 2b8ce6c0144667252a83f7726303a6b59c226cb4 diff --git a/repos/libports/recipes/pkg/mesa_gpu-cpu/hash b/repos/libports/recipes/pkg/mesa_gpu-cpu/hash index e63a4094a2..503bba4d85 100644 --- a/repos/libports/recipes/pkg/mesa_gpu-cpu/hash +++ b/repos/libports/recipes/pkg/mesa_gpu-cpu/hash @@ -1 +1 @@ -2024-10-29 7f27d4a339459e3dbb25239c6d1dff2fcaf48a9d +2024-11-19 01fecc481a1134f059028403ee56ba24c042e78e diff --git a/repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash b/repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash index 412e5e5302..f31472e67d 100644 --- a/repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash +++ b/repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash @@ -1 +1 @@ -2024-10-29 782fbf038339f1c2080832dc560f2a28d832ccb0 +2024-11-19 6494350e6b2a1441b266cb2fd19873c680799901 diff --git a/repos/libports/recipes/pkg/mesa_gpu-intel/hash b/repos/libports/recipes/pkg/mesa_gpu-intel/hash index b53d7a8596..051dc9a99f 100644 --- a/repos/libports/recipes/pkg/mesa_gpu-intel/hash +++ b/repos/libports/recipes/pkg/mesa_gpu-intel/hash @@ -1 +1 @@ -2024-10-29 4652ff90a26001bb34177a4840e650a3fafdda76 +2024-11-19 4469596e0fc44a6568b62a8899e2da4398355a87 diff --git a/repos/libports/recipes/pkg/mesa_gpu-lima/hash b/repos/libports/recipes/pkg/mesa_gpu-lima/hash index 916217dcd0..8099b4ab40 100644 --- a/repos/libports/recipes/pkg/mesa_gpu-lima/hash +++ b/repos/libports/recipes/pkg/mesa_gpu-lima/hash @@ -1 +1 @@ -2024-10-29 ad2d304a6b3844fc1c38c2e17a9cb02faff069e3 +2024-11-19 0dd0dd8c87c4019ee10ced481a0f936f9940a5ab diff --git a/repos/libports/recipes/pkg/pdf_view/hash b/repos/libports/recipes/pkg/pdf_view/hash index 43c0888dbe..fd73fbfa72 100644 --- a/repos/libports/recipes/pkg/pdf_view/hash +++ b/repos/libports/recipes/pkg/pdf_view/hash @@ -1 +1 @@ -2024-10-29 e0238c3c4854fa79d361322b3478b3454cf04fc9 +2024-11-19 d6c9bd206540f636641239566aa49bc6fc63b14d diff --git a/repos/libports/recipes/pkg/qt5_textedit/hash b/repos/libports/recipes/pkg/qt5_textedit/hash index 0f42c086d2..939ffacd03 100644 --- a/repos/libports/recipes/pkg/qt5_textedit/hash +++ b/repos/libports/recipes/pkg/qt5_textedit/hash @@ -1 +1 @@ -2024-11-04 8279ed4dc21d9f3335b250aaff5dd8bb30a2a2e4 +2024-11-19 d6d6b3cd1d4fb9f9eee08a4e51bd6449c78262aa diff --git a/repos/libports/recipes/pkg/sntp_dummy_rtc/hash b/repos/libports/recipes/pkg/sntp_dummy_rtc/hash index b7ed12d620..9c580b854e 100644 --- a/repos/libports/recipes/pkg/sntp_dummy_rtc/hash +++ b/repos/libports/recipes/pkg/sntp_dummy_rtc/hash @@ -1 +1 @@ -2024-10-29 e15015cf4d50a2f2dba4bfe5086df11f46999fd4 +2024-11-19 dbfaae97d316aac08edc3784f6708e1d4ba325b7 diff --git a/repos/libports/recipes/pkg/stdin2out/hash b/repos/libports/recipes/pkg/stdin2out/hash index b4a74b78d4..86a9667489 100644 --- a/repos/libports/recipes/pkg/stdin2out/hash +++ b/repos/libports/recipes/pkg/stdin2out/hash @@ -1 +1 @@ -2024-10-29 ad05db48e0677a765bb145c8c2f1b852ae5b3196 +2024-11-19 b1fdbdc8276aa660ff0259fcee3c2920511a6dae diff --git a/repos/libports/recipes/pkg/system_clock-dummy/hash b/repos/libports/recipes/pkg/system_clock-dummy/hash index d551505c3b..441ef01208 100644 --- a/repos/libports/recipes/pkg/system_clock-dummy/hash +++ b/repos/libports/recipes/pkg/system_clock-dummy/hash @@ -1 +1 @@ -2024-10-29 1b712f3c570bd68a9f03f7f6b7679aae089dee01 +2024-11-19 7338756b3b5ebb651d1b7420277e30c1aea89663 diff --git a/repos/libports/recipes/pkg/system_clock-pc/hash b/repos/libports/recipes/pkg/system_clock-pc/hash index 5a02370af5..d52dac6022 100644 --- a/repos/libports/recipes/pkg/system_clock-pc/hash +++ b/repos/libports/recipes/pkg/system_clock-pc/hash @@ -1 +1 @@ -2024-10-29 80ada162915e2d5d01d930cee0c4b21d8b3b1e5e +2024-11-19 0cfddc157ab6951520fdbd083f33f466d4bac7a4 diff --git a/repos/libports/recipes/pkg/system_rtc-linux/hash b/repos/libports/recipes/pkg/system_rtc-linux/hash index bb26fc1fed..90006c3e5f 100644 --- a/repos/libports/recipes/pkg/system_rtc-linux/hash +++ b/repos/libports/recipes/pkg/system_rtc-linux/hash @@ -1 +1 @@ -2024-10-07 eb1d46b9b2399d7b78a80bb0746179c049923ef6 +2024-11-19 e972fa245bb44c699859e2775bd5449b05b012dc diff --git a/repos/libports/recipes/pkg/system_rtc-pc/hash b/repos/libports/recipes/pkg/system_rtc-pc/hash index 7d9e9fed1e..e7fc647289 100644 --- a/repos/libports/recipes/pkg/system_rtc-pc/hash +++ b/repos/libports/recipes/pkg/system_rtc-pc/hash @@ -1 +1 @@ -2024-10-07 d65603b5d26fd6d69271159d41e92637a38b6b27 +2024-11-19 353513abb695070c7495b5709233b317531c56a4 diff --git a/repos/libports/recipes/pkg/test-expat/hash b/repos/libports/recipes/pkg/test-expat/hash index f0aba79ae5..9afa2b857b 100644 --- a/repos/libports/recipes/pkg/test-expat/hash +++ b/repos/libports/recipes/pkg/test-expat/hash @@ -1 +1 @@ -2024-10-29 d7294c9b65c7bf18cb21b52ea7b62be3d6228368 +2024-11-19 3f7f1dd1ca200587a14566063db16c30c6f9e179 diff --git a/repos/libports/recipes/pkg/test-ldso/hash b/repos/libports/recipes/pkg/test-ldso/hash index 05ef496ec2..216b3022d3 100644 --- a/repos/libports/recipes/pkg/test-ldso/hash +++ b/repos/libports/recipes/pkg/test-ldso/hash @@ -1 +1 @@ -2024-10-29 c288963b72a660a8cbf8be25740925da6e48a42e +2024-11-19 f74815f3961acb8738c6fceef7a4113c9563b0a5 diff --git a/repos/libports/recipes/pkg/test-libc/hash b/repos/libports/recipes/pkg/test-libc/hash index 244d8502e7..cc06759557 100644 --- a/repos/libports/recipes/pkg/test-libc/hash +++ b/repos/libports/recipes/pkg/test-libc/hash @@ -1 +1 @@ -2024-10-29 0ccb78912e33492d8b1996d961c3997d24708f98 +2024-11-19 7cfdf43bf65fac5e8f18387bf93b909137f1ac82 diff --git a/repos/libports/recipes/pkg/test-libc_alarm/hash b/repos/libports/recipes/pkg/test-libc_alarm/hash index facc84dd4e..d3bef6fdee 100644 --- a/repos/libports/recipes/pkg/test-libc_alarm/hash +++ b/repos/libports/recipes/pkg/test-libc_alarm/hash @@ -1 +1 @@ -2024-10-29 dc05e5a6933f53cba4c51628c6ba92b091acb793 +2024-11-19 5267860f2c350effc49294cf11b9e22d61dea216 diff --git a/repos/libports/recipes/pkg/test-libc_connect_lwip/hash b/repos/libports/recipes/pkg/test-libc_connect_lwip/hash index 470c67c2e7..0e95df388c 100644 --- a/repos/libports/recipes/pkg/test-libc_connect_lwip/hash +++ b/repos/libports/recipes/pkg/test-libc_connect_lwip/hash @@ -1 +1 @@ -2024-10-29 cb4692abe7489da31936b4c39466e95d04fde44b +2024-11-19 656b5fb793e4d72325fa6e1e03ef382defc9601e diff --git a/repos/libports/recipes/pkg/test-libc_connect_lxip/hash b/repos/libports/recipes/pkg/test-libc_connect_lxip/hash index bdb790b804..b12c56437f 100644 --- a/repos/libports/recipes/pkg/test-libc_connect_lxip/hash +++ b/repos/libports/recipes/pkg/test-libc_connect_lxip/hash @@ -1 +1 @@ -2024-10-29 6ac5a6c849bc885dccf26fc1bb7f8369e69b7ed6 +2024-11-19 336e46b648a7c7c5b23873ee962ffe81d89f60dd diff --git a/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash b/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash index 221bbff956..642ccd4295 100644 --- a/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash +++ b/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash @@ -1 +1 @@ -2024-10-29 ab2aa5744a62d04b326e610f20a938141a70147f +2024-11-19 8cac66da62e07c564a9c5ac61bb274dc3b95d991 diff --git a/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash b/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash index 3c791bfb75..f3cca37473 100644 --- a/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash +++ b/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash @@ -1 +1 @@ -2024-10-29 9b25196204000defbd5b4fbda7ded0b07ff0fcab +2024-11-19 6919ef472e49b2039ad14149b6419cc313ce6b20 diff --git a/repos/libports/recipes/pkg/test-libc_counter/hash b/repos/libports/recipes/pkg/test-libc_counter/hash index 41e3a47dc2..e9ecdb0958 100644 --- a/repos/libports/recipes/pkg/test-libc_counter/hash +++ b/repos/libports/recipes/pkg/test-libc_counter/hash @@ -1 +1 @@ -2024-10-29 a321f4f33e545dcaacc91a613e41c611eb5f0916 +2024-11-19 e342bc5fa644d8b0c74d4b6632b9cc62b6bd4519 diff --git a/repos/libports/recipes/pkg/test-libc_deferred_unlink/hash b/repos/libports/recipes/pkg/test-libc_deferred_unlink/hash index e43b74a859..1a2d213d35 100644 --- a/repos/libports/recipes/pkg/test-libc_deferred_unlink/hash +++ b/repos/libports/recipes/pkg/test-libc_deferred_unlink/hash @@ -1 +1 @@ -2024-10-29 dd1c8492bd96c29bf4f9e86b512da2ff1a260f18 +2024-11-19 8b6fe2c50277d0d82b59895c01e9d940379c9aa0 diff --git a/repos/libports/recipes/pkg/test-libc_execve/hash b/repos/libports/recipes/pkg/test-libc_execve/hash index dffabbc5c3..eb15ad8b9b 100644 --- a/repos/libports/recipes/pkg/test-libc_execve/hash +++ b/repos/libports/recipes/pkg/test-libc_execve/hash @@ -1 +1 @@ -2024-10-29 c53dd687af0eddc86ad879807d647340a4402f0a +2024-11-19 0ac36a4363ba781bec1723a00f8bb84575fc9985 diff --git a/repos/libports/recipes/pkg/test-libc_fifo_pipe/hash b/repos/libports/recipes/pkg/test-libc_fifo_pipe/hash index 593e789025..e26fc03b5d 100644 --- a/repos/libports/recipes/pkg/test-libc_fifo_pipe/hash +++ b/repos/libports/recipes/pkg/test-libc_fifo_pipe/hash @@ -1 +1 @@ -2024-10-29 8f24c8c9a30d47d0806dbb7e1d48f7fc80c95096 +2024-11-19 efcbfb81f12ebe212b88927682ae46cd8830a144 diff --git a/repos/libports/recipes/pkg/test-libc_fork/hash b/repos/libports/recipes/pkg/test-libc_fork/hash index c5822e5553..21e17cecc4 100644 --- a/repos/libports/recipes/pkg/test-libc_fork/hash +++ b/repos/libports/recipes/pkg/test-libc_fork/hash @@ -1 +1 @@ -2024-10-29 4721e98ca8e201a53a8aa3425de93f2e1547fb8f +2024-11-19 9cc236095af759e0edfc7e76479ec96a719251c3 diff --git a/repos/libports/recipes/pkg/test-libc_getenv/hash b/repos/libports/recipes/pkg/test-libc_getenv/hash index 7aab439d15..f7b98f9527 100644 --- a/repos/libports/recipes/pkg/test-libc_getenv/hash +++ b/repos/libports/recipes/pkg/test-libc_getenv/hash @@ -1 +1 @@ -2024-10-29 7629089ba47da7b8da4e3f13e655a0275770a3ff +2024-11-19 1c90ab051139cfb09c9be59f183dc9a0d291eaf7 diff --git a/repos/libports/recipes/pkg/test-libc_kqueue/hash b/repos/libports/recipes/pkg/test-libc_kqueue/hash index 47dcfc6a6d..7dd84ad305 100644 --- a/repos/libports/recipes/pkg/test-libc_kqueue/hash +++ b/repos/libports/recipes/pkg/test-libc_kqueue/hash @@ -1 +1 @@ -2024-10-29 873660af71b4c98d09d89ba206a87d098b124295 +2024-11-19 8af6f11efcb9f7d96c3547561b9998006d4cde43 diff --git a/repos/libports/recipes/pkg/test-libc_pipe/hash b/repos/libports/recipes/pkg/test-libc_pipe/hash index b4c3beceb8..9add0202dc 100644 --- a/repos/libports/recipes/pkg/test-libc_pipe/hash +++ b/repos/libports/recipes/pkg/test-libc_pipe/hash @@ -1 +1 @@ -2024-10-29 829136cecf209699cc42f3e1e09467260d925ce9 +2024-11-19 674cc17a84999877f71361fa3039c0ef86e6de64 diff --git a/repos/libports/recipes/pkg/test-libc_vfs/hash b/repos/libports/recipes/pkg/test-libc_vfs/hash index 0557114252..7807afe5bd 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs/hash @@ -1 +1 @@ -2024-10-29 3a58d7c98ffe751cd95e4d303448337bcf1e07aa +2024-11-19 dfd56b3ee6db2e5bd31caae08aed9cafb4770c43 diff --git a/repos/libports/recipes/pkg/test-libc_vfs_block/hash b/repos/libports/recipes/pkg/test-libc_vfs_block/hash index 924f901372..703d08aaa7 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_block/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_block/hash @@ -1 +1 @@ -2024-11-04 92ceb0775e3631cd948ef6d53e686d11c9febdc3 +2024-11-19 eddc00ebbc9e2c78fb44907452286a97217656b1 diff --git a/repos/libports/recipes/pkg/test-libc_vfs_counter/hash b/repos/libports/recipes/pkg/test-libc_vfs_counter/hash index ea1fd6a3aa..707f653c6f 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_counter/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_counter/hash @@ -1 +1 @@ -2024-10-29 a33c3e17af4b25eda529234535410b74f5b71782 +2024-11-19 49aa2e8a87907c7ed24f6936b2f97c742d0daefb diff --git a/repos/libports/recipes/pkg/test-libc_vfs_fs/hash b/repos/libports/recipes/pkg/test-libc_vfs_fs/hash index a651aac973..3a1bd25312 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_fs/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_fs/hash @@ -1 +1 @@ -2024-10-29 7649778d31dc042c4e156ed8603669258c6df8be +2024-11-19 38d27aba88a0d53869823b03d8863169fc2b56fc diff --git a/repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash b/repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash index b198a4f8eb..fe877ba38f 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash @@ -1 +1 @@ -2024-10-29 46bfb4d0aee8744aa17b33e2f00de288212175b4 +2024-11-19 c0676b89d3446361e3cdb78b642ae0ceb10efe4b diff --git a/repos/libports/recipes/pkg/test-libc_vfs_oss/hash b/repos/libports/recipes/pkg/test-libc_vfs_oss/hash index e6132d98f6..93065cfb53 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_oss/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_oss/hash @@ -1 +1 @@ -2024-11-04 15205253a56332dcfbd11b0e37a4523b5275e22c +2024-11-19 0966985308cf852e7e3a527c2c10f6eaec891556 diff --git a/repos/libports/recipes/pkg/test-libc_vfs_ram/hash b/repos/libports/recipes/pkg/test-libc_vfs_ram/hash index dc4e0bde5d..2eeb01f5ac 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_ram/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_ram/hash @@ -1 +1 @@ -2024-10-29 8862e0a908801303192a754e428ffaf0707938a8 +2024-11-19 3fbda30f536fc48279c5224ae37499d45f69c644 diff --git a/repos/libports/recipes/pkg/test-pipe_read_ready/hash b/repos/libports/recipes/pkg/test-pipe_read_ready/hash index 0f6c4121f5..701f0976af 100644 --- a/repos/libports/recipes/pkg/test-pipe_read_ready/hash +++ b/repos/libports/recipes/pkg/test-pipe_read_ready/hash @@ -1 +1 @@ -2024-10-29 def53655c3faca62a46ec9b2b3931f4198d9956e +2024-11-19 33cd7b3cfd8842499a863193fb39a384f3015db7 diff --git a/repos/libports/recipes/pkg/test-pthread/hash b/repos/libports/recipes/pkg/test-pthread/hash index a4ea265e32..7a59d55bf1 100644 --- a/repos/libports/recipes/pkg/test-pthread/hash +++ b/repos/libports/recipes/pkg/test-pthread/hash @@ -1 +1 @@ -2024-10-29 a8286b25a2ffdc69b4626f17526903a1994ebd82 +2024-11-19 16d4463e806b85f121d3ffd050b12c0690d83cf8 diff --git a/repos/libports/recipes/pkg/test-sequence/hash b/repos/libports/recipes/pkg/test-sequence/hash index 64333cade1..0316a9544a 100644 --- a/repos/libports/recipes/pkg/test-sequence/hash +++ b/repos/libports/recipes/pkg/test-sequence/hash @@ -1 +1 @@ -2024-10-29 4f5e8403ed02657469b245ef10a115ff7d6b4213 +2024-11-19 a2c8ee6fa4fc027ecf80b4fb22cba3de00d2d954 diff --git a/repos/libports/recipes/pkg/test-spark/hash b/repos/libports/recipes/pkg/test-spark/hash index 7f928a8bd8..7cce3be3c2 100644 --- a/repos/libports/recipes/pkg/test-spark/hash +++ b/repos/libports/recipes/pkg/test-spark/hash @@ -1 +1 @@ -2024-10-29 7e1615ee2e09d21d91937a8db9481c0cc6708be7 +2024-11-19 7f97d49942748016b30ab67223d60c1f90e63ee4 diff --git a/repos/libports/recipes/pkg/test-spark_exception/hash b/repos/libports/recipes/pkg/test-spark_exception/hash index 91aa12809f..adaa5477e9 100644 --- a/repos/libports/recipes/pkg/test-spark_exception/hash +++ b/repos/libports/recipes/pkg/test-spark_exception/hash @@ -1 +1 @@ -2024-10-29 579e9fe0082580f683379d387801bbf2a7abd552 +2024-11-19 14902c8554beb5b487793e31ccb2cebb04b7ec25 diff --git a/repos/libports/recipes/pkg/test-spark_secondary_stack/hash b/repos/libports/recipes/pkg/test-spark_secondary_stack/hash index 0b2ee77835..845d9767ae 100644 --- a/repos/libports/recipes/pkg/test-spark_secondary_stack/hash +++ b/repos/libports/recipes/pkg/test-spark_secondary_stack/hash @@ -1 +1 @@ -2024-10-29 1e53e14046a7b4abeaded270d72634105350ea46 +2024-11-19 69ddf0ddc5944b7dad65ba02dbd8614cd27ac758 diff --git a/repos/libports/recipes/pkg/test-stdcxx/hash b/repos/libports/recipes/pkg/test-stdcxx/hash index 9ec94359da..8029c74536 100644 --- a/repos/libports/recipes/pkg/test-stdcxx/hash +++ b/repos/libports/recipes/pkg/test-stdcxx/hash @@ -1 +1 @@ -2024-10-29 cd2ebdce5a6d65bc9ad179ff15cf53165dfc6198 +2024-11-19 1415e390205225440d754ecabb97d9b7b6fcc847 diff --git a/repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash b/repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash index d6a31be708..99e295e860 100644 --- a/repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash +++ b/repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash @@ -1 +1 @@ -2024-10-29 abc626c90051a2d0d45c09f85da89fe936591845 +2024-11-19 5cfe41c8e01a3c2603b36c68c354172e5c9523c0 diff --git a/repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash b/repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash index e6c68664c5..be310350fa 100644 --- a/repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash +++ b/repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash @@ -1 +1 @@ -2024-10-29 61e14ec44c69c38042bd27f44b0728b83a208c91 +2024-11-19 d5437179130fa41860445914eb3d49994f07ceac diff --git a/repos/libports/recipes/pkg/usb_webcam/hash b/repos/libports/recipes/pkg/usb_webcam/hash index cd7559725e..437f8d13e0 100644 --- a/repos/libports/recipes/pkg/usb_webcam/hash +++ b/repos/libports/recipes/pkg/usb_webcam/hash @@ -1 +1 @@ -2024-11-04 ca2fcc26aa587d2d42954819ef413eba8659bf92 +2024-11-19 df0cdbbf97c721491692ab5a21e63e211143b6ec diff --git a/repos/libports/recipes/src/acpi_event/hash b/repos/libports/recipes/src/acpi_event/hash index 56482d2a29..0c38ad19ad 100644 --- a/repos/libports/recipes/src/acpi_event/hash +++ b/repos/libports/recipes/src/acpi_event/hash @@ -1 +1 @@ -2024-10-07 25541cdca13a91faff6b14c7727e58cdc12e4a08 +2024-11-19 fd470c537d4f4414343c9458c583fadedf77bf2f diff --git a/repos/libports/recipes/src/acpica/hash b/repos/libports/recipes/src/acpica/hash index 5cd9cc7e70..449e330538 100644 --- a/repos/libports/recipes/src/acpica/hash +++ b/repos/libports/recipes/src/acpica/hash @@ -1 +1 @@ -2024-10-07 4b499dbc766f11abdbeee1a5764b2a2bca168462 +2024-11-19 7d0844bf77df160790eb0dbed281d448c6293cd7 diff --git a/repos/libports/recipes/src/extract/hash b/repos/libports/recipes/src/extract/hash index 905ebba250..f2c8feb75f 100644 --- a/repos/libports/recipes/src/extract/hash +++ b/repos/libports/recipes/src/extract/hash @@ -1 +1 @@ -2024-10-07 77ea7e63e13f117aaad2905cdb198f6a5d8d142e +2024-11-19 3858c3955218420817a8c7682fef0a5140a7bbb8 diff --git a/repos/libports/recipes/src/fetchurl/hash b/repos/libports/recipes/src/fetchurl/hash index 7643a676c8..ac617ed343 100644 --- a/repos/libports/recipes/src/fetchurl/hash +++ b/repos/libports/recipes/src/fetchurl/hash @@ -1 +1 @@ -2024-10-07 9de8777183b493df2a7c640f999f8cb3d3799461 +2024-11-19 7e32c93a3e5ef4a4bf7d8f45a11f5f746832b29b diff --git a/repos/libports/recipes/src/gcov/hash b/repos/libports/recipes/src/gcov/hash index 306a57afdd..51fb3d8993 100644 --- a/repos/libports/recipes/src/gcov/hash +++ b/repos/libports/recipes/src/gcov/hash @@ -1 +1 @@ -2024-10-07 6eef7b6df474d8915a24552ef8f90ea558b97027 +2024-11-19 596fb8ad34165650f1470212814b0953238cda5c diff --git a/repos/libports/recipes/src/libc/hash b/repos/libports/recipes/src/libc/hash index 33a0c24eb8..2ea073f85f 100644 --- a/repos/libports/recipes/src/libc/hash +++ b/repos/libports/recipes/src/libc/hash @@ -1 +1 @@ -2024-10-29 ce5bfae0d9aa753dae322aaf9ddda52b4b341f26 +2024-11-19 47bf873455adcf2d1f0a8d243bbf293da05aac92 diff --git a/repos/libports/recipes/src/libdrm/hash b/repos/libports/recipes/src/libdrm/hash index 663fe7f79f..657c732e4e 100644 --- a/repos/libports/recipes/src/libdrm/hash +++ b/repos/libports/recipes/src/libdrm/hash @@ -1 +1 @@ -2024-10-29 73459f36290de6237f31022bf2b327f66c7706ee +2024-11-19 9adf0577a67e90b75adc5f060dce311fbfcd17d4 diff --git a/repos/libports/recipes/src/libqgenodeviewwidget/hash b/repos/libports/recipes/src/libqgenodeviewwidget/hash index 278f3b5804..af8e2f8aff 100644 --- a/repos/libports/recipes/src/libqgenodeviewwidget/hash +++ b/repos/libports/recipes/src/libqgenodeviewwidget/hash @@ -1 +1 @@ -2024-10-29 44650933ca13c47faed8d291797e085da1b0dbbf +2024-11-19 d4d1109c3f8863869f9230a072be9f4d0e8bcf41 diff --git a/repos/libports/recipes/src/libusb/hash b/repos/libports/recipes/src/libusb/hash index 2d9db6c110..7c4c33aedd 100644 --- a/repos/libports/recipes/src/libusb/hash +++ b/repos/libports/recipes/src/libusb/hash @@ -1 +1 @@ -2024-10-07 8eff02211941fbe10d9ceb0909299d9eeab5e956 +2024-11-19 1b68a2ee7c69188321663f78d08d47f1bc879d10 diff --git a/repos/libports/recipes/src/libyuv/hash b/repos/libports/recipes/src/libyuv/hash index 9835fb7d1b..b645a203cf 100644 --- a/repos/libports/recipes/src/libyuv/hash +++ b/repos/libports/recipes/src/libyuv/hash @@ -1 +1 @@ -2024-10-07 e7f6be6e4d2fff244e10529dee573db460c8cb8d +2024-11-19 08b33382f1fcb6091abbf34b2a062a9e62d6deb1 diff --git a/repos/libports/recipes/src/mesa/hash b/repos/libports/recipes/src/mesa/hash index 3b9a34ef5e..3fd5ac47a7 100644 --- a/repos/libports/recipes/src/mesa/hash +++ b/repos/libports/recipes/src/mesa/hash @@ -1 +1 @@ -2024-10-29 701274ab2d30e7d641b5732391506e3780ad0f12 +2024-11-19 d89eb2ce276496c02cd31070637f9ce65f3b20d8 diff --git a/repos/libports/recipes/src/mesa_gears/hash b/repos/libports/recipes/src/mesa_gears/hash index c1db270be6..ee9011648f 100644 --- a/repos/libports/recipes/src/mesa_gears/hash +++ b/repos/libports/recipes/src/mesa_gears/hash @@ -1 +1 @@ -2024-10-29 0d2787dcdf036d3d6b28525963c5489de787dc61 +2024-11-19 b2a48facc023452f767f815d3ee2c921305b18f3 diff --git a/repos/libports/recipes/src/pcsc-lite/hash b/repos/libports/recipes/src/pcsc-lite/hash index f76cc487d0..3402834a54 100644 --- a/repos/libports/recipes/src/pcsc-lite/hash +++ b/repos/libports/recipes/src/pcsc-lite/hash @@ -1 +1 @@ -2024-10-07 ef7669e066774fabb8e527a8de96cadc9f8f88f1 +2024-11-19 56ffdb738ff1fdaec1bfa8e5c5da62421ba616ed diff --git a/repos/libports/recipes/src/pdf_view/hash b/repos/libports/recipes/src/pdf_view/hash index d3362d2426..3f24e4fb97 100644 --- a/repos/libports/recipes/src/pdf_view/hash +++ b/repos/libports/recipes/src/pdf_view/hash @@ -1 +1 @@ -2024-10-29 947fe9d10cea014fc5b4d6fc1a5e5489f5bdf318 +2024-11-19 22eb322449ea1c057ea0fbeb9b2845ebdbc9d6ed diff --git a/repos/libports/recipes/src/posix/hash b/repos/libports/recipes/src/posix/hash index 9a59a444c8..ac67b548b3 100644 --- a/repos/libports/recipes/src/posix/hash +++ b/repos/libports/recipes/src/posix/hash @@ -1 +1 @@ -2024-10-07 52eebe1b5689d83ad7d10d5152e00dba08ca13e2 +2024-11-19 02f2ac1b9990211246ef0355ea590b2164701528 diff --git a/repos/libports/recipes/src/qt5_base/hash b/repos/libports/recipes/src/qt5_base/hash index c089512d71..f5863299b8 100644 --- a/repos/libports/recipes/src/qt5_base/hash +++ b/repos/libports/recipes/src/qt5_base/hash @@ -1 +1 @@ -2024-10-29 c562adbd2950e485c9f181a2aca6b0b5ca56ef11 +2024-11-19 dac5da6fb7b1db691c137b25740ce3c4f79038c4 diff --git a/repos/libports/recipes/src/qt5_component/hash b/repos/libports/recipes/src/qt5_component/hash index 742fcfd77e..65dd5c0264 100644 --- a/repos/libports/recipes/src/qt5_component/hash +++ b/repos/libports/recipes/src/qt5_component/hash @@ -1 +1 @@ -2024-10-07 20cefd891e66a43cefcc9ddf4f2d41d30b07671b +2024-11-19 ef448f09faaee10f1062a8052c188ea41c1e3281 diff --git a/repos/libports/recipes/src/qt5_launchpad/hash b/repos/libports/recipes/src/qt5_launchpad/hash index b1f7e17fdf..07ba6ce26d 100644 --- a/repos/libports/recipes/src/qt5_launchpad/hash +++ b/repos/libports/recipes/src/qt5_launchpad/hash @@ -1 +1 @@ -2024-10-29 ea2886e088298bfa6712db897ddb543239dfa1a1 +2024-11-19 2e8b578ab0a5116029b628311791eced54129491 diff --git a/repos/libports/recipes/src/qt5_quickcontrols2/hash b/repos/libports/recipes/src/qt5_quickcontrols2/hash index 15c23451d7..b438f8bd62 100644 --- a/repos/libports/recipes/src/qt5_quickcontrols2/hash +++ b/repos/libports/recipes/src/qt5_quickcontrols2/hash @@ -1 +1 @@ -2024-10-29 9947658aed674f887498431fc6a336c0924a88d5 +2024-11-19 4c2c5b2a19b3ccf818a880e496d791a4fd7d9f92 diff --git a/repos/libports/recipes/src/qt5_svg/hash b/repos/libports/recipes/src/qt5_svg/hash index eea4bea2f2..a7044a1dac 100644 --- a/repos/libports/recipes/src/qt5_svg/hash +++ b/repos/libports/recipes/src/qt5_svg/hash @@ -1 +1 @@ -2024-10-08 40f1b306f15dd31fb081ab19a11077414f47d0dd +2024-11-19 decac0951ec0d6591cca829813341e22b6f8503d diff --git a/repos/libports/recipes/src/qt6_base/hash b/repos/libports/recipes/src/qt6_base/hash index f75543108f..5eae2f7507 100644 --- a/repos/libports/recipes/src/qt6_base/hash +++ b/repos/libports/recipes/src/qt6_base/hash @@ -1 +1 @@ -2024-10-29 a20071440c4c51622c9f55c4b108543c75407d81 +2024-11-19 10b40980f1594a2790c4dcc954841617df54550b diff --git a/repos/libports/recipes/src/qt6_component/hash b/repos/libports/recipes/src/qt6_component/hash index a367269d60..92190f9dc0 100644 --- a/repos/libports/recipes/src/qt6_component/hash +++ b/repos/libports/recipes/src/qt6_component/hash @@ -1 +1 @@ -2024-10-07 717fd1dedaf0e7efe2a93c83248ed70890763f9c +2024-11-19 7d3674621c675bf502a6fb95ed019a44e0badde7 diff --git a/repos/libports/recipes/src/qt6_launchpad/hash b/repos/libports/recipes/src/qt6_launchpad/hash index f8b4935751..8985950bcf 100644 --- a/repos/libports/recipes/src/qt6_launchpad/hash +++ b/repos/libports/recipes/src/qt6_launchpad/hash @@ -1 +1 @@ -2024-10-29 97e521e9bd7a1189fb740bb2f418bbd77afe6469 +2024-11-19 d66f8daaca8f68a27081842e2a07e1b3709e635d diff --git a/repos/libports/recipes/src/sanitizer/hash b/repos/libports/recipes/src/sanitizer/hash index c2cd610a49..b1cb42c9cf 100644 --- a/repos/libports/recipes/src/sanitizer/hash +++ b/repos/libports/recipes/src/sanitizer/hash @@ -1 +1 @@ -2024-10-07 400fdfc44443c8e2c838b776900dd1f3302e9325 +2024-11-19 42f44875af9fc25f430c3dc9cbb0a4192fc566d7 diff --git a/repos/libports/recipes/src/sntp_client/hash b/repos/libports/recipes/src/sntp_client/hash index eb59b4bc68..7e613528ea 100644 --- a/repos/libports/recipes/src/sntp_client/hash +++ b/repos/libports/recipes/src/sntp_client/hash @@ -1 +1 @@ -2024-10-07 cff72e6d31f9179e4d7f2385189bcf92b2a0e1eb +2024-11-19 68953febc0397189433c07389b753534766c057b diff --git a/repos/libports/recipes/src/spark/hash b/repos/libports/recipes/src/spark/hash index e5069dbdd8..63522c9f6b 100644 --- a/repos/libports/recipes/src/spark/hash +++ b/repos/libports/recipes/src/spark/hash @@ -1 +1 @@ -2024-10-07 60c65f1960b9fd6a625be1a8d3e9649d11af95e8 +2024-11-19 61c0d7d2dd7121252d5efa72ada9e8c6799c077f diff --git a/repos/libports/recipes/src/system_rtc/hash b/repos/libports/recipes/src/system_rtc/hash index a11ffe2193..ffe7902500 100644 --- a/repos/libports/recipes/src/system_rtc/hash +++ b/repos/libports/recipes/src/system_rtc/hash @@ -1 +1 @@ -2024-10-07 afe6c2158e342f80c5769d7bfe62d12c8c23ef7d +2024-11-19 e1ce22ffd610850f8f6e5141d80043f7eb337de7 diff --git a/repos/libports/recipes/src/test-ldso/hash b/repos/libports/recipes/src/test-ldso/hash index 609edab5b0..9d1f1ae284 100644 --- a/repos/libports/recipes/src/test-ldso/hash +++ b/repos/libports/recipes/src/test-ldso/hash @@ -1 +1 @@ -2024-10-07 42cd1af54ba9c3733bd9ab75ff46a878f059e3eb +2024-11-19 cfa25e66fc44cbb657a48a29f3ae04233cf8a521 diff --git a/repos/libports/recipes/src/test-libc_fifo_pipe/hash b/repos/libports/recipes/src/test-libc_fifo_pipe/hash index a74dd46fda..25ea8b6780 100644 --- a/repos/libports/recipes/src/test-libc_fifo_pipe/hash +++ b/repos/libports/recipes/src/test-libc_fifo_pipe/hash @@ -1 +1 @@ -2024-10-07 ac0f212ff44df1c58a89031d9f2aba790e7ab84a +2024-11-19 d48356030c79df34f62032cce143e1b684e7df6a diff --git a/repos/libports/recipes/src/test-libc_vfs/hash b/repos/libports/recipes/src/test-libc_vfs/hash index 467b770215..9a21621bb9 100644 --- a/repos/libports/recipes/src/test-libc_vfs/hash +++ b/repos/libports/recipes/src/test-libc_vfs/hash @@ -1 +1 @@ -2024-10-07 847b7e168b88c346136a07e129dac21c2dc24f58 +2024-11-19 aa6fa4cec32dc39bdeea10a03abc9551cf5d4c0c diff --git a/repos/libports/recipes/src/test-libc_vfs_block/hash b/repos/libports/recipes/src/test-libc_vfs_block/hash index cfa2c7ef84..9c7c355d3f 100644 --- a/repos/libports/recipes/src/test-libc_vfs_block/hash +++ b/repos/libports/recipes/src/test-libc_vfs_block/hash @@ -1 +1 @@ -2024-10-07 2708fffa7f62cae67ecc506a28d398763e83e059 +2024-11-19 e6e51dd1da3b9e0342ad2d5dc247c30a70c5d25d diff --git a/repos/libports/recipes/src/test-netty/hash b/repos/libports/recipes/src/test-netty/hash index f235c41a23..c654c00117 100644 --- a/repos/libports/recipes/src/test-netty/hash +++ b/repos/libports/recipes/src/test-netty/hash @@ -1 +1 @@ -2024-10-07 674f97807bdff196246309a015d2e146f4ba69db +2024-11-19 c079d583137ee71a600195259a1a0c85a1d8be64 diff --git a/repos/libports/recipes/src/test-pthread/hash b/repos/libports/recipes/src/test-pthread/hash index 550ded54f8..4d79e49b2b 100644 --- a/repos/libports/recipes/src/test-pthread/hash +++ b/repos/libports/recipes/src/test-pthread/hash @@ -1 +1 @@ -2024-10-07 8eb45881c178ef6f9dc7e71dcd34cd8b6235da35 +2024-11-19 56d51c05844bad64cf63d27e878a175a50238ca3 diff --git a/repos/libports/recipes/src/test-spark/hash b/repos/libports/recipes/src/test-spark/hash index 99f40fef88..f90caec847 100644 --- a/repos/libports/recipes/src/test-spark/hash +++ b/repos/libports/recipes/src/test-spark/hash @@ -1 +1 @@ -2024-10-07 1b81dcaecfa1791987fd6cb530043806011ae59c +2024-11-19 4de7d32dc190b8ce2323298c43e46c1b9834a9cd diff --git a/repos/libports/recipes/src/test-spark_exception/hash b/repos/libports/recipes/src/test-spark_exception/hash index 13ca74bb95..ac0d52ad92 100644 --- a/repos/libports/recipes/src/test-spark_exception/hash +++ b/repos/libports/recipes/src/test-spark_exception/hash @@ -1 +1 @@ -2024-10-07 7bf0c4de6a88556d5c8fefdd384811b5980b0ab9 +2024-11-19 64ed069b917a2dc0ee42d92137c9897ee434eb70 diff --git a/repos/libports/recipes/src/test-spark_secondary_stack/hash b/repos/libports/recipes/src/test-spark_secondary_stack/hash index 7182463d52..db075abf54 100644 --- a/repos/libports/recipes/src/test-spark_secondary_stack/hash +++ b/repos/libports/recipes/src/test-spark_secondary_stack/hash @@ -1 +1 @@ -2024-10-07 e2ee92666491441f616a4125cfb4b3b21cb0bf68 +2024-11-19 a1fadb9f5c75cee3a08413466f3450c4641b39ce diff --git a/repos/libports/recipes/src/test-tcp/hash b/repos/libports/recipes/src/test-tcp/hash index 4140ae1626..41c3fca89b 100644 --- a/repos/libports/recipes/src/test-tcp/hash +++ b/repos/libports/recipes/src/test-tcp/hash @@ -1 +1 @@ -2024-10-07 8df87228617c9264ca083ab189ccd29c047e31df +2024-11-19 e2b360198a80eea74c41d1aa22f41fe28e8166ef diff --git a/repos/libports/recipes/src/usb_webcam/hash b/repos/libports/recipes/src/usb_webcam/hash index b4d2e8bbe4..c2e0a2c422 100644 --- a/repos/libports/recipes/src/usb_webcam/hash +++ b/repos/libports/recipes/src/usb_webcam/hash @@ -1 +1 @@ -2024-10-29 9275c1c6a134dbde70058bcda993a4495c6c2860 +2024-11-19 c10a61c1fb23add009a686aed5dd7930518fb060 diff --git a/repos/libports/recipes/src/vesa_fb/hash b/repos/libports/recipes/src/vesa_fb/hash index ac586eda4e..3de1bd0262 100644 --- a/repos/libports/recipes/src/vesa_fb/hash +++ b/repos/libports/recipes/src/vesa_fb/hash @@ -1 +1 @@ -2024-10-07 293c91a0e3aa005a5292d2bb7b9ce89fc4262b1e +2024-11-19 65507ac89376f6c5cf439a9beef6d7cc2299bf45 diff --git a/repos/libports/recipes/src/vfs_fatfs/hash b/repos/libports/recipes/src/vfs_fatfs/hash index 107af35c92..8b95dcca42 100644 --- a/repos/libports/recipes/src/vfs_fatfs/hash +++ b/repos/libports/recipes/src/vfs_fatfs/hash @@ -1 +1 @@ -2024-10-07 5f1d9932ddb67a5ab0692972d1e798833de0e8ab +2024-11-19 d5ad900ec4672380ecdfc971cede826162f8b3b6 diff --git a/repos/libports/recipes/src/vfs_jitterentropy/hash b/repos/libports/recipes/src/vfs_jitterentropy/hash index 49bd950795..bc2a28044f 100644 --- a/repos/libports/recipes/src/vfs_jitterentropy/hash +++ b/repos/libports/recipes/src/vfs_jitterentropy/hash @@ -1 +1 @@ -2024-10-07 c8dce10877e5e54f187def95ec386467954513f3 +2024-11-19 d5dc3ac51a4e2f423b0a1213e3a58e2a4d50de50 diff --git a/repos/libports/recipes/src/vfs_legacy_oss/hash b/repos/libports/recipes/src/vfs_legacy_oss/hash index ab62c51114..b468f13459 100644 --- a/repos/libports/recipes/src/vfs_legacy_oss/hash +++ b/repos/libports/recipes/src/vfs_legacy_oss/hash @@ -1 +1 @@ -2024-11-04 a97cc8af9f67f6375f56a316f668c531c794ebcc +2024-11-19 0770c4ef42272fa46a203930e0f6f811149eb06d diff --git a/repos/libports/recipes/src/vfs_libusb/hash b/repos/libports/recipes/src/vfs_libusb/hash index 2daf342b02..6437f4d3d2 100644 --- a/repos/libports/recipes/src/vfs_libusb/hash +++ b/repos/libports/recipes/src/vfs_libusb/hash @@ -1 +1 @@ -2024-10-07 3b8019c38c00e1aad94858e4556cadd294c14840 +2024-11-19 bf694a29e515ab709e6c74720149ccd4aeb48f5b diff --git a/repos/libports/recipes/src/vfs_lwip/hash b/repos/libports/recipes/src/vfs_lwip/hash index 296f21b0d1..c334070b7d 100644 --- a/repos/libports/recipes/src/vfs_lwip/hash +++ b/repos/libports/recipes/src/vfs_lwip/hash @@ -1 +1 @@ -2024-10-07 65f4c29a9ba1912625cb5aa8c2c4696e5907f89e +2024-11-19 2f4ed741932180d50ff3a6cf4e752a772c39febf diff --git a/repos/os/recipes/pkg/black_hole/hash b/repos/os/recipes/pkg/black_hole/hash index 4bd2fe18f0..4c571a1d38 100644 --- a/repos/os/recipes/pkg/black_hole/hash +++ b/repos/os/recipes/pkg/black_hole/hash @@ -1 +1 @@ -2024-10-07 9bd6c0588306788642646dedeca08d5e8c9bfed3 +2024-11-19 0c18db8cabbea5b82d7dd3a3f605bd917c80a728 diff --git a/repos/os/recipes/pkg/chroot/hash b/repos/os/recipes/pkg/chroot/hash index 8d4e8cf560..d8ed885d8a 100644 --- a/repos/os/recipes/pkg/chroot/hash +++ b/repos/os/recipes/pkg/chroot/hash @@ -1 +1 @@ -2024-10-07 4e0e5109687970456c9b1a634ae94b62aa30b6b9 +2024-11-19 69197573596211253676a9d8f25c1ffaffb5f0b2 diff --git a/repos/os/recipes/pkg/clipboard/hash b/repos/os/recipes/pkg/clipboard/hash index 269fabcf21..bcc857ebaf 100644 --- a/repos/os/recipes/pkg/clipboard/hash +++ b/repos/os/recipes/pkg/clipboard/hash @@ -1 +1 @@ -2024-10-07 05e6d7074a80668b8620852197724e2632a0e730 +2024-11-19 34667e1da378a56658179c73b3910f912495a5e3 diff --git a/repos/os/recipes/pkg/cpu_balancer/hash b/repos/os/recipes/pkg/cpu_balancer/hash index 2a0eb56f56..40d8cc560c 100644 --- a/repos/os/recipes/pkg/cpu_balancer/hash +++ b/repos/os/recipes/pkg/cpu_balancer/hash @@ -1 +1 @@ -2024-10-07 42320b4f949aa08268427a8577824bbd0c9dbb5e +2024-11-19 6eeaa115085efdf5d9669bc1c14567df7865d285 diff --git a/repos/os/recipes/pkg/cpu_balancer_config/hash b/repos/os/recipes/pkg/cpu_balancer_config/hash index b6762b2530..c65346a737 100644 --- a/repos/os/recipes/pkg/cpu_balancer_config/hash +++ b/repos/os/recipes/pkg/cpu_balancer_config/hash @@ -1 +1 @@ -2024-10-29 2652b6da0140934036a8650886a0ee2eb1c390c1 +2024-11-19 1eea9af3c8702f66cddbbffcb9ed7f548a5a6689 diff --git a/repos/os/recipes/pkg/cpu_burner/hash b/repos/os/recipes/pkg/cpu_burner/hash index f5df2ecd0b..0f46b76d1a 100644 --- a/repos/os/recipes/pkg/cpu_burner/hash +++ b/repos/os/recipes/pkg/cpu_burner/hash @@ -1 +1 @@ -2024-10-07 a655005b71e39b51e7804567516876ab3b64c6a2 +2024-11-19 5d5fdfeafb466f5f6692a783eb298f34f30ddaa1 diff --git a/repos/os/recipes/pkg/drivers_interactive-linux/hash b/repos/os/recipes/pkg/drivers_interactive-linux/hash index 408a3780b3..5e7f55dbb0 100644 --- a/repos/os/recipes/pkg/drivers_interactive-linux/hash +++ b/repos/os/recipes/pkg/drivers_interactive-linux/hash @@ -1 +1 @@ -2024-10-07 fe75f05114178de80790976d679f54bb03284fc0 +2024-11-19 013bf50e5695458da59bfe45355b88685bd50314 diff --git a/repos/os/recipes/pkg/drivers_interactive-pbxa9/hash b/repos/os/recipes/pkg/drivers_interactive-pbxa9/hash index e93bf9c1c8..491bd8b2e6 100644 --- a/repos/os/recipes/pkg/drivers_interactive-pbxa9/hash +++ b/repos/os/recipes/pkg/drivers_interactive-pbxa9/hash @@ -1 +1 @@ -2024-10-29 7fd87fef93b444b6ac145efeed6d5b43ecd6fef3 +2024-11-19 035efd2e2b5625c385cf6735b92bea9eead16a8b diff --git a/repos/os/recipes/pkg/drivers_interactive-pc/hash b/repos/os/recipes/pkg/drivers_interactive-pc/hash index 127db235a5..7e96f5c774 100644 --- a/repos/os/recipes/pkg/drivers_interactive-pc/hash +++ b/repos/os/recipes/pkg/drivers_interactive-pc/hash @@ -1 +1 @@ -2024-10-29 cbf5296ebe8b17933c7e450863f6e53d9db6f480 +2024-11-19 eb528a3c36e86f422dab23226b729c9f5e516928 diff --git a/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash b/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash index d7ee7e13df..645b6e2834 100644 --- a/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash +++ b/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash @@ -1 +1 @@ -2024-10-29 c65742bf7954ff5f626a6e053242e13b332f0a5d +2024-11-19 d8f18325b09d52d031ac97ee9b4e97f8e6763489 diff --git a/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash b/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash index d7ee7e13df..645b6e2834 100644 --- a/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash +++ b/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash @@ -1 +1 @@ -2024-10-29 c65742bf7954ff5f626a6e053242e13b332f0a5d +2024-11-19 d8f18325b09d52d031ac97ee9b4e97f8e6763489 diff --git a/repos/os/recipes/pkg/drivers_nic-linux/hash b/repos/os/recipes/pkg/drivers_nic-linux/hash index 99fe172287..56a06dc955 100644 --- a/repos/os/recipes/pkg/drivers_nic-linux/hash +++ b/repos/os/recipes/pkg/drivers_nic-linux/hash @@ -1 +1 @@ -2024-10-07 8bb3dde85b14ea49e9ed7b67183cf306a48519e8 +2024-11-19 26ae34a6c28744ad5a89f79c6f29180be9e44f80 diff --git a/repos/os/recipes/pkg/drivers_nic-pbxa9/hash b/repos/os/recipes/pkg/drivers_nic-pbxa9/hash index ebda0c04fc..dc78ba4e43 100644 --- a/repos/os/recipes/pkg/drivers_nic-pbxa9/hash +++ b/repos/os/recipes/pkg/drivers_nic-pbxa9/hash @@ -1 +1 @@ -2024-10-29 3519b448c5c8db6bd36b7e5ae75843654b4071cc +2024-11-19 2df1041a1d2e6d274ceb1088323e70faafe393c9 diff --git a/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash b/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash index 35fc26c07f..966badb9a7 100644 --- a/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash +++ b/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash @@ -1 +1 @@ -2024-10-29 590ddae3de684b98a6092a55bdaeb1ca26491cfc +2024-11-19 4d2c28e4b23168e91014d6153b55dae10e892f7c diff --git a/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash b/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash index 35fc26c07f..966badb9a7 100644 --- a/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash +++ b/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash @@ -1 +1 @@ -2024-10-29 590ddae3de684b98a6092a55bdaeb1ca26491cfc +2024-11-19 4d2c28e4b23168e91014d6153b55dae10e892f7c diff --git a/repos/os/recipes/pkg/dynamic_rom/hash b/repos/os/recipes/pkg/dynamic_rom/hash index fce05cd4b5..bbce63de5c 100644 --- a/repos/os/recipes/pkg/dynamic_rom/hash +++ b/repos/os/recipes/pkg/dynamic_rom/hash @@ -1 +1 @@ -2024-10-07 3e920a2d88fe80210b24d2101081b30d43ff2d08 +2024-11-19 3f8780f1bcc49435700c87944b7e540d31e2e99e diff --git a/repos/os/recipes/pkg/fs_report/hash b/repos/os/recipes/pkg/fs_report/hash index 86e1ace4fc..f7035c7a65 100644 --- a/repos/os/recipes/pkg/fs_report/hash +++ b/repos/os/recipes/pkg/fs_report/hash @@ -1 +1 @@ -2024-10-07 d6a6b04e221fd26d85735ba238a083e5d9dc3b1f +2024-11-19 ad7ba0f86a828695a0bb3dfb4df353da91a3ac3c diff --git a/repos/os/recipes/pkg/fs_rom/hash b/repos/os/recipes/pkg/fs_rom/hash index 871f398e15..5fa88fbb46 100644 --- a/repos/os/recipes/pkg/fs_rom/hash +++ b/repos/os/recipes/pkg/fs_rom/hash @@ -1 +1 @@ -2024-10-07 1fcef49a3e5af3981473235b24ce3057953de9f2 +2024-11-19 a602a1f867225803fdf3405d8e3c130d940ecb40 diff --git a/repos/os/recipes/pkg/mixer/hash b/repos/os/recipes/pkg/mixer/hash index f01dc9f102..76aab0d0f2 100644 --- a/repos/os/recipes/pkg/mixer/hash +++ b/repos/os/recipes/pkg/mixer/hash @@ -1 +1 @@ -2024-10-07 8c67fb628dd89c804db27025ca342947df06b998 +2024-11-19 c59f0b664a34d06f7625ad721a14f6426177d3a8 diff --git a/repos/os/recipes/pkg/nic_router-nat/hash b/repos/os/recipes/pkg/nic_router-nat/hash index 17adec7366..f84b641b33 100644 --- a/repos/os/recipes/pkg/nic_router-nat/hash +++ b/repos/os/recipes/pkg/nic_router-nat/hash @@ -1 +1 @@ -2024-10-29 1be93207edb60041f32314e88ef6eca76fa1d27e +2024-11-19 1690b91c3b62fbe8f170e44c99ff1222f98a0f60 diff --git a/repos/os/recipes/pkg/nic_uplink/hash b/repos/os/recipes/pkg/nic_uplink/hash index 83f48a8fc2..66761eca96 100644 --- a/repos/os/recipes/pkg/nic_uplink/hash +++ b/repos/os/recipes/pkg/nic_uplink/hash @@ -1 +1 @@ -2024-10-07 86e70710569d37abb00463f56913a7c51808f59b +2024-11-19 758909c94f61dc6822eceee0c79b1ef03135f2c9 diff --git a/repos/os/recipes/pkg/nit_focus/hash b/repos/os/recipes/pkg/nit_focus/hash index 340832fdb8..3933a9059a 100644 --- a/repos/os/recipes/pkg/nit_focus/hash +++ b/repos/os/recipes/pkg/nit_focus/hash @@ -1 +1 @@ -2024-10-07 38c4667b5001da0a9763cd23d50bca597c416340 +2024-11-19 ad4895992da685993e95d7e5e88a338e73ac5fe0 diff --git a/repos/os/recipes/pkg/nitpicker/hash b/repos/os/recipes/pkg/nitpicker/hash index b6ee41ef95..304451f1cc 100644 --- a/repos/os/recipes/pkg/nitpicker/hash +++ b/repos/os/recipes/pkg/nitpicker/hash @@ -1 +1 @@ -2024-11-04 a8b16b02840b8144ef442d780d2b6daa8aa3bd74 +2024-11-19 4a03491e44c220ca7e60c807a062a69316861389 diff --git a/repos/os/recipes/pkg/part_block/hash b/repos/os/recipes/pkg/part_block/hash index 25062076fd..1268a4c68c 100644 --- a/repos/os/recipes/pkg/part_block/hash +++ b/repos/os/recipes/pkg/part_block/hash @@ -1 +1 @@ -2024-10-07 5057ee7cf05096956fc497d714903626553ad747 +2024-11-19 e026c9065d6aee131b56d2764073a64e80ac28d0 diff --git a/repos/os/recipes/pkg/ping/hash b/repos/os/recipes/pkg/ping/hash index f30053148c..91adb84686 100644 --- a/repos/os/recipes/pkg/ping/hash +++ b/repos/os/recipes/pkg/ping/hash @@ -1 +1 @@ -2024-10-07 e209d28eaaa4820229c8b5954a427f140745cb2b +2024-11-19 4b09636bdcb7b8eaabd5ad3668c4c10e9481adf8 diff --git a/repos/os/recipes/pkg/recall_fs/hash b/repos/os/recipes/pkg/recall_fs/hash index 65803ad4a3..2c9919a8a2 100644 --- a/repos/os/recipes/pkg/recall_fs/hash +++ b/repos/os/recipes/pkg/recall_fs/hash @@ -1 +1 @@ -2024-10-07 d852662ca5204d49850d3df357634326299c1f05 +2024-11-19 1d6007d7f2908753afaa72417ceb64c67450cab0 diff --git a/repos/os/recipes/pkg/record_play_mixer/hash b/repos/os/recipes/pkg/record_play_mixer/hash index 4e60807711..df326479a5 100644 --- a/repos/os/recipes/pkg/record_play_mixer/hash +++ b/repos/os/recipes/pkg/record_play_mixer/hash @@ -1 +1 @@ -2024-10-07 36983b32ea843c2d64332dd385d4d0bbcda2fefa +2024-11-19 deb6e5e90d06a62652eac30daf4892a73819bdba diff --git a/repos/os/recipes/pkg/record_rom/hash b/repos/os/recipes/pkg/record_rom/hash index 874cd52df2..341a4c1bbb 100644 --- a/repos/os/recipes/pkg/record_rom/hash +++ b/repos/os/recipes/pkg/record_rom/hash @@ -1 +1 @@ -2024-10-07 19e7fb28ca85c993e62f7dacf2582e00e5946613 +2024-11-19 5089001086942718f2f307c97273fbe18e9f7be9 diff --git a/repos/os/recipes/pkg/report_rom/hash b/repos/os/recipes/pkg/report_rom/hash index c3d79b1973..9a4701ab37 100644 --- a/repos/os/recipes/pkg/report_rom/hash +++ b/repos/os/recipes/pkg/report_rom/hash @@ -1 +1 @@ -2024-10-07 d0e59d7e43c34bd2f48c990f09f4a086f97a911a +2024-11-19 047b3d1d6cacc3b999ce3ba87737f102b461ffe2 diff --git a/repos/os/recipes/pkg/rom_filter/hash b/repos/os/recipes/pkg/rom_filter/hash index 2a09147da0..42fd934785 100644 --- a/repos/os/recipes/pkg/rom_filter/hash +++ b/repos/os/recipes/pkg/rom_filter/hash @@ -1 +1 @@ -2024-10-07 5e42a6f4538aec3dcb609084dbc11f4ac876dc40 +2024-11-19 d717ba1a448639813b844b07a2545f93f2605200 diff --git a/repos/os/recipes/pkg/rom_reporter/hash b/repos/os/recipes/pkg/rom_reporter/hash index 467c2ddf19..bf00b7e108 100644 --- a/repos/os/recipes/pkg/rom_reporter/hash +++ b/repos/os/recipes/pkg/rom_reporter/hash @@ -1 +1 @@ -2024-10-07 72de81a7b7b70c837fc7bae2b473b45e9d5112d7 +2024-11-19 cd11d26dfa5eecf76a4305e14c4e26a2d6ae9507 diff --git a/repos/os/recipes/pkg/terminal_crosslink/hash b/repos/os/recipes/pkg/terminal_crosslink/hash index 369b031fd7..921866492d 100644 --- a/repos/os/recipes/pkg/terminal_crosslink/hash +++ b/repos/os/recipes/pkg/terminal_crosslink/hash @@ -1 +1 @@ -2024-10-07 5f5f251851bfb6c38ab37cf669ffe71e395f3d53 +2024-11-19 0e104ed142c46849da0233b2db936cf01e077231 diff --git a/repos/os/recipes/pkg/test-audio_out/hash b/repos/os/recipes/pkg/test-audio_out/hash index a50e1f82c2..9a37d5f823 100644 --- a/repos/os/recipes/pkg/test-audio_out/hash +++ b/repos/os/recipes/pkg/test-audio_out/hash @@ -1 +1 @@ -2024-10-07 dfa12739dfc8760c800b861a4f63c100c77e3663 +2024-11-19 c8e83440125d59667dff7dcfe553f66b9b0292dd diff --git a/repos/os/recipes/pkg/test-black_hole/hash b/repos/os/recipes/pkg/test-black_hole/hash index 67fd4378a7..5766b6bee4 100644 --- a/repos/os/recipes/pkg/test-black_hole/hash +++ b/repos/os/recipes/pkg/test-black_hole/hash @@ -1 +1 @@ -2024-10-29 8e91425738a8481d245a29bb54686dbdb65bc5ed +2024-11-19 c97ed325331ed7a7beda5b6d16ba9e1c642a8a25 diff --git a/repos/os/recipes/pkg/test-capture/hash b/repos/os/recipes/pkg/test-capture/hash index 9d2c45288c..a73c5fbc14 100644 --- a/repos/os/recipes/pkg/test-capture/hash +++ b/repos/os/recipes/pkg/test-capture/hash @@ -1 +1 @@ -2024-10-29 e2adce71309ad149e8b71fd2bdd690c44cc17195 +2024-11-19 ab8bbff4348401f3429fa2cd5928e0f157c0e161 diff --git a/repos/os/recipes/pkg/test-clipboard/hash b/repos/os/recipes/pkg/test-clipboard/hash index 72abfd0480..5e32f0286e 100644 --- a/repos/os/recipes/pkg/test-clipboard/hash +++ b/repos/os/recipes/pkg/test-clipboard/hash @@ -1 +1 @@ -2024-10-29 13274fb642fa993e780d5d5905607206eb09d006 +2024-11-19 42a5bd4b706243239d4546487870970fdb2619d6 diff --git a/repos/os/recipes/pkg/test-dynamic_config/hash b/repos/os/recipes/pkg/test-dynamic_config/hash index 6cb5a288e4..72a495a5d9 100644 --- a/repos/os/recipes/pkg/test-dynamic_config/hash +++ b/repos/os/recipes/pkg/test-dynamic_config/hash @@ -1 +1 @@ -2024-10-29 2d8d5792239b46ae2e27541fa2b957b525640671 +2024-11-19 dd1f18d967e44e3def5bef5a8f16796a1f2b2449 diff --git a/repos/os/recipes/pkg/test-fault_detection/hash b/repos/os/recipes/pkg/test-fault_detection/hash index bf8fe5ada9..f3ab957af3 100644 --- a/repos/os/recipes/pkg/test-fault_detection/hash +++ b/repos/os/recipes/pkg/test-fault_detection/hash @@ -1 +1 @@ -2024-10-29 b42e27515ea5c91f3189e40d7ee90dd56e5c705b +2024-11-19 3317141fdefce576e9af43e8b2fd596deab04747 diff --git a/repos/os/recipes/pkg/test-fs_packet/hash b/repos/os/recipes/pkg/test-fs_packet/hash index d1c2c5fda7..71af45ebcd 100644 --- a/repos/os/recipes/pkg/test-fs_packet/hash +++ b/repos/os/recipes/pkg/test-fs_packet/hash @@ -1 +1 @@ -2024-10-29 e691841c9e606e3e071b44949a75b2a20660bc4d +2024-11-19 6160fb6e90916ba18b5e16b311e206aef81648dd diff --git a/repos/os/recipes/pkg/test-fs_report/hash b/repos/os/recipes/pkg/test-fs_report/hash index 7499db3a38..d2fba7b8e4 100644 --- a/repos/os/recipes/pkg/test-fs_report/hash +++ b/repos/os/recipes/pkg/test-fs_report/hash @@ -1 +1 @@ -2024-11-04 b0bb30031044782763d2380769934d8be00f5eb7 +2024-11-19 a613b0c5d0fb4a430442aee717088366dadfb7bf diff --git a/repos/os/recipes/pkg/test-fs_rom_update/hash b/repos/os/recipes/pkg/test-fs_rom_update/hash index ce969b9a36..bdf60592ce 100644 --- a/repos/os/recipes/pkg/test-fs_rom_update/hash +++ b/repos/os/recipes/pkg/test-fs_rom_update/hash @@ -1 +1 @@ -2024-10-29 dfd94d4a9c635aa98eed4321a15841dd22c61f36 +2024-11-19 8ff36f19c2a084db72cbd460c578685e3d180429 diff --git a/repos/os/recipes/pkg/test-fs_rom_update_fs/hash b/repos/os/recipes/pkg/test-fs_rom_update_fs/hash index 4c614b7c97..9fa4670f05 100644 --- a/repos/os/recipes/pkg/test-fs_rom_update_fs/hash +++ b/repos/os/recipes/pkg/test-fs_rom_update_fs/hash @@ -1 +1 @@ -2024-10-29 c6562a3deaa49dbd8e5099d75faabb3f7cf0a7ee +2024-11-19 a7f8fa8537b095c15e4b82d7ac7fa5adda395210 diff --git a/repos/os/recipes/pkg/test-fs_rom_update_ram/hash b/repos/os/recipes/pkg/test-fs_rom_update_ram/hash index 49a5d8e571..f910983275 100644 --- a/repos/os/recipes/pkg/test-fs_rom_update_ram/hash +++ b/repos/os/recipes/pkg/test-fs_rom_update_ram/hash @@ -1 +1 @@ -2024-10-29 fa840f100f29acf712af94aa679c15776a368dbe +2024-11-19 b0e904105cc7727f54574d95c8ec7ffbf328b4a0 diff --git a/repos/os/recipes/pkg/test-init/hash b/repos/os/recipes/pkg/test-init/hash index ac6bcb96f8..548a5f2ab9 100644 --- a/repos/os/recipes/pkg/test-init/hash +++ b/repos/os/recipes/pkg/test-init/hash @@ -1 +1 @@ -2024-10-29 5e33957c26b7a95e91a376a04d4a546c0d467439 +2024-11-19 9eb62e7a04ca5682adf51a19dce738cc2bf42363 diff --git a/repos/os/recipes/pkg/test-init_loop/hash b/repos/os/recipes/pkg/test-init_loop/hash index 9907da64ad..64a133e269 100644 --- a/repos/os/recipes/pkg/test-init_loop/hash +++ b/repos/os/recipes/pkg/test-init_loop/hash @@ -1 +1 @@ -2024-10-29 0de05ed2ea1c24a1d6466a009bd08b6cccd43c5c +2024-11-19 8fce54d3984c07fd2f24094538c62baf633bb9ad diff --git a/repos/os/recipes/pkg/test-lx_block/hash b/repos/os/recipes/pkg/test-lx_block/hash index b1470af1fd..04969c375e 100644 --- a/repos/os/recipes/pkg/test-lx_block/hash +++ b/repos/os/recipes/pkg/test-lx_block/hash @@ -1 +1 @@ -2024-10-29 1b5f5d5dbe94e0500f7846072e2fe9ae4dca847b +2024-11-19 779d5c6d02e5b1a7ec6fe4a090ca4355d5cb3441 diff --git a/repos/os/recipes/pkg/test-nic_loopback/hash b/repos/os/recipes/pkg/test-nic_loopback/hash index 4201726b72..d3df61c156 100644 --- a/repos/os/recipes/pkg/test-nic_loopback/hash +++ b/repos/os/recipes/pkg/test-nic_loopback/hash @@ -1 +1 @@ -2024-10-29 065a5776da64ae848f7ea38e3e5da41810af12a7 +2024-11-19 1a4b3efcf2e9e69caf6b06095164d7c30b0bb533 diff --git a/repos/os/recipes/pkg/test-nic_perf/hash b/repos/os/recipes/pkg/test-nic_perf/hash index 8dc435e875..2460afb364 100644 --- a/repos/os/recipes/pkg/test-nic_perf/hash +++ b/repos/os/recipes/pkg/test-nic_perf/hash @@ -1 +1 @@ -2024-10-29 26460394ed91ae4e5f7786545e707f3930a2e378 +2024-11-19 b6cf03066bc201e61e8caf5c8a0f84f4c6ff5055 diff --git a/repos/os/recipes/pkg/test-nic_perf_router/hash b/repos/os/recipes/pkg/test-nic_perf_router/hash index d55f7c41c9..a9462078ca 100644 --- a/repos/os/recipes/pkg/test-nic_perf_router/hash +++ b/repos/os/recipes/pkg/test-nic_perf_router/hash @@ -1 +1 @@ -2024-10-29 56036f5aed956c625c0bcf206f8812348a44e3d9 +2024-11-19 d18e4ed5813bc8c28f66af3dadeafe597525c807 diff --git a/repos/os/recipes/pkg/test-part_block_ahdi/hash b/repos/os/recipes/pkg/test-part_block_ahdi/hash index 765837c16f..88af745f0e 100644 --- a/repos/os/recipes/pkg/test-part_block_ahdi/hash +++ b/repos/os/recipes/pkg/test-part_block_ahdi/hash @@ -1 +1 @@ -2024-10-29 9819a3c6ffd5eb190b32a0c866df88a665fa0e5e +2024-11-19 c58c4dd8baf327914c6d308f678641475a0e03f0 diff --git a/repos/os/recipes/pkg/test-part_block_disk/hash b/repos/os/recipes/pkg/test-part_block_disk/hash index 11a2416a24..a64603d928 100644 --- a/repos/os/recipes/pkg/test-part_block_disk/hash +++ b/repos/os/recipes/pkg/test-part_block_disk/hash @@ -1 +1 @@ -2024-10-29 11fc947d3df1e8cbf0c0b9d0d474153d43245ada +2024-11-19 d7ac9fee76e24264b1705853a8a6ea802ebfa324 diff --git a/repos/os/recipes/pkg/test-part_block_gpt/hash b/repos/os/recipes/pkg/test-part_block_gpt/hash index dec332cf93..d046af8bde 100644 --- a/repos/os/recipes/pkg/test-part_block_gpt/hash +++ b/repos/os/recipes/pkg/test-part_block_gpt/hash @@ -1 +1 @@ -2024-10-29 97a712f0f7294f3e9c5e7e971c8951dcef58e585 +2024-11-19 9fbe1d3ec49dd6596941c5d8755cd4754001fe64 diff --git a/repos/os/recipes/pkg/test-part_block_mbr/hash b/repos/os/recipes/pkg/test-part_block_mbr/hash index 2dfe42ebfd..9c5028cd1c 100644 --- a/repos/os/recipes/pkg/test-part_block_mbr/hash +++ b/repos/os/recipes/pkg/test-part_block_mbr/hash @@ -1 +1 @@ -2024-10-29 1aad6ee4b529974246f7208e19d276235f17b49d +2024-11-19 c6fc9d07872cc543667a4ccf8d92de48ccfbf495 diff --git a/repos/os/recipes/pkg/test-path/hash b/repos/os/recipes/pkg/test-path/hash index fba0caa292..334b29753e 100644 --- a/repos/os/recipes/pkg/test-path/hash +++ b/repos/os/recipes/pkg/test-path/hash @@ -1 +1 @@ -2024-10-29 f749771d7e8e073125381650592f294e8e96d30a +2024-11-19 45077cf539f4ce433677eacd41a3dd4e91c57e44 diff --git a/repos/os/recipes/pkg/test-ram_fs_chunk/hash b/repos/os/recipes/pkg/test-ram_fs_chunk/hash index 26fd6919a0..cd8163cf4a 100644 --- a/repos/os/recipes/pkg/test-ram_fs_chunk/hash +++ b/repos/os/recipes/pkg/test-ram_fs_chunk/hash @@ -1 +1 @@ -2024-10-29 390ae3c8dce0bb2bb0bcfe8b9c1f48e3a774a465 +2024-11-19 4036ae7d65e5425a21ec046907adf6d50bdcc1e1 diff --git a/repos/os/recipes/pkg/test-read_only_rom/hash b/repos/os/recipes/pkg/test-read_only_rom/hash index 75ab567d7c..268585fb08 100644 --- a/repos/os/recipes/pkg/test-read_only_rom/hash +++ b/repos/os/recipes/pkg/test-read_only_rom/hash @@ -1 +1 @@ -2024-10-29 f8f81348c752b4f731757c83a81bbdc06157ddfa +2024-11-19 a94ee0d1f8a1cf09f9ff43ef85c140a2037d6176 diff --git a/repos/os/recipes/pkg/test-report_rom/hash b/repos/os/recipes/pkg/test-report_rom/hash index 52a493b7cf..7ca1f028fa 100644 --- a/repos/os/recipes/pkg/test-report_rom/hash +++ b/repos/os/recipes/pkg/test-report_rom/hash @@ -1 +1 @@ -2024-10-29 80ca734e2b1b7636eb634c0f47f6a194b3206ea8 +2024-11-19 03597178300df776b3aa904cd75534966ff300fa diff --git a/repos/os/recipes/pkg/test-resource_request/hash b/repos/os/recipes/pkg/test-resource_request/hash index 63c371958d..6505c18d84 100644 --- a/repos/os/recipes/pkg/test-resource_request/hash +++ b/repos/os/recipes/pkg/test-resource_request/hash @@ -1 +1 @@ -2024-10-29 eb6e572609e92e20d1c59561819997c293543b5d +2024-11-19 0ad3bff892431ac03d13ca192be94538569b913c diff --git a/repos/os/recipes/pkg/test-resource_yield/hash b/repos/os/recipes/pkg/test-resource_yield/hash index f9fef8fd1e..aec01a8510 100644 --- a/repos/os/recipes/pkg/test-resource_yield/hash +++ b/repos/os/recipes/pkg/test-resource_yield/hash @@ -1 +1 @@ -2024-10-29 111c103af3b4a5797cf6ef95e347e9aa0a9cabd5 +2024-11-19 cae59355592f5732838c1e933bc742fdbc20e5e7 diff --git a/repos/os/recipes/pkg/test-rom_filter/hash b/repos/os/recipes/pkg/test-rom_filter/hash index c118768f10..aed9249f42 100644 --- a/repos/os/recipes/pkg/test-rom_filter/hash +++ b/repos/os/recipes/pkg/test-rom_filter/hash @@ -1 +1 @@ -2024-10-29 f01d7e131c08eda711765b02a854c549f9720b3a +2024-11-19 39ac7fb59ca41a6e0cefde90debab9cadd7de102 diff --git a/repos/os/recipes/pkg/test-rtc/hash b/repos/os/recipes/pkg/test-rtc/hash index d3e582bf92..2b05a2ff59 100644 --- a/repos/os/recipes/pkg/test-rtc/hash +++ b/repos/os/recipes/pkg/test-rtc/hash @@ -1 +1 @@ -2024-10-29 0b011339a81045003209eb4cc9df39c01c1da399 +2024-11-19 c9067384737dc2fc27e88689906942d83be444c2 diff --git a/repos/os/recipes/pkg/test-sandbox/hash b/repos/os/recipes/pkg/test-sandbox/hash index 1c46a58e61..4f4777ed90 100644 --- a/repos/os/recipes/pkg/test-sandbox/hash +++ b/repos/os/recipes/pkg/test-sandbox/hash @@ -1 +1 @@ -2024-10-29 91f342764a32d57adfba19ab335db7a8c187a628 +2024-11-19 d61c7c27396b27a147d4e690bf2a7c12c2db56d9 diff --git a/repos/os/recipes/pkg/test-signal/hash b/repos/os/recipes/pkg/test-signal/hash index b5416499d4..20e569e913 100644 --- a/repos/os/recipes/pkg/test-signal/hash +++ b/repos/os/recipes/pkg/test-signal/hash @@ -1 +1 @@ -2024-10-29 7fb44e6027d60752777d81684298970674f59b9f +2024-11-19 3ded4c4f6ad338483799840cd8e8487cfd770267 diff --git a/repos/os/recipes/pkg/test-slab/hash b/repos/os/recipes/pkg/test-slab/hash index 80e26b74e5..496f8cae0d 100644 --- a/repos/os/recipes/pkg/test-slab/hash +++ b/repos/os/recipes/pkg/test-slab/hash @@ -1 +1 @@ -2024-10-29 c1031e87716faad42da3371cfbdf697a4ec2b97a +2024-11-19 9f7d1cb867ff3f1abfe7cb56c0e0e0686dac2874 diff --git a/repos/os/recipes/pkg/test-terminal_crosslink/hash b/repos/os/recipes/pkg/test-terminal_crosslink/hash index 149a50ec31..f670cab871 100644 --- a/repos/os/recipes/pkg/test-terminal_crosslink/hash +++ b/repos/os/recipes/pkg/test-terminal_crosslink/hash @@ -1 +1 @@ -2024-10-29 f6528ba9319e52936eeab8052d4442f3e8f81c07 +2024-11-19 86bcc36d247109c0b8374f6aad47c27bffd5f930 diff --git a/repos/os/recipes/pkg/test-trace/hash b/repos/os/recipes/pkg/test-trace/hash index 41f748a7e3..7abf3faab0 100644 --- a/repos/os/recipes/pkg/test-trace/hash +++ b/repos/os/recipes/pkg/test-trace/hash @@ -1 +1 @@ -2024-10-29 dc74d390b555d461e17910e3c29907e3c2bd684b +2024-11-19 bc69befd27c01e4252e610c666121c673d99fe61 diff --git a/repos/os/recipes/pkg/test-trace_buffer/hash b/repos/os/recipes/pkg/test-trace_buffer/hash index a857e036fc..6f33bbcca1 100644 --- a/repos/os/recipes/pkg/test-trace_buffer/hash +++ b/repos/os/recipes/pkg/test-trace_buffer/hash @@ -1 +1 @@ -2024-10-29 daaf414b7f42038fed4837271efe5678079a66e5 +2024-11-19 f00952542bb718ac3a23d072c2f2f2b5674b5ae3 diff --git a/repos/os/recipes/pkg/test-trace_logger/hash b/repos/os/recipes/pkg/test-trace_logger/hash index bb356ca4a5..5bc22ad2ad 100644 --- a/repos/os/recipes/pkg/test-trace_logger/hash +++ b/repos/os/recipes/pkg/test-trace_logger/hash @@ -1 +1 @@ -2024-10-29 51ef079e0e6dd473937cd77b31b333797f51185f +2024-11-19 8a25120a772102c8386ce38257b3873090cdd739 diff --git a/repos/os/recipes/pkg/test-utf8/hash b/repos/os/recipes/pkg/test-utf8/hash index 435e23bb20..527a02dec0 100644 --- a/repos/os/recipes/pkg/test-utf8/hash +++ b/repos/os/recipes/pkg/test-utf8/hash @@ -1 +1 @@ -2024-10-29 6c8c70bb41d392498fc9a7b3fdd08596e51edcb5 +2024-11-19 6d3170304654b3cdaa3e1d70295410f4cc0273a2 diff --git a/repos/os/recipes/pkg/test-vfs_block/hash b/repos/os/recipes/pkg/test-vfs_block/hash index 60eacc0856..06d4b7dbb1 100644 --- a/repos/os/recipes/pkg/test-vfs_block/hash +++ b/repos/os/recipes/pkg/test-vfs_block/hash @@ -1 +1 @@ -2024-11-04 5423ed8ff627b236d0d27d88dab918ebea85584b +2024-11-19 e0f2db579830f4529f24f7d82b44e8bf90a5fed5 diff --git a/repos/os/recipes/pkg/test-vfs_stress_fs/hash b/repos/os/recipes/pkg/test-vfs_stress_fs/hash index 3272537d93..b7e66273da 100644 --- a/repos/os/recipes/pkg/test-vfs_stress_fs/hash +++ b/repos/os/recipes/pkg/test-vfs_stress_fs/hash @@ -1 +1 @@ -2024-10-29 759853c66f17e1e1dc0061948a957ddabc6c1b4c +2024-11-19 836feff0469e9d706ed73b5b78461112c4b24a3b diff --git a/repos/os/recipes/pkg/test-vfs_stress_ram/hash b/repos/os/recipes/pkg/test-vfs_stress_ram/hash index 92d5763f49..074f9de6f2 100644 --- a/repos/os/recipes/pkg/test-vfs_stress_ram/hash +++ b/repos/os/recipes/pkg/test-vfs_stress_ram/hash @@ -1 +1 @@ -2024-10-29 f4e3835332a91e30c0028c9e87236e3150e62432 +2024-11-19 8cd35325d27dfd6ee33b8e9ddeb1aa1d5ddcb966 diff --git a/repos/os/recipes/pkg/test-weak_ptr/hash b/repos/os/recipes/pkg/test-weak_ptr/hash index 62415f0d5f..d3ae5291d5 100644 --- a/repos/os/recipes/pkg/test-weak_ptr/hash +++ b/repos/os/recipes/pkg/test-weak_ptr/hash @@ -1 +1 @@ -2024-10-29 44a54527a8b2f8600572b88dbe579e249fdb3773 +2024-11-19 e8a891ff2e160ecc87faac816a5ed280b68a531d diff --git a/repos/os/recipes/pkg/top/hash b/repos/os/recipes/pkg/top/hash index 29b6cd6e8e..6d0cb944da 100644 --- a/repos/os/recipes/pkg/top/hash +++ b/repos/os/recipes/pkg/top/hash @@ -1 +1 @@ -2024-10-07 ae977373541c22027e0bd50173b82c35290a5b4f +2024-11-19 3e76d21eea75505f36fb1c8c69ae9f266d58fe50 diff --git a/repos/os/recipes/pkg/trace_logger/hash b/repos/os/recipes/pkg/trace_logger/hash index d538980e94..4ea468bc4f 100644 --- a/repos/os/recipes/pkg/trace_logger/hash +++ b/repos/os/recipes/pkg/trace_logger/hash @@ -1 +1 @@ -2024-10-07 a31b597e5b1693496e7e3de5c839a34ae55b6c26 +2024-11-19 9d0b381749f976c5a02c693d6418768fea6a85f1 diff --git a/repos/os/recipes/pkg/vfs/hash b/repos/os/recipes/pkg/vfs/hash index 27f6e2623d..be9b3d0aad 100644 --- a/repos/os/recipes/pkg/vfs/hash +++ b/repos/os/recipes/pkg/vfs/hash @@ -1 +1 @@ -2024-10-07 cf87501b6f0d4c4039301857ac1420aca223b985 +2024-11-19 4d3ccf07460fbc747f4bbcb4930662e57e6aabe0 diff --git a/repos/os/recipes/pkg/vfs_block/hash b/repos/os/recipes/pkg/vfs_block/hash index d049fd4659..aeed21f06c 100644 --- a/repos/os/recipes/pkg/vfs_block/hash +++ b/repos/os/recipes/pkg/vfs_block/hash @@ -1 +1 @@ -2024-10-07 8d438302672fe733e1224903326417e6c627abe5 +2024-11-19 bed49dcd84aaed91d8e0af78bc874ed6b913ecc8 diff --git a/repos/os/recipes/pkg/waveform_player/hash b/repos/os/recipes/pkg/waveform_player/hash index cd23dcee5a..71aaeac15c 100644 --- a/repos/os/recipes/pkg/waveform_player/hash +++ b/repos/os/recipes/pkg/waveform_player/hash @@ -1 +1 @@ -2024-10-07 db42fd4da2522c5e13d22a6ab1b91a18fa01223a +2024-11-19 8daa33e28fc04922080279156b8c885821542ea8 diff --git a/repos/os/recipes/src/acpi/hash b/repos/os/recipes/src/acpi/hash index 2009d5a7d6..b60c915117 100644 --- a/repos/os/recipes/src/acpi/hash +++ b/repos/os/recipes/src/acpi/hash @@ -1 +1 @@ -2024-10-07 a9b8f441fbece53df10deb116e93f2b5d68ba0e8 +2024-11-19 3fca34f425c8348447f960d911cfb26c76f18a07 diff --git a/repos/os/recipes/src/ahci/hash b/repos/os/recipes/src/ahci/hash index 2092e60977..b79fc7b086 100644 --- a/repos/os/recipes/src/ahci/hash +++ b/repos/os/recipes/src/ahci/hash @@ -1 +1 @@ -2024-10-07 a8e6c92c950bdd495f2c3c5265f1fe4968278021 +2024-11-19 b85832891b5e46b8e87c56c89600fdcfa7e391bc diff --git a/repos/os/recipes/src/black_hole/hash b/repos/os/recipes/src/black_hole/hash index 03c742c236..03b426ab2c 100644 --- a/repos/os/recipes/src/black_hole/hash +++ b/repos/os/recipes/src/black_hole/hash @@ -1 +1 @@ -2024-10-07 f55a6882d8167d53fef9ce61abf46172e3b76b4f +2024-11-19 698855d0818845da30663fa4a6943f5c300835c1 diff --git a/repos/os/recipes/src/block_tester/hash b/repos/os/recipes/src/block_tester/hash index 132da5ceaf..720a779c81 100644 --- a/repos/os/recipes/src/block_tester/hash +++ b/repos/os/recipes/src/block_tester/hash @@ -1 +1 @@ -2024-10-07 ab8abf8b48ff232d3627cfdca6ee0be7583509ac +2024-11-19 5ba64381a98a4b0a0e16240d0f0162695ac2ff49 diff --git a/repos/os/recipes/src/boot_fb/hash b/repos/os/recipes/src/boot_fb/hash index 1d0625b931..18ff9e4ba6 100644 --- a/repos/os/recipes/src/boot_fb/hash +++ b/repos/os/recipes/src/boot_fb/hash @@ -1 +1 @@ -2024-10-07 c5f62af009bc3d151a2713b031273e9375c61b2f +2024-11-19 ef96064624fb0c24eb3646e5ecf4aa7478a4c399 diff --git a/repos/os/recipes/src/cached_fs_rom/hash b/repos/os/recipes/src/cached_fs_rom/hash index f82ebe93b5..acacea35de 100644 --- a/repos/os/recipes/src/cached_fs_rom/hash +++ b/repos/os/recipes/src/cached_fs_rom/hash @@ -1 +1 @@ -2024-10-07 ef5847075b1c7060641ba650814dd0c6c1d61a73 +2024-11-19 512dfe6d7800a7ae5cc3bf93a655a2cd7adfeddf diff --git a/repos/os/recipes/src/chroot/hash b/repos/os/recipes/src/chroot/hash index 236dfe2f22..d595224ff2 100644 --- a/repos/os/recipes/src/chroot/hash +++ b/repos/os/recipes/src/chroot/hash @@ -1 +1 @@ -2024-10-07 52efc9328577945a974eefb621b587918f2777dd +2024-11-19 b5cd9d639cd240b67f81bb9cc3971ea5fe629d57 diff --git a/repos/os/recipes/src/clipboard/hash b/repos/os/recipes/src/clipboard/hash index 62e019fe8b..d773a851e3 100644 --- a/repos/os/recipes/src/clipboard/hash +++ b/repos/os/recipes/src/clipboard/hash @@ -1 +1 @@ -2024-10-07 e4f492f05895c4ca9c304f318951a7466aa78304 +2024-11-19 124fb14f6393b6d4523f621ce44be28aaf300955 diff --git a/repos/os/recipes/src/cpu_balancer/hash b/repos/os/recipes/src/cpu_balancer/hash index 44f73a7e4a..f7d42032d8 100644 --- a/repos/os/recipes/src/cpu_balancer/hash +++ b/repos/os/recipes/src/cpu_balancer/hash @@ -1 +1 @@ -2024-10-07 c601e2b3f7c5ccf6625c04690ec2373ce1d0dfe7 +2024-11-19 715f7b06b6ef45c41e81257e88d881d5fdc789aa diff --git a/repos/os/recipes/src/cpu_burner/hash b/repos/os/recipes/src/cpu_burner/hash index da3b5faa75..ff79da242f 100644 --- a/repos/os/recipes/src/cpu_burner/hash +++ b/repos/os/recipes/src/cpu_burner/hash @@ -1 +1 @@ -2024-10-07 c639a03bfc8168828cff6c04ecc7e3f80bcd792d +2024-11-19 c83a0f186b593db956e7e0a28abeac57b270e35d diff --git a/repos/os/recipes/src/dummy/hash b/repos/os/recipes/src/dummy/hash index 28bd787547..5119954b8c 100644 --- a/repos/os/recipes/src/dummy/hash +++ b/repos/os/recipes/src/dummy/hash @@ -1 +1 @@ -2024-10-07 44ac262fcad189e49b64a66fba42c4060211fc98 +2024-11-19 ae02f941a6ede9f2be235983df3ae7c16b1d29c9 diff --git a/repos/os/recipes/src/dummy_rtc/hash b/repos/os/recipes/src/dummy_rtc/hash index 183d515344..d9a2cf3b06 100644 --- a/repos/os/recipes/src/dummy_rtc/hash +++ b/repos/os/recipes/src/dummy_rtc/hash @@ -1 +1 @@ -2024-10-07 e2f4ceaa24d50674ee20eae32071ccbfec36cd82 +2024-11-19 221e667e44b52614a60dda4c6c67755c0a25528c diff --git a/repos/os/recipes/src/dynamic_rom/hash b/repos/os/recipes/src/dynamic_rom/hash index a01515dab5..026d2d2cb2 100644 --- a/repos/os/recipes/src/dynamic_rom/hash +++ b/repos/os/recipes/src/dynamic_rom/hash @@ -1 +1 @@ -2024-10-07 6136a78c39d1c7eaeda9d4c289f53bdfe98e96b8 +2024-11-19 a968fbcaea378e8c775fdcc0f4b1caff64872e5a diff --git a/repos/os/recipes/src/event_filter/hash b/repos/os/recipes/src/event_filter/hash index 3311ff8318..ae2bf822f5 100644 --- a/repos/os/recipes/src/event_filter/hash +++ b/repos/os/recipes/src/event_filter/hash @@ -1 +1 @@ -2024-10-07 be30d1701e5ea7860821a04a17795787d9c0da39 +2024-11-19 faf16630429cc9c63abe0596ff0ee005be46ac2b diff --git a/repos/os/recipes/src/fb_sdl/hash b/repos/os/recipes/src/fb_sdl/hash index e9aef01491..e84f1c831b 100644 --- a/repos/os/recipes/src/fb_sdl/hash +++ b/repos/os/recipes/src/fb_sdl/hash @@ -1 +1 @@ -2024-10-07 9301d1ef59b8db2e27ca32cf61da3fc9ac0f756e +2024-11-19 b3c997cccd9b340c00b578e8e23bb9530b6b977e diff --git a/repos/os/recipes/src/fs_report/hash b/repos/os/recipes/src/fs_report/hash index 336b00a930..55a5d70084 100644 --- a/repos/os/recipes/src/fs_report/hash +++ b/repos/os/recipes/src/fs_report/hash @@ -1 +1 @@ -2024-10-07 dc2fe1f9b32e770dfd8541d523651adb1c08ba01 +2024-11-19 52cd7d278f355e1c0deef876dc7c236e64fdaa27 diff --git a/repos/os/recipes/src/fs_rom/hash b/repos/os/recipes/src/fs_rom/hash index 3f5438431d..78ceade2c1 100644 --- a/repos/os/recipes/src/fs_rom/hash +++ b/repos/os/recipes/src/fs_rom/hash @@ -1 +1 @@ -2024-10-07 3cf13b9c1435c9210dd4c425ea4dd5f33d8601c6 +2024-11-19 df021553fb93dbf14525d9025ef13adbd10b7a89 diff --git a/repos/os/recipes/src/global_keys_handler/hash b/repos/os/recipes/src/global_keys_handler/hash index 16824a9edf..bcd1645bcc 100644 --- a/repos/os/recipes/src/global_keys_handler/hash +++ b/repos/os/recipes/src/global_keys_handler/hash @@ -1 +1 @@ -2024-10-29 cc70248e33e25e1f3308cb340885fa0619832593 +2024-11-19 a866642b1ac96e0016d3475ce18855991bf02754 diff --git a/repos/os/recipes/src/gui_fb/hash b/repos/os/recipes/src/gui_fb/hash index 763f1fc92b..9a86d190a5 100644 --- a/repos/os/recipes/src/gui_fb/hash +++ b/repos/os/recipes/src/gui_fb/hash @@ -1 +1 @@ -2024-10-29 941ceea5830365b71c530cd31c3b178131d6aae5 +2024-11-19 fbf186bf2a3445968cf0b23c38d6581b78a4ceb8 diff --git a/repos/os/recipes/src/init/hash b/repos/os/recipes/src/init/hash index 68854e91fa..3b1ec39472 100644 --- a/repos/os/recipes/src/init/hash +++ b/repos/os/recipes/src/init/hash @@ -1 +1 @@ -2024-10-29 b5a6ed03b8b7ef998598d5d11e04e26546623a35 +2024-11-19 8d13e25b411fc2762d7944bd30f41a2587504def diff --git a/repos/os/recipes/src/intel_gpu/hash b/repos/os/recipes/src/intel_gpu/hash index 45445acec3..45d8cb2852 100644 --- a/repos/os/recipes/src/intel_gpu/hash +++ b/repos/os/recipes/src/intel_gpu/hash @@ -1 +1 @@ -2024-10-29 c59da43f4c98ec7515e5696b370480ddd04ef3b5 +2024-11-19 0a3ad6251b887a33b4e62c7efed75bfdcb7d73f9 diff --git a/repos/os/recipes/src/lan9118_nic/hash b/repos/os/recipes/src/lan9118_nic/hash index 8309fabdf3..4f9a138660 100644 --- a/repos/os/recipes/src/lan9118_nic/hash +++ b/repos/os/recipes/src/lan9118_nic/hash @@ -1 +1 @@ -2024-10-07 754a2f9509ef97f7e9e9625d2779797a0d12219a +2024-11-19 ec60f21ec700e9f9b683971863c43bff4f79903f diff --git a/repos/os/recipes/src/linux_nic/hash b/repos/os/recipes/src/linux_nic/hash index 4354755fce..0926649c11 100644 --- a/repos/os/recipes/src/linux_nic/hash +++ b/repos/os/recipes/src/linux_nic/hash @@ -1 +1 @@ -2024-10-07 bab22fc260abf40afb360ed7755da22b0489a176 +2024-11-19 d99579162a111c1ad342ae9035fb619657c01078 diff --git a/repos/os/recipes/src/linux_rtc/hash b/repos/os/recipes/src/linux_rtc/hash index 559c16a86c..0e037c0d6d 100644 --- a/repos/os/recipes/src/linux_rtc/hash +++ b/repos/os/recipes/src/linux_rtc/hash @@ -1 +1 @@ -2024-10-07 558196f8d0a47cf28635a4664bc42b279feca070 +2024-11-19 871cf6c04708ae0417e5bc68bb5d77312dd720cb diff --git a/repos/os/recipes/src/log_core/hash b/repos/os/recipes/src/log_core/hash index ac73026aaf..ec9129a799 100644 --- a/repos/os/recipes/src/log_core/hash +++ b/repos/os/recipes/src/log_core/hash @@ -1 +1 @@ -2024-10-07 5673af6e2f9a9a38fcbcb687a96eef8ed8e6ec67 +2024-11-19 732451429d9ed50a940ad5f9cadf28be0ee5b234 diff --git a/repos/os/recipes/src/log_terminal/hash b/repos/os/recipes/src/log_terminal/hash index eb1642545a..c92c42f2d0 100644 --- a/repos/os/recipes/src/log_terminal/hash +++ b/repos/os/recipes/src/log_terminal/hash @@ -1 +1 @@ -2024-10-07 64bf185082b5b40dc205e0007e32c503a694eeeb +2024-11-19 d25d1d69c367e16347985f0f54fc2d6fb66b58cf diff --git a/repos/os/recipes/src/lx_block/hash b/repos/os/recipes/src/lx_block/hash index f0e5172ad7..bd87b1d4e0 100644 --- a/repos/os/recipes/src/lx_block/hash +++ b/repos/os/recipes/src/lx_block/hash @@ -1 +1 @@ -2024-10-07 63a9a370cf6168858e345a318b13ef32df7b0d8f +2024-11-19 1b36d0f075df35562019a1882a6f86eb980f726b diff --git a/repos/os/recipes/src/lx_fs/hash b/repos/os/recipes/src/lx_fs/hash index b6952be605..f54f38e7b4 100644 --- a/repos/os/recipes/src/lx_fs/hash +++ b/repos/os/recipes/src/lx_fs/hash @@ -1 +1 @@ -2024-10-07 aab75e76b74ea4ae8280714c0b703dfcdac85df5 +2024-11-19 9ac273e0cd2021f2819f18c4f2ca96dda8b5d950 diff --git a/repos/os/recipes/src/mixer/hash b/repos/os/recipes/src/mixer/hash index 44ffa097da..2df5453781 100644 --- a/repos/os/recipes/src/mixer/hash +++ b/repos/os/recipes/src/mixer/hash @@ -1 +1 @@ -2024-10-07 3eaff8dddca22e7de96f64a879c1beb1467344fb +2024-11-19 76d7558374e75ec442c5e8428c1455a1a5c71505 diff --git a/repos/os/recipes/src/monitor/hash b/repos/os/recipes/src/monitor/hash index 1a489a5b5f..782be1961a 100644 --- a/repos/os/recipes/src/monitor/hash +++ b/repos/os/recipes/src/monitor/hash @@ -1 +1 @@ -2024-10-07 889ac1fe7177e67b859ad719042d7e357f7ef282 +2024-11-19 6e06e469453e45d21e2985dcea864242a3f6894e diff --git a/repos/os/recipes/src/nic_bridge/hash b/repos/os/recipes/src/nic_bridge/hash index 32685d25fd..7e17b9742b 100644 --- a/repos/os/recipes/src/nic_bridge/hash +++ b/repos/os/recipes/src/nic_bridge/hash @@ -1 +1 @@ -2024-10-07 703b72db2aa822aea048569615c109745b4249e2 +2024-11-19 1884536dacf10a08b85983d43fea0f7d3cb265b2 diff --git a/repos/os/recipes/src/nic_loopback/hash b/repos/os/recipes/src/nic_loopback/hash index cdad10e1df..a7ea37790f 100644 --- a/repos/os/recipes/src/nic_loopback/hash +++ b/repos/os/recipes/src/nic_loopback/hash @@ -1 +1 @@ -2024-10-07 dc9d4c1649c96b6fafa9a7cd82221f8583937b08 +2024-11-19 21e326ee1888519b52fc73481ba9b8b1e5dcf9f5 diff --git a/repos/os/recipes/src/nic_perf/hash b/repos/os/recipes/src/nic_perf/hash index 01578dfb51..0724012706 100644 --- a/repos/os/recipes/src/nic_perf/hash +++ b/repos/os/recipes/src/nic_perf/hash @@ -1 +1 @@ -2024-10-07 c15b521bdadc6305825790163faf621628b734bf +2024-11-19 d49f7784554eec4e06d51bee234735ad77146ff5 diff --git a/repos/os/recipes/src/nic_router/hash b/repos/os/recipes/src/nic_router/hash index 03ca0197f5..395d753528 100644 --- a/repos/os/recipes/src/nic_router/hash +++ b/repos/os/recipes/src/nic_router/hash @@ -1 +1 @@ -2024-10-29 cc3d9f3a7833db33551a8880071106541ef73f32 +2024-11-19 338762c11196d95a0fa2934422a9673827fdba32 diff --git a/repos/os/recipes/src/nic_uplink/hash b/repos/os/recipes/src/nic_uplink/hash index e0a97cb735..0ba1a375d2 100644 --- a/repos/os/recipes/src/nic_uplink/hash +++ b/repos/os/recipes/src/nic_uplink/hash @@ -1 +1 @@ -2024-10-07 b7828835156194fd7cec5c69710e65d43b6c1595 +2024-11-19 c0882d3383ed343271d0f35c5f39c76e5dfa45db diff --git a/repos/os/recipes/src/nit_focus/hash b/repos/os/recipes/src/nit_focus/hash index a5ed2d668c..95209ccbee 100644 --- a/repos/os/recipes/src/nit_focus/hash +++ b/repos/os/recipes/src/nit_focus/hash @@ -1 +1 @@ -2024-10-07 9b8422a94f6b62432648f6c28db98ffa21ea270f +2024-11-19 7d79739ff1a12dc75956c9e072069a3c30aed154 diff --git a/repos/os/recipes/src/nitpicker/hash b/repos/os/recipes/src/nitpicker/hash index f7d9ea3b38..4cfd095bfa 100644 --- a/repos/os/recipes/src/nitpicker/hash +++ b/repos/os/recipes/src/nitpicker/hash @@ -1 +1 @@ -2024-11-04 e4fca38bd46e67b396ff7212a790e764e991a703 +2024-11-19 2989af13204b7c652def132fd1ba6846b740ba68 diff --git a/repos/os/recipes/src/nvme/hash b/repos/os/recipes/src/nvme/hash index f77ae27f5f..22c0416fb2 100644 --- a/repos/os/recipes/src/nvme/hash +++ b/repos/os/recipes/src/nvme/hash @@ -1 +1 @@ -2024-10-07 e14eeefe64a2cccbb4c1deb0e94eb8b81925516e +2024-11-19 43d30735c71a863c93e1ab11149f25fc8f42621b diff --git a/repos/os/recipes/src/part_block/hash b/repos/os/recipes/src/part_block/hash index 1f37c86c67..b72908a425 100644 --- a/repos/os/recipes/src/part_block/hash +++ b/repos/os/recipes/src/part_block/hash @@ -1 +1 @@ -2024-10-07 5239a95c88192072dfb809d13be52829f0d61c29 +2024-11-19 e0ae66a872174077db8ff5e26d1582b1c91b879a diff --git a/repos/os/recipes/src/pbxa9_drivers/hash b/repos/os/recipes/src/pbxa9_drivers/hash index 64b302a318..9c6429b25f 100644 --- a/repos/os/recipes/src/pbxa9_drivers/hash +++ b/repos/os/recipes/src/pbxa9_drivers/hash @@ -1 +1 @@ -2024-10-07 47037b1c747794f82196fa3bae1c45331d0d4f3c +2024-11-19 9c406dc0961bbab36e34061b34f3d18a7916e8c2 diff --git a/repos/os/recipes/src/pc_rtc/hash b/repos/os/recipes/src/pc_rtc/hash index d669fd4f65..c72eb5c5fd 100644 --- a/repos/os/recipes/src/pc_rtc/hash +++ b/repos/os/recipes/src/pc_rtc/hash @@ -1 +1 @@ -2024-10-07 f37345766d9ed6711ec943c1bc32dbc55b49b593 +2024-11-19 3b81abeafdf36a026269dd2db28c1ed7f348fba4 diff --git a/repos/os/recipes/src/pci_decode/hash b/repos/os/recipes/src/pci_decode/hash index 10fed5e03d..a757c2bfc8 100644 --- a/repos/os/recipes/src/pci_decode/hash +++ b/repos/os/recipes/src/pci_decode/hash @@ -1 +1 @@ -2024-10-07 c7f369b2bcabd2002537695c73196ddd7dd97716 +2024-11-19 4f5ee1a17916bb06f6db1435c26bf4e2e92beff6 diff --git a/repos/os/recipes/src/ping/hash b/repos/os/recipes/src/ping/hash index 5679eb9dd9..601c69a655 100644 --- a/repos/os/recipes/src/ping/hash +++ b/repos/os/recipes/src/ping/hash @@ -1 +1 @@ -2024-10-07 b32d6ba3b391874d91439938ebd1277e9241b060 +2024-11-19 ad85d02923ac358ca813984585ca425a6bdc039f diff --git a/repos/os/recipes/src/platform/hash b/repos/os/recipes/src/platform/hash index 9ef304f526..724279bd70 100644 --- a/repos/os/recipes/src/platform/hash +++ b/repos/os/recipes/src/platform/hash @@ -1 +1 @@ -2024-10-29 08805a90443577bc7ee9cc429c6f335f1a6f789d +2024-11-19 a89e0f99223035d7356cefd0a06cf4afc3f06cbb diff --git a/repos/os/recipes/src/ps2/hash b/repos/os/recipes/src/ps2/hash index 5542d56d23..6e2aaf9d32 100644 --- a/repos/os/recipes/src/ps2/hash +++ b/repos/os/recipes/src/ps2/hash @@ -1 +1 @@ -2024-10-07 41224d2215d5b65971b4db1ed68466d33282b225 +2024-11-19 3167f869d033378da7a338ed4bafad089d2e67c8 diff --git a/repos/os/recipes/src/record_play_mixer/hash b/repos/os/recipes/src/record_play_mixer/hash index 9e879e906e..7ae3036715 100644 --- a/repos/os/recipes/src/record_play_mixer/hash +++ b/repos/os/recipes/src/record_play_mixer/hash @@ -1 +1 @@ -2024-10-07 bd10464243c3d6062fdffcf6efb85b3dd941e959 +2024-11-19 d7c44e2a14230169756555a493df4a24d3c28f86 diff --git a/repos/os/recipes/src/record_rom/hash b/repos/os/recipes/src/record_rom/hash index c20cfb80dc..cb253832b8 100644 --- a/repos/os/recipes/src/record_rom/hash +++ b/repos/os/recipes/src/record_rom/hash @@ -1 +1 @@ -2024-10-07 1bee2cdd168ae4ea3ce495694df4d05df074c0a4 +2024-11-19 0ba7db522c102a10d45baca5c540e753aa7df1ca diff --git a/repos/os/recipes/src/report_rom/hash b/repos/os/recipes/src/report_rom/hash index a68dbb61c3..b53219b806 100644 --- a/repos/os/recipes/src/report_rom/hash +++ b/repos/os/recipes/src/report_rom/hash @@ -1 +1 @@ -2024-10-07 a54358a88d31ee91a7f71cf8070dc231961246b9 +2024-11-19 25347342deee76ee2018e3070e8c0cf4617a832c diff --git a/repos/os/recipes/src/rom_filter/hash b/repos/os/recipes/src/rom_filter/hash index bf246f033b..a70adec083 100644 --- a/repos/os/recipes/src/rom_filter/hash +++ b/repos/os/recipes/src/rom_filter/hash @@ -1 +1 @@ -2024-10-07 ea90e157abd7c0cdde876f7b23564426aeeb65a0 +2024-11-19 a3c89786b0c8af8f6dc2e4be2b0591f719c0762d diff --git a/repos/os/recipes/src/rom_logger/hash b/repos/os/recipes/src/rom_logger/hash index e4bf992591..1e1ea0d1e0 100644 --- a/repos/os/recipes/src/rom_logger/hash +++ b/repos/os/recipes/src/rom_logger/hash @@ -1 +1 @@ -2024-10-07 3271fe363b6ab76d92e6deb8f39f10e5896661a8 +2024-11-19 1e1b1fbdf9234c67cb66a76593e7bbb0a3b005d1 diff --git a/repos/os/recipes/src/rom_reporter/hash b/repos/os/recipes/src/rom_reporter/hash index 36efc4fd0f..aeb8cc3d0e 100644 --- a/repos/os/recipes/src/rom_reporter/hash +++ b/repos/os/recipes/src/rom_reporter/hash @@ -1 +1 @@ -2024-10-07 1e24742dcaeb10a9ac01c56b882eaa9982f19350 +2024-11-19 79e0e5077f492008f45b57264b976c130ca0d4fc diff --git a/repos/os/recipes/src/rom_to_file/hash b/repos/os/recipes/src/rom_to_file/hash index 0ac3c10c96..7b46854ba6 100644 --- a/repos/os/recipes/src/rom_to_file/hash +++ b/repos/os/recipes/src/rom_to_file/hash @@ -1 +1 @@ -2024-10-07 9f530dd60112e34fca2a0841f4fa38898f865fb2 +2024-11-19 dd2df48ca80e6ae4f6ed0c965bdedf31b0bd46be diff --git a/repos/os/recipes/src/sandbox/hash b/repos/os/recipes/src/sandbox/hash index 7053093cea..2eb42c9a23 100644 --- a/repos/os/recipes/src/sandbox/hash +++ b/repos/os/recipes/src/sandbox/hash @@ -1 +1 @@ -2024-10-29 73730aafb90aabbad77e7ba49e8aaf487adfdb07 +2024-11-19 c7befbb2025b3ee2e2c0d385c69f5872c253c6d4 diff --git a/repos/os/recipes/src/sequence/hash b/repos/os/recipes/src/sequence/hash index c570a13e0c..357cd3f7e1 100644 --- a/repos/os/recipes/src/sequence/hash +++ b/repos/os/recipes/src/sequence/hash @@ -1 +1 @@ -2024-10-07 68488bcc0aa655658f286044850d5ae1880079d1 +2024-11-19 13be1b857a87f2f281b854a468cac5ba17d33be7 diff --git a/repos/os/recipes/src/shim/hash b/repos/os/recipes/src/shim/hash index ce3d59667a..20192a92be 100644 --- a/repos/os/recipes/src/shim/hash +++ b/repos/os/recipes/src/shim/hash @@ -1 +1 @@ -2024-10-07 c46abb4c38ac48a2ef41cbb17c2d797d6910ecfa +2024-11-19 59020e87fb90a10b7274e569bb928a592555d464 diff --git a/repos/os/recipes/src/terminal_crosslink/hash b/repos/os/recipes/src/terminal_crosslink/hash index 5085762bde..f3bc0e20a9 100644 --- a/repos/os/recipes/src/terminal_crosslink/hash +++ b/repos/os/recipes/src/terminal_crosslink/hash @@ -1 +1 @@ -2024-10-07 7b6ae54d3f165799f8d3aec9c87aed7bd128f998 +2024-11-19 56288cf0235ecf789093e1b44ec4fe7701ba166b diff --git a/repos/os/recipes/src/terminal_log/hash b/repos/os/recipes/src/terminal_log/hash index e5b21975ad..4a4baec1d6 100644 --- a/repos/os/recipes/src/terminal_log/hash +++ b/repos/os/recipes/src/terminal_log/hash @@ -1 +1 @@ -2024-10-07 6bb1ab695bdcbe0a8e8a0c3a744cef2ecd0ce5f5 +2024-11-19 f823dbbe21970429d1482eecf188e46926cbec11 diff --git a/repos/os/recipes/src/test-audio_out/hash b/repos/os/recipes/src/test-audio_out/hash index f23daf72c6..6becc13d9c 100644 --- a/repos/os/recipes/src/test-audio_out/hash +++ b/repos/os/recipes/src/test-audio_out/hash @@ -1 +1 @@ -2024-10-07 319654f5d9fd1c4321de441c510c1c0e9473f448 +2024-11-19 1186c2c24f76f439b4c37e55fb4ae7ff3634dfe2 diff --git a/repos/os/recipes/src/test-black_hole/hash b/repos/os/recipes/src/test-black_hole/hash index 97413468e6..b334dd6c84 100644 --- a/repos/os/recipes/src/test-black_hole/hash +++ b/repos/os/recipes/src/test-black_hole/hash @@ -1 +1 @@ -2024-10-07 7c8dc98833299b0c55441563865fcf816f6a936d +2024-11-19 5fc0f9396160f2daf337767d5f86be49c6971015 diff --git a/repos/os/recipes/src/test-bomb/hash b/repos/os/recipes/src/test-bomb/hash index 434ca8674b..492f433c36 100644 --- a/repos/os/recipes/src/test-bomb/hash +++ b/repos/os/recipes/src/test-bomb/hash @@ -1 +1 @@ -2024-10-07 f7e50ad7c4be72ee0ef79f62898ed4f0cb349261 +2024-11-19 107e318d9dea52b6de249b196668913e5f1054a8 diff --git a/repos/os/recipes/src/test-capture/hash b/repos/os/recipes/src/test-capture/hash index 434af5e430..d960bba158 100644 --- a/repos/os/recipes/src/test-capture/hash +++ b/repos/os/recipes/src/test-capture/hash @@ -1 +1 @@ -2024-10-29 55633a6951ceb535e235bb6da27f67a23be3ed5c +2024-11-19 e305787d3cc7f4d2e999a5009f0466931dabec61 diff --git a/repos/os/recipes/src/test-clipboard/hash b/repos/os/recipes/src/test-clipboard/hash index d8eb65b70f..4715b1f956 100644 --- a/repos/os/recipes/src/test-clipboard/hash +++ b/repos/os/recipes/src/test-clipboard/hash @@ -1 +1 @@ -2024-10-07 d8a4d58bba32e87876c96836722f7950db92ef63 +2024-11-19 dfd270f17be45f3f750ee94ad5a3474c82167196 diff --git a/repos/os/recipes/src/test-dynamic_config/hash b/repos/os/recipes/src/test-dynamic_config/hash index b7fee2f525..b4a7f7753c 100644 --- a/repos/os/recipes/src/test-dynamic_config/hash +++ b/repos/os/recipes/src/test-dynamic_config/hash @@ -1 +1 @@ -2024-10-29 3cef74242f8fa72a2db8e12f8e0d4fcd9e83ebd5 +2024-11-19 f1206cd8ffc4a6d1aa7875af9bf0b26dec2dbb7f diff --git a/repos/os/recipes/src/test-fault_detection/hash b/repos/os/recipes/src/test-fault_detection/hash index fd7d61149e..492cb38291 100644 --- a/repos/os/recipes/src/test-fault_detection/hash +++ b/repos/os/recipes/src/test-fault_detection/hash @@ -1 +1 @@ -2024-10-29 3adb0cf80a0a953f870cbf3aaa29528d5e8ad909 +2024-11-19 b0eed318f90d4a99360499cc81271853fbe9b893 diff --git a/repos/os/recipes/src/test-fs_packet/hash b/repos/os/recipes/src/test-fs_packet/hash index fc64b57755..9da370b123 100644 --- a/repos/os/recipes/src/test-fs_packet/hash +++ b/repos/os/recipes/src/test-fs_packet/hash @@ -1 +1 @@ -2024-10-07 4d8a6973ccf6ad3212f833ac08a431b8cda11678 +2024-11-19 5cb4f32d4b77a641d909e30d82956afc4bdf03a1 diff --git a/repos/os/recipes/src/test-fs_report/hash b/repos/os/recipes/src/test-fs_report/hash index ecfc36c2be..2dc7497b39 100644 --- a/repos/os/recipes/src/test-fs_report/hash +++ b/repos/os/recipes/src/test-fs_report/hash @@ -1 +1 @@ -2024-10-07 bb2377de93f26340c443c0c7934dfa5d01578762 +2024-11-19 48afd51023416becd09b7bcdf33683d0bf2e6d00 diff --git a/repos/os/recipes/src/test-immutable_rom/hash b/repos/os/recipes/src/test-immutable_rom/hash index 91d529b62e..41719f1c93 100644 --- a/repos/os/recipes/src/test-immutable_rom/hash +++ b/repos/os/recipes/src/test-immutable_rom/hash @@ -1 +1 @@ -2024-10-07 cf8bf1e210b332b40b16ab3a7a7ac3365bbb573d +2024-11-19 f76187cbbcfbc21887fb616e761170a32b4568f6 diff --git a/repos/os/recipes/src/test-init/hash b/repos/os/recipes/src/test-init/hash index 460035b1f3..051a5eb88d 100644 --- a/repos/os/recipes/src/test-init/hash +++ b/repos/os/recipes/src/test-init/hash @@ -1 +1 @@ -2024-10-07 c439cdbbe468eb92e19c5eddbc3c660df07fa935 +2024-11-19 119f9067f417ef68929a45a1d9b74a6e6c635fe3 diff --git a/repos/os/recipes/src/test-init_loop/hash b/repos/os/recipes/src/test-init_loop/hash index 8306411a50..518b67a81c 100644 --- a/repos/os/recipes/src/test-init_loop/hash +++ b/repos/os/recipes/src/test-init_loop/hash @@ -1 +1 @@ -2024-10-07 acc069827e72d1e3965469948f6292646f148b48 +2024-11-19 88be617d57cf2262ef50724be92ab6381c684bb5 diff --git a/repos/os/recipes/src/test-nic_loopback/hash b/repos/os/recipes/src/test-nic_loopback/hash index 43b393e4b3..cfbfb75475 100644 --- a/repos/os/recipes/src/test-nic_loopback/hash +++ b/repos/os/recipes/src/test-nic_loopback/hash @@ -1 +1 @@ -2024-10-07 1b03c323bfd3a3e21f8ca1924ad3a15db87121ad +2024-11-19 82cdadffb51ac65fc7ef8af9f863e8e103a8bdb7 diff --git a/repos/os/recipes/src/test-path/hash b/repos/os/recipes/src/test-path/hash index 45dae986df..64124cf595 100644 --- a/repos/os/recipes/src/test-path/hash +++ b/repos/os/recipes/src/test-path/hash @@ -1 +1 @@ -2024-10-07 b77358fb9a8b88f24be8f3a69e3b8fef8f4279d2 +2024-11-19 517308ee3c0f51771f8ede6da797545e0a2433cd diff --git a/repos/os/recipes/src/test-ram_fs_chunk/hash b/repos/os/recipes/src/test-ram_fs_chunk/hash index 3a97fd55ee..1e1261c033 100644 --- a/repos/os/recipes/src/test-ram_fs_chunk/hash +++ b/repos/os/recipes/src/test-ram_fs_chunk/hash @@ -1 +1 @@ -2024-10-07 c2d6bc3d6b6c5b22f1d100d4e2e9fb1430471000 +2024-11-19 4efadd53d73d5e4f7b62c22f3f88f7f1e1c5097d diff --git a/repos/os/recipes/src/test-report_rom/hash b/repos/os/recipes/src/test-report_rom/hash index 6805758a88..7b77809234 100644 --- a/repos/os/recipes/src/test-report_rom/hash +++ b/repos/os/recipes/src/test-report_rom/hash @@ -1 +1 @@ -2024-10-07 2f4b386cd722e23323282a455147ca799206fc74 +2024-11-19 00890424d5c331f3247b7cdb9e60a8bf1a55f680 diff --git a/repos/os/recipes/src/test-resource_request/hash b/repos/os/recipes/src/test-resource_request/hash index 197cc55ec8..fa5bee6d8c 100644 --- a/repos/os/recipes/src/test-resource_request/hash +++ b/repos/os/recipes/src/test-resource_request/hash @@ -1 +1 @@ -2024-10-07 7fd35cd4c0bef5451c1ec0fe3668f635c49c100d +2024-11-19 67b420ffc73bd3f755f73f6424bf22696ebd0238 diff --git a/repos/os/recipes/src/test-resource_yield/hash b/repos/os/recipes/src/test-resource_yield/hash index c8137ea27b..f3723025dc 100644 --- a/repos/os/recipes/src/test-resource_yield/hash +++ b/repos/os/recipes/src/test-resource_yield/hash @@ -1 +1 @@ -2024-10-07 9cc21fb58aba349ee79f8e42ad9b8b696b9c314d +2024-11-19 9d729527aaf413acc4ea5fcab4c9f7fcf897b143 diff --git a/repos/os/recipes/src/test-rtc/hash b/repos/os/recipes/src/test-rtc/hash index 92bb77faae..71d147735e 100644 --- a/repos/os/recipes/src/test-rtc/hash +++ b/repos/os/recipes/src/test-rtc/hash @@ -1 +1 @@ -2024-10-07 20924bffa6be5beb725602c56fa458ea4f9b81b8 +2024-11-19 b3c6de1808abe2cfec377f93e782c549a5ae6d74 diff --git a/repos/os/recipes/src/test-sandbox/hash b/repos/os/recipes/src/test-sandbox/hash index dbcb0ba10d..5c0483e3ea 100644 --- a/repos/os/recipes/src/test-sandbox/hash +++ b/repos/os/recipes/src/test-sandbox/hash @@ -1 +1 @@ -2024-10-07 9dffd4bcf8c3242918a8d2551929493284d53aa7 +2024-11-19 d31e9efddee6809608d3c684b406d97d78b90469 diff --git a/repos/os/recipes/src/test-signal/hash b/repos/os/recipes/src/test-signal/hash index b6ea497595..9b3d1255c6 100644 --- a/repos/os/recipes/src/test-signal/hash +++ b/repos/os/recipes/src/test-signal/hash @@ -1 +1 @@ -2024-10-07 ca6192bd1e323477cae7a2951a58066c87d75709 +2024-11-19 e1f2e858daed1cfa1861a21e4b456c0839321454 diff --git a/repos/os/recipes/src/test-slab/hash b/repos/os/recipes/src/test-slab/hash index c9ed6f688c..cd96667e41 100644 --- a/repos/os/recipes/src/test-slab/hash +++ b/repos/os/recipes/src/test-slab/hash @@ -1 +1 @@ -2024-10-07 1703eb749a1a9021b3e4c7580d9e23540755f45b +2024-11-19 b3a49c48cbbd547cdeb3788c9bd87205c0ac36cb diff --git a/repos/os/recipes/src/test-terminal_crosslink/hash b/repos/os/recipes/src/test-terminal_crosslink/hash index 1e7c85ef23..e0c2379607 100644 --- a/repos/os/recipes/src/test-terminal_crosslink/hash +++ b/repos/os/recipes/src/test-terminal_crosslink/hash @@ -1 +1 @@ -2024-10-07 0c9b2eaef420f36f869a812bf60d2d71e75d279c +2024-11-19 26bd3288a9d3c4c763100aa4cc471db79fe509fc diff --git a/repos/os/recipes/src/test-terminal_echo/hash b/repos/os/recipes/src/test-terminal_echo/hash index a9634ced62..7716354098 100644 --- a/repos/os/recipes/src/test-terminal_echo/hash +++ b/repos/os/recipes/src/test-terminal_echo/hash @@ -1 +1 @@ -2024-10-07 b458510ef1d094faf20cb0f08b5dbf383414b818 +2024-11-19 aad8c8e3a3fafdad1f3fb4db2fa89e24f841b62f diff --git a/repos/os/recipes/src/test-trace/hash b/repos/os/recipes/src/test-trace/hash index ead42b99f0..ad2be5b174 100644 --- a/repos/os/recipes/src/test-trace/hash +++ b/repos/os/recipes/src/test-trace/hash @@ -1 +1 @@ -2024-10-07 8b201c46e688b4c37438e15898e46c384dd7924a +2024-11-19 bf7f33d89e61a7dabb680f18f0267fb763913ac2 diff --git a/repos/os/recipes/src/test-trace_buffer/hash b/repos/os/recipes/src/test-trace_buffer/hash index 027856d82d..f7ea805a8f 100644 --- a/repos/os/recipes/src/test-trace_buffer/hash +++ b/repos/os/recipes/src/test-trace_buffer/hash @@ -1 +1 @@ -2024-10-07 b77ca6114b9924b95eede1d9d47aba9f3d384b00 +2024-11-19 65a5457c113eeb6b3c2504e6ea9bc087fa35222a diff --git a/repos/os/recipes/src/test-trace_logger/hash b/repos/os/recipes/src/test-trace_logger/hash index b0d64dc2e0..6e6e42a8ee 100644 --- a/repos/os/recipes/src/test-trace_logger/hash +++ b/repos/os/recipes/src/test-trace_logger/hash @@ -1 +1 @@ -2024-10-07 469d5fd924ab1dc937fcf09839720dacd38689ed +2024-11-19 f9d58409dac68e40342e1cc0ee204a407ddee651 diff --git a/repos/os/recipes/src/test-utf8/hash b/repos/os/recipes/src/test-utf8/hash index 7f75fde273..75f1d71546 100644 --- a/repos/os/recipes/src/test-utf8/hash +++ b/repos/os/recipes/src/test-utf8/hash @@ -1 +1 @@ -2024-10-07 df1a1a34d5e6347eb94dc30e1af3c26b403e00f9 +2024-11-19 221223defba20d20750cede6a44031f3374d4cc5 diff --git a/repos/os/recipes/src/test-vfs_capture/hash b/repos/os/recipes/src/test-vfs_capture/hash index 70f092b3d8..fa08871500 100644 --- a/repos/os/recipes/src/test-vfs_capture/hash +++ b/repos/os/recipes/src/test-vfs_capture/hash @@ -1 +1 @@ -2024-10-29 71618f93ae7e3b0e1a96ab6ae3fa6369d77747d3 +2024-11-19 6f79efdceee062c884c8ddde07a01fc0cda6473d diff --git a/repos/os/recipes/src/test-vfs_stress/hash b/repos/os/recipes/src/test-vfs_stress/hash index 5418f15533..1f69b284b1 100644 --- a/repos/os/recipes/src/test-vfs_stress/hash +++ b/repos/os/recipes/src/test-vfs_stress/hash @@ -1 +1 @@ -2024-10-07 69dfa130b9c8291e684f24581e0c5d418164edb9 +2024-11-19 aa38e07f81c98d834b864b0e2da6c2bef5495048 diff --git a/repos/os/recipes/src/test-weak_ptr/hash b/repos/os/recipes/src/test-weak_ptr/hash index 055e7416a3..c90676a7c1 100644 --- a/repos/os/recipes/src/test-weak_ptr/hash +++ b/repos/os/recipes/src/test-weak_ptr/hash @@ -1 +1 @@ -2024-10-07 4f862bdae95f9e0cf7095697980edf090666c9aa +2024-11-19 fb6756bd6bc3f12209f1b1c0cc61ecc06bae9f8d diff --git a/repos/os/recipes/src/top/hash b/repos/os/recipes/src/top/hash index b63e6612e9..da0db85a71 100644 --- a/repos/os/recipes/src/top/hash +++ b/repos/os/recipes/src/top/hash @@ -1 +1 @@ -2024-10-07 872c15a838e3a0bf338198d96cf467bd7d381988 +2024-11-19 b954bea0f952581c258be8603e3e991841f070f8 diff --git a/repos/os/recipes/src/trace_logger/hash b/repos/os/recipes/src/trace_logger/hash index 8fcc646fcd..4b84f97cf7 100644 --- a/repos/os/recipes/src/trace_logger/hash +++ b/repos/os/recipes/src/trace_logger/hash @@ -1 +1 @@ -2024-10-07 3f44a90a83316175d6db0302ec98f438234c88ba +2024-11-19 e5f9a36dad880c9afc02cbe12b397045c3e60c07 diff --git a/repos/os/recipes/src/trace_policy/hash b/repos/os/recipes/src/trace_policy/hash index 22b4402559..7d72f58098 100644 --- a/repos/os/recipes/src/trace_policy/hash +++ b/repos/os/recipes/src/trace_policy/hash @@ -1 +1 @@ -2024-10-07 3d2a2c9004491568621c7acf7775a196c26f3f2a +2024-11-19 d55039aecda06af17e72c922370b665cdd5a0665 diff --git a/repos/os/recipes/src/trace_subject_reporter/hash b/repos/os/recipes/src/trace_subject_reporter/hash index a7797b507e..a794d1ab88 100644 --- a/repos/os/recipes/src/trace_subject_reporter/hash +++ b/repos/os/recipes/src/trace_subject_reporter/hash @@ -1 +1 @@ -2024-10-07 3ace05909b939ee880f27941a003411d5abaf6f0 +2024-11-19 b60bc17b174e1128c6faf95f31a9a4d6493e45c7 diff --git a/repos/os/recipes/src/usb_block/hash b/repos/os/recipes/src/usb_block/hash index f9a5b597ff..336735768c 100644 --- a/repos/os/recipes/src/usb_block/hash +++ b/repos/os/recipes/src/usb_block/hash @@ -1 +1 @@ -2024-10-07 ea6cff533902f41658614bd56aaf738e63832cd8 +2024-11-19 fb092fdcf5f0d90ec726514e665a55fc0278c328 diff --git a/repos/os/recipes/src/vfs/hash b/repos/os/recipes/src/vfs/hash index 0ba4127cbd..4f862ec03c 100644 --- a/repos/os/recipes/src/vfs/hash +++ b/repos/os/recipes/src/vfs/hash @@ -1 +1 @@ -2024-10-07 b2226e3e088fcdb1094c2778a1bcfa8a9d003f49 +2024-11-19 0c12ea652d2e60e274de70938b61f8811a224dfe diff --git a/repos/os/recipes/src/vfs_block/hash b/repos/os/recipes/src/vfs_block/hash index 5e58fb0644..10c65fa63e 100644 --- a/repos/os/recipes/src/vfs_block/hash +++ b/repos/os/recipes/src/vfs_block/hash @@ -1 +1 @@ -2024-10-07 fa16c07733a59c1debc1826dd5345fac3c037e3e +2024-11-19 359acba5419ff938d52c90f7b4d96d89c10feef0 diff --git a/repos/os/recipes/src/vfs_capture/hash b/repos/os/recipes/src/vfs_capture/hash index 6e2e6d13fe..8386f43e6d 100644 --- a/repos/os/recipes/src/vfs_capture/hash +++ b/repos/os/recipes/src/vfs_capture/hash @@ -1 +1 @@ -2024-10-07 ff22804167819f32ea8fca2ec13552b6810ceaa4 +2024-11-19 1ff707756b15bf7510750203aab423f76149866c diff --git a/repos/os/recipes/src/vfs_tap/hash b/repos/os/recipes/src/vfs_tap/hash index 8db9271df2..e8c01f308a 100644 --- a/repos/os/recipes/src/vfs_tap/hash +++ b/repos/os/recipes/src/vfs_tap/hash @@ -1 +1 @@ -2024-10-07 179bf98b9f4e58f14c1265a7e61492cbc3b05775 +2024-11-19 e6473a2a2e2392fca268a84cabf96c39635daa50 diff --git a/repos/os/recipes/src/virt_qemu_drivers/hash b/repos/os/recipes/src/virt_qemu_drivers/hash index a810341060..373913d21a 100644 --- a/repos/os/recipes/src/virt_qemu_drivers/hash +++ b/repos/os/recipes/src/virt_qemu_drivers/hash @@ -1 +1 @@ -2024-10-07 a305fab547038302e3ca46606558b04abd41f605 +2024-11-19 75c41aabf52433d5e4ce3ad7cdeff251fac16e0d diff --git a/repos/os/recipes/src/virtdev_rom/hash b/repos/os/recipes/src/virtdev_rom/hash index 2500789ec4..3d3e8ed04d 100644 --- a/repos/os/recipes/src/virtdev_rom/hash +++ b/repos/os/recipes/src/virtdev_rom/hash @@ -1 +1 @@ -2024-10-07 4e46c197f5e691543915877dda2659988ad0d517 +2024-11-19 b9468cd83f0e43a6bc8e0d6378935bf3d0ea2831 diff --git a/repos/os/recipes/src/virtio_fb/hash b/repos/os/recipes/src/virtio_fb/hash index e7c46fc226..89d7668937 100644 --- a/repos/os/recipes/src/virtio_fb/hash +++ b/repos/os/recipes/src/virtio_fb/hash @@ -1 +1 @@ -2024-10-07 2bfa764896f0384867da65569e85551fb23af7f1 +2024-11-19 65c91bacffbd95eee55bdb87304119f656fe062a diff --git a/repos/os/recipes/src/virtio_input/hash b/repos/os/recipes/src/virtio_input/hash index 002fd7bf3b..545211c9c9 100644 --- a/repos/os/recipes/src/virtio_input/hash +++ b/repos/os/recipes/src/virtio_input/hash @@ -1 +1 @@ -2024-10-07 2ae023c27e6e2057e0765a595ea5e5877ed68b1e +2024-11-19 de44bc8be7b907f58f58374224061dc6c7420b27 diff --git a/repos/os/recipes/src/virtio_nic/hash b/repos/os/recipes/src/virtio_nic/hash index d6d0f4658e..0436705fd4 100644 --- a/repos/os/recipes/src/virtio_nic/hash +++ b/repos/os/recipes/src/virtio_nic/hash @@ -1 +1 @@ -2024-10-07 09a0081792005fcc104a35927dc1ccbfa2f42f14 +2024-11-19 9ee26b08963f5066fa94d085e86aef709be71998 diff --git a/repos/os/recipes/src/vmm/hash b/repos/os/recipes/src/vmm/hash index dd80f88d9c..1e5d2c9c01 100644 --- a/repos/os/recipes/src/vmm/hash +++ b/repos/os/recipes/src/vmm/hash @@ -1 +1 @@ -2024-10-29 065877c006afdec6f5b6870c4d98168747be494e +2024-11-19 40cb95ad917a056e246970e2a332790a74743d91 diff --git a/repos/os/recipes/src/waveform_player/hash b/repos/os/recipes/src/waveform_player/hash index fe5ac11065..8c36f68f0e 100644 --- a/repos/os/recipes/src/waveform_player/hash +++ b/repos/os/recipes/src/waveform_player/hash @@ -1 +1 @@ -2024-10-07 a5fec7cfac7a6eaf46b98715f0937b405e77e1db +2024-11-19 be6c26e9a12b07bcd5c57974a19c2099e0b2b565 diff --git a/repos/pc/recipes/api/pc_linux/hash b/repos/pc/recipes/api/pc_linux/hash index 692281f96a..762696e3ba 100644 --- a/repos/pc/recipes/api/pc_linux/hash +++ b/repos/pc/recipes/api/pc_linux/hash @@ -1 +1 @@ -2024-10-29 42f394837d2a6d7b6a823b0e4676a6826f8b7c04 +2024-11-19 6b0c4a29deaee9f47a3cdc346c35722e6a818b55 diff --git a/repos/pc/recipes/pkg/pc_nic/hash b/repos/pc/recipes/pkg/pc_nic/hash index 4841ef111a..702cf1a413 100644 --- a/repos/pc/recipes/pkg/pc_nic/hash +++ b/repos/pc/recipes/pkg/pc_nic/hash @@ -1 +1 @@ -2024-10-29 23616e6a75361bda36011ba9f2f6ce421465b84c +2024-11-19 737a5154cbc937cd14f57848f81b3ed8b4631c3b diff --git a/repos/pc/recipes/pkg/pc_wifi/hash b/repos/pc/recipes/pkg/pc_wifi/hash index cffb507755..d60e08f19d 100644 --- a/repos/pc/recipes/pkg/pc_wifi/hash +++ b/repos/pc/recipes/pkg/pc_wifi/hash @@ -1 +1 @@ -2024-10-29 896e55dc6b7a70a99221cf6a253b0fee0b26be47 +2024-11-19 ecbe258890e61ecf2596278e18e57b4fb7f893c3 diff --git a/repos/pc/recipes/pkg/test_usb_host-pc/hash b/repos/pc/recipes/pkg/test_usb_host-pc/hash index ca2f277c2b..f9aa6e3d39 100644 --- a/repos/pc/recipes/pkg/test_usb_host-pc/hash +++ b/repos/pc/recipes/pkg/test_usb_host-pc/hash @@ -1 +1 @@ -2024-10-29 ae889c865c683161658e0a226a7d4756d9bb9e90 +2024-11-19 4fb7a7611e051bb2b157a8176b76e31253883103 diff --git a/repos/pc/recipes/src/pc_intel_fb/hash b/repos/pc/recipes/src/pc_intel_fb/hash index 542d6e6f8e..493f2a1f9f 100644 --- a/repos/pc/recipes/src/pc_intel_fb/hash +++ b/repos/pc/recipes/src/pc_intel_fb/hash @@ -1 +1 @@ -2024-10-29 72d62051ab1ebedde2ea45435deadb76a31763de +2024-11-19 0f199a857d5053c2ec1819d19eff1aa845ba0e8d diff --git a/repos/pc/recipes/src/pc_nic/hash b/repos/pc/recipes/src/pc_nic/hash index ef1538f055..0f359d9009 100644 --- a/repos/pc/recipes/src/pc_nic/hash +++ b/repos/pc/recipes/src/pc_nic/hash @@ -1 +1 @@ -2024-10-29 c7aeacce12092ccd2140c39974972c444049ad97 +2024-11-19 a9bf05ba769e562677ee6a07688e922cb03eccc2 diff --git a/repos/pc/recipes/src/pc_platform/hash b/repos/pc/recipes/src/pc_platform/hash index 719e6ca79b..a66a9f54b2 100644 --- a/repos/pc/recipes/src/pc_platform/hash +++ b/repos/pc/recipes/src/pc_platform/hash @@ -1 +1 @@ -2024-10-29 e3680a9cb739a577f8498a6f7aea758f18ad4866 +2024-11-19 e19583d60e2a62c87cab21b36bb8bad57b19c6c0 diff --git a/repos/pc/recipes/src/pc_usb_host/hash b/repos/pc/recipes/src/pc_usb_host/hash index e65c0482b6..056be8ce9e 100644 --- a/repos/pc/recipes/src/pc_usb_host/hash +++ b/repos/pc/recipes/src/pc_usb_host/hash @@ -1 +1 @@ -2024-10-29 e2d68d948d4d12b872716523c292c0fde127adf6 +2024-11-19 472f8b1333d5b7e432884a3e59d478b978748e81 diff --git a/repos/pc/recipes/src/pc_wifi/hash b/repos/pc/recipes/src/pc_wifi/hash index 9db65c02db..7172d66d09 100644 --- a/repos/pc/recipes/src/pc_wifi/hash +++ b/repos/pc/recipes/src/pc_wifi/hash @@ -1 +1 @@ -2024-10-29 b574e37e8945ce789670ad7ca5b91e9d23c68c0d +2024-11-19 e319638921b575b46e61e66230eecdd664628243 diff --git a/repos/ports/recipes/pkg/gdb_x86/hash b/repos/ports/recipes/pkg/gdb_x86/hash index aa70aad12a..068ce80acf 100644 --- a/repos/ports/recipes/pkg/gdb_x86/hash +++ b/repos/ports/recipes/pkg/gdb_x86/hash @@ -1 +1 @@ -2024-10-29 e523378763becbc24a928f89e464bd60519031df +2024-11-19 3f30ea4b9347b2d6a9707a5ff66b3da85cd16fdb diff --git a/repos/ports/recipes/pkg/lighttpd/hash b/repos/ports/recipes/pkg/lighttpd/hash index fd9cc3ad05..476b124cae 100644 --- a/repos/ports/recipes/pkg/lighttpd/hash +++ b/repos/ports/recipes/pkg/lighttpd/hash @@ -1 +1 @@ -2024-10-29 c4047f781e15a982e72158e2c6686060e2ef1a02 +2024-11-19 27adaf5a4eaf30929916b0c62081d98473f45ec5 diff --git a/repos/ports/recipes/pkg/report_dump/hash b/repos/ports/recipes/pkg/report_dump/hash index 7d3e6fc49d..da6f9f7431 100644 --- a/repos/ports/recipes/pkg/report_dump/hash +++ b/repos/ports/recipes/pkg/report_dump/hash @@ -1 +1 @@ -2024-10-29 548ad120f9ac2c48fce80ffd6c80b61aa679ba09 +2024-11-19 5ce84a11bb989ed8ca6cd05c75995531866655ff diff --git a/repos/ports/recipes/pkg/socat_tcp/hash b/repos/ports/recipes/pkg/socat_tcp/hash index a75a2b5bc3..8a6d3e5cc7 100644 --- a/repos/ports/recipes/pkg/socat_tcp/hash +++ b/repos/ports/recipes/pkg/socat_tcp/hash @@ -1 +1 @@ -2024-10-29 03996b5c3e5a5bbcd19abba04067616e448c36b2 +2024-11-19 662d65884c5e9d10de93ed552872049a3a6dd898 diff --git a/repos/ports/recipes/pkg/system_shell/hash b/repos/ports/recipes/pkg/system_shell/hash index 2e753177ac..f560cc8d35 100644 --- a/repos/ports/recipes/pkg/system_shell/hash +++ b/repos/ports/recipes/pkg/system_shell/hash @@ -1 +1 @@ -2024-11-04 47dba8404ad1727db406071f4f95b693bbddc1c1 +2024-11-19 71a3396ae7ea050097d3a68bfe6bedbdf5be481a diff --git a/repos/ports/recipes/pkg/vbox5-nova-capture/hash b/repos/ports/recipes/pkg/vbox5-nova-capture/hash index 17a016827a..3abe86cfb8 100644 --- a/repos/ports/recipes/pkg/vbox5-nova-capture/hash +++ b/repos/ports/recipes/pkg/vbox5-nova-capture/hash @@ -1 +1 @@ -2024-10-29 a5acb0351e4fc9600ea4aac2295d285c4fd6bf05 +2024-11-19 96301e9b2918454ba2ec1422ca911b9f6785bbee diff --git a/repos/ports/recipes/pkg/vbox5-nova-sculpt/hash b/repos/ports/recipes/pkg/vbox5-nova-sculpt/hash index 6a46af54c0..7b0d4f64d4 100644 --- a/repos/ports/recipes/pkg/vbox5-nova-sculpt/hash +++ b/repos/ports/recipes/pkg/vbox5-nova-sculpt/hash @@ -1 +1 @@ -2024-10-29 0c0ae915b036d986d6fe70e8e8d5a38841ba7b64 +2024-11-19 2d15c395c78ead4e056a6d039faa8f6ed85b5a81 diff --git a/repos/ports/recipes/pkg/vbox6-capture/hash b/repos/ports/recipes/pkg/vbox6-capture/hash index 4f79c0eec9..389127301d 100644 --- a/repos/ports/recipes/pkg/vbox6-capture/hash +++ b/repos/ports/recipes/pkg/vbox6-capture/hash @@ -1 +1 @@ -2024-11-04 9b473ebfd3a952b5f7c71333c7ff8b089b58d3b0 +2024-11-19 da022d246aacbbf6ee3d1ac5ddaecc6e04fcc963 diff --git a/repos/ports/recipes/pkg/vbox6/hash b/repos/ports/recipes/pkg/vbox6/hash index 11e2b8a0b3..60485860ff 100644 --- a/repos/ports/recipes/pkg/vbox6/hash +++ b/repos/ports/recipes/pkg/vbox6/hash @@ -1 +1 @@ -2024-11-04 7e98b80e955c0730432617168975871016e5440f +2024-11-19 86ad8c55f1dc48322f50738736a2139bca94ec12 diff --git a/repos/ports/recipes/src/gdb_support/hash b/repos/ports/recipes/src/gdb_support/hash index 5e4ee46dfc..caca1514c3 100644 --- a/repos/ports/recipes/src/gdb_support/hash +++ b/repos/ports/recipes/src/gdb_support/hash @@ -1 +1 @@ -2024-10-07 dc03fd17541f2b1255005fa9a74f4dfac7b10ecf +2024-11-19 8a6a5d985feadb37a5f4afe49eff6d8a8feb2040 diff --git a/repos/ports/recipes/src/vbox5-nova/hash b/repos/ports/recipes/src/vbox5-nova/hash index 8550488d29..2ab37c8481 100644 --- a/repos/ports/recipes/src/vbox5-nova/hash +++ b/repos/ports/recipes/src/vbox5-nova/hash @@ -1 +1 @@ -2024-10-29 4a1265515d5cc0ddb530e013af861ae04cd692bf +2024-11-19 4bd735989f55cbd72df14605ebc39407e238f051 diff --git a/repos/ports/recipes/src/vbox6/hash b/repos/ports/recipes/src/vbox6/hash index c819066b65..bc0c3409fe 100644 --- a/repos/ports/recipes/src/vbox6/hash +++ b/repos/ports/recipes/src/vbox6/hash @@ -1 +1 @@ -2024-10-29 572b47889e29f242644ce786ac674ade73a2313b +2024-11-19 50b4d046cff7da752b8db38d38e3b4bd03799ab3 diff --git a/repos/ports/recipes/src/verify/hash b/repos/ports/recipes/src/verify/hash index ad9954c571..7d45c07644 100644 --- a/repos/ports/recipes/src/verify/hash +++ b/repos/ports/recipes/src/verify/hash @@ -1 +1 @@ -2024-10-07 153ff50a18395d1024cee9701aef5d6282e2c4c4 +2024-11-19 c17e513e4597217e46f86b43bf660a081b57af4b From fb7fa915c6ee0dbe3d9a3b0882dafa8a43bc6f86 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 18 Nov 2024 15:21:10 +0100 Subject: [PATCH 38/69] Release notes for version 24.11 --- doc/release_notes/24-11.txt | 579 ++++++++++++++++++++++++++++++++++++ 1 file changed, 579 insertions(+) create mode 100644 doc/release_notes/24-11.txt diff --git a/doc/release_notes/24-11.txt b/doc/release_notes/24-11.txt new file mode 100644 index 0000000000..5d8b900cc2 --- /dev/null +++ b/doc/release_notes/24-11.txt @@ -0,0 +1,579 @@ + + + =============================================== + Release notes for the Genode OS Framework 24.11 + =============================================== + + Genode Labs + + + +During the discussion of this year's road-map roughly one year ago, the +usability concerns of Sculpt OS stood out. +Besides suspend/resume, which we addressed +[https://genode.org/documentation/release-notes/24.05#Suspend_resume_infrastructure - earlier this year], +multi-monitor support ranked highest on the list of desires. We are more than +happy to wrap up the year with the realization of this feature. +Section [Multi-monitor support] presents the many facets and outcomes of this +intensive line of work. + +Over the course of 2024, our Goa SDK has received tremendous advances, which +make the development, porting, debugging, and publishing of software for +Genode - and Sculpt OS in particular - a breeze. +So far however, the learning curve for getting started remained rather steep +because the underlying concepts largely deviate from the beaten tracks known +from traditional operating systems. Even though there is plenty of +documentation, it is rather scattered and overwhelming. +All the more happy we are to announce that the current release is accompanied +by a new book "Genode Applications" that can be downloaded for free and +provides a smooth gateway for application developers into the world of Genode +(Section [New "Genode Applications" book]). + +Regarding hardware-related technical topics, the release focuses on the +ARM-based i.MX SoC family, taking our ambition to run Sculpt OS on the MNT +Pocket Reform laptop as guiding theme. Section [Device drivers and platforms] +covers our driver and platform-related work in detail. + + +New "Genode Applications" book +############################## + +Complementary to our _Genode Foundations_ and _Genode Platforms_ books, we have +been working on a new book that concentrates on application development. +_Genode Applications_ centers on the Goa SDK that we introduced with +[https://genode.org/documentation/release-notes/19.11#New_tooling_for_bridging_existing_build_systems_with_Genode - Genode 19.11] +and which has seen significant improvements over the past year +([https://genode.org/documentation/release-notes/23.08#Goa_tool_gets_usability_improvements_and_depot-index_publishing_support - 23.08], +[https://genode.org/documentation/release-notes/24.02#Sculpt_OS_as_remote_test_target_for_the_Goa_SDK - 24.02], +[https://genode.org/documentation/release-notes/24.08#Goa_SDK - 24.08]). + +:
+:

+:

+: +: +: +:
+:

+ +The book intends to provide a beginner-friendly starting point for application +development and porting for Genode and Sculpt OS in particular. It starts off +with a getting-started tutorial for the Goa tool, and further recapitulates +Genode's architecture and a subset of its libraries, components, and +conventions such as the C runtime, VFS, NIC router, and package management. +With these essentials in place, the book is topped off with instructions for +application debugging and a collection of advanced tutorials. + +Aligned with the release of Sculpt 24.10, we updated the Goa tool with the +corresponding depot archive versions. Furthermore, the Sculpt-integrated and +updated _Goa testbed_ preset is now prepared for remote debugging. + +:
+ +:First revision of the Genode Applications document: + + [https://genode.org/documentation/genode-applications-24-11.pdf] + + +Multi-monitor support +##################### + +Among the users of the Genode-based Sculpt OS, the flexible use of multiple +monitors was certainly the most longed-after desire raised during our public +road-map discussion roughly one year ago. We quickly identified that a +profound solution cannot focus on piecemeal extensions of individual +components but must embrace an architectural step forward. The step turned +out being quite a leap. +In fact, besides reconsidering the roles of display and input drivers in +[https://genode.org/documentation/release-notes/20.08#The_GUI_stack__restacked - version 20.08], +the GUI stack has remained largely unchanged since +[https://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08]. +So we took our multi-monitor ambitions as welcome opportunity to incorporate +our experiences of the past ten years into a new design for the next ten +years. + + +Tickless GUI server and display drivers +======================================= + +Up to now, the nitpicker GUI server as well as the display drivers used to +operate in a strictly periodic fashion. At a rate of 10 milliseconds, the GUI +server would route input events to the designated GUI clients and flush +graphical changes of the GUI clients to the display driver. +This simple mode of execution has benefits such as the natural ability of +batching input events and the robustness of the GUI server against overload +situations. However, in Sculpt OS, we observed that the fixed rate induces +little but constant load into an otherwise idle system, rendering +energy-saving regimes of modern CPUs less effective than they could be. +This problem would become amplified in the presence of multiple output channels +operating at independent frame rates. Moreover, with panel self-refresh +support of recent Intel graphics devices, the notion of a fixed continuous +frame rate has become antiquated. + +Hence, it was time to move to a tickless GUI-server design where the GUI +server acts as a mere broker between events triggered by applications (e.g., +pushing pixels) and drivers (e.g., occurrence of input, scanout to a display). +Depending on the behavior of its clients (GUI applications and drivers alike), +the GUI server notifies the affected parties about events of interest but +does not assert an active role. + +For example, if a display driver does not observe any changed pixels for 50 +ms, it goes to sleep. Once an application updates pixels affecting a display, +the GUI server wakes up the respective display driver, which then polls the +pixels at a driver-defined frame rate until observing when the pixels remain +static for 50 ms. Vice versa, the point in time when a display driver requests +updated pixels is reflected as a sync event to GUI applications visible on +that display, enabling such applications to synchronize their output to the +frame rate of the driver. The GUI server thereby asserts the role of steering +the sleep cycles of drivers and applications. Unless anything happens on +screen, neither the GUI server nor the display driver are active. When two +applications are visible on distinct monitors, the change of one application +does not induce any activity regarding the unrelated display. This allows for +scaling up the number of monitors without increasing the idle CPU load. + +This change implies that the former practice of using sync signals as a +time source for application-side animation timing is no longer viable. +Sync signals occur only when a driver is active after all. GUI applications +may best use sync signals for redraw scheduling but need to use a real time +source as basis for calculating the progress of animations. + + +Paving the ground for tearing-free motion +========================================= + +Tearing artifacts during animations are rightfully frowned upon. It goes +without saying that we strive to attain tearing-free motion in Genode. Two +preconditions must be met. First, the GUI server must be able to get hold +of a _consistent_ picture at any time. Second, the flushing of the picture +to the display hardware must be timed with _vsync_ of the physical display. + +Up to now, the GUI stack was unable to meet the first precondition by design. +If the picture is composed of multiple clients, the visual representation of +each client must be present in a consistent state. +The textures used as input of the compositing of the final picture are buffers +shared between server and client. Even though clients traditionally employ +double-buffering to hide intermediate drawing states, the final back-to-front +copy into the shared buffer violated the consistency of the buffer during +the client-side copy operation - when looking at the buffer from the server +side. To overcome this deficiency, we have now equipped the GUI server with +atomic blitting and panning operations, which support atomic updates in two +fashions. + +_Atomic back-to-front blitting_ allows GUI clients that partially update their +user interface - like regular application dialogs - to implement double +buffering by placing both the back buffer and front buffer within the GUI +session's shared buffer and configuring a view that shows only the front +buffer. The new blit operation ('Framebuffer::Session::blit') allows the client +to atomically flush pixels from the back buffer to the front buffer. + +_Atomic buffer flipping_ allows GUI clients that always update all pixels - +like a media player or a game - to leverage panning +('Framebuffer::Session::panning') to atomically redirect the displayed pixels to +a different portion of the GUI session's shared buffer without any copy +operation needed. The buffer contains two frames, the displayed one and the +next one. Once the next frame is complete, the client changes the panning +position to the portion containing the next frame. + +Almost all GUI clients of the Genode OS framework have been updated to use +these new facilities. + +The vsync timing as the second precondition for tearing-free motion lies in +the hands of the display driver, which can in principle capture pixel updates +from the GUI server driven by vsync interrupts. In the presence of multiple +monitors with different vsync rates, a GUI client may deliberately select +a synchronization source ('Framebuffer::Session::sync_source'). That said, +even though the interfaces are in place, vsync timing is not yet provided by +the current display drivers. + + +Mirrored and panoramic monitor setups +===================================== + +A display driver interacts with the nitpicker GUI server as a capture client. +One can think of a display driver as a screen-capturing application. +Up until now, the nitpicker GUI server handed out the same picture to each +capture client. So each client obtained a mirror of the same picture. By +subjecting each client to a policy defining a window within a larger panorama, +a driver creating one capture session per monitor becomes able to display the +larger panorama spanning the connected displays. The assignment of capture +clients to different parts of the panorama follows Genode's established +label-based policy-selection approach as explained in the +[https://github.com/genodelabs/genode/blob/master/repos/os/src/server/nitpicker/README - documentation] +of the nitpicker GUI server. + +Special care has been taken to ensure that the pointer is always visible. It +cannot be moved to any area that is not captured. Should the only capture +client displaying the pointer disappear, the pointer is warped to the center +of (any) remaining capture client. + +A mirrored monitor setup can in principle be attained by placing multiple +capture clients at the same part of nitpicker's panorama. However, there is +a better way: Our Intel display-driver component supports both discrete and +merged output channels. The driver's configuration subsumes all connectors +listed within a '' node as a single encompassing capture session at the +GUI server. The mirroring of the picture is done by the hardware. Each +connector declared outside the '' node is handled as a discrete capture +session labeled after the corresponding connector. The driver's +[https://github.com/genodelabs/genode/blob/master/repos/pc/src/driver/framebuffer/intel/pc/README - documentation] +describes the configuration in detail. + + +Sculpt OS integration +===================== + +All the changes described above are featured in the recently released +Sculpt OS version 24.10, which gives the user the ability to attain mirrored +or panoramic monitor setups or a combination thereof by the means of manual +configuration or by using interactive controls. + +[image sculpt_24_10_intel_fb] + +You can find the multi-monitor use of Sculpt OS covered by the +[https://genode.org/documentation/articles/sculpt-24-10#Multi-monitor_support - documentation]. + + +Revised inter-component interfaces +================================== + +Strict resource partitioning between GUI clients +------------------------------------------------ + +Even though Genode gives server components the opportunity to strictly operate +on client-provided resources only, the two prominent GUI servers - nitpicker +and the window manager (wm) - did not leverage these mechanisms to full +extent. In particular the wm eschewed strict resource accounting by paying out +of its own pocket. This deficiency has been rectified by the current release, +thereby making the GUI stack much more robust against potential resource +denial-of-service issues. Both the nitpicker GUI server and the window manager +now account all allocations to the resource budgets of the respective clients. +This change has the effect that GUI clients must now be equipped with the +actual cap and RAM quotas needed. + +Note that not all central parts of the GUI stack operate on client-provided +resources. In particular, a window decorator is a mere client of the window +manager despite playing a role transcending multiple applications. As the +costs needed for the decorations depend on the number of applications present +on screen, the resources of the decorator must be dimensioned with a sensible +upper bound. Fortunately, however, as the decorator is a plain client of the +window manager, it can be restarted, replaced, and upgraded without affecting +any application. + + +Structured mode information for applications +-------------------------------------------- + +Up to now, GUI clients were able to request mode information via a plain +RPC call that returned the dimensions and color depth of the display. +Multi-monitor setups call for more flexibility, which prompted us to +replace the mode information by XML-structured information delivered as +an 'info' dataspace. This is in line with how meta information is handled +in other modern session interfaces like the platform or USB sessions. +The new representation gives us room to annotate information that could +previously not be exposed to GUI clients, in particular: + +* The total panorama dimensions. +* Captured areas within the panorama, which can be used by multi-monitor + aware GUI clients as intelligence for placing GUI views. +* DPI information carried by 'width_mm' and 'height_mm' attributes. + This information is defined by the display driver and passed to the GUI + server as 'Capture::Connection::buffer' argument. +* The closed state of a window interactively closed by the user. + +Note that the window manager (wm) virtualizes the information of the nitpicker +GUI server. Instead of exposing nitpicker's panorama to its clients, the wm +reports the logical screen hosting the client's window as panorama and the +window size as a single captured rectangle within the panorama. + + +Mouse grabbing +-------------- + +Since the inception of the nitpicker GUI server, its clients observed absolute +pointer positions only. The GUI server unconditionally translated relative +mouse-motion events to absolute motion events. +To accommodate applications like games or a VM emulating a relative pointer +device, we have now extended the GUI server(s) with the ability to selectively +expose relative motion events while locking the absolute pointer position. +This is usually called pointer grabbing. It goes without saying that the user +must always retain a way to forcefully reassert control over the pointer +without the cooperation of the application. + +The solution is the enhancement of the 'Input::Session' interface by a new RPC +function that allows a client to request exclusive input. The nitpicker GUI +server grants this request if the application owns the focus. In scenarios +using the window manager (wm), the focus is always defined by the wm, which +happens to intercept all input sessions of GUI applications. Hence, the wm is +in the natural position of arbitrating the grabbing/ungrabbing of the pointer. +For each GUI client, the wm records whether the client is interested in +exclusive input but does not forward this request to nitpicker. Only if a GUI +client receives the focus and has requested exclusive input, the wm enables +exclusive input for this client at nitpicker when observing a mouse click on +the application window. Whenever the user presses the global wm key (super), +the wm forcefully releases the exclusive input at nitpicker until the user +clicks into the client window the next time. + +Furthermore, an application may enable exclusive input transiently during a +key sequence, e.g., when dragging the mouse while holding the mouse button. +Transient exclusive input is revoked as soon as the last button/key is +released. It thereby would in principle allow for GUI controls like knobs to +lock the pointer position while the user adjusts the value by moving the mouse +while the mouse button is held. So the pointer retains its original position +at the knob. + +While operating in exclusive input mode, there is no useful notion of an +absolute pointer position at the nitpicker GUI server. Hence, nitpicker hides +GUI domains that use the pointer position as coordinate origin. Thereby, the +mouse cursor automatically disappears while the pointer is grabbed. + + +Current state and ongoing work +============================== + +All the advances described above are in full effect in the recently released +version 24.10 of [https://genode.org/download/sculpt - Sculpt OS]. All +components hosted in Genode's main and world repositories have been updated +accordingly, including Genode-specific components like the widget toolkit +used by the administrative user interface of Sculpt OS, window decorators, +over Qt5 and Qt6, to SDL and SDL2. + +[image multiple_monitors] + +Current work is underway to implement multi-monitor window management and to +make multiple monitors seamlessly available to guest OSes hosted in VirtualBox. +Furthermore, the Intel display driver is currently getting equipped with the +ability to use vsync interrupts for driving the interaction with the GUI +server, taking the final step to attain tearing-free motion. + + +Device drivers and platforms +############################ + +Linux device-driver environment (DDE) +===================================== + +With our +[https://genode.org/documentation/release-notes/24.08#Linux_device-driver_environment__DDE_ - recent] +update of the DDE Linux kernel to version 6.6 for PC platforms and as a +prerequisite to support the MNT Pocket Reform, we have adapted all drivers for +the i.MX5/6/7/8 platforms to Linux kernel version 6.6.47. The list of drivers +includes Wifi, NIC, display, GPU, USB and SD-card. + + +MNT Pocket Reform +~~~~~~~~~~~~~~~~~ + +The [https://shop.mntre.com/products/mnt-pocket-reform - MNT Pocket Reform] is +a Mini Laptop by MNT aiming to be modular, upgradable, and repairable while +being assembled completely using open-source hardware. Being modular implies +that a range of CPU modules is available for the MNT Pocket. Some of these +chips, like the Rockchip based modules, are not officially supported by +Genode, yet. But there is a choice of an i.MX8MP based module available which +fits nicely into Genode's i.MX infrastructure. + +Genode already supports the MNT Reform 2 i.MX8MQ based +[https://genodians.org/skalk/2020-06-29-mnt-reform - laptop]. So an update from +MQ to MP doesn't sound like a big issue because only one letter changed, +right? It turns out that there are more changes to the platform than mere +adjustments of I/O resources and interrupt numbers. Additionally, the MNT +Reform team offers quite a large patch set for each supported Linux kernel +version. Luckily there is +[https://source.mnt.re/reform/reform-debian-packages/-/tree/main/linux/patches6.6?ref_type=heads - one] +for our just updated Linux 6.6 kernel. With this patch set, we were able to +produce a Linux source tree (imx_linux) that we now take as basis for driver +development on Genode. Note that these Linux kernel sources are shared by all +supported i.MX platforms. Of course, additional patch series were necessary to +include device-tree sources from other vendor kernels, for instance from +Compulab. + +With the development environment in place and after putting lots of effort in, +we ultimately achieved initial Genode support for the MNT Pocket Reform with +Genode 24.11. + +On the device-driver side of things, we did not have to port lots of new +drivers but were able to extend drivers already available for the i.MX8MQ +platform. In particular these drivers are for the wired network card, USB host +controller, display, and SD card. + +For the wireless network device that is found on the i.MX8MP SoM in the MNT +Pocket Reform, we needed to port a new driver. It has a Qualcomm QCA9377 +chipset and is attached via SDIO. Unfortunately the available _ath10k_ driver +in the vanilla kernel does not work properly with such a device and therefore +is also not used in the regular Linux kernel for the MNT Pocket Reform. A +slightly adapted external QCACLD2 reference driver is used instead. So we +followed suit by incorporating this particular driver in our _imx_linux_ +source tree as well. + +[image sculpt_mnt_pocket] + Sculpt OS running on the MNT Pocket Reform + +Being the initial enablement, there are still some limitations. +For example, the display of the MNT Pocket is physically +[https://mntre.com/documentation/pocket-reform-handbook.pdf - rotated] by 90 +degrees. So, we had to find a way to accommodate for that. Unfortunately, +there seems to be no hardware support other than using the GPU to perform +a fast rotation. With GPU support still missing on this system, we had to +resort to perform the rotation in software on the CPU, which is obviously +far from optimal. +Those early inefficiencies notwithstanding, Sculpt OS has become able to run +on the MNT Pocket Reform. We will provide a preview image that exercises the +available features soon. + + +Platform driver for i.MX 8M Plus +================================ + +While enabling support for the MNT Pocket Reform (Section [MNT Pocket Reform]), +it was necessary to adjust the i.MX8MP specific platform driver, which was +originally introduced in the previous +[https://genode.org/documentation/release-notes/24.08#Improvements_for_NXP_s_i.MX_family - release 24.08] +to drive the Compulab i.MX 8M Plus IOT Gateway. + +Some of the I/O pin configurations necessary to set up the SoC properly are +statically compiled into this driver because they do not change at runtime. +However, the pin configuration is specific to the actual board. Therefore, the +i.MX8MP platform driver now needs to distinguish between different boards (IOT +Gateway and MNT Pocket) by evaluating the 'platform_info' ROM provided by +core. + +Moreover, while working on different drivers, we detected a few missing clocks +that were added to the platform driver. It turned out that some clocks that we +initially turned off to save energy, have to be enabled to ensure the +liveliness of the ARM Trusted Firmware (ATF) and thereby the platform. Also, +we had to adapt the communication in between ATF and our platform driver to +control power-domains. The first version of the i.MX8MP platform driver shared +the ATF power-domains protocol with the i.MX8MQ version. However, the +power-domain enumerations of the different firmwares varies also and we +adapted that. + +Finally, the watchdog hardware is now served by the platform driver in a +recurrent way. Originally our driver used the watchdog only to implement reset +functionality. But in case of the MNT Pocket Reform, the watchdog hardware is +already armed by the bootloader. Therefore, it needs to get served in time, to +prevent the system from rebooting. As a consequence, the platform driver is +mandatory on this platform if it needs to run longer than a minute. + + +Wifi management rework +====================== + +Our management interface in the wifi driver served us well over the years +and concealed the underlying complexity of the wireless stack. At the same +time it gained some complexity itself to satisfy a variety of use-cases. +Thus, we took the past release cycle as opportunity to rework the management +layer to reduce its complexity by streamlining the interaction between +various parts, like the manager layer itself, 'wpa_supplicant' as well as +the device driver in order to provide a sound foundation for future +adaptions. +Included is also an update of the 'wpa_supplicant' to version 2.11. + +The following segments detail the changes made to the configuration options as +they were altered quite a bit to no longer mix different tasks (e.g. joining a +network and scanning for hidden networks) while removing obsolete options. + +At the top-level '' node, the following alterations were made: + +* The 'log_level' attribute was added and configures the supplicant's + verbosity. Valid values correspond to levels used by the supplicant + and are as follows: 'excessive', 'msgdump', 'debug', 'info', 'warning', + and 'error'. The default value is 'error' and configures the least + amount of verbosity. This option was introduced to ease the investigation + of connectivity issues. + +* The 'bgscan' attribute may be used to configure the way the + supplicant performs background-scanning to steer or rather optimize + roaming decision within the same network. The default value is set + to 'simple:30:-70:600'. The attribute is forwarded unmodified to the WPA + supplicant and thus provides the syntax supported by the supplicant + implementation. It can be disabled by specifying an empty value, e.g. + 'bgscan=""'. + +* The 'connected_scan_interval' attribute was removed as this functionality + is now covered by background scanning. + +* The 'verbose_state' attribute was removed altogether and similar + functionality is now covered by the 'verbose' attribute. + +The network management received the following changes: + +* Every configured network, denoted by a '' node, is now implicitly + considered an option for joining. The 'auto_connect' attribute was + removed and a '' node must be renamed or removed to deactivate + automatic connection establishment. + +* The intent to scan for a hidden network is now managed by the newly + introduced '' node that like the '' node has + an 'ssid' attribute. If the specified SSID is valid, it is incorporated + into the scan request to actively probe for this network. As the node + requests explicit scanning only, a corresponding '' node is + required to actually connect to the hidden network. + The 'explicit_scan' attribute of the '' node has been removed. + +The following exemplary configuration shows how to configure the driver +for attempting to join two different networks where one of them is hidden. +The initial scan interval is set 10 seconds and the signal quality will be +updated every 30 seconds while connected to a network. + +! +! +! +! +! + +For more information please consult the driver's +[https://github.com/genodelabs/genode/blob/master/repos/dde_linux/src/driver/wifi/README - documentation] +that now features a best-practices section explaining how the driver should be +operated at best, and highlights the difference between a managed (as used in +Sculpt OS) and a user-generated configuration. + + +Audio driver updated to OpenBSD 7.6 +=================================== + +With this release, we updated our OpenBSD-based audio driver to a more recent +revision that correlates to version 7.6. It supports newer devices, e.g. Alder +Lake-N, and includes a fix for using message-signaled interrupts (MSI) with +HDA devices as found in AMD-based systems. + + +AVX and hardware-based AES in virtual machines +============================================== + +The current release adds support for requesting and transferring the AVX FPU +state via Genode's VM-session interface. With this prerequisite fulfilled, we +enabled the announcement of the AVX feature to guest VMs in our port of +VirtualBox6. + +Additionally, we enabled the announcement of AES and RDRAND CPU features to +guest VMs to further improve the utilization of the hardware. + + +Build system and tools +###################### + +Extended depot-tool safeguards +------------------------------ + +When using the run tool's '--depot-auto-update' feature while switching +between different git topic branches with committed recipe hashes, a binary +archive present in the depot may accidentally not match its ingredients +because the depot/build tool's 'REBUILD=' mode - as used by the depot +auto-update mechanism - merely looks at the archive versions. This situation +is arguably rare. But when it occurs, its reach and effects are hard to +predict. To rule out this corner case early, the depot/build tool has now been +extended by recording the hashes of the ingredients of binary archives. When +skipping a rebuild because the desired version presumably already exists as a +binary archive, the recorded hashes are compared to the current state of the +ingredients (src and api archives). Thereby inconsistencies are promptly +reported to the user. + +Users of the depot tool will notice .hash files appearing alongside src and +api archives. Those files contain the hash value of the content of the +respective archive. Each binary archive built is now also accompanied by a +.hash file, which contains a list of hash values of the ingredients that went +into the binary archive. Thanks to these .hash files, the consistency between +binaries and their ingredients can be checked quickly. + +_As a note of caution, when switching to the Genode 24.11 with existing depot,_ +_one will possibly need to remove existing depot archives (as listed by the_ +_diagnostic messages) because the existing archives are not accompanied by +_.hash files yet._ From 2b1891378224c989a2d9ac8ac5df5c13afb9fda1 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 22 Nov 2024 12:03:01 +0100 Subject: [PATCH 39/69] News item for version 24.11 --- doc/news.txt | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/doc/news.txt b/doc/news.txt index d6bbeabca3..b18513a440 100644 --- a/doc/news.txt +++ b/doc/news.txt @@ -4,6 +4,51 @@ =========== +Genode OS Framework release 24.11 | 2024-11-22 +############################################## + +| With mirrored and panoramic multi-monitor setups, pointer grabbing, +| atomic blitting and panning, and panel-self-refresh support, Genode's GUI +| stack gets ready for the next decade. Hardware-wise, version 24.11 brings +| a massive driver update for the i.MX SoC family. As a special highlight, the +| release is accompanied by the first edition of the free book "Genode +| Applications" as a gateway for application developers into Genode. + +Closing up the Year of Sculpt OS usability as the theme of our road map +for 2024, we are excited to unveil the results of two intense lines of +usability-concerned work with the release of Genode 24.11. + +For the usability of the Genode-based Sculpt OS as day-to-day operating +system, the support of multi-monitor setups has been an unmet desire +for a long time. Genode 24.11 does not only deliver a solution as a +singular feature but improves the entire GUI stack in a holistic way, +addressing panel self-refresh, mechanisms needed to overcome tearing +artifacts, rigid resource partitioning between GUI applications, up to +pointer-grabbing support. + +The second line of work addresses the usability of application development for +Genode and Sculpt OS in particular. Over the course of the year, our Goa SDK +has seen a succession of improvements that make the development, porting, +debugging, and publishing of software a breeze. Still, given Genode's +novelties, the learning curve to get started has remained challenging. Our new +book "Genode Applications" is intended as a gateway into the world of Genode +for those of us who enjoy dwelling in architectural beauty but foremost want +to get things done. It features introductory material, explains fundamental +concepts and components, and invites the reader on to a ride through a series +of beginner-friendly as well as advanced tutorials. The book can be downloaded +for free at [https://genode.org]. + +Regarding hardware support, our work during the release cycle was hugely +motivated by the prospect of bringing Genode to the MNT Pocket Reform laptop, +which is based on the NXP i.MX8MP SoC. Along this way, we upgraded all +Linux-based i.MX drivers to kernel version 6.6 while consolidating a variety +of vendor kernels, equipped our platform driver with watchdog support, and +added board support for this platform to Sculpt OS. + +You can find these among more topics covered in the detailed +[https:/documentation/release-notes/24.11 - release documentation of version 24.11...] + + Sculpt OS release 24.10 | 2024-10-30 #################################### From 873386f8a171210a4835ae1427a4a6b9dbbb9867 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Fri, 22 Nov 2024 13:20:15 +0100 Subject: [PATCH 40/69] version: 24.11 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 3dce2e921c..f88da62e24 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -24.08 +24.11 From fa9473ce588d9c66cd0737719a5697d3e322884a Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 22 Nov 2024 18:16:17 +0100 Subject: [PATCH 41/69] doc/release_notes/24-11.txt: minor style fixes --- doc/release_notes/24-11.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/release_notes/24-11.txt b/doc/release_notes/24-11.txt index 5d8b900cc2..6a9b77d72b 100644 --- a/doc/release_notes/24-11.txt +++ b/doc/release_notes/24-11.txt @@ -568,12 +568,12 @@ reported to the user. Users of the depot tool will notice .hash files appearing alongside src and api archives. Those files contain the hash value of the content of the -respective archive. Each binary archive built is now also accompanied by a -.hash file, which contains a list of hash values of the ingredients that went +respective archive. Each binary archive built is now also accompanied by +a .hash file, which contains a list of hash values of the ingredients that went into the binary archive. Thanks to these .hash files, the consistency between binaries and their ingredients can be checked quickly. _As a note of caution, when switching to the Genode 24.11 with existing depot,_ _one will possibly need to remove existing depot archives (as listed by the_ -_diagnostic messages) because the existing archives are not accompanied by +_diagnostic messages) because the existing archives are not accompanied by_ _.hash files yet._ From 37842757ac31de1bf81ae113c96b0a72750ca473 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Tue, 26 Nov 2024 01:08:15 +0100 Subject: [PATCH 42/69] libc: synchronize implicit pthread mutex initialization Fixes #5386 --- repos/libports/src/lib/libc/pthread.cc | 38 ++++++++++++++++++-------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/repos/libports/src/lib/libc/pthread.cc b/repos/libports/src/lib/libc/pthread.cc index 3903793112..49fb0d90d5 100644 --- a/repos/libports/src/lib/libc/pthread.cc +++ b/repos/libports/src/lib/libc/pthread.cc @@ -950,12 +950,19 @@ extern "C" { __attribute__((alias("pthread_mutexattr_settype"))); - int pthread_mutex_init(pthread_mutex_t *mutex, - pthread_mutexattr_t const *attr) + int mutex_init(pthread_mutex_t *mutex, + pthread_mutexattr_t const *attr) { - if (!mutex) - return EINVAL; + static Mutex mutex_init_mutex { }; + Mutex::Guard guard(mutex_init_mutex); + + /* + * '*mutex' could have been initialized by a different + * thread which got the init mutex earlier. + */ + if (*mutex != PTHREAD_MUTEX_INITIALIZER) + return 0; Libc::Allocator alloc { }; @@ -966,15 +973,24 @@ extern "C" { case PTHREAD_MUTEX_ADAPTIVE_NP: *mutex = new (alloc) Pthread_mutex_normal; break; case PTHREAD_MUTEX_ERRORCHECK: *mutex = new (alloc) Pthread_mutex_errorcheck; break; case PTHREAD_MUTEX_RECURSIVE: *mutex = new (alloc) Pthread_mutex_recursive; break; - - default: - *mutex = nullptr; - return EINVAL; + default: return EINVAL; } return 0; } + int pthread_mutex_init(pthread_mutex_t *mutex, + pthread_mutexattr_t const *attr) + { + if (!mutex) + return EINVAL; + + /* mark as uninitialized for 'mutex_init()' */ + *mutex = PTHREAD_MUTEX_INITIALIZER; + + return mutex_init(mutex, attr); + } + typeof(pthread_mutex_init) _pthread_mutex_init __attribute__((alias("pthread_mutex_init"))); @@ -1001,7 +1017,7 @@ extern "C" { return EINVAL; if (*mutex == PTHREAD_MUTEX_INITIALIZER) - pthread_mutex_init(mutex, nullptr); + mutex_init(mutex, nullptr); return (*mutex)->lock(); } @@ -1016,7 +1032,7 @@ extern "C" { return EINVAL; if (*mutex == PTHREAD_MUTEX_INITIALIZER) - pthread_mutex_init(mutex, nullptr); + mutex_init(mutex, nullptr); return (*mutex)->trylock(); } @@ -1032,7 +1048,7 @@ extern "C" { return EINVAL; if (*mutex == PTHREAD_MUTEX_INITIALIZER) - pthread_mutex_init(mutex, nullptr); + mutex_init(mutex, nullptr); /* abstime must be non-null according to the spec */ return (*mutex)->timedlock(*abstimeout); From 35a679d86195cd7920152fd1642756358a99acdf Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Tue, 26 Nov 2024 01:08:19 +0100 Subject: [PATCH 43/69] libc: pthread cond/rwlock improvements - add a check to detect if a different thread has initialized the internal object in the meantime - remove ENOMEM error since the 'Libc::Allocator' is not supposed to throw exceptions - remove init mutex from 'pthread_condattr_init()' since there is no implicit initialization which could happen in parallel like with mutex/cond/rwlock Issue #5386 --- repos/libports/src/lib/libc/pthread.cc | 53 ++++++++++++++++---------- repos/libports/src/lib/libc/rwlock.cc | 30 +++++++++------ 2 files changed, 51 insertions(+), 32 deletions(-) diff --git a/repos/libports/src/lib/libc/pthread.cc b/repos/libports/src/lib/libc/pthread.cc index 49fb0d90d5..644db5cb4f 100644 --- a/repos/libports/src/lib/libc/pthread.cc +++ b/repos/libports/src/lib/libc/pthread.cc @@ -1086,6 +1086,15 @@ extern "C" { sem_t signal_sem; sem_t handshake_sem; + struct Invalid_timedwait_clock { }; + + void _cleanup() + { + sem_destroy(&handshake_sem); + sem_destroy(&signal_sem); + pthread_mutex_destroy(&counter_mutex); + } + pthread_cond(clockid_t clock_id) : num_waiters(0), num_signallers(0) { pthread_mutex_init(&counter_mutex, nullptr); @@ -1093,17 +1102,12 @@ extern "C" { sem_init(&handshake_sem, 0, 0); if (sem_set_clock(&signal_sem, clock_id)) { - struct Invalid_timedwait_clock { }; + _cleanup(); throw Invalid_timedwait_clock(); } } - ~pthread_cond() - { - sem_destroy(&handshake_sem); - sem_destroy(&signal_sem); - pthread_mutex_destroy(&counter_mutex); - } + ~pthread_cond() { _cleanup(); } }; @@ -1115,17 +1119,11 @@ extern "C" { int pthread_condattr_init(pthread_condattr_t *attr) { - static Mutex condattr_init_mutex { }; - if (!attr) return EINVAL; - try { - Mutex::Guard guard(condattr_init_mutex); - Libc::Allocator alloc { }; - *attr = new (alloc) pthread_cond_attr; - return 0; - } catch (...) { return ENOMEM; } + Libc::Allocator alloc { }; + *attr = new (alloc) pthread_cond_attr; return 0; } @@ -1161,22 +1159,35 @@ extern "C" { { static Mutex cond_init_mutex { }; - if (!cond) - return EINVAL; + Mutex::Guard guard(cond_init_mutex); + + /* + * '*cond' could have been initialized by a different + * thread which got the init mutex earlier. + */ + if (*cond != PTHREAD_COND_INITIALIZER) + return 0; + + Libc::Allocator alloc { }; try { - Mutex::Guard guard(cond_init_mutex); - Libc::Allocator alloc { }; *cond = attr && *attr ? new (alloc) pthread_cond((*attr)->clock_id) : new (alloc) pthread_cond(CLOCK_REALTIME); - return 0; - } catch (...) { return ENOMEM; } + } catch (pthread_cond::Invalid_timedwait_clock) { return EINVAL; } + + return 0; } int pthread_cond_init(pthread_cond_t *__restrict cond, const pthread_condattr_t *__restrict attr) { + if (!cond) + return EINVAL; + + /* mark as uninitialized for 'cond_init()' */ + *cond = PTHREAD_COND_INITIALIZER; + return cond_init(cond, attr); } diff --git a/repos/libports/src/lib/libc/rwlock.cc b/repos/libports/src/lib/libc/rwlock.cc index e29626b682..e4b1c87b7d 100644 --- a/repos/libports/src/lib/libc/rwlock.cc +++ b/repos/libports/src/lib/libc/rwlock.cc @@ -104,20 +104,30 @@ extern "C" { { static Mutex rwlock_init_mutex { }; - if (!rwlock) - return EINVAL; + Mutex::Guard g(rwlock_init_mutex); - try { - Mutex::Guard g(rwlock_init_mutex); - Libc::Allocator alloc { }; - *rwlock = new (alloc) struct pthread_rwlock(); + /* + * '*rwlock' could have been initialized by a different + * thread which got the init mutex earlier. + */ + if (*rwlock != PTHREAD_RWLOCK_INITIALIZER) return 0; - } catch (...) { return ENOMEM; } + + Libc::Allocator alloc { }; + *rwlock = new (alloc) struct pthread_rwlock(); + + return 0; } int pthread_rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr) { + if (!rwlock) + return EINVAL; + + /* mark as uninitialized for 'rwlock_init()' */ + *rwlock = PTHREAD_RWLOCK_INITIALIZER; + return rwlock_init(rwlock, attr); } @@ -142,8 +152,7 @@ extern "C" { return EINVAL; if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - if (rwlock_init(rwlock, NULL)) - return ENOMEM; + rwlock_init(rwlock, NULL); (*rwlock)->rdlock(); return 0; @@ -159,8 +168,7 @@ extern "C" { return EINVAL; if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - if (rwlock_init(rwlock, NULL)) - return ENOMEM; + rwlock_init(rwlock, NULL); (*rwlock)->wrlock(); return 0; From b50bbef3036e5e656eadf5e04e83937012149728 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Thu, 14 Nov 2024 11:31:28 +0100 Subject: [PATCH 44/69] tool: support meshcmd as AMT alternative tool which may be used as alternative for - AMT log grabbing, default: amtterm - AMT power cycling, default: wsman, alternative: amttool https://www.meshcommander.com https://github.com/Ylianst/MeshCommander https://www.intel.com/content/www/us/en/developer/articles/news/meshcmd-new-intel-amt-command-line-tool.html --- tool/run/amt.inc | 4 ++++ tool/run/log/amt | 46 +++++++++++++++++++++++++------------------ tool/run/power_on/amt | 30 ++++++++++++++++++++-------- 3 files changed, 53 insertions(+), 27 deletions(-) diff --git a/tool/run/amt.inc b/tool/run/amt.inc index 62d887caec..4fc882df2b 100644 --- a/tool/run/amt.inc +++ b/tool/run/amt.inc @@ -23,6 +23,10 @@ proc is_amt_available { {host "" } {password "" } } { return true } + if {[have_installed meshcmd]} { + return true + } + puts "No support for Intel's AMT detected." return false } diff --git a/tool/run/log/amt b/tool/run/log/amt index f20b015a8d..0f95758051 100644 --- a/tool/run/log/amt +++ b/tool/run/log/amt @@ -44,11 +44,11 @@ proc run_log { wait_for_re timeout_value } { return false } - set amt_tool [get_cmd_arg --amt-tool "wsman"] + set amt_tool [get_cmd_arg --amt-tool "default"] # Check that SOL is correctly configured if wsman is available - if {![log_amt_skip_test]} { - if {[have_installed wsman] && $amt_tool=="wsman" } { + if {![log_amt_skip_test] && ( $amt_tool == "wsman" || $amt_tool == "default" )} { + if {[have_installed wsman]} { puts "Test for working AMT SOL redirection service ..." set redir_state [exec wsman get http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RedirectionService -h [log_amt_host] -P 16992 -u admin -p [log_amt_password]] set redir_state [regexp -inline {ListenerEnabled.*ListenerEnabled} $redir_state] @@ -62,21 +62,6 @@ proc run_log { wait_for_re timeout_value } { } else { puts " Warning: could not check AMT SOL redirection service because of missing wsman tool, --amt-tool==$amt_tool" } - } else { - puts "Skipping test for working AMT SOL redirection service" - } - - # - # password via environment variable for amtterm will not show up in logs - # - set ::env(AMT_PASSWORD) [log_amt_password] - - # - # grab output - # - set amt_cmd "amtterm -u admin -v [log_amt_host]" - if {[get_cmd_switch --log-amt-filter]} { - set amt_cmd "$amt_cmd | [log_amt_filter]" } if {$wait_for_re == "forever"} { @@ -86,7 +71,30 @@ proc run_log { wait_for_re timeout_value } { } set exit_result 1 - lassign [retry 30 "/bin/sh -c \"$amt_cmd\"" ".*session authentication" 0.5] retry_output output_spawn_id + # + # prepare command + # + if {[have_installed meshcmd] && ( $amt_tool == "meshcmd" )} { + set amt_cmd "meshcmd amtterm --host [log_amt_host] --password [log_amt_password]" + set amt_log ".*Connected" + } else { + # + # password via environment variable for amtterm will not show up in logs + # + set ::env(AMT_PASSWORD) [log_amt_password] + + set amt_cmd "amtterm -u admin -v [log_amt_host]" + set amt_log ".*session authentication" + } + + if {[get_cmd_switch --log-amt-filter]} { + set amt_cmd "$amt_cmd | [log_amt_filter]" + } + + # + # grab output + # + lassign [retry 30 "/bin/sh -c \"$amt_cmd\"" "$amt_log" 2] retry_output output_spawn_id if {$retry_output == ""} { puts stderr "Aborting, AMT SOL not accessible" diff --git a/tool/run/power_on/amt b/tool/run/power_on/amt index c9d9f2ac7c..da31f6e97f 100644 --- a/tool/run/power_on/amt +++ b/tool/run/power_on/amt @@ -102,6 +102,20 @@ proc amt_reset_wsman { } { } +## +# Reset via meshcmd +# Executes a power on or power cycle depending on the current power state +# +proc amt_reset_meshcmd { } { + set power_state [exec meshcmd amtpower --reset --host [power_on_amt_host] --password [power_on_amt_password]] + if { $power_state == "Current power state: Soft off" } { + exec meshcmd amtpower --powercycle --host [power_on_amt_host] --password [power_on_amt_password] + } else { + exec meshcmd amtpower --poweron --host [power_on_amt_host] --password [power_on_amt_password] + } +} + + ## # Reset the test machine using Intel's AMT # @@ -111,7 +125,7 @@ proc run_power_on { } { } # - # amttool and wsman are supported for reset + # amttool, wsman and meshcmd are supported for reset # set amt_tool [get_cmd_arg --amt-tool "default"] @@ -121,14 +135,14 @@ proc run_power_on { } { if {[have_installed wsman] && ( $amt_tool == "wsman" || $amt_tool == "default") } { amt_reset_wsman + } elseif {[have_installed meshcmd] && ( $amt_tool == "meshcmd" )} { + amt_reset_meshcmd + } elseif {[have_installed amttool] && + ( $amt_tool == "amttool" || $amt_tool == "default") } { + amt_reset_soap_eoi } else { - if {[have_installed amttool] && - ($amt_tool == "amttool" || $amt_tool == "default") } { - amt_reset_soap_eoi - } else { - puts stderr "specified tool \"$amt_tool\" for using Intel AMT is unknown or is not installed" - exit -1 - } + puts stderr "specified tool \"$amt_tool\" for using Intel AMT is unknown or is not installed" + exit -1 } puts "wait [power_on_amt_timeout] seconds for power on" From 2c2fb6b70e8f79dfdd93f6c9922011be24c24dcf Mon Sep 17 00:00:00 2001 From: Johannes Schlatow Date: Tue, 26 Nov 2024 16:20:22 +0100 Subject: [PATCH 45/69] tool/run: add intel_hwp config to boot_dir/hw Fixes #5388 --- tool/run/boot_dir/hw | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tool/run/boot_dir/hw b/tool/run/boot_dir/hw index 469a90be50..cc1add10e0 100644 --- a/tool/run/boot_dir/hw +++ b/tool/run/boot_dir/hw @@ -1,3 +1,31 @@ +# +# Return Bender option that configures Bender's Intel HWP plugin +# +# \param --bender-intel-hwp-mode Run the Intel HWP plugin of Bender in the +# given mode. Valid argument values are +# "off", +# "performance", +# "balanced", and +# "power_saving" +# The argument value defaults to +# "performance". +# +proc bender_intel_hwp_mode_option { } { + + set opt [get_cmd_arg_first --bender-intel-hwp-mode "performance"] + if {$opt == "off"} { + return "intel_hwp_off" + } elseif {$opt == "performance"} { + return "intel_hwp_performance" + } elseif {$opt == "balanced"} { + return "intel_hwp_balanced" + } elseif {$opt == "power_saving"} { + return "intel_hwp_power_saving" + } else { + return "intel_hwp_performance" + } +} + proc binary_name_ld_lib_so { } { return "ld-hw.lib.so" } proc binary_name_core_a { } { return "core-hw.a" } proc binary_name_timer { } { return "hw_timer" } @@ -102,7 +130,7 @@ proc run_boot_dir {binaries} { exec mkdir -p [run_dir]/boot exec mv [run_dir]/image-hw.elf [run_dir]/boot/image-hw.elf - set options_bender "[boot_output] " + set options_bender "[boot_output] [bender_intel_hwp_mode_option]" if {[have_include "image/iso"] || [have_include "image/disk"] || [have_include image/uefi]} { # From cc2bcee417aa0b6bc4e682aec58c05984bc72593 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Tue, 26 Nov 2024 15:04:39 +0100 Subject: [PATCH 46/69] tool/run: create debug files for backtrace of core When building ELF binaries of core and bootstrap for a run scenario, also create the *.core.debug file to be able to use the tool/backtrace utility. Ref genodelabs/genode#5387 --- tool/run/boot_dir/hw | 1 + 1 file changed, 1 insertion(+) diff --git a/tool/run/boot_dir/hw b/tool/run/boot_dir/hw index cc1add10e0..0c442e5334 100644 --- a/tool/run/boot_dir/hw +++ b/tool/run/boot_dir/hw @@ -103,6 +103,7 @@ proc run_boot_dir {binaries} { if {[file exists debug/core-hw-[board].a]} { build_core debug/core-hw-[board].a {} [run_dir].core [core_link_address] build_core [run_dir]/genode/$bootstrap_obj {} [run_dir].bootstrap [bootstrap_link_address] + exec [cross_dev_prefix]objcopy --only-keep-debug [run_dir].core [run_dir].core.debug } # determine modules to be incorporated into the core image From 4730312c1e006e60d0064e747b7d2d2a0d874a20 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Tue, 26 Nov 2024 15:12:03 +0100 Subject: [PATCH 47/69] hw: register state and backtrace when core faults If one of core's threads is causing an MMU fault, dump the register state and stack backtrace of the faulting stack to aid debugging. Fix genodelabs/genode#5387 --- repos/base-hw/src/core/kernel/thread.cc | 20 +++++++-- repos/base-hw/src/core/spec/arm/cpu.cc | 26 ++++++++++++ repos/base-hw/src/core/spec/arm/cpu_support.h | 12 ++++++ repos/base-hw/src/core/spec/arm_v8/cpu.cc | 16 ++++++++ repos/base-hw/src/core/spec/arm_v8/cpu.h | 12 ++++++ repos/base-hw/src/core/spec/riscv/cpu.cc | 41 +++++++++++++++++++ repos/base-hw/src/core/spec/riscv/cpu.h | 5 +++ repos/base-hw/src/core/spec/x86_64/cpu.cc | 21 ++++++++++ repos/base-hw/src/core/spec/x86_64/cpu.h | 12 ++++++ 9 files changed, 161 insertions(+), 4 deletions(-) diff --git a/repos/base-hw/src/core/kernel/thread.cc b/repos/base-hw/src/core/kernel/thread.cc index 9a6374bf01..79fb99eeb3 100644 --- a/repos/base-hw/src/core/kernel/thread.cc +++ b/repos/base-hw/src/core/kernel/thread.cc @@ -935,19 +935,31 @@ void Thread::_call() void Thread::_mmu_exception() { + using namespace Genode; + using Genode::log; + _become_inactive(AWAITS_RESTART); _exception_state = MMU_FAULT; Cpu::mmu_fault(*regs, _fault); _fault.ip = regs->ip; if (_fault.type == Thread_fault::UNKNOWN) { - Genode::raw(*this, " raised unhandled MMU fault ", _fault); + Genode::warning(*this, " raised unhandled MMU fault ", _fault); return; } - if (_type != USER) - Genode::raw(*this, " raised a fault, which should never happen ", - _fault); + if (_type != USER) { + error(*this, " raised a fault, which should never happen ", + _fault); + log("Register dump: ", *regs); + log("Backtrace:"); + + Const_byte_range_ptr const stack { + (char const*)Hw::Mm::core_stack_area().base, + Hw::Mm::core_stack_area().size }; + regs->for_each_return_address(stack, [&] (void **p) { + log(*p); }); + } if (_pager && _pager->can_submit(1)) { _pager->submit(1); diff --git a/repos/base-hw/src/core/spec/arm/cpu.cc b/repos/base-hw/src/core/spec/arm/cpu.cc index 06e6f1baf5..697b9a0cf0 100644 --- a/repos/base-hw/src/core/spec/arm/cpu.cc +++ b/repos/base-hw/src/core/spec/arm/cpu.cc @@ -22,6 +22,32 @@ using namespace Core; +void Arm_cpu::Context::print(Output &output) const +{ + using namespace Genode; + using Genode::print; + + print(output, "\n"); + print(output, " r0 = ", Hex(r0), "\n"); + print(output, " r1 = ", Hex(r1), "\n"); + print(output, " r2 = ", Hex(r2), "\n"); + print(output, " r3 = ", Hex(r3), "\n"); + print(output, " r4 = ", Hex(r4), "\n"); + print(output, " r5 = ", Hex(r5), "\n"); + print(output, " r6 = ", Hex(r6), "\n"); + print(output, " r7 = ", Hex(r7), "\n"); + print(output, " r8 = ", Hex(r8), "\n"); + print(output, " r9 = ", Hex(r9), "\n"); + print(output, " r10 = ", Hex(r10), "\n"); + print(output, " r11 = ", Hex(r11), "\n"); + print(output, " r12 = ", Hex(r12), "\n"); + print(output, " ip = ", Hex(ip), "\n"); + print(output, " sp = ", Hex(sp), "\n"); + print(output, " lr = ", Hex(lr), "\n"); + print(output, " cpsr = ", Hex(cpsr)); +} + + Arm_cpu::Context::Context(bool privileged) { using Psr = Arm_cpu::Psr; diff --git a/repos/base-hw/src/core/spec/arm/cpu_support.h b/repos/base-hw/src/core/spec/arm/cpu_support.h index ef7fabdaf5..012b04eceb 100644 --- a/repos/base-hw/src/core/spec/arm/cpu_support.h +++ b/repos/base-hw/src/core/spec/arm/cpu_support.h @@ -49,6 +49,18 @@ struct Core::Arm_cpu : public Hw::Arm_cpu struct alignas(8) Context : Cpu_state, Fpu_context { Context(bool privileged); + + void print(Output &output) const; + + void for_each_return_address(Const_byte_range_ptr const &stack, + auto const &fn) + { + void **fp = (void**)r11; + while (stack.contains(fp-1) && stack.contains(fp) && fp[0]) { + fn(fp); + fp = (void **) fp[-1]; + } + } }; /** diff --git a/repos/base-hw/src/core/spec/arm_v8/cpu.cc b/repos/base-hw/src/core/spec/arm_v8/cpu.cc index e64e9f88e9..cca9f9c59e 100644 --- a/repos/base-hw/src/core/spec/arm_v8/cpu.cc +++ b/repos/base-hw/src/core/spec/arm_v8/cpu.cc @@ -22,6 +22,22 @@ using namespace Core; +void Cpu::Context::print(Output &output) const +{ + using namespace Genode; + using Genode::print; + + print(output, "\n"); + for (unsigned i = 0; i < 31; i++) + print(output, " x", i, " = ", Hex(r[i]), "\n"); + print(output, " ip = ", Hex(ip), "\n"); + print(output, " sp = ", Hex(sp), "\n"); + print(output, " esr = ", Hex(esr_el1), "\n"); + print(output, " pstate = ", Hex(pstate), "\n"); + print(output, " mdscr = ", Hex(mdscr_el1)); +} + + Cpu::Context::Context(bool privileged) { Spsr::El::set(pstate, privileged ? 1 : 0); diff --git a/repos/base-hw/src/core/spec/arm_v8/cpu.h b/repos/base-hw/src/core/spec/arm_v8/cpu.h index e4b38183cb..b48e8bec9b 100644 --- a/repos/base-hw/src/core/spec/arm_v8/cpu.h +++ b/repos/base-hw/src/core/spec/arm_v8/cpu.h @@ -79,6 +79,18 @@ struct Core::Cpu : Hw::Arm_64_cpu Fpu_state fpu_state { }; Context(bool privileged); + + void print(Output &output) const; + + void for_each_return_address(Const_byte_range_ptr const &stack, + auto const &fn) + { + void **fp = (void**)r[29]; + while (stack.contains(fp) && stack.contains(fp + 1) && fp[1]) { + fn(fp + 1); + fp = (void **) fp[0]; + } + } }; class Mmu_context diff --git a/repos/base-hw/src/core/spec/riscv/cpu.cc b/repos/base-hw/src/core/spec/riscv/cpu.cc index df9495c743..0d58bef4a6 100644 --- a/repos/base-hw/src/core/spec/riscv/cpu.cc +++ b/repos/base-hw/src/core/spec/riscv/cpu.cc @@ -25,6 +25,47 @@ using Mmu_context = Core::Cpu::Mmu_context; using namespace Core; +void Cpu::Context::print(Output &output) const +{ + using namespace Genode; + using Genode::print; + + print(output, "\n"); + print(output, " ip = ", Hex(ip), "\n"); + print(output, " ra = ", Hex(ra), "\n"); + print(output, " sp = ", Hex(sp), "\n"); + print(output, " gp = ", Hex(gp), "\n"); + print(output, " tp = ", Hex(tp), "\n"); + print(output, " t0 = ", Hex(t0), "\n"); + print(output, " t1 = ", Hex(t1), "\n"); + print(output, " t2 = ", Hex(t2), "\n"); + print(output, " s0 = ", Hex(s0), "\n"); + print(output, " s1 = ", Hex(s1), "\n"); + print(output, " a0 = ", Hex(a0), "\n"); + print(output, " a1 = ", Hex(a1), "\n"); + print(output, " a2 = ", Hex(a2), "\n"); + print(output, " a3 = ", Hex(a3), "\n"); + print(output, " a4 = ", Hex(a4), "\n"); + print(output, " a5 = ", Hex(a5), "\n"); + print(output, " a6 = ", Hex(a6), "\n"); + print(output, " a7 = ", Hex(a7), "\n"); + print(output, " s2 = ", Hex(s2), "\n"); + print(output, " s3 = ", Hex(s3), "\n"); + print(output, " s4 = ", Hex(s4), "\n"); + print(output, " s5 = ", Hex(s5), "\n"); + print(output, " s6 = ", Hex(s6), "\n"); + print(output, " s7 = ", Hex(s7), "\n"); + print(output, " s8 = ", Hex(s8), "\n"); + print(output, " s9 = ", Hex(s9), "\n"); + print(output, " s10 = ", Hex(s10), "\n"); + print(output, " s11 = ", Hex(s11), "\n"); + print(output, " t3 = ", Hex(t3), "\n"); + print(output, " t4 = ", Hex(t4), "\n"); + print(output, " t5 = ", Hex(t5), "\n"); + print(output, " t6 = ", Hex(t6)); +} + + Cpu::Context::Context(bool) { /* diff --git a/repos/base-hw/src/core/spec/riscv/cpu.h b/repos/base-hw/src/core/spec/riscv/cpu.h index 40db57db70..4d8e1a262e 100644 --- a/repos/base-hw/src/core/spec/riscv/cpu.h +++ b/repos/base-hw/src/core/spec/riscv/cpu.h @@ -56,6 +56,11 @@ class Core::Cpu : public Hw::Riscv_cpu struct alignas(8) Context : Genode::Cpu_state { Context(bool); + + void print(Output &output) const; + + void for_each_return_address(Const_byte_range_ptr const &, + auto const &) { } }; class Mmu_context diff --git a/repos/base-hw/src/core/spec/x86_64/cpu.cc b/repos/base-hw/src/core/spec/x86_64/cpu.cc index 249b53e5ab..eb70a0e69a 100644 --- a/repos/base-hw/src/core/spec/x86_64/cpu.cc +++ b/repos/base-hw/src/core/spec/x86_64/cpu.cc @@ -37,6 +37,27 @@ struct Pseudo_descriptor } __attribute__((packed)); +void Cpu::Context::print(Output &output) const +{ + using namespace Genode; + using Genode::print; + + print(output, "\n"); + print(output, " ip = ", Hex(ip), "\n"); + print(output, " sp = ", Hex(sp), "\n"); + print(output, " cs = ", Hex(cs), "\n"); + print(output, " ss = ", Hex(ss), "\n"); + print(output, " eflags = ", Hex(eflags), "\n"); + print(output, " rax = ", Hex(rax), "\n"); + print(output, " rbx = ", Hex(rbx), "\n"); + print(output, " rcx = ", Hex(rcx), "\n"); + print(output, " rdx = ", Hex(rdx), "\n"); + print(output, " rdi = ", Hex(rdi), "\n"); + print(output, " rsi = ", Hex(rsi), "\n"); + print(output, " rbp = ", Hex(rbp)); +} + + Cpu::Context::Context(bool core) { eflags = EFLAGS_IF_SET; diff --git a/repos/base-hw/src/core/spec/x86_64/cpu.h b/repos/base-hw/src/core/spec/x86_64/cpu.h index e612cc0321..71b4a6dc38 100644 --- a/repos/base-hw/src/core/spec/x86_64/cpu.h +++ b/repos/base-hw/src/core/spec/x86_64/cpu.h @@ -100,6 +100,18 @@ class Core::Cpu : public Hw::X86_64_cpu }; Context(bool privileged); + + void print(Output &output) const; + + void for_each_return_address(Const_byte_range_ptr const &stack, + auto const &fn) + { + void **fp = (void**)rbp; + while (stack.contains(fp) && stack.contains(fp + 1) && fp[1]) { + fn(fp + 1); + fp = (void **) fp[0]; + } + } } __attribute__((packed)); From d5f3cc6ec2d21eadf75184c8f837f53599be6c9c Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 26 Nov 2024 15:40:49 +0100 Subject: [PATCH 48/69] terminal: ignore input without valid GUI mode This prevents the potential corner case where the terminal receives input at a time when the window has no valid size and _text_screen_surface is not constructed. --- repos/gems/src/server/terminal/main.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/repos/gems/src/server/terminal/main.cc b/repos/gems/src/server/terminal/main.cc index fc66fbf7ff..c6ff2a1217 100644 --- a/repos/gems/src/server/terminal/main.cc +++ b/repos/gems/src/server/terminal/main.cc @@ -364,6 +364,9 @@ void Terminal::Main::_handle_config() void Terminal::Main::_handle_input() { + if (!_text_screen_surface.constructed()) + return; + _gui.input.for_each_event([&] (Input::Event const &event) { event.handle_absolute_motion([&] (int x, int y) { @@ -485,7 +488,7 @@ void Terminal::Main::_handle_input() void Terminal::Main::_report_clipboard_selection() { - if (!_clipboard_reporter.constructed()) + if (!_text_screen_surface.constructed() || !_clipboard_reporter.constructed()) return; _clipboard_reporter->generate([&] (Xml_generator &xml) { From b21c8729eafb5b82a9d5984cb606d72e135c9551 Mon Sep 17 00:00:00 2001 From: Benjamin Lamowski Date: Thu, 28 Nov 2024 16:42:09 +0100 Subject: [PATCH 49/69] base: provide core_ram_allocator via platform_add_local_services() This is a prerequisite to rework the allocation of core data structures for VM sessions in hw. Issue #5221 --- repos/base-foc/src/core/spec/x86/platform_services.cc | 3 ++- .../src/core/spec/arm/virtualization/platform_services.cc | 3 ++- .../src/core/spec/arm_v7/trustzone/platform_services.cc | 3 ++- .../core/spec/x86_64/virtualization/platform_services.cc | 7 ++++--- repos/base-linux/src/core/spec/linux/platform_services.cc | 3 ++- repos/base-linux/src/core/spec/pc/platform_services.cc | 3 ++- repos/base-nova/src/core/platform_services.cc | 3 ++- repos/base-sel4/src/core/spec/x86/platform_services.cc | 3 ++- repos/base/src/core/include/platform_services.h | 4 +++- repos/base/src/core/main.cc | 2 +- repos/base/src/core/platform_services.cc | 3 ++- repos/base/src/core/spec/x86/platform_services.cc | 3 ++- 12 files changed, 26 insertions(+), 14 deletions(-) diff --git a/repos/base-foc/src/core/spec/x86/platform_services.cc b/repos/base-foc/src/core/spec/x86/platform_services.cc index 8e4888c65a..82db206103 100644 --- a/repos/base-foc/src/core/spec/x86/platform_services.cc +++ b/repos/base-foc/src/core/spec/x86/platform_services.cc @@ -23,7 +23,8 @@ void Core::platform_add_local_services(Rpc_entrypoint &ep, Sliced_heap &heap, Registry &services, - Trace::Source_registry &trace_sources) + Trace::Source_registry &trace_sources, + Ram_allocator &) { static Vm_root vm_root(ep, heap, core_env().ram_allocator(), core_env().local_rm(), trace_sources); diff --git a/repos/base-hw/src/core/spec/arm/virtualization/platform_services.cc b/repos/base-hw/src/core/spec/arm/virtualization/platform_services.cc index 67c15ca117..262d4f2e86 100644 --- a/repos/base-hw/src/core/spec/arm/virtualization/platform_services.cc +++ b/repos/base-hw/src/core/spec/arm/virtualization/platform_services.cc @@ -35,7 +35,8 @@ extern addr_t hypervisor_exception_vector; void Core::platform_add_local_services(Rpc_entrypoint &ep, Sliced_heap &sh, Registry &services, - Core::Trace::Source_registry &trace_sources) + Core::Trace::Source_registry &trace_sources, + Ram_allocator &) { map_local(Platform::core_phys_addr((addr_t)&hypervisor_exception_vector), Hw::Mm::hypervisor_exception_vector().base, diff --git a/repos/base-hw/src/core/spec/arm_v7/trustzone/platform_services.cc b/repos/base-hw/src/core/spec/arm_v7/trustzone/platform_services.cc index 2a3919d40a..7623cc8229 100644 --- a/repos/base-hw/src/core/spec/arm_v7/trustzone/platform_services.cc +++ b/repos/base-hw/src/core/spec/arm_v7/trustzone/platform_services.cc @@ -32,7 +32,8 @@ extern int monitor_mode_exception_vector; void Core::platform_add_local_services(Rpc_entrypoint &ep, Sliced_heap &sliced_heap, Registry &local_services, - Core::Trace::Source_registry &trace_sources) + Core::Trace::Source_registry &trace_sources, + Ram_allocator &) { static addr_t const phys_base = Platform::core_phys_addr((addr_t)&monitor_mode_exception_vector); diff --git a/repos/base-hw/src/core/spec/x86_64/virtualization/platform_services.cc b/repos/base-hw/src/core/spec/x86_64/virtualization/platform_services.cc index 094e10f65f..b5ca2578f4 100644 --- a/repos/base-hw/src/core/spec/x86_64/virtualization/platform_services.cc +++ b/repos/base-hw/src/core/spec/x86_64/virtualization/platform_services.cc @@ -27,9 +27,10 @@ * Add x86 specific ioport and virtualization service */ void Core::platform_add_local_services(Rpc_entrypoint &ep, - Sliced_heap &sliced_heap, - Registry &local_services, - Trace::Source_registry &trace_sources) + Sliced_heap &sliced_heap, + Registry &local_services, + Trace::Source_registry &trace_sources, + Ram_allocator &) { static Io_port_root io_port_root(*core_env().pd_session(), platform().io_port_alloc(), sliced_heap); diff --git a/repos/base-linux/src/core/spec/linux/platform_services.cc b/repos/base-linux/src/core/spec/linux/platform_services.cc index 700f0c1248..25551c35e3 100644 --- a/repos/base-linux/src/core/spec/linux/platform_services.cc +++ b/repos/base-linux/src/core/spec/linux/platform_services.cc @@ -22,5 +22,6 @@ void Core::platform_add_local_services(Rpc_entrypoint &, Sliced_heap &, Registry &, - Trace::Source_registry &) + Trace::Source_registry &, + Ram_allocator &) { } diff --git a/repos/base-linux/src/core/spec/pc/platform_services.cc b/repos/base-linux/src/core/spec/pc/platform_services.cc index 2a9dae0ddd..18c464b04c 100644 --- a/repos/base-linux/src/core/spec/pc/platform_services.cc +++ b/repos/base-linux/src/core/spec/pc/platform_services.cc @@ -28,7 +28,8 @@ using namespace Core; void Core::platform_add_local_services(Rpc_entrypoint &, Sliced_heap &md, Registry ®, - Core::Trace::Source_registry &) + Core::Trace::Source_registry &, + Ram_allocator &) { if (!lx_iopl(3)) { static Io_port_root io_port_root(*core_env().pd_session(), diff --git a/repos/base-nova/src/core/platform_services.cc b/repos/base-nova/src/core/platform_services.cc index f0df7a79a5..740b134097 100644 --- a/repos/base-nova/src/core/platform_services.cc +++ b/repos/base-nova/src/core/platform_services.cc @@ -23,7 +23,8 @@ void Core::platform_add_local_services(Rpc_entrypoint &ep, Sliced_heap &heap, Registry &services, - Trace::Source_registry &trace_sources) + Trace::Source_registry &trace_sources, + Ram_allocator &) { static Vm_root vm_root(ep, heap, core_env().ram_allocator(), core_env().local_rm(), trace_sources); diff --git a/repos/base-sel4/src/core/spec/x86/platform_services.cc b/repos/base-sel4/src/core/spec/x86/platform_services.cc index 2e779a438d..d7fc1f8769 100644 --- a/repos/base-sel4/src/core/spec/x86/platform_services.cc +++ b/repos/base-sel4/src/core/spec/x86/platform_services.cc @@ -23,7 +23,8 @@ void Core::platform_add_local_services(Rpc_entrypoint &ep, Sliced_heap &heap, Registry &services, - Core::Trace::Source_registry &trace_sources) + Core::Trace::Source_registry &trace_sources, + Ram_allocator &) { static Vm_root vm_root(ep, heap, core_env().ram_allocator(), core_env().local_rm(), trace_sources); diff --git a/repos/base/src/core/include/platform_services.h b/repos/base/src/core/include/platform_services.h index 5193f7f892..95e3b8c7de 100644 --- a/repos/base/src/core/include/platform_services.h +++ b/repos/base/src/core/include/platform_services.h @@ -15,6 +15,7 @@ #define _CORE__INCLUDE__PLATFORM_SERVICES_H_ /* core includes */ +#include "base/ram_allocator.h" #include #include @@ -38,7 +39,8 @@ namespace Core { void platform_add_local_services(Rpc_entrypoint &ep, Sliced_heap &md, Registry ®, - Trace::Source_registry &trace); + Trace::Source_registry &trace, + Ram_allocator &core_ram_alloc); } #endif /* _CORE__INCLUDE__PLATFORM_SERVICES_H_ */ diff --git a/repos/base/src/core/main.cc b/repos/base/src/core/main.cc index 861a424847..66064508dd 100644 --- a/repos/base/src/core/main.cc +++ b/repos/base/src/core/main.cc @@ -289,7 +289,7 @@ void Genode::bootstrap_component(Genode::Platform &) static Core_service trace_service (services, trace_root); /* make platform-specific services known to service pool */ - platform_add_local_services(ep, sliced_heap, services, Core::Trace::sources()); + platform_add_local_services(ep, sliced_heap, services, Core::Trace::sources(), core_ram_alloc); size_t const avail_ram_quota = core_pd.avail_ram().value; size_t const avail_cap_quota = core_pd.avail_caps().value; diff --git a/repos/base/src/core/platform_services.cc b/repos/base/src/core/platform_services.cc index f925e1bcb2..ca4c4e98d0 100644 --- a/repos/base/src/core/platform_services.cc +++ b/repos/base/src/core/platform_services.cc @@ -17,4 +17,5 @@ void Core::platform_add_local_services(Rpc_entrypoint &, Sliced_heap &, Registry &, - Trace::Source_registry &) { } + Trace::Source_registry &, + Ram_allocator &) { } diff --git a/repos/base/src/core/spec/x86/platform_services.cc b/repos/base/src/core/spec/x86/platform_services.cc index 1edc5d85e2..47bd233327 100644 --- a/repos/base/src/core/spec/x86/platform_services.cc +++ b/repos/base/src/core/spec/x86/platform_services.cc @@ -27,7 +27,8 @@ void Core::platform_add_local_services(Rpc_entrypoint &, Sliced_heap &sliced_heap, Registry &local_services, - Trace::Source_registry &) + Trace::Source_registry &, + Ram_allocator &) { static Io_port_root io_port_root(*core_env().pd_session(), platform().io_port_alloc(), sliced_heap); From b529b1eac6f43f6f42718666416361f9f85389c4 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Fri, 29 Nov 2024 12:05:07 +0100 Subject: [PATCH 50/69] qemu-usb: prevent assertion by eager URB processing Instead of directly process URBs whenever a USBPacket arrives from the Qemu ported XHCI layer, send a local signal to the I/O handler, which will process the requests after leaving certain sensible code pathes like usb_packet_complete. Otherwise, it might happen that a packet, which was still marked as being queued gets already completed, which leads to an assertion and hang of the library. Fix genodelabs/genode#5389 --- repos/libports/src/lib/qemu-usb/host.cc | 35 ++++++++++++++++++++----- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/repos/libports/src/lib/qemu-usb/host.cc b/repos/libports/src/lib/qemu-usb/host.cc index 977e26feb9..005a0fe524 100644 --- a/repos/libports/src/lib/qemu-usb/host.cc +++ b/repos/libports/src/lib/qemu-usb/host.cc @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -244,6 +245,8 @@ class Interface : public List_model<::Interface>::Element template void for_each_endpoint(FN const &fn) { _endpoints.for_each([&] (Endpoint &endp) { fn(endp); }); } + + void io(); }; @@ -384,6 +387,8 @@ class Device : public List_model::Element _ifaces.for_each([&] (::Interface &iface) { if (iface.active()) fn(iface); }); } + + void io() { Signal_transmitter(_sigh_cap).submit(); } }; @@ -529,7 +534,7 @@ void Isoc_cache::_new_urb() sent = true; } - if (sent) _iface.update_urbs(); + if (sent) _iface.io(); } @@ -634,6 +639,12 @@ Usb::Interface &::Interface::_session() }; +void ::Interface::io() +{ + Signal_transmitter(_device.sigh_cap()).submit(); +} + + #define USB_HOST_DEVICE(obj) \ OBJECT_CHECK(USBHostDevice, (obj), TYPE_USB_HOST_DEVICE) @@ -742,15 +753,26 @@ void complete_packet(USBPacket * const p, Usb::Tagged_packet::Return_value v) usb_host_update_devices(); usb_host_update_ep(udev); } + if (p->state != USB_PACKET_ASYNC) { + error("Unexpected packet state for control xfer ", (int)p->state); + break; + } usb_generic_async_ctrl_complete(udev, p); return; case USB_ENDPOINT_XFER_BULK: case USB_ENDPOINT_XFER_INT: + if (p->state != USB_PACKET_ASYNC) { + error("Unexpected packet state for irq/bulk xfer ", (int)p->state); + break; + } usb_packet_complete(udev, p); - break; + return; default: - error("cannot produce data for unknown packet"); + error("cannot complete unknown packet type"); } + + /* unexpected outcome */ + backtrace(); } @@ -871,7 +893,7 @@ static void usb_host_handle_data(USBDevice *udev, USBPacket *p) new (_usb_session()->_alloc) ::Urb(_usb_session()->_urb_registry, iface, endp, type, usb_packet_size(p), p); - iface.update_urbs(); + iface.io(); return; case USB_ENDPOINT_XFER_ISOC: p->status = USB_RET_SUCCESS; @@ -910,13 +932,12 @@ static void usb_host_handle_control(USBDevice *udev, USBPacket *p, _usb_session()->_space.apply({ handle }, [&] (Device & device) { + p->status = USB_RET_ASYNC; new (_usb_session()->_alloc) Device::Urb(device, request & 0xff, (request >> 8) & 0xff, value, index, length, p); - device.update_urbs(); + device.io(); }); - - p->status = USB_RET_ASYNC; } From e38438194282c02060374081514e5fd60221b67e Mon Sep 17 00:00:00 2001 From: Alice Domage Date: Wed, 2 Oct 2024 09:43:26 +0200 Subject: [PATCH 51/69] tool/run/image/uboot: provide dtb for FIT images Our new U-BOOT for the imx8mp_iot_gate complains about the size of the device tree being zero bytes. This is because it no longer provides the kernel boot arguments via ATAGS, but passes them via by injecting them in the flattened device tree.. This commit adds a minimal dtb file to the FIT image to satisfy U-BOOT. Issue #5354 --- tool/run/image/uboot | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tool/run/image/uboot b/tool/run/image/uboot index 8871bb759e..12f4cfef2d 100644 --- a/tool/run/image/uboot +++ b/tool/run/image/uboot @@ -36,6 +36,7 @@ proc image_uboot_gzip_opt { } { # Build U-boot bootloader specific uImage # proc run_image { } { + set dtc [installed_command dtc] set elf_img [file join [run_dir] boot [kernel_specific_binary image.elf]] @@ -67,8 +68,18 @@ proc run_image { } { if {[image_uboot_use_fit]} { # create image.itb set uboot_img [file join [run_dir] boot image.itb] + + # create dummy dtb for version of u-boot requiring it in the fit image + set fd [open [run_dir]/dummy.dts w] + puts $fd "/dts-v1/;\n / {};" + close $fd + exec $dtc [run_dir]/dummy.dts -o [run_dir]/dummy.dtb + exec mkimage -f auto -A $arch -O linux -T kernel -C $compress_type -a $load_addr \ - -e $entrypoint -d $bin_img$bin_ext $uboot_img + -e $entrypoint -b [run_dir]/dummy.dtb -d $bin_img$bin_ext $uboot_img + + # cleanup dummy files + file delete -force [run_dir]/dummy.dts [run_dir]/dummy.dtb } else { # create uImage set uboot_img [file join [run_dir] boot uImage] From f2c25383afa4608113b46c6f8345e9237fc2257a Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Mon, 2 Dec 2024 15:39:49 +0100 Subject: [PATCH 52/69] acpi_event: prevent misleading warning about PRESS_RELEASE --- repos/libports/src/app/acpi_event/main.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/repos/libports/src/app/acpi_event/main.cc b/repos/libports/src/app/acpi_event/main.cc index 594ee95777..b85bd7fc54 100644 --- a/repos/libports/src/app/acpi_event/main.cc +++ b/repos/libports/src/app/acpi_event/main.cc @@ -140,8 +140,9 @@ struct Transform::Main auto press_release = [&] () -> Keys::Type { - if (key_type == "PRESS") return Keys::Type::PRESS; - if (key_type == "RELEASE") return Keys::Type::RELEASE; + if (key_type == "PRESS") return Keys::Type::PRESS; + if (key_type == "RELEASE") return Keys::Type::RELEASE; + if (key_type == "PRESS_RELEASE") return Keys::Type::PRESS_RELEASE; warning("unsupported 'as' attribute value \"", key_type, "\""); return Keys::Type::PRESS_RELEASE; }; From 979aaed52b402e6490ebe436c58c67bf8e6a6c77 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 2 Dec 2024 15:30:17 +0100 Subject: [PATCH 53/69] doc: merge coding_style.txt into conventions.txt Issue #5393 --- doc/coding_style.txt | 299 ------------------------------------ doc/conventions.txt | 353 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 308 insertions(+), 344 deletions(-) delete mode 100644 doc/coding_style.txt diff --git a/doc/coding_style.txt b/doc/coding_style.txt deleted file mode 100644 index 007b77b15c..0000000000 --- a/doc/coding_style.txt +++ /dev/null @@ -1,299 +0,0 @@ -Coding style guidelines for Genode -################################## - -Things to avoid -=============== - -Please avoid using pre-processor macros. C++ provides language -features for almost any case, for which a C programmer uses -macros. - -:Defining constants: - - Use 'enum' instead of '#define' - ! enum { MAX_COLORS = 3 }; - ! enum { - ! COLOR_RED = 1, - ! COLOR_BLUE = 2, - ! COLOR_GREEN = 3 - ! }; - -:Meta programming: - - Use templates instead of pre-processor macros. In contrast to macros, - templates are type-safe and fit well with the implementation syntax. - -:Conditional-code inclusion: - - Please avoid C-hacker style '#ifdef CONFIG_PLATFROM' - '#endif' - constructs. Instead, factor-out the encapsulated code into a - separate file and introduce a proper function interface. - The build process should then be used to select the appropriate - platform-specific files at compile time. Keep platform dependent - code as small as possible. Never pollute existing generic code - with platform-specific code. - - -Header of each file -=================== - -! /* -! * \brief Short description of the file -! * \author Original author -! * \date Creation date -! * -! * Some more detailed description. This is optional. -! */ - - -Identifiers -=========== - -* The first character of class names are uppercase, any other characters are - lowercase. -* Function and variable names are lower case. -* 'Multi_word_identifiers' use underline to separate words. -* 'CONSTANTS' and template arguments are upper case. -* Private and protected members of a class begin with an '_'-character. -* Accessor methods are named after their corresponding attributes: - - ! /** - ! * Request private member variable - ! */ - ! int value() const { return _value; } - ! - ! /** - ! * Set the private member variable - ! */ - ! void value(int value) { _value = value; } - -* Accessors that return a boolean value do not carry an 'is_' prefix. E.g., - a method for requesting the validity of an object should be named - 'valid()', not 'is_valid()'. - - -Indentation -=========== - -* Use one tab per indentation step. *Do not mix tabs and spaces!* -* Use no tabs except at the beginning of a line. -* Use spaces for the alignment of continuation lines such as function - arguments that span multiple lines. The alignment spaces of such lines - should start after the (tab-indented) indentation level. For example: - ! { - ! function_with_many_arguments(arg1, - ! <--- spaces for aligment --->arg2, - ! ... - ! } -* Remove trailing spaces at the end of lines - -This way, each developer can set his preferred tab size in his editor -and the source code always looks good. - -_Hint:_ In VIM, use the 'set list' and 'set listchars' commands to make tabs -and spaces visible. - -* If class initializers span multiple lines, put the colon on a separate - line and indent the initializers using one tab. For example: - ! Complicated_machinery(Material &material, Deadline deadline) - ! : - ! _material(material), - ! _deadline(deadline), - ! ... - ! { - ! ... - ! } - -* Preferably place statements that alter the control flow - such as - 'break', 'continue', or 'return' - at the beginning of a separate line, - followed by vertical space (a blank line or the closing brace of the - surrounding scope). - ! if (early_return_possible) - ! return; - - -Switch statements -~~~~~~~~~~~~~~~~~ - -Switch-statement blocks should be indented as follows: - -! switch (color) { -! -! case BLUE: -! break; -! -! case GREEN: -! { -! int declaration_required; -! ... -! } -! -! default: -! } - -Please note that the case labels have the same indentation -level as the switch statement. This avoids a two-level -indentation-change at the end of the switch block that -would occur otherwise. - - -Vertical whitespaces -==================== - -In header files: - -* Leave two empty lines between classes. -* Leave one empty line between member functions. - -In implementation files: - -* Leave two empty lines between functions. - - -Braces -====== - -* Braces after class, struct and function names are placed at a new line: - ! class Foo - ! { - ! public: - ! - ! void method(void) - ! { - ! ... - ! } - ! }; - - except for one-line functions. - -* All other occurrences of open braces (for 'if', 'while', 'do', 'for', - 'namespace', 'enum' etc.) are at the end of a line: - - ! if (flag) { - ! .. - ! } else { - ! .. - ! } - -* One-line functions should be written on a single line as long as the line - length does not exceed approximately 80 characters. - Typically, this applies for accessor functions. - If slightly more space than one line is needed, indent as follows: - - ! int heavy_computation(int a, int lot, int of, int args) { - ! return a + lot + of + args; } - - -Comments -======== - -Function/method header -~~~~~~~~~~~~~~~~~~~~~~ - -Each public or protected (but no private) method in a header-file should be -prepended by a header as follows: - -! /** -! * Short description -! * -! * \param a meaning of parameter a -! * \param b meaning of parameter b -! * \param c,d meaning of parameters c and d -! * -! * \throw Exception_type meaning of the exception -! * -! * \return meaning of return value -! * -! * More detailed information about the function. This is optional. -! */ - -Descriptions of parameters and return values should be lower-case and brief. -More elaborative descriptions can be documented in the text area below. - -In implementation files, only local and private functions should feature -function headers. - - -Single-line comments -~~~~~~~~~~~~~~~~~~~~ - -! /* use this syntax for single line comments */ - -A single-line comment should be prepended by an empty line. -Single-line comments should be short - no complete sentences. Use lower-case. - -C++-style comments ('//') should only be used for temporarily commenting-out -code. Such commented-out garbage is easy to 'grep' and there are handy -'vim'-macros available for creating and removing such comments. - - -Variable descriptions -~~~~~~~~~~~~~~~~~~~~~ - -Use the same syntax as for single-line comments. Insert two or more -spaces before your comment starts. - -! int size; /* in kilobytes */ - - -Multi-line comments -~~~~~~~~~~~~~~~~~~~ - -Multi-line comments are more detailed descriptions in the form of -sentences. -A multi-line comment should be enclosed by empty lines. - -! /* -! * This is some tricky -! * algorithm that works -! * as follows: -! * ... -! */ - -The first and last line of a multi-line comment contain no words. - - -Source-code blocks -~~~~~~~~~~~~~~~~~~ - -For structuring your source code, you can entitle the different -parts of a file like this: - -! <- two empty lines -! -! /******************** -! ** Event handlers ** -! ********************/ -! <- one empty line - -Note the two stars at the left and right. There are two of them to -make the visible width of the border match its height (typically, -characters are ca. twice as high as wide). - -A source-code block header represents a headline for the following -code. To couple this headline with the following code closer than -with previous code, leave two empty lines above and one empty line -below the source-code block header. - - -Order of public, protected, and private blocks -============================================== - -For consistency reasons, use the following class layout: - -! class Sandstein -! { -! private: -! ... -! protected: -! ... -! public: -! }; - -Typically, the private section contains member variables that are used -by public accessor functions below. In this common case, we only reference -symbols that are defined above as it is done when programming plain C. - -Leave one empty line (or a line that contains only a brace) above and below -a 'private', 'protected', or 'public' label. This also applies when the -label is followed by a source-code block header. diff --git a/doc/conventions.txt b/doc/conventions.txt index 50b3130ed0..124211dc3d 100644 --- a/doc/conventions.txt +++ b/doc/conventions.txt @@ -1,70 +1,333 @@ - Conventions for the Genode development - - Norman Feske + ================================================== + Conventions and coding-style guidelines for Genode + ================================================== -Documentation -############# + +Documentation and naming of files +################################# We use the GOSH syntax [https://github.com/nfeske/gosh] for documentation and README files. +We encourage that each directory contains a file called 'README' that briefly +explains what the directory is about. -README files -############ +File names +---------- -Each directory should contain a file called 'README' that briefly explains -what the directory is about. In 'doc/Makefile' is a rule for -generating a directory overview from the 'README' files automatically. - -You can structure your 'README' file by using the GOSH style for subsections: -! Subsection -! ~~~~~~~~~~ -Do not use chapters or sections in your 'README' files. - - -Filenames -######### - -All normal filenames are lowercase. Filenames should be chosen to be -expressive. Someone who explores your files for the first time might not +All normal file names are lowercase. Filenames should be chosen to be +expressive. Someone who explores your files for the first time might not understand what 'mbi.cc' means but 'multiboot_info.cc' would ring a bell. If a -filename contains multiple words, use the '_' to separate them (instead of +file name contains multiple words, use the '_' to separate them (instead of 'miscmath.h', use 'misc_math.h'). Coding style ############ -A common coding style helps a lot to ease collaboration. The official coding -style of the Genode base components is described in 'doc/coding_style.txt'. -If you consider working closely together with the Genode main developers, -your adherence to this style is greatly appreciated. +Things to avoid +=============== + +Please avoid using pre-processor macros. C++ provides language +features for almost any case, for which a C programmer uses +macros. + +:Defining constants: + + Use 'enum' instead of '#define' + ! enum { MAX_COLORS = 3 }; + ! enum { + ! COLOR_RED = 1, + ! COLOR_BLUE = 2, + ! COLOR_GREEN = 3 + ! }; + +:Meta programming: + + Use templates instead of pre-processor macros. In contrast to macros, + templates are type-safe and fit well with the implementation syntax. + +:Conditional-code inclusion: + + Please avoid C-hacker style '#ifdef CONFIG_PLATFROM' - '#endif' + constructs. Instead, factor-out the encapsulated code into a + separate file and introduce a proper function interface. + The build process should then be used to select the appropriate + platform-specific files at compile time. Keep platform dependent + code as small as possible. Never pollute existing generic code + with platform-specific code. -Include files and RPC interfaces -################################ +Header of each file +=================== -Never place include files directly into the '/include/' directory -but use a meaningful subdirectory that corresponds to the component that -provides the interfaces. - -Each RPC interface is represented by a separate include subdirectory. For -an example, see 'base/include/ram_session/'. The header file that defines -the RPC function interface has the same base name as the directory. The RPC -stubs are called 'client.h' and 'server.h'. If your interface uses a custom -capability type, it is defined in 'capability.h'. Furthermore, if your -interface is a session interface of a service, it is good practice to -provide a connection class in a 'connection.h' file for managing session- -construction arguments and the creation and destruction of sessions. - -Specialization-dependent include directories are placed in 'include//'. +! /* +! * \brief Short description of the file +! * \author Original author +! * \date Creation date +! * +! * Some more detailed description. This is optional. +! */ -Service Names -############# +Identifiers +=========== + +* The first character of class names are uppercase, any other characters are + lowercase. +* Function and variable names are lower case. +* 'Multi_word_identifiers' use underline to separate words. +* 'CONSTANTS' and template arguments are upper case. +* Private and protected members of a class begin with an '_'-character. +* Accessor methods are named after their corresponding attributes: + + ! /** + ! * Request private member variable + ! */ + ! int value() const { return _value; } + ! + ! /** + ! * Set the private member variable + ! */ + ! void value(int value) { _value = value; } + +* Accessors that return a boolean value do not carry an 'is_' prefix. E.g., + a method for requesting the validity of an object should be named + 'valid()', not 'is_valid()'. + + +Indentation +=========== + +* Use one tab per indentation step. *Do not mix tabs and spaces!* +* Use no tabs except at the beginning of a line. +* Use spaces for the alignment of continuation lines such as function + arguments that span multiple lines. The alignment spaces of such lines + should start after the (tab-indented) indentation level. For example: + ! { + ! function_with_many_arguments(arg1, + ! <--- spaces for aligment --->arg2, + ! ... + ! } +* Remove trailing spaces at the end of lines + +This way, each developer can set his preferred tab size in his editor +and the source code always looks good. + +_Hint:_ In VIM, use the 'set list' and 'set listchars' commands to make tabs +and spaces visible. + +* If class initializers span multiple lines, put the colon on a separate + line and indent the initializers using one tab. For example: + ! Complicated_machinery(Material &material, Deadline deadline) + ! : + ! _material(material), + ! _deadline(deadline), + ! ... + ! { + ! ... + ! } + +* Preferably place statements that alter the control flow - such as + 'break', 'continue', or 'return' - at the beginning of a separate line, + followed by vertical space (a blank line or the closing brace of the + surrounding scope). + ! if (early_return_possible) + ! return; + + +Switch statements +~~~~~~~~~~~~~~~~~ + +Switch-statement blocks should be indented as follows: + +! switch (color) { +! +! case BLUE: +! break; +! +! case GREEN: +! { +! int declaration_required; +! ... +! } +! +! default: +! } + +Please note that the case labels have the same indentation +level as the switch statement. This avoids a two-level +indentation-change at the end of the switch block that +would occur otherwise. + + +Vertical whitespaces +==================== + +In header files: + +* Leave two empty lines between classes. +* Leave one empty line between member functions. + +In implementation files: + +* Leave two empty lines between functions. + + +Braces +====== + +* Braces after class, struct and function names are placed at a new line: + ! class Foo + ! { + ! public: + ! + ! void method(void) + ! { + ! ... + ! } + ! }; + + except for one-line functions. + +* All other occurrences of open braces (for 'if', 'while', 'do', 'for', + 'namespace', 'enum' etc.) are at the end of a line: + + ! if (flag) { + ! .. + ! } else { + ! .. + ! } + +* One-line functions should be written on a single line as long as the line + length does not exceed approximately 80 characters. + Typically, this applies for accessor functions. + If slightly more space than one line is needed, indent as follows: + + ! int heavy_computation(int a, int lot, int of, int args) { + ! return a + lot + of + args; } + + +Comments +======== + +Function/method header +~~~~~~~~~~~~~~~~~~~~~~ + +Each public or protected (but no private) method in a header-file should be +prepended by a header as follows: + +! /** +! * Short description +! * +! * \param a meaning of parameter a +! * \param b meaning of parameter b +! * \param c,d meaning of parameters c and d +! * +! * \throw Exception_type meaning of the exception +! * +! * \return meaning of return value +! * +! * More detailed information about the function. This is optional. +! */ + +Descriptions of parameters and return values should be lower-case and brief. +More elaborative descriptions can be documented in the text area below. + +In implementation files, only local and private functions should feature +function headers. + + +Single-line comments +~~~~~~~~~~~~~~~~~~~~ + +! /* use this syntax for single line comments */ + +A single-line comment should be prepended by an empty line. +Single-line comments should be short - no complete sentences. Use lower-case. + +C++-style comments ('//') should only be used for temporarily commenting-out +code. Such commented-out garbage is easy to 'grep' and there are handy +'vim'-macros available for creating and removing such comments. + + +Variable descriptions +~~~~~~~~~~~~~~~~~~~~~ + +Use the same syntax as for single-line comments. Insert two or more +spaces before your comment starts. + +! int size; /* in kilobytes */ + + +Multi-line comments +~~~~~~~~~~~~~~~~~~~ + +Multi-line comments are more detailed descriptions in the form of +sentences. +A multi-line comment should be enclosed by empty lines. + +! /* +! * This is some tricky +! * algorithm that works +! * as follows: +! * ... +! */ + +The first and last line of a multi-line comment contain no words. + + +Source-code blocks +~~~~~~~~~~~~~~~~~~ + +For structuring your source code, you can entitle the different +parts of a file like this: + +! <- two empty lines +! +! /******************** +! ** Event handlers ** +! ********************/ +! <- one empty line + +Note the two stars at the left and right. There are two of them to +make the visible width of the border match its height (typically, +characters are ca. twice as high as wide). + +A source-code block header represents a headline for the following +code. To couple this headline with the following code closer than +with previous code, leave two empty lines above and one empty line +below the source-code block header. + + +Order of public, protected, and private blocks +============================================== + +For consistency reasons, use the following class layout: + +! class Sandstein +! { +! private: +! ... +! protected: +! ... +! public: +! }; + +Typically, the private section contains member variables that are used +by public accessor functions below. In this common case, we only reference +symbols that are defined above as it is done when programming plain C. + +Leave one empty line (or a line that contains only a brace) above and below +a 'private', 'protected', or 'public' label. This also applies when the +label is followed by a source-code block header. + + +Naming of Genode services +========================= Service names as announced via the 'parent()->announce()' function follow the following convention: From 79285972491234422aea05e67e5bb70a1fbf67bd Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 2 Dec 2024 15:38:19 +0100 Subject: [PATCH 54/69] doc: remove docs covered by the Genode books Foster the Genode books as a single point of reference for Genode's documentation. E.g., the Getting-Started section of the "Genode Foundations" book has long obsoleted doc/getting_started.txt. This patch also remove long orphaned texts like gsoc_2012.txt. The approach described in the porting guide has now been replaced by the Goa SDK. The Genode books can be downloaded at the genode.org website. Like Genode, they are open source. All text is licensed as CC-BY-SA and can be found at https://github.com/nfeske/genode-manual Fixes #5393 --- doc/build_system.txt | 517 -------------- doc/depot.txt | 514 -------------- doc/getting_started.txt | 154 ----- doc/gsoc_2012.txt | 236 ------- doc/porting_guide.txt | 1451 --------------------------------------- repos/os/doc/init.txt | 314 --------- 6 files changed, 3186 deletions(-) delete mode 100644 doc/build_system.txt delete mode 100644 doc/depot.txt delete mode 100644 doc/getting_started.txt delete mode 100644 doc/gsoc_2012.txt delete mode 100644 doc/porting_guide.txt delete mode 100644 repos/os/doc/init.txt diff --git a/doc/build_system.txt b/doc/build_system.txt deleted file mode 100644 index de926c09f3..0000000000 --- a/doc/build_system.txt +++ /dev/null @@ -1,517 +0,0 @@ - - - ======================= - The Genode build system - ======================= - - - Norman Feske - -Abstract -######## - -The Genode OS Framework comes with a custom build system that is designed for -the creation of highly modular and portable systems software. Understanding -its basic concepts is pivotal for using the full potential of the framework. -This document introduces those concepts and the best practises of putting them -to good use. Beside building software components from source code, common -and repetitive development tasks are the testing of individual components -and the integration of those components into complex system scenarios. To -streamline such tasks, the build system is accompanied with special tooling -support. This document introduces those tools. - - -Build directories and repositories -################################## - -The build system is supposed to never touch the source tree. The procedure of -building components and integrating them into system scenarios is done at -a distinct build directory. One build directory targets a specific platform, -i.e., a kernel and hardware architecture. Because the source tree is decoupled -from the build directory, one source tree can have many different build -directories associated, each targeted at another platform. - -The recommended way for creating a build directory is the use of the -'create_builddir' tool located at '/tool/'. By starting the tool -without arguments, its usage information will be printed. For creating a new -build directory, one of the listed target platforms must be specified. -Furthermore, the location of the new build directory has to be specified via -the 'BUILD_DIR=' argument. For example: - -! cd -! ./tool/create_builddir linux_x86 BUILD_DIR=/tmp/build.linux_x86 - -This command will create a new build directory for the Linux/x86 platform -at _/tmp/build.linux_x86/_. - - -Build-directory configuration via 'build.conf' -============================================== - -The fresh build directory will contain a 'Makefile', which is a symlink to -_tool/builddir/build.mk_. This makefile is the front end of the build system -and not supposed to be edited. Beside the makefile, there is a _etc/_ -subdirectory that contains the build-directory configuration. For most -platforms, there is only a single _build.conf_ file, which defines the parts of -the Genode source tree incorporated in the build process. Those parts are -called _repositories_. - -The repository concept allows for keeping the source code well separated for -different concerns. For example, the platform-specific code for each target -platform is located in a dedicated _base-_ repository. Also, different -abstraction levels and features of the system are residing in different -repositories. The _etc/build.conf_ file defines the set of repositories to -consider in the build process. At build time, the build system overlays the -directory structures of all repositories specified via the 'REPOSITORIES' -declaration to form a single logical source tree. By changing the list of -'REPOSITORIES', the view of the build system on the source tree can be altered. -The _etc/build.conf_ as found in a fresh created build directory will list the -_base-_ repository of the platform selected at the 'create_builddir' -command line as well as the 'base', 'os', and 'demo' repositories needed for -compiling Genode's default demonstration scenario. Furthermore, there are a -number of commented-out lines that can be uncommented for enabling additional -repositories. - -Note that the order of the repositories listed in the 'REPOSITORIES' declaration -is important. Front-most repositories shadow subsequent repositories. This -makes the repository mechanism a powerful tool for tweaking existing repositories: -By adding a custom repository in front of another one, customized versions of -single files (e.g., header files or target description files) can be supplied to -the build system without changing the original repository. - - -Building targets -================ - -To build all targets contained in the list of 'REPOSITORIES' as defined in -_etc/build.conf_, simply issue 'make'. This way, all components that are -compatible with the build directory's base platform will be built. In practice, -however, only some of those components may be of interest. Hence, the build -can be tailored to those components which are of actual interest by specifying -source-code subtrees. For example, using the following command -! make core server/nitpicker -the build system builds all targets found in the 'core' and 'server/nitpicker' -source directories. You may specify any number of subtrees to the build -system. As indicated by the build output, the build system revisits -each library that is used by each target found in the specified subtrees. -This is very handy for developing libraries because instead of re-building -your library and then your library-using program, you just build your program -and that's it. This concept even works recursively, which means that libraries -may depend on other libraries. - -In practice, you won't ever need to build the _whole tree_ but only the -targets that you are interested in. - - -Cleaning the build directory -============================ - -To remove all but kernel-related generated files, use -! make clean - -To remove all generated files, use -! make cleanall - -Both 'clean' and 'cleanall' won't remove any files from the _bin/_ -subdirectory. This makes the _bin/_ a safe place for files that are -unrelated to the build process, yet required for the integration stage, e.g., -binary data. - - -Controlling the verbosity of the build process -============================================== - -To understand the inner workings of the build process in more detail, you can -tell the build system to display each directory change by specifying - -! make VERBOSE_DIR= - -If you are interested in the arguments that are passed to each invocation of -'make', you can make them visible via - -! make VERBOSE_MK= - -Furthermore, you can observe each single shell-command invocation by specifying - -! make VERBOSE= - -Of course, you can combine these verboseness toggles for maximizing the noise. - - -Enabling parallel builds -======================== - -To utilize multiple CPU cores during the build process, you may invoke 'make' -with the '-j' argument. If manually specifying this argument becomes an -inconvenience, you may add the following line to your _etc/build.conf_ file: - -! MAKE += -j - -This way, the build system will always use '' CPUs for building. - - -Caching inter-library dependencies -================================== - -The build system allows to repeat the last build without performing any -library-dependency checks by using: - -! make again - -The use of this feature can significantly improve the work flow during -development because in contrast to source-codes, library dependencies rarely -change. So the time needed for re-creating inter-library dependencies at each -build can be saved. - - -Repository directory layout -########################### - -Each Genode repository has the following layout: - - Directory | Description - ------------------------------------------------------------ - 'doc/' | Documentation, specific for the repository - ------------------------------------------------------------ - 'etc/' | Default configuration of the build process - ------------------------------------------------------------ - 'mk/' | The build system - ------------------------------------------------------------ - 'include/' | Globally visible header files - ------------------------------------------------------------ - 'src/' | Source codes and target build descriptions - ------------------------------------------------------------ - 'lib/mk/' | Library build descriptions - - -Creating targets and libraries -############################## - -Target descriptions -=================== - -A good starting point is to look at the init target. The source code of init is -located at _os/src/init/_. In this directory, you will find a target description -file named _target.mk_. This file contains the building instructions and it is -usually very simple. The build process is controlled by defining the following -variables. - - -Build variables to be defined by you -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -:'TARGET': is the name of the binary to be created. This is the - only *mandatory variable* to be defined in a _target.mk_ file. - -:'REQUIRES': expresses the requirements that must be satisfied in order to - build the target. You find more details about the underlying mechanism in - Section [Specializations]. - -:'LIBS': is the list of libraries that are used by the target. - -:'SRC_CC': contains the list of '.cc' source files. The default search location - for source codes is the directory, where the _target.mk_ file resides. - -:'SRC_C': contains the list of '.c' source files. - -:'SRC_S': contains the list of assembly '.s' source files. - -:'SRC_BIN': contains binary data files to be linked to the target. - -:'INC_DIR': is the list of include search locations. Directories should - always be appended by using +=. Never use an assignment! - -:'EXT_OBJECTS': is a list of Genode-external objects or libraries. This - variable is mostly used for interfacing Genode with legacy software - components. - - -Rarely used variables ---------------------- - -:'CC_OPT': contains additional compiler options to be used for '.c' as - well as for '.cc' files. - -:'CC_CXX_OPT': contains additional compiler options to be used for the - C++ compiler only. - -:'CC_C_OPT': contains additional compiler options to be used for the - C compiler only. - - -Specifying search locations -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -When specifying search locations for header files via the 'INC_DIR' variable or -for source files via 'vpath', relative pathnames are illegal to use. Instead, -you can use the following variables to reference locations within the -source-code repository, where your target lives: - -:'REP_DIR': is the base directory of the current source-code repository. - Normally, specifying locations relative to the base of the repository is - never used by _target.mk_ files but needed by library descriptions. - -:'PRG_DIR': is the directory, where your _target.mk_ file resides. This - variable is always to be used when specifying a relative path. - - -Library descriptions -==================== - -In contrast to target descriptions that are scattered across the whole source -tree, library descriptions are located at the central place _lib/mk_. Each -library corresponds to a _.mk_ file. The base of the description file -is the name of the library. Therefore, no 'TARGET' variable needs to be set. -The source-code locations are expressed as '$(REP_DIR)'-relative 'vpath' -commands. - -Library-description files support the following additional declarations: - -:'SHARED_LIB = yes': declares that the library should be built as a shared - object rather than a static library. The resulting object will be called - _.lib.so_. - - -Specializations -=============== - -Building components for different platforms likely implicates portions of code -that are tied to certain aspects of the target platform. For example, a target -platform may be characterized by - -* A kernel API such as L4v2, Linux, L4.sec, -* A hardware architecture such as x86, ARM, Coldfire, -* A certain hardware facility such as a custom device, or -* Other properties such as software license requirements. - -Each of these attributes express a specialization of the build process. The -build system provides a generic mechanism to handle such specializations. - -The _programmer_ of a software component knows the properties on which his -software relies and thus, specifies these requirements in his build description -file. - -The _user/customer/builder_ decides to build software for a specific platform -and defines the platform specifics via the 'SPECS' variable per build -directory in _etc/specs.conf_. In addition to an (optional) _etc/specs.conf_ -file within the build directory, the build system incorporates the first -_etc/specs.conf_ file found in the repositories as configured for the -build directory. For example, for a 'linux_x86' build directory, the -_base-linux/etc/specs.conf_ file is used by default. The build directory's -'specs.conf' file can still be used to extend the 'SPECS' declarations, for -example to enable special features. - -Each '' in the 'SPECS' variable instructs the build system to - -* Include the 'make'-rules of a corresponding _base/mk/spec-.mk_ - file. This enables the customization of the build process for each platform. - -* Search for _.mk_ files in the _lib/mk//_ subdirectory. - This way, we can provide alternative implementations of one and the same - library interface for different platforms. - -Before a target or library gets built, the build system checks if the 'REQUIRES' -entries of the build description file are satisfied by entries of the 'SPECS' -variable. The compilation is executed only if each entry in the 'REQUIRES' -variable is present in the 'SPECS' variable as supplied by the build directory -configuration. - - -Building tools to be executed on the host platform -=================================================== - -Sometimes, software requires custom tools that are used to generate source -code or other ingredients for the build process, for example IDL compilers. -Such tools won't be executed on top of Genode but on the host platform -during the build process. Hence, they must be compiled with the tool chain -installed on the host, not the Genode tool chain. - -The Genode build system accommodates the building of such host tools as a side -effect of building a library or a target. Even though it is possible to add -the tool compilation step to a regular build description file, it is -recommended to introduce a dedicated pseudo library for building such tools. -This way, the rules for building host tools are kept separate from rules that -refer to Genode programs. By convention, the pseudo library should be named -__host_tools_ and the host tools should be built at -_/tool//_. With __, we refer to the name of the -software package the tool belongs to, e.g., qt5 or mupdf. To build a tool -named __, the pseudo library contains a custom make rule like the -following: - -! $(BUILD_BASE_DIR)/tool//: -! $(MSG_BUILD)$(notdir $@) -! $(VERBOSE)mkdir -p $(dir $@) -! $(VERBOSE)...build commands... - -To let the build system trigger the rule, add the custom target to the -'HOST_TOOLS' variable: - -! HOST_TOOLS += $(BUILD_BASE_DIR)/tool// - -Once the pseudo library for building the host tools is in place, it can be -referenced by each target or library that relies on the respective tools via -the 'LIBS' declaration. The tool can be invoked by referring to -'$(BUILD_BASE_DIR)/tool//tool'. - -For an example of using custom host tools, please refer to the mupdf package -found within the libports repository. During the build of the mupdf library, -two custom tools fontdump and cmapdump are invoked. The tools are built via -the _lib/mk/mupdf_host_tools.mk_ library description file. The actual mupdf -library (_lib/mk/mupdf.mk_) has the pseudo library 'mupdf_host_tools' listed -in its 'LIBS' declaration and refers to the tools relative to -'$(BUILD_BASE_DIR)'. - - -Building additional custom targets accompanying library or program -================================================================== - -There are cases when it is important to build additional targets -besides standard files built for library or program. Of course there -is no problem with writing specific make rules for commands that -generate those target files but for them to be built a proper -dependency must be specified. To achieve it those additional targets -should be added to 'CUSTOM_TARGET_DEPS' variable like e.g. in -iwl_firmware library from dde_linux repository: - -! CUSTOM_TARGET_DEPS += $(addprefix $(BIN_DIR)/,$(IMAGES)) - - -Automated integration and testing -################################# - -Genode's cross-kernel portability is one of the prime features of the -framework. However, each kernel takes a different route when it comes to -configuring, integrating, and booting the system. Hence, for using a particular -kernel, profound knowledge about the boot concept and the kernel-specific tools -is required. To streamline the testing of Genode-based systems across the many -different supported kernels, the framework comes equipped with tools that -relieve you from these peculiarities. - -Run scripts -=========== - -Using so-called run scripts, complete Genode systems can be described in a -concise and kernel-independent way. Once created, a run script can be used -to integrate and test-drive a system scenario directly from the build directory. -The best way to get acquainted with the concept is reviewing the run script -for the 'hello_tutorial' located at _hello_tutorial/run/hello.run_. -Let's revisit each step expressed in the _hello.run_ script: - -* Building the components needed for the system using the 'build' command. - This command instructs the build system to compile the targets listed in - the brace block. It has the same effect as manually invoking 'make' with - the specified argument from within the build directory. - -* Creating a new boot directory using the 'create_boot_directory' command. - The integration of the scenario is performed in a dedicated directory at - _/var/run//_. When the run script is finished, - this directory will contain all components of the final system. In the - following, we will refer to this directory as run directory. - -* Installing the Genode 'config' file into the run directory using the - 'install_config' command. The argument to this command will be written - to a file called 'config' at the run directory picked up by - Genode's init process. - -* Creating a bootable system image using the 'build_boot_image' command. - This command copies the specified list of files from the _/bin/_ - directory to the run directory and executes the platform-specific steps - needed to transform the content of the run directory into a bootable - form. This form depends on the actual base platform and may be an ISO - image or a bootable ELF image. - -* Executing the system image using the 'run_genode_until' command. Depending - on the base platform, the system image will be executed using an emulator. - For most platforms, Qemu is the tool of choice used by default. On Linux, - the scenario is executed by starting 'core' directly from the run - directory. The 'run_genode_until' command takes a regular expression - as argument. If the log output of the scenario matches the specified - pattern, the 'run_genode_until' command returns. If specifying 'forever' - as argument (as done in 'hello.run'), this command will never return. - If a regular expression is specified, an additional argument determines - a timeout in seconds. If the regular expression does not match until - the timeout is reached, the run script will abort. - -Please note that the _hello.run_ script does not contain kernel-specific -information. Therefore it can be executed from the build directory of any base -platform by using: - -! make run/hello - -When invoking 'make' with an argument of the form 'run/*', the build system -will look in all repositories for a run script with the specified name. The run -script must be located in one of the repositories 'run/' subdirectories and -have the file extension '.run'. - -For a more comprehensive run script, _os/run/demo.run_ serves as a good -example. This run script describes Genode's default demo scenario. As seen in -'demo.run', parts of init's configuration can be made dependent on the -platform's properties expressed as spec values. For example, the PCI driver -gets included in init's configuration only on platforms with a PCI bus. For -appending conditional snippets to the _config_ file, there exists the 'append_if' -command, which takes a condition as first and the snippet as second argument. -To test for a SPEC value, the command '[have_spec ]' is used as -condition. Analogously to how 'append_if' appends strings, there exists -'lappend_if' to append list items. The latter command is used to conditionally -include binaries to the list of boot modules passed to the 'build_boot_image' -command. - - -The run mechanism explained -=========================== - -Under the hood, run scripts are executed by an expect interpreter. When the -user invokes a run script via _make run/_, the build system invokes -the run tool at _/tool/run_ with the run script as argument. The -run tool is an expect script that has no other purpose than defining several -commands used by run scripts, including a platform-specific script snippet -called run environment ('env'), and finally including the actual run script. -Whereas _tool/run_ provides the implementations of generic and largely -platform-independent commands, the _env_ snippet included from the platform's -respective _base-/run/env_ file contains all platform-specific -commands. For reference, the most simplistic run environment is the one at -_base-linux/run/env_, which implements the 'create_boot_directory', -'install_config', 'build_boot_image', and 'run_genode_until' commands for Linux -as base platform. For the other platforms, the run environments are far more -elaborative and document precisely how the integration and boot concept works -on each platform. Hence, the _base-/run/env_ files are not only -necessary parts of Genode's tooling support but serve as resource for -peculiarities of using each kernel. - - -Using run script to implement test cases -======================================== - -Because run scripts are actually expect scripts, the whole arsenal of -language features of the Tcl scripting language is available to them. This -turns run scripts into powerful tools for the automated execution of test -cases. A good example is the run script at _libports/run/lwip.run_, which tests -the lwIP stack by running a simple Genode-based HTTP server on Qemu. It fetches -and validates a HTML page from this server. The run script makes use of a -regular expression as argument to the 'run_genode_until' command to detect the -state when the web server becomes ready, subsequently executes the 'lynx' shell -command to fetch the web site, and employs Tcl's support for regular -expressions to validate the result. The run script works across base platforms -that use Qemu as execution environment. - -To get the most out of the run mechanism, a basic understanding of the Tcl -scripting language is required. Furthermore the functions provided by -_tool/run_ and _base-/run/env_ should be studied. - - -Automated testing across base platforms -======================================= - -To execute one or multiple test cases on more than one base platform, there -exists a dedicated tool at _tool/autopilot_. Its primary purpose is the -nightly execution of test cases. The tool takes a list of platforms and of -run scripts as arguments and executes each run script on each platform. The -build directory for each platform is created at -_/tmp/autopilot./_ and the output of each run script is -written to a file called _..log_. On stderr, autopilot -prints the statistics about whether or not each run script executed -successfully on each platform. If at least one run script failed, autopilot -returns a non-zero exit code, which makes it straight forward to include -autopilot into an automated build-and-test environment. - - diff --git a/doc/depot.txt b/doc/depot.txt deleted file mode 100644 index abd9196a13..0000000000 --- a/doc/depot.txt +++ /dev/null @@ -1,514 +0,0 @@ - - - ============================ - Package management on Genode - ============================ - - - Norman Feske - - - -Motivation and inspiration -########################## - -The established system-integration work flow with Genode is based on -the 'run' tool, which automates the building, configuration, integration, -and testing of Genode-based systems. Whereas the run tool succeeds in -overcoming the challenges that come with Genode's diversity of kernels and -supported hardware platforms, its scalability is somewhat limited to -appliance-like system scenarios: The result of the integration process is -a system image with a certain feature set. Whenever requirements change, -the system image is replaced with a new created image that takes those -requirements into account. In practice, there are two limitations of this -system-integration approach: - -First, since the run tool implicitly builds all components required for a -system scenario, the system integrator has to compile all components from -source. E.g., if a system includes a component based on Qt5, one needs to -compile the entire Qt5 application framework, which induces significant -overhead to the actual system-integration tasks of composing and configuring -components. - -Second, general-purpose systems tend to become too complex and diverse to be -treated as system images. When looking at commodity OSes, each installation -differs with respect to the installed set of applications, user preferences, -used device drivers and system preferences. A system based on the run tool's -work flow would require the user to customize the run script of the system for -each tweak. To stay up to date, the user would need to re-create the -system image from time to time while manually maintaining any customizations. -In practice, this is a burden, very few end users are willing to endure. - -The primary goal of Genode's package management is to overcome these -scalability limitations, in particular: - -* Alleviating the need to build everything that goes into system scenarios - from scratch, -* Facilitating modular system compositions while abstracting from technical - details, -* On-target system update and system development, -* Assuring the user that system updates are safe to apply by providing the - ability to easily roll back the system or parts thereof to previous versions, -* Securing the integrity of the deployed software, -* Fostering a federalistic evolution of Genode systems, -* Low friction for existing developers. - -The design of Genode's package-management concept is largely influenced by Git -as well as the [https://nixos.org/nix/ - Nix] package manager. In particular -the latter opened our eyes to discover the potential that lies beyond the -package management employed in state-of-the art commodity systems. Even though -we considered adapting Nix for Genode and actually conducted intensive -experiments in this direction (thanks to Emery Hemingway who pushed forward -this line of work), we settled on a custom solution that leverages Genode's -holistic view on all levels of the operating system including the build system -and tooling, source structure, ABI design, framework API, system -configuration, inter-component interaction, and the components itself. Whereby -Nix is designed for being used on top of Linux, Genode's whole-systems view -led us to simplifications that eliminated the needs for Nix' powerful features -like its custom description language. - - -Nomenclature -############ - -When speaking about "package management", one has to clarify what a "package" -in the context of an operating system represents. Traditionally, a package -is the unit of delivery of a bunch of "dumb" files, usually wrapped up in -a compressed archive. A package may depend on the presence of other -packages. Thereby, a dependency graph is formed. To express how packages fit -with each other, a package is usually accompanied with meta data -(description). Depending on the package manager, package descriptions follow -certain formalisms (e.g., package-description language) and express -more-or-less complex concepts such as versioning schemes or the distinction -between hard and soft dependencies. - -Genode's package management does not follow this notion of a "package". -Instead of subsuming all deliverable content under one term, we distinguish -different kinds of content, each in a tailored and simple form. To avoid the -clash of the notions of the common meaning of a "package", we speak of -"archives" as the basic unit of delivery. The following subsections introduce -the different categories. -Archives are named with their version as suffix, appended via a slash. The -suffix is maintained by the author of the archive. The recommended naming -scheme is the use of the release date as version suffix, e.g., -'report_rom/2017-05-14'. - - -Raw-data archives -================= - -A raw-data archive contains arbitrary data that is - in contrast to executable -binaries - independent from the processor architecture. Examples are -configuration data, game assets, images, or fonts. The content of raw-data -archives is expected to be consumed by components at runtime. It is not -relevant for the build process for executable binaries. Each raw-data -archive contains merely a collection of data files. There is no meta data. - - -API archive -=========== - -An API archive has the structure of a Genode source-code repository. It may -contain all the typical content of such a source-code repository such as header -files (in the _include/_ subdirectory), source codes (in the _src/_ -subdirectory), library-description files (in the _lib/mk/_ subdirectory), or -ABI symbols (_lib/symbols/_ subdirectory). At the top level, a LICENSE file is -expected that clarifies the license of the contained source code. There is no -meta data contained in an API archive. - -An API archive is meant to provide _ingredients_ for building components. The -canonical example is the public programming interface of a library (header -files) and the library's binary interface in the form of an ABI-symbols file. -One API archive may contain the interfaces of multiple libraries. For example, -the interfaces of libc and libm may be contained in a single "libc" API -archive because they are closely related to each other. Conversely, an API -archive may contain a single header file only. The granularity of those -archives may vary. But they have in common that they are used at build time -only, not at runtime. - - -Source archive -============== - -Like an API archive, a source archive has the structure of a Genode -source-tree repository and is expected to contain all the typical content of -such a source repository along with a LICENSE file. But unlike an API archive, -it contains descriptions of actual build targets in the form of Genode's usual -'target.mk' files. - -In addition to the source code, a source archive contains a file -called 'used_apis', which contains a list of API-archive names with each -name on a separate line. For example, the 'used_apis' file of the 'report_rom' -source archive looks as follows: - -! base/2017-05-14 -! os/2017-05-13 -! report_session/2017-05-13 - -The 'used_apis' file declares the APIs needed to incorporate into the build -process when building the source archive. Hence, they represent _build-time_ -_dependencies_ on the specific API versions. - -A source archive may be equipped with a top-level file called 'api' containing -the name of exactly one API archive. If present, it declares that the source -archive _implements_ the specified API. For example, the 'libc/2017-05-14' -source archive contains the actual source code of the libc and libm as well as -an 'api' file with the content 'libc/2017-04-13'. The latter refers to the API -implemented by this version of the libc source package (note the differing -versions of the API and source archives) - - -Binary archive -============== - -A binary archive contains the build result of the equally-named source archive -when built for a particular architecture. That is, all files that would appear -at the _/bin/_ subdirectory when building all targets present in -the source archive. There is no meta data present in a binary archive. - -A binary archive is created out of the content of its corresponding source -archive and all API archives listed in the source archive's 'used_apis' file. -Note that since a binary archive depends on only one source archive, which -has no further dependencies, all binary archives can be built independently -from each other. -For example, a libc-using application needs the source code of the -application as well as the libc's API archive (the libc's header file and -ABI) but it does not need the actual libc library to be present. - - -Package archive -=============== - -A package archive contains an 'archives' file with a list of archive names -that belong together at runtime. Each listed archive appears on a separate line. -For example, the 'archives' file of the package archive for the window -manager 'wm/2018-02-26' looks as follows: - -! genodelabs/raw/wm/2018-02-14 -! genodelabs/src/wm/2018-02-26 -! genodelabs/src/report_rom/2018-02-26 -! genodelabs/src/decorator/2018-02-26 -! genodelabs/src/floating_window_layouter/2018-02-26 - -In contrast to the list of 'used_apis' of a source archive, the content of -the 'archives' file denotes the origin of the respective archives -("genodelabs"), the archive type, followed by the versioned name of the -archive. - -An 'archives' file may specify raw archives, source archives, or package -archives (as type 'pkg'). It thereby allows the expression of _runtime -dependencies_. If a package archive lists another package archive, it inherits -the content of the listed archive. This way, a new package archive may easily -customize an existing package archive. - -A package archive does not specify binary archives directly as they differ -between the architecture and are already referenced by the source archives. - -In addition to an 'archives' file, a package archive is expected to contain -a 'README' file explaining the purpose of the collection. - - -Depot structure -############### - -Archives are stored within a directory tree called _depot/_. The depot -is structured as follows: - -! /pubkey -! /download -! /src/// -! /api/// -! /raw/// -! /pkg/// -! /bin//// - -The stands for the origin of the contained archives. For example, the -official archives provided by Genode Labs reside in a _genodelabs/_ -subdirectory. Within this directory, there is a 'pubkey' file with the -user's public key that is used to verify the integrity of archives downloaded -from the user. The file 'download' specifies the download location as an URL. - -Subsuming archives in a subdirectory that correspond to their origin -(user) serves two purposes. First, it provides a user-local name space for -versioning archives. E.g., there might be two versions of a -'nitpicker/2017-04-15' source archive, one by "genodelabs" and one by -"nfeske". However, since each version resides under its origin's subdirectory, -version-naming conflicts between different origins cannot happen. Second, by -allowing multiple archive origins in the depot side-by-side, package archives -may incorporate archives of different origins, which fosters the goal of a -federalistic development, where contributions of different origins can be -easily combined. - -The actual archives are stored in the subdirectories named after the archive -types ('raw', 'api', 'src', 'bin', 'pkg'). Archives contained in the _bin/_ -subdirectories are further subdivided in the various architectures (like -'x86_64', or 'arm_v7'). - - -Depot management -################ - -The tools for managing the depot content reside under the _tool/depot/_ -directory. When invoked without arguments, each tool prints a brief -description of the tool and its arguments. - -Unless stated otherwise, the tools are able to consume any number of archives -as arguments. By default, they perform their work sequentially. This can be -changed by the '-j' argument, where denotes the desired level of -parallelization. For example, by specifying '-j4' to the _tool/depot/build_ -tool, four concurrent jobs are executed during the creation of binary archives. - - -Downloading archives -==================== - -The depot can be populated with archives in two ways, either by creating -the content from locally available source codes as explained by Section -[Automated extraction of archives from the source tree], or by downloading -ready-to-use archives from a web server. - -In order to download archives originating from a specific user, the depot's -corresponding user subdirectory must contain two files: - -:_pubkey_: contains the public key of the GPG key pair used by the creator - (aka "user") of the to-be-downloaded archives for signing the archives. The - file contains the ASCII-armored version of the public key. - -:_download_: contains the base URL of the web server where to fetch archives - from. The web server is expected to mirror the structure of the depot. - That is, the base URL is followed by a sub directory for the user, - which contains the archive-type-specific subdirectories. - -If both the public key and the download locations are defined, the download -tool can be used as follows: - -! ./tool/depot/download genodelabs/src/zlib/2018-01-10 - -The tool automatically downloads the specified archives and their -dependencies. For example, as the zlib depends on the libc API, the libc API -archive is downloaded as well. All archive types are accepted as arguments -including binary and package archives. Furthermore, it is possible to download -all binary archives referenced by a package archive. For example, the -following command downloads the window-manager (wm) package archive including -all binary archives for the 64-bit x86 architecture. Downloaded binary -archives are always accompanied with their corresponding source and used API -archives. - -! ./tool/depot/download genodelabs/pkg/x86_64/wm/2018-02-26 - -Archive content is not downloaded directly to the depot. Instead, the -individual archives and signature files are downloaded to a quarantine area in -the form of a _public/_ directory located in the root of Genode's source tree. -As its name suggests, the _public/_ directory contains data that is imported -from or to-be exported to the public. The download tool populates it with the -downloaded archives in their compressed form accompanied with their -signatures. - -The compressed archives are not extracted before their signature is checked -against the public key defined at _depot//pubkey_. If however the -signature is valid, the archive content is imported to the target destination -within the depot. This procedure ensures that depot content - whenever -downloaded - is blessed by a cryptographic signature of its creator. - - -Building binary archives from source archives -============================================= - -With the depot populated with source and API archives, one can use the -_tool/depot/build_ tool to produce binary archives. The arguments have the -form '/bin//' where '' stands for the targeted -CPU architecture. For example, the following command builds the 'zlib' -library for the 64-bit x86 architecture. It executes four concurrent jobs -during the build process. - -! ./tool/depot/build genodelabs/bin/x86_64/zlib/2018-01-10 -j4 - -Note that the command expects a specific version of the source archive as -argument. The depot may contain several versions. So the user has to decide, -which one to build. - -After the tool is finished, the freshly built binary archive can be found in -the depot within the _genodelabs/bin////_ subdirectory. -Only the final result of the built process is preserved. In the example above, -that would be the _zlib.lib.so_ library. - -For debugging purposes, it might be interesting to inspect the intermediate -state of the build. This is possible by adding 'KEEP_BUILD_DIR=1' as argument -to the build command. The binary's intermediate build directory can be -found besides the binary archive's location named with a '.build' suffix. - -By default, the build tool won't attempt to rebuild a binary archive that is -already present in the depot. However, it is possible to force a rebuild via -the 'REBUILD=1' argument. - - -Publishing archives -=================== - -Archives located in the depot can be conveniently made available to the public -using the _tool/depot/publish_ tool. Given an archive path, the tool takes -care of determining all archives that are implicitly needed by the specified -one, wrapping the archive's content into compressed tar archives, and signing -those. - -As a precondition, the tool requires you to possess the private key that -matches the _depot//pubkey_ file within your depot. The key pair should -be present in the key ring of your GNU privacy guard. - -To publish archives, one needs to specify the specific version to publish. -For example: - -! ./tool/depot/publish /pkg/x86_64/wm/2018-02-26 - -The command checks that the specified archive and all dependencies are present -in the depot. It then proceeds with the archiving and signing operations. For -the latter, the pass phrase for your private key will be requested. The -publish tool prints the information about the processed archives, e.g.: - -! publish /.../public//api/base/2018-02-26.tar.xz -! publish /.../public//api/framebuffer_session/2017-05-31.tar.xz -! publish /.../public//api/gems/2018-01-28.tar.xz -! publish /.../public//api/input_session/2018-01-05.tar.xz -! publish /.../public//api/nitpicker_gfx/2018-01-05.tar.xz -! publish /.../public//api/nitpicker_session/2018-01-05.tar.xz -! publish /.../public//api/os/2018-02-13.tar.xz -! publish /.../public//api/report_session/2018-01-05.tar.xz -! publish /.../public//api/scout_gfx/2018-01-05.tar.xz -! publish /.../public//bin/x86_64/decorator/2018-02-26.tar.xz -! publish /.../public//bin/x86_64/floating_window_layouter/2018-02-26.tar.xz -! publish /.../public//bin/x86_64/report_rom/2018-02-26.tar.xz -! publish /.../public//bin/x86_64/wm/2018-02-26.tar.xz -! publish /.../public//pkg/wm/2018-02-26.tar.xz -! publish /.../public//raw/wm/2018-02-14.tar.xz -! publish /.../public//src/decorator/2018-02-26.tar.xz -! publish /.../public//src/floating_window_layouter/2018-02-26.tar.xz -! publish /.../public//src/report_rom/2018-02-26.tar.xz -! publish /.../public//src/wm/2018-02-26.tar.xz - - -According to the output, the tool populates a directory called _public/_ -at the root of the Genode source tree with the to-be-published archives. -The content of the _public/_ directory is now ready to be copied to a -web server, e.g., by using rsync. - - -Automated extraction of archives from the source tree -##################################################### - -Genode users are expected to populate their local depot with content obtained -via the _tool/depot/download_ tool. However, Genode developers need a way to -create depot archives locally in order to make them available to users. Thanks -to the _tool/depot/extract_ tool, the assembly of archives does not need to be -a manual process. Instead, archives can be conveniently generated out of the -source codes present in the Genode source tree and the _contrib/_ directory. - -However, the granularity of splitting source code into archives, the -definition of what a particular API entails, and the relationship between -archives must be augmented by the archive creator as this kind of information -is not present in the source tree as is. This is where so-called "archive -recipes" enter the picture. An archive recipe defines the content of an -archive. Such recipes can be located at an _recipes/_ subdirectory of any -source-code repository, similar to how port descriptions and run scripts -are organized. Each _recipe/_ directory contains subdirectories for the -archive types, which, in turn, contain a directory for each archive. The -latter is called a _recipe directory_. - -Recipe directory ----------------- - -The recipe directory is named after the archive _omitting the archive version_ -and contains at least one file named _hash_. This file defines the version -of the archive along with a hash value of the archive's content -separated by a space character. By tying the version name to a particular hash -value, the _extract_ tool is able to detect the appropriate points in time -whenever the version should be increased due to a change of the archive's -content. - -API, source, and raw-data archive recipes ------------------------------------------ - -Recipe directories for API, source, or raw-data archives contain a -_content.mk_ file that defines the archive content in the form of make -rules. The content.mk file is executed from the archive's location within -the depot. Hence, the contained rules can refer to archive-relative files as targets. -The first (default) rule of the content.mk file is executed with a customized -make environment: - -:GENODE_DIR: A variable that holds the path to root of the Genode source tree, -:REP_DIR: A variable with the path to source code repository where the recipe - is located -:port_dir: A make function that returns the directory of a port within the - _contrib/_ directory. The function expects the location of the - corresponding port file as argument, for example, the 'zlib' recipe - residing in the _libports/_ repository may specify '$(REP_DIR)/ports/zlib' - to access the 3rd-party zlib source code. - -Source archive recipes contain simplified versions of the 'used_apis' and -(for libraries) 'api' files as found in the archives. In contrast to the -depot's counterparts of these files, which contain version-suffixed names, -the files contained in recipe directories omit the version suffix. This -is possible because the extract tool always extracts the _current_ version -of a given archive from the source tree. This current version is already -defined in the corresponding recipe directory. - -Package-archive recipes ------------------------ - -The recipe directory for a package archive contains the verbatim content of -the to-be-created package archive except for the _archives_ file. All other -files are copied verbatim to the archive. The content of the recipe's -_archives_ file may omit the version information from the listed ingredients. -Furthermore, the user part of each entry can be left blank by using '_' as a -wildcard. When generating the package archive from the recipe, the extract -tool will replace this wildcard with the user that creates the archive. - - -Convenience front-end to the extract, build tools -################################################# - -For developers, the work flow of interacting with the depot is most often the -combination of the _extract_ and _build_ tools whereas the latter expects -concrete version names as arguments. The _create_ tool accelerates this common -usage pattern by allowing the user to omit the version names. Operations -implicitly refer to the _current_ version of the archives as defined in -the recipes. - -Furthermore, the _create_ tool is able to manage version updates for the -developer. If invoked with the argument 'UPDATE_VERSIONS=1', it automatically -updates hash files of the involved recipes by taking the current date as -version name. This is a valuable assistance in situations where a commonly -used API changes. In this case, the versions of the API and all dependent -archives must be increased, which would be a labour-intensive task otherwise. -If the depot already contains an archive of the current version, the create -tools won't re-create the depot archive by default. Local modifications of -the source code in the repository do not automatically result in a new archive. -To ensure that the depot archive is current, one can specify 'FORCE=1' to -the create tool. With this argument, existing depot archives are replaced by -freshly extracted ones and version updates are detected. When specified for -creating binary archives, 'FORCE=1' normally implies 'REBUILD=1'. To prevent -the superfluous rebuild of binary archives whose source versions remain -unchanged, 'FORCE=1' can be combined with the argument 'REBUILD='. - - -Accessing depot content from run scripts -######################################## - -The depot tools are not meant to replace the run tool but rather to complement -it. When both tools are combined, the run tool implicitly refers to "current" -archive versions as defined for the archive's corresponding recipes. This way, -the regular run-tool work flow can be maintained while attaining a -productivity boost by fetching content from the depot instead of building it. - -Run scripts can use the 'import_from_depot' function to incorporate archive -content from the depot into a scenario. The function must be called after the -'create_boot_directory' function and takes any number of pkg, src, or raw -archives as arguments. An archive is specified as depot-relative path of the -form '//name'. Run scripts may call 'import_from_depot' -repeatedly. Each argument can refer to a specific version of an archive or -just the version-less archive name. In the latter case, the current version -(as defined by a corresponding archive recipe in the source tree) is used. - -If a 'src' archive is specified, the run tool integrates the content of -the corresponding binary archive into the scenario. The binary archives -are selected according the spec values as defined for the build directory. - diff --git a/doc/getting_started.txt b/doc/getting_started.txt deleted file mode 100644 index e9679cd351..0000000000 --- a/doc/getting_started.txt +++ /dev/null @@ -1,154 +0,0 @@ - - ============================= - How to start exploring Genode - ============================= - - Norman Feske - - -Abstract -######## - -This guide is meant to provide you a painless start with using the Genode OS -Framework. It explains the steps needed to get a simple demo system running -on Linux first, followed by the instructions on how to run the same scenario -on a microkernel. - - -Quick start to build Genode for Linux -##################################### - -The best starting point for exploring Genode is to run it on Linux. Make sure -that your system satisfies the following requirements: - -* GNU Make version 3.81 or newer -* 'libsdl2-dev', 'libdrm-dev', and 'libgbm-dev' (needed to run interactive - system scenarios directly on Linux) -* 'tclsh' and 'expect' -* 'byacc' (only needed for the L4/Fiasco kernel) -* 'qemu' and 'xorriso' (for testing non-Linux platforms via Qemu) - -For using the entire collection of ported 3rd-party software, the following -packages should be installed additionally: 'autoconf2.64', 'autogen', 'bison', -'flex', 'g++', 'git', 'gperf', 'libxml2-utils', 'subversion', and 'xsltproc'. - -Your exploration of Genode starts with obtaining the source code of the -[https://sourceforge.net/projects/genode/files/latest/download - latest version] -of the framework. For detailed instructions and alternatives to the -download from Sourceforge please refer to [https://genode.org/download]. -Furthermore, you will need to install the official Genode tool chain, which -you can download at [https://genode.org/download/tool-chain]. - -The Genode build system never touches the source tree but generates object -files, libraries, and programs in a dedicated build directory. We do not have a -build directory yet. For a quick start, let us create one for the Linux base -platform: - -! cd -! ./tool/create_builddir x86_64 - -This creates a new build directory for building x86_64 binaries in './build'. -The build system creates unified binaries that work on the given -architecture independent from the underlying base platform, in this case Linux. - -Now change into the fresh build directory: - -! cd build/x86_64 - -Please uncomment the following line in 'etc/build.conf' to make the -build process as smooth as possible. - -! RUN_OPT += --depot-auto-update - -To give Genode a try, build and execute a simple demo scenario via: - -! make KERNEL=linux BOARD=linux run/demo - -By invoking 'make' with the 'run/demo' argument, all components needed by the -demo scenario are built and the demo is executed. This includes all components -which are implicitly needed by the base platform. The base platform that the -components will be executed upon on is selected via the 'KERNEL' and 'BOARD' -variables. If you are interested in looking behind the scenes of the demo -scenario, please refer to 'doc/build_system.txt' and the run script at -'os/run/demo.run'. - - -Using platforms other than Linux -================================ - -Running Genode on Linux is the most convenient way to get acquainted with the -framework. However, the point where Genode starts to shine is when used as the -user land executed on a microkernel. The framework supports a variety of -different kernels such as L4/Fiasco, L4ka::Pistachio, OKL4, and NOVA. Those -kernels largely differ in terms of feature sets, build systems, tools, and boot -concepts. To relieve you from dealing with those peculiarities, Genode provides -you with an unified way of using them. For each kernel platform, there exists -a dedicated description file that enables the 'prepare_port' tool to fetch and -prepare the designated 3rd-party sources. Just issue the following command -within the toplevel directory of the Genode source tree: - -! ./tool/ports/prepare_port - -Note that each 'base-' directory comes with a 'README' file, which -you should revisit first when exploring the base platform. Additionally, most -'base-' directories provide more in-depth information within their -respective 'doc/' subdirectories. - -For the VESA driver on x86, the x86emu library is required and can be -downloaded and prepared by again invoking the 3rd-party sources preparation -tool: - -! ./tool/ports/prepare_port x86emu - -On x86 base platforms the GRUB2 boot loader is required and can be -downloaded and prepared by invoking: - -! ./tool/ports/prepare_port grub2 - -Now that the base platform is prepared, the 'create_builddir' tool can be used -to create a build directory for your architecture of choice by giving the -architecture as argument. To see the list of available architecture, execute -'create_builddir' with no arguments. Note, that not all kernels support all -architectures. - -For example, to give the demo scenario a spin on the OKL4 kernel, the following -steps are required: - -# Download the kernel: - ! cd - ! ./tool/ports/prepare_port okl4 -# Create a build directory - ! ./tool/create_builddir x86_32 -# Uncomment the following line in 'x86_32/etc/build.conf' - ! REPOSITORIES += $(GENODE_DIR)/repos/libports -# Build and execute the demo using Qemu - ! make -C build/x86_32 KERNEL=okl4 BOARD=pc run/demo - -The procedure works analogously for the other base platforms. You can, however, -reuse the already created build directory and skip its creation step if the -architecture matches. - - -How to proceed with exploring Genode -#################################### - -Now that you have taken the first steps into using Genode, you may seek to -get more in-depth knowledge and practical experience. The foundation for doing -so is a basic understanding of the build system. The documentation at -'build_system.txt' provides you with the information about the layout of the -source tree, how new components are integrated, and how complete system -scenarios can be expressed. Equipped with this knowledge, it is time to get -hands-on experience with creating custom Genode components. A good start is the -'hello_tutorial', which shows you how to implement a simple client-server -scenario. To compose complex scenarios out of many small components, the -documentation of the Genode's configuration concept at 'os/doc/init.txt' is an -essential reference. - -Certainly, you will have further questions on your way with exploring Genode. -The best place to get these questions answered is the Genode mailing list. -Please feel welcome to ask your questions and to join the discussions: - -:Genode Mailing Lists: - - [https://genode.org/community/mailing-lists] - diff --git a/doc/gsoc_2012.txt b/doc/gsoc_2012.txt deleted file mode 100644 index 0f11fa4229..0000000000 --- a/doc/gsoc_2012.txt +++ /dev/null @@ -1,236 +0,0 @@ - - - ========================== - Google Summer of Code 2012 - ========================== - - -Genode Labs has applied as mentoring organization for the Google Summer of Code -program in 2012. This document summarizes all information important to Genode's -participation in the program. - -:[http://www.google-melange.com/gsoc/homepage/google/gsoc2012]: - Visit the official homepage of the Google Summer of Code program. - -*Update* Genode Labs was not accepted as mentoring organization for GSoC 2012. - - -Application of Genode Labs as mentoring organization -#################################################### - -:Organization ID: genodelabs - -:Organization name: Genode Labs - -:Organization description: - - Genode Labs is a self-funded company founded by the original creators of the - Genode OS project. Its primary mission is to bring the Genode operating-system - technology, which started off as an academic research project, to the real - world. At present, Genode Labs is the driving force behind the Genode OS - project. - -:Organization home page url: - - http://www.genode-labs.com - -:Main organization license: - - GNU General Public License version 2 - -:Admins: - - nfeske, chelmuth - -:What is the URL for your Ideas page?: - - [http://genode.org/community/gsoc_2012] - -:What is the main IRC channel for your organization?: - - #genode - -:What is the main development mailing list for your organization?: - - genode-main@lists.sourceforge.net - -:Why is your organization applying to participate? What do you hope to gain?: - - During the past three months, our project underwent the transition from a - formerly company-internal development to a completely open and transparent - endeavour. By inviting a broad community for participation in shaping the - project, we hope to advance Genode to become a broadly used and recognised - technology. GSoC would help us to build our community. - - The project has its roots at the University of Technology Dresden where the - Genode founders were former members of the academic research staff. We have - a long and successful track record with regard to supervising students. GSoC - would provide us with the opportunity to establish and cultivate - relationships to new students and to spawn excitement about Genode OS - technology. - -:Does your organization have an application templateo?: - - GSoC student projects follow the same procedure as regular community - contributions, in particular the student is expected to sign the Genode - Contributor's Agreement. (see [http://genode.org/community/contributions]) - -:What criteria did you use to select your mentors?: - - We selected the mentors on the basis of their long-time involvement with the - project and their time-tested communication skills. For each proposed working - topic, there is least one stakeholder with profound technical background within - Genode Labs. This person will be the primary contact person for the student - working on the topic. However, we will encourgage the student to make his/her - development transparant to all community members (i.e., via GitHub). So - So any community member interested in the topic is able to bring in his/her - ideas at any stage of development. Consequently, in practive, there will be - multiple persons mentoring each students. - -:What is your plan for dealing with disappearing students?: - - Actively contact them using all channels of communication available to us, - find out the reason for disappearance, trying to resolve the problems. (if - they are related to GSoC or our project for that matter). - -:What is your plan for dealing with disappearing mentors?: - - All designated mentors are local to Genode Labs. So the chance for them to - disappear to very low. However, if a mentor disappears for any serious reason - (i.e., serious illness), our organization will provide a back-up mentor. - -:What steps will you take to encourage students to interact with your community?: - - First, we discussed GSoC on our mailing list where we received an overly - positive response. We checked back with other Open-Source projects related to - our topics, exchanged ideas, and tried to find synergies between our - respective projects. For most project ideas, we have created issues in our - issue tracker to collect technical information and discuss the topic. - For several topics, we already observed interests of students to participate. - - During the work on the topics, the mentors will try to encourage the - students to play an active role in discussions on our mailing list, also on - topics that are not strictly related to the student project. We regard an - active participation as key to to enable new community members to develop a - holistic view onto our project and gather a profound understanding of our - methodologies. - - Student projects will be carried out in a transparent fashion at GitHub. - This makes it easy for each community member to get involved, discuss - the rationale behind design decisions, and audit solutions. - - -Topics -###### - -While discussing GSoC participation on our mailing list, we identified the -following topics as being well suited for GSoC projects. However, if none of -those topics receives resonance from students, there is more comprehensive list -of topics available at our road map and our collection of future challenges: - -:[http://genode.org/about/road-map]: Road-map -:[http://genode.org/about/challenges]: Challenges - - -Combining Genode with the HelenOS/SPARTAN kernel -================================================ - -[http://www.helenos.org - HelenOS] is a microkernel-based multi-server OS -developed at the university of Prague. It is based on the SPARTAN microkernel, -which runs on a wide variety of CPU architectures including Sparc, MIPS, and -PowerPC. This broad platform support makes SPARTAN an interesting kernel to -look at alone. But a further motivation is the fact that SPARTAN does not -follow the classical L4 road, providing a kernel API that comes with an own -terminology and different kernel primitives. This makes the mapping of -SPARTAN's kernel API to Genode a challenging endeavour and would provide us -with feedback regarding the universality of Genode's internal interfaces. -Finally, this project has the potential to ignite a further collaboration -between the HelenOS and Genode communities. - - -Block-level encryption -====================== - -Protecting privacy is one of the strongest motivational factors for developing -Genode. One pivotal element with that respect is the persistence of information -via block-level encryption. For example, to use Genode every day at Genode -Labs, it's crucial to protect the confidentiality of some information that's -not part of the Genode code base, e.g., emails and reports. There are several -expansion stages imaginable to reach the goal and the basic building blocks -(block-device interface, ATA/SATA driver for Qemu) are already in place. - -:[https://github.com/genodelabs/genode/issues/55 - Discuss the issue...]: - - -Virtual NAT -=========== - -For sharing one physical network interface among multiple applications, Genode -comes with a component called nic_bridge, which implements proxy ARP. Through -this component, each application receives a distinct (virtual) network -interface that is visible to the real network. I.e., each application requests -an IP address via a DHCP request at the local network. An alternative approach -would be a component that implements NAT on Genode's NIC session interface. -This way, the whole Genode system would use only one IP address visible to the -local network. (by stacking multiple nat and nic_bridge components together, we -could even form complex virtual networks inside a single Genode system) - -The implementation of the virtual NAT could follow the lines of the existing -nic_bridge component. For parsing network packets, there are already some handy -utilities available (at os/include/net/). - -:[https://github.com/genodelabs/genode/issues/114 - Discuss the issue...]: - - -Runtime for the Go or D programming language -============================================ - -Genode is implemented in C++. However, we are repeatedly receiving requests -for offering more safe alternatives for implementing OS-level functionality -such as device drivers, file systems, and other protocol stacks. The goals -for this project are to investigate the Go and D programming languages with -respect to their use within Genode, port the runtime of of those languages -to Genode, and provide a useful level of integration with Genode. - - -Block cache -=========== - -Currently, there exists only the iso9660 server that is able to cache block -accesses. A generic solution for caching block-device accesses would be nice. -One suggestion is a component that requests a block session (routed to a block -device driver) as back end and also announces a block service (front end) -itself. Such a block-cache server waits for requests at the front end and -forwards them to the back end. But it uses its own memory to cache blocks. - -The first version could support only read-only block devices (such as CDROM) by -caching the results of read accesses. In this version, we already need an -eviction strategy that kicks in once the block cache gets saturated. For a -start this could be FIFO or LRU (least recently used). - -A more sophisticated version would support write accesses, too. Here we need a -way to sync blocks to the back end at regular intervals in order to guarantee -that all block-write accesses are becoming persistent after a certain time. We -would also need a way to explicitly flush the block cache (i.e., when the -front-end block session gets closed). - -:[https://github.com/genodelabs/genode/issues/113 - Discuss the issue...]: - - -; _Since Genode Labs was not accepted as GSoC mentoring organization, the_ -; _following section has become irrelevant. Hence, it is commented-out_ -; -; Student applications -; #################### -; -; The formal steps for applying to the GSoC program will be posted once Genode -; Labs is accepted as mentoring organization. If you are a student interested -; in working on a Genode-related GSoC project, now is a good time to get -; involved with the Genode community. The best way is joining the discussions -; at our mailing list and the issue tracker. This way, you will learn about -; the currently relevant topics, our discussion culture, and the people behind -; the project. -; -; :[http://genode.org/community/mailing-lists]: Join our mailing list -; :[https://github.com/genodelabs/genode/issues]: Discuss issues around Genode - diff --git a/doc/porting_guide.txt b/doc/porting_guide.txt deleted file mode 100644 index dd2fe85597..0000000000 --- a/doc/porting_guide.txt +++ /dev/null @@ -1,1451 +0,0 @@ - ==================== - Genode Porting Guide - ==================== - - Genode Labs GmbH - - -Overview -######## - -This document describes the basic workflows for porting applications, libraries, -and device drivers to the Genode framework. It consists of the following -sections: - -:[http:porting_applications - Porting third-party code to Genode]: - Overview of the general steps needed to use 3rd-party code on Genode. - -:[http:porting_dosbox - Porting a program to natively run on Genode]: - Step-by-step description of applying the steps described in the first - section to port an application, using DosBox as an example. - -:[http:porting_libraries - Native Genode port of a library]: - Many 3rd-party applications have library dependencies. This section shows - how to port a library using SDL_net (needed by DosBox) as an example. - -:[http:porting_noux_packages - Porting an application to Genode's Noux runtime]: - On Genode, there exists an environment specially tailored to execute - command-line based Unix software, the so-called Noux runtime. This section - demonstrates how to port and execute the tar program within Noux. - -:[http:porting_device_drivers - Porting devices drivers]: - This chapter describes the concepts of how to port a device driver to the - Genode framework. It requires the basic knowledge introduced in the previous - chapters and should be read last. - -Before reading this guide, it is strongly advised to read the "The Genode -Build System" documentation: - -:Build-system manual: - - [http://genode.org/documentation/developer-resources/build_system] - - -Porting third-party code to Genode -################################## - -Porting an existing program or library to Genode is for the most part a -straight-forward task and depends mainly on the complexity of the program -itself. Genode provides a fairly complete libc based on FreeBSD's libc whose -functionality can be extended by so-called libc plugins. If the program one -wants to port solely uses standard libc functions, porting becomes easy. Every -porting task involves usually the same steps which are outlined below. - - -Steps in porting applications to Genode -======================================= - -# Check requirements/dependencies (e.g. on Linux) - - The first step is gathering information about the application, - e.g. what functionality needs to be provided by the target system and - which libraries does it use. - -# Create a port file - - Prepare the source code of the application for the use within Genode. The - Genode build-system infrastructure uses fetch rules, so called port files, - which declare where the source is obtained from, what patches are applied - to the source code, and where the source code will be stored and - configured. - -# Check platform dependent code and create stub code - - This step may require changes to the original source code - of the application to be compilable for Genode. At this point, it - is not necessary to provide a working implementation for required - functions. Just creating stubs of the various functions is fine. - -# Create build-description file - - To compile the application we need build rules. Within these rules - we also declare all dependencies (e.g. libraries) that are needed - by it. The location of these rules depends on the type - of the application. Normal programs on one hand use a _target.mk_ file, - which is located in the program directory (e.g. _src/app/foobar_) - within a given Genode repository. Libraries on the other hand use - one or more _.mk_ files that are placed in the _lib/mk_ - directory of a Genode repository. In addition, libraries have to - provide _import-.mk_ files. Amongst other things, these - files are used by applications to find the associated header files - of a library. The import files are placed in the _lib/import_ - directory. - -# Create a run script to ease testing - - To ease the testing of applications, it is reasonable to write a run script - that creates a test scenario for the application. This run script is used - to automatically build all components of the Genode OS framework that are - needed to run the application as well as the application itself. Testing - the application on any of the kernels supported by Genode becomes just a - matter of executing the run script. - -# Compile the application - - The ported application is compiled from within the respective build - directory like any other application or component of Genode. The build - system of Genode uses the build rules created in the fourth step. - -# Run the application - - While porting an application, easy testing is crucial. By using the run script - that was written in the fifth step we reduce the effort. - -# Debug the application - - In most cases, a ported application does not work right away. We have to - debug misbehaviour and implement certain functionality in the platform-depending - parts of the application so that is can run on Genode. There are - several facilities available on Genode that help in the process. These are - different on each Genode platform but basically break down to using either a - kernel debugger (e.g., JDB on Fiasco.OC) or 'gdb(1)'. The reader of this guide - is advised to take a look at the "User-level debugging on Genode via GDB" - documentation. - -_The order of step 1-4 is not mandatory but is somewhat natural._ - - -Porting a program to natively run on Genode -########################################### - -As an example on how to create a native port of a program for Genode, we will -describe the porting of DosBox more closely. Hereby, each of the steps -outlined in the previous section will be discussed in detail. - - -Check requirements/dependencies -=============================== - -In the first step, we build DosBox for Linux/x86 to obtain needed information. -Nowadays, most applications use a build-tool like Autotools or something -similar that will generate certain files (e.g., _config.h_). These files are -needed to successfully compile the program. Naturally they are required on -Genode as well. Since Genode does not use the original build tool of the -program for native ports, it is appropriate to copy those generated files -and adjust them later on to match Genode's settings. - -We start by checking out the source code of DosBox from its subversion repository: - -! $ svn export http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3837 dosbox-svn-3837 -! $ cd dosbox-svn-3837 - -At this point, it is helpful to disable certain options that are not -available or used on Genode just to keep the noise down: - -! $ ./configure --disable-opengl -! $ make > build.log 2>&1 - -After the DosBox binary is successfully built, we have a log file -(build.log) of the whole build process at our disposal. This log file will -be helpful later on when the _target.mk_ file needs to be created. In -addition, we will inspect the DosBox binary: - -! $ readelf -d -t src/dosbox|grep NEEDED -! 0x0000000000000001 (NEEDED) Shared library: [libasound.so.2] -! 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2] -! 0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0] -! 0x0000000000000001 (NEEDED) Shared library: [libSDL-1.2.so.0] -! 0x0000000000000001 (NEEDED) Shared library: [libpng12.so.0] -! 0x0000000000000001 (NEEDED) Shared library: [libz.so.1] -! 0x0000000000000001 (NEEDED) Shared library: [libSDL_net-1.2.so.0] -! 0x0000000000000001 (NEEDED) Shared library: [libX11.so.6] -! 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] -! 0x0000000000000001 (NEEDED) Shared library: [libm.so.6] -! 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] -! 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] - -Using _readelf_ on the binary shows all direct dependencies. We now know -that at least libSDL, libSDL_net, libstdc++, libpng, libz, and -libm are required by DosBox. The remaining libraries are mostly -mandatory on Linux and do not matter on Genode. Luckily all of these -libraries are already available on Genode. For now all we have to do is to -keep them in mind. - - -Creating the port file -====================== - -Since DosBox is an application, which depends on several ported -libraries (e.g., libSDL), the _ports_ repository within the Genode -source tree is a natural fit. On that account, the port file -_ports/ports/dosbox.port_ is created. - -For DosBox the _dosbox.port_ looks as follows: - -! LICENSE := GPLv2 -! VERSION := svn -! DOWNLOADS := dosbox.svn -! -! URL(dosbox) := http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk -! DIR(dosbox) := src/app/dosbox -! REV(dosbox) := 3837 - -First, we define the license, the version and the type of the source code -origin. In case of DosBox, we checkout the source code from a Subversion -repository. This is denoted by the '.svn' suffix of the item specified in -the 'DOWNLOADS' declaration. Other valid types are 'file' (a plain file), -'archive' (an archive of the types tar.gz, tar.xz, tgz, tar.bz2, or zip) -or 'git' (a Git repository). -To checkout the source code out from the Subversion repository, we also need -its URL, the revision we want to check out and the destination directory -that will contain the sources afterwards. These declarations are mandatory and -must always be specified. Otherwise the preparation of the port will fail. - -! PATCHES := $(addprefix src/app/dosbox/patches/,\ -! $(notdir $(wildcard $(REP_DIR)/src/app/dosbox/patches/*.patch))) -! -! PATCH_OPT := -p2 -d src/app/dosbox - -As next step, we declare all patches that are needed for the DosBox port. -Since in this case, the patches are using a different path format, we have -to override the default patch settings by defining the _PATCH_OPT_ variable. - -Each port file comes along with a hash file. This hash is generated by taking -several sources into account. For one, the port file, each patch and the -port preparation tool (_tool/ports/prepare_port_) are the ingredients for -the hash value. If any of these files is changed, a new hash will be generated, -For now, we just write "dummy" in the '_ports/ports/dosbox.hash_ file. - -The DosBox port can now be prepared by executing - -! $ /tool/ports/prepare_port dosbox - -However, we get the following error message: - -! Error: /ports/dosbox.port is out of date, expected - -We get this message because we had specified the "dummy" hash value in -the _dosbox.hash_ file. The prepare_port tool computes a fingerprint -of the actual version of the port and compares this fingerprint with the -hash value specified in _dosbox.hash_. The computed fingerprint can -be found at _/contrib/dosbox-dummy/dosbox.hash_. In the final -step of the port, we will replace the dummy fingerprint with the actual -fingerprint of the port. But before finalizing the porting work, it is -practical to keep using the dummy hash and suppress the fingerprint check. -This can be done by adding 'CHECK_HASH=no' as argument to the prepare_port tool: - -! $ /tool/ports/prepare-port dosbox CHECK_HASH=no - - -Check platform-dependent code -============================= - -At this point, it is important to spot platform-dependent source files or -rather certain functions that are not yet available on Genode. These source -files should be omitted. Of course they may be used as a guidance when -implementing the functionality for Genode later on, when creating the -_target.mk_ file. In particular the various 'cdrom_ioctl_*.cpp' files are such -candidates in this example. - - -Creating the build Makefile -=========================== - -Now it is time to write the build rules into the _target.mk_, which will be -placed in _ports/src/app/dosbox_. - -Armed with the _build.log_ that we created while building DosBox on Linux, -we assemble a list of needed source files. If an application just -uses a simple Makefile and not a build tool, it might be easier to just -reuse the contents of this Makefile instead. - -First of all, we create a shortcut for the source directory of DosBox by calling -the 'select_from_ports' function: - -! DOSBOX_DIR := $(call select_from_ports,dosbox)/src/app/dosbox - -Under the hood, the 'select_from_ports' function looks up the -fingerprint of the specified port by reading the corresponding -.hash file. It then uses this hash value to construct the -directory path within the _contrib/_ directory that belongs to -the matching version of the port. If there is no hash file that matches the -port name, or if the port directory does not exist, the build system -will back out with an error message. - -Examining the log file leaves us with the following list of source files: - -! SRC_CC_cpu = $(notdir $(wildcard $(DOSBOX_DIR)/src/cpu/*.cpp)) -! SRC_CC_debug = $(notdir $(wildcard $(DOSBOX_DIR)/src/debug/*.cpp)) -! FILTER_OUT_dos = cdrom_aspi_win32.cpp cdrom_ioctl_linux.cpp cdrom_ioctl_os2.cpp \ -! cdrom_ioctl_win32.cpp -! SRC_CC_dos = $(filter-out $(FILTER_OUT_dos), \ -! $(notdir $(wildcard $(DOSBOX_DIR)/src/dos/*.cpp))) -! […] -! SRC_CC = $(notdir $(DOSBOX_DIR)/src/dosbox.cpp) -! SRC_CC += $(SRC_CC_cpu) $(SRC_CC_debug) $(SRC_CC_dos) $(SRC_CC_fpu) \ -! $(SRC_CC_gui) $(SRC_CC_hw) $(SRC_CC_hw_ser) $(SRC_CC_ints) \ -! $(SRC_CC_ints) $(SRC_CC_misc) $(SRC_CC_shell) -! -! vpath %.cpp $(DOSBOX_DIR)/src -! vpath %.cpp $(DOSBOX_DIR)/src/cpu -! […] - -_The only variable here that is actually evaluated by Genode's build-system is_ -'SRC_CC'. _The rest of the variables are little helpers that make our_ -_life more comfortable._ - -In this case, it is mandatory to use GNUMake's 'notdir' file name function -because otherwise the compiled object files would be stored within -the _contrib_ directories. Genode runs on multiple platforms with varying -architectures and mixing object files is considered harmful, which can happen -easily if the application is build from the original source directory. That's -why you have to use a build directory for each platform. The Genode build -system will create the needed directory hierarchy within the build directory -automatically. By combining GNUMake's 'notdir' and 'wildcard' function, we -can assemble a list of all needed source files without much effort. We then -use 'vpath' to point GNUMake to the right source file within the dosbox -directory. - -The remaining thing to do now is setting the right include directories and proper -compiler flags: - -! INC_DIR += $(PRG_DIR) -! INC_DIR += $(DOSBOX_DIR)/include -! INC_DIR += $(addprefix $(DOSBOX_DIR)/src, cpu debug dos fpu gui hardware \ -! hardware/serialport ints misc shell) - -'PRG_DIR' _is a special variable of Genode's build-system_ -_and its value is always the absolute path to the directory containing_ -_the 'target.mk' file._ - -We copy the _config.h_ file, which was generated in the first step to this -directory and change certain parts of it to better match Genode's -environment. Below is a skimmed diff of these changes: - -! --- config.h.orig 2013-10-21 15:27:45.185719517 +0200 -! +++ config.h 2013-10-21 15:36:48.525727975 +0200 -! @@ -25,7 +25,8 @@ -! /* #undef AC_APPLE_UNIVERSAL_BUILD */ -! -! /* Compiling on BSD */ -! -/* #undef BSD */ -! +/* Genode's libc is based on FreeBSD 8.2 */ -! +#define BSD 1 -! -! […] -! -! /* The type of cpu this target has */ -! -#define C_TARGETCPU X86_64 -! +/* we define it ourself */ -! +/* #undef C_TARGETCPU */ -! -! […] - -Thereafter, we specify the compiler flags: - -! CC_OPT = -DHAVE_CONFIG_H -D_GNU_SOURCE=1 -D_REENTRANT -! ifeq ($(filter-out $(SPECS),x86_32),) -! INC_DIR += $(PRG_DIR)/x86_32 -! CC_OPT += -DC_TARGETCPU=X86 -! else ifeq ($(filter-out $(SPECS),x86_64),) -! INC_DIR += $(PRG_DIR)/x86_64 -! CC_OPT += -DC_TARGETCPU=X86_64 -! endif -! -! CC_WARN = -Wall -! #CC_WARN += -Wno-unused-variable -Wno-unused-function -Wno-switch \ -! -Wunused-value -Wno-unused-but-set-variable - -As noted in the commentary seen in the diff we define 'C_TARGETCPU' -and adjust the include directories ourselves according to the target -architecture. - -While debugging, compiler warnings for 3rd-party code are really helpful but -tend to be annoying after the porting work is finished, we can -remove the hashmark to keep the compiler from complaining too -much. - -Lastly, we need to add the required libraries, which we acquired in step 1: - -! LIBS += libc libm libpng sdl stdcxx zlib -! LIBS += libc_lwip_nic_dhcp config_args - -In addition to the required libraries, a few Genode specific -libraries are also needed. These libraries implement certain -functions in the libc via the libc's plugin mechanism. -libc_lwip_nic_dhcp, for example, is used to connect the BSD socket interface -to a NIC service such as a network device driver. - - -Creating the run script -======================= - -To ease compiling, running and debugging DosBox, we create a run script -at _ports/run/dosbox.run_. - -First, we specify the components that need to be built - -! set build_components { -! core init drivers/audio drivers/framebuffer drivers/input -! drivers/pci drivers/timer app/dosbox -! } -! build $build_components - -and instruct _tool/run_ to create the boot directory that hosts -all binaries and files which belong to the DosBox scenario. - -As the name 'build_components' suggests, you only have to declare -the components of Genode, which are needed in this scenario. All -dependencies of DosBox (e.g. libSDL) will be built before DosBox -itself. - -Nextm we provide the scenario's configuration 'config': - -! append config { -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! } -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! } -! install_config $config - -The _config_ file will be used by the init program to start all -components and application of the scenario, including DosBox. - -Thereafter we declare all boot modules: - -! set boot_modules { -! core init timer audio_drv fb_drv ps2_drv ld.lib.so -! libc.lib.so libm.lib.so -! lwip.lib.so libpng.lib.so stdcxx.lib.so sdl.lib.so -! pthread.lib.so zlib.lib.so dosbox dosbox.tar -! } -! build_boot_image $boot_modules - -The boot modules comprise all binaries and other files like -the tar archive that contains DosBox' configuration file _dosbox.conf_ -that are needed for this scenario to run sucessfully. - -Finally, we set certain options, which are used when Genode is executed -in Qemu and instruct _tool/run_ to keep the scenario executing as long -as it is not manually stopped: - -! append qemu_args " -m 256 -soundhw ac97 " -! run_genode_until forever - -_It is reasonable to write the run script in a way that makes it possible_ -_to use it for multiple Genode platforms. Debugging is often done on_ -_Genode/Linux or on another Genode platform running in Qemu but testing_ -_is normally done using actual hardware._ - - -Compiling the program -===================== - -To compile DosBox and all libraries it depends on, we execute - -! $ make app/dosbox - -from within Genode's build directory. - -_We could also use the run script that we created in the previous step but_ -_that would build all components that are needed to actually run_ DosBox -_and at this point our goal is just to get_ DosBox _compiled._ - -At the first attempt, the compilation stopped because g++ could not find -the header file _sys/timeb.h_: - -! /src/genode/ports/contrib/dosbox-svn-3837/src/ints/bios.cpp:35:23: fatal error: -! sys/timeb.h: No such file or directory - -This header is part of the libc but until now there was no program, which -actually used this header. So nobody noticed that it was missing. This -can happen all time when porting a new application to Genode because most -functionality is enabled or rather added on demand. Someone who is -porting applications to Genode has to be aware of the fact that it might be -necessary to extend Genode functionality by enabling so far disabled -bits or implementing certain functionality needed by the -application that is ported. - -Since 'ftime(3)' is a deprecated function anyway we change the code of -DosBox to use 'gettimeofday(2)'. - -After this was fixed, we face another problem: - -! /src/genode/ports/contrib/dosbox-svn-3837/src/ints/int10_vesa.cpp:48:33: error: -! unable to find string literal operator ‘operator"" VERSION’ - -The fix is quite simple and the compile error was due to the fact -that Genode uses C++11 by now. It often happens that 3rd party code -is not well tested with a C++11 enabled compiler. In any case, a patch file -should be created which will be applied when preparing the port. - -Furthermore it would be reasonable to report the bug to the DosBox -developers so it can be fixed upstream. We can then get rid of our -local patch. - -The next show stoppers are missing symbols in Genode's SDL library port. -As it turns out, we never actually compiled and linked in the cdrom dummy -code which is provided by SDL. - - -Running the application -======================= - -DosBox was compiled successfully. Now it is time to execute the binary -on Genode. Hence we use the run script we created in step 5: - -! $ make run/dosbox - -This may take some time because all other components of the Genode OS -Framework that are needed for this scenario have to be built. - - -Debugging the application -========================= - -DosBox was successfully compiled but unfortunately it did not run. -To be honest that was expected and here the fun begins. - -At this point, there are several options to chose from. By running -Genode/Fiasco.OC within Qemu, we can use the kernel debugger (JDB) -to take a deeper look at what went wrong (e.g., backtraces of the -running processes, memory dumps of the faulted DosBox process etc.). -Doing this can be quite taxing but fortunately Genode runs on multiple -kernels and often problems on one kernel can be reproduced on another -kernel. For this reason, we choose Genode/Linux where we can use all -the normal debugging tools like 'gdb(1)', 'valgrind(1)' and so on. Luckily -for us, DosBox also fails to run on Genode/Linux. The debugging steps -are naturally dependent on the ported software. In the case of DosBox, -the remaining stumbling blocks were a few places where DosBox assumed -Linux as a host platform. - -For the sake of completeness here is a list of all files that were created by -porting DosBox to Genode: - -! ports/ports/dosbox.hash -! ports/ports/dosbox.port -! ports/run/dosbox.run -! ports/src/app/dosbox/config.h -! ports/src/app/dosbox/patches/bios.patch -! ports/src/app/dosbox/patches/int10_vesa.patch -! ports/src/app/dosbox/target.mk -! ports/src/app/dosbox/x86_32/size_defs.h -! ports/src/app/dosbox/x86_64/size_defs.h - -[image dosbox] - DosBox ported to Genode - -Finally, after having tested that both the preparation-step and the -build of DosBox work as expected, it is time to -finalize the fingerprint stored in the _/ports/ports/dosbox.hash_ -file. This can be done by copying the content of the -_/contrib/dosbox-dummy/dosbox.hash file_. -Alternatively, you may invoke the _tool/ports/update_hash_ tool with the -port name "dosbox" as argument. The next time, you -invoke the prepare_port tool, do not specify the 'CHECK_HASH=no' argument. -So the fingerprint check will validate that the _dosbox.hash_ file -corresponds to your _dosbox.port_ file. From now on, the -_/contrib/dosbox-dummy_ directory will no longer be used because -the _dosbox.hash_ file points to the port directory named after the real -fingerprint. - - -Native Genode port of a library -############################### - -Porting a library to be used natively on Genode is similar to porting -an application to run natively on Genode. The source codes have to be -obtained and, if needed, patched to run on Genode. -As an example on how to port a library to natively run on Genode, we -will describe the porting of SDL_net in more detail. Ported libraries -are placed in the _libports_ repository of Genode. But this is just a -convention. Feel free to host your library port in a custom repository -of your's. - - -Checking requirements/dependencies -================================== - -We will proceed as we did when we ported DosBox to run natively on Genode. -First we build SDL_net on Linux to obtain a log file of the whole build -process: - -! $ wget http://www.libsdl.org/projects/SDL_net/release/SDL_net-1.2.8.tar.gz -! $ tar xvzf SDL_net-1.2.8.tar.gz -! $ cd SDL_net-1.2.8 -! $ ./configure -! $ make > build.log 2>&1 - - -Creating the port file -====================== - -We start by creating _/libports/ports/sdl_net.port: - -! LICENSE := BSD -! VERSION := 1.2.8 -! DOWNLOADS := sdl_net.archive -! -! URL(sdl_net) := http://www.libsdl.org/projects/SDL_net/release/SDL_net-$(VERSION).tar.gz -! SHA(sdl_net) := fd393059fef8d9925dc20662baa3b25e02b8405d -! DIR(sdl_net) := src/lib/sdl_net -! -! PATCHES := src/lib/sdl_net/SDLnet.patch src/lib/sdl_net/SDL_net.h.patch - -In addition to the URL the SHA1 checksum of the SDL_net archive needs to -specified because _tool/prepare_port_ validates the downloaded archive -by using this hash. - -Applications that want to use SDL_net have to include the 'SDL_net.h' header -file. Hence it is necessary to make this file visible to applications. This is -done by populating the _/contrib/sdl-/include_ directory: - -! DIRS := include/SDL -! DIR_CONTENT(include/SDL) := src/lib/sdl_net/SDL_net.h - -For now, we also use a dummy hash in the _sdl_net.hash_ file like it was done -while porting DosBox. We will replace the dummy hash with the proper one at -the end. - - -Creating the build Makefile -=========================== - -We create the build rules in _libports/lib/mk/sdl_net.mk_: - -! SDL_NET_DIR := $(call select_from_ports,sdl_net)/src/lib/sdl_net -! -! SRC_C = $(notdir $(wildcard $(SDL_NET_DIR)/SDLnet*.c)) -! -! vpath %.c $(SDL_NET_DIR) -! -! INC_DIR += $(SDL_NET_DIR) -! -! LIBS += libc sdl - -'SDL_net' should be used as shared library. To achieve this, we -have to add the following statement to the 'mk' file: - -! SHARED_LIB = yes - -_If we omit this statement, Genode's build system will automatically_ -_build SDL_net as a static library called_ 'sdl_net.lib.a' _that_ -_is linked directly into the application._ - -It is reasonable to create a dummy application that uses the -library because it is only possible to build libraries automatically -as a dependency of an application. - -Therefore we create -_libports/src/test/libports/sdl_net/target.mk_ with the following content: - -! TARGET = test-sdl_net -! LIBS = libc sdl_net -! SRC_CC = main.cc - -! vpath main.cc $(PRG_DIR)/.. - -At this point we also create _lib/import/import-sdl_net.mk_ -with the following content: - -! SDL_NET_PORT_DIR := $(call select_from_ports,sdl_net) -! INC_DIR += $(SDL_NET_PORT_DIR)/include $(SDL_NET_PORT_DIR)/include/SDL - -Each port that depends on SDL_net and has added it to its LIBS variable -will automatically include the _import-sdl_net.mk_ file and therefore -will use the specified include directory to find the _SDL_net.h_ header. - - -Compiling the library -===================== - -We compile the SDL_net library as a side effect of building our dummy test -program by executing - -! $ make test/libports/sdl_net - -All source files are compiled fine but unfortunately the linking of the -library does not succeed: - -! /src/genodebuild/foc_x86_32/var/libcache/sdl_net/sdl_net.lib.so: -! undefined reference to `gethostbyaddr' - -The symbol 'gethostbyaddr' is missing, which is often a clear sign -of a missing dependency. In this case however 'gethostbyaddr(3)' is -missing because this function does not exist in Genode's libc _(*)_. -But 'getaddrinfo(3)' exists. We are now facing the choice of implementing -'gethostbyaddr(3)' or changing the code of SDL_net to use 'getaddrinfo(3)'. -Porting applications or libraries to Genode always may involve this kind of -choice. Which way is the best has to be decided by closely examining the -matter at hand. Sometimes it is better to implement the missing functions -and sometimes it is more beneficial to change the contributed code. -In this case, we opt for changing SDL_net because the former function is -obsolete anyway and implementing 'gethostbyaddr(3)' involves changes to -several libraries in Genode, namely libc and the network related -libc plugin. Although we have to keep in mind that it is likely to encounter -another application or library that also uses this function in the future. - -With this change in place, SDL_net compiles fine. - -_(*) Actually this function is implemented in the Genode's_ libc _but is_ -_only available by using libc_resolv which we did not do for the sake of_ -_this example._ - - -Testing the library -=================== - -The freshly ported library is best tested with the application, which was the -reason the library was ported in the first place, since it is unlikely that -we port a library just for fun and no profit. Therefore, it is not necessary to -write a run script for a library alone. - -For the records, here is a list of all files that were created by -porting SDL_net to Genode: - -! libports/lib/mk/sdl_net.mk -! libports/lib/mk/import/import-sdl_net.mk -! libports/ports/sdl_net.hash -! libports/ports/sdl_net.port -! libports/src/lib/sdl_net/SDLnet.patch -! libports/test/libports/sdl_net/target.mk - - -Porting an application to Genode's Noux runtime -############################################### - -Porting an application to Genode's Noux runtime is basically the same as -porting a program to natively run on Genode. The source code has to be -prepared and, if needed, patched to run in Noux. However in contrast to -this, there are Noux build rules (_ports/mk/noux.mk_) that enable us to use -the original build-tool if it is based upon Autotools. Building the -application is done within a cross-compile environment. In this environment -all needed variables like 'CC', 'LD', 'CFLAGS' and so on are set to their -proper values. In addition to these precautions, using _noux.mk_ simplifies certain things. -The system-call handling/functions is/are implemented in the libc plugin -_libc_noux_ (the source code is found in _ports/src/lib/libc_noux_). All -applications running in Noux have to be linked against this library which is -done implicitly by using the build rules of Noux. - -As an example on how to port an application to Genode's Noux runtime, we -will describe the porting of GNU's 'tar' tool in more detail. A ported -application is normally referred to as a Noux package. - -Checking requirements/dependencies -================================== - -As usual, we first build GNU tar on Linux/x86 and capture the build -process: - -! $ wget http://ftp.gnu.org/gnu/tar/tar-1.27.tar.xz -! $ tar xJf tar-1.27.tar.xz -! $ cd tar-1.27 -! $ ./configure -! $ make > build.log 2>&1 - - -Creating the port file -====================== - -We start by creating the port Makefile _ports/ports/tar.mk_: - -! LICENSE := GPLv3 -! VERSION := 1.27 -! DOWNLOADS := tar.archive -! -! URL(tar) := http://ftp.gnu.org/gnu/tar/tar-$(VERSION).tar.xz -! SHA(tar) := 790cf784589a9fcc1ced33517e71051e3642642f -! SIG(tar) := ${URL(tar)}.sig -! KEY(tar) := GNU -! DIR(tar) := src/noux-pkg/tar - -_As of version 14.05, Genode does not check the signature specified via_ -_the SIG and KEY declaration but relies the SHA checksum only. However,_ -_as signature checks are planned in the future, we use to include the_ -_respective declarations if signature files are available._ - -While porting GNU tar we will use a dummy hash as well. - - -Creating the build rule -======================= - -Build rules for Noux packages are located in _/ports/src/noux-pkgs_. - -The _tar/target.mk_ corresponding to GNU tar looks like this: - -! CONFIGURE_ARGS = --bindir=/bin \ -! --libexecdir=/libexec -! -! include $(REP_DIR)/mk/noux.mk - -The variable 'CONFIGURE_ARGS' contains the options that are -passed on to Autoconf's configure script. The Noux specific build -rules in _noux.mk_ always have to be included last. - -The build rules for GNU tar are quite short and therefore at the end -of this chapter we take a look at a much more extensive example. - - -Creating a run script -===================== - -Creating a run script to test Noux packages is the same as it is -with running natively ported applications. Therefore we will only focus -on the Noux-specific parts of the run script and omit the rest. - -First, we add the desired Noux packages to 'build_components': - -! set noux_pkgs "bash coreutils tar" -! -! foreach pkg $noux_pkgs { -! lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg } -! -! build $build_components - -Since each Noux package is, like every other Genode binary, installed to the -_/bin_ directory, we create a tar archive of each package from -each directory: - -! foreach pkg $noux_pkgs { -! exec tar cfv bin/$pkg.tar -h -C bin/$pkg . } - -_Using noux.mk makes sure that each package is always installed to_ -_/bin/._ - -Later on, we will use these tar archives to assemble the file system -hierarchy within Noux. - -Most applications ported to Noux want to read and write files. On that -matter, it is reasonable to provide a file-system service and the easiest -way to do this is to use the ram_fs server. This server provides a RAM-backed -file system, which is perfect for testing Noux applications. With -the help of the session label we can route multiple directories to the -file system in Noux: - -! append config { -! -! […] -! -! -! -! -! -! -! -! -! -! -! -! -! -! […] - -The file system Noux presents to the running applications is constructed -out of several stacked file systems. These file systems have to be -registered in the 'fstab' node in the configuration node of Noux: - -! -! -! -! } - -Each Noux package is added - -! foreach pkg $noux_pkgs { -! append config { -! " }} - -and the routes to the ram_fs file system are configured: - -! append config { -! -! -! -! -! -! -! -! -! } - -In this example we save the run script as _ports/run/noux_tar.run_. - - -Compiling the Noux package -========================== - -Now we can trigger the compilation of tar by executing - -! $ make VERBOSE= noux-pkg/tar - -_At least on the first compilation attempt, it is wise to unset_ 'VERBOSE' -_because it enables us to see the whole output of the_ 'configure' _process._ - -By now, Genode provides almost all libc header files that are used by -typical POSIX programs. In most cases, it is rather a matter of enabling -the right definitions and compilation flags. It might be worth to take a -look at FreeBSD's ports tree because Genode's libc is based upon the one -of FreeBSD 8.2.0 and if certain changes to the contributed code are needed, -they are normally already done in the ports tree. - -The script _noux_env.sh_ that is used to create the cross-compile -environment as well as the famous _config.log_ are found -in _/noux-pkg/_. - - -Running the Noux package -======================== - -We use the previously written run script to start the scenario, in which we -can execute and test the Noux package by issuing: - -! $ make run/noux_tar - -After the system has booted and Noux is running, we first create some test -files from within the running bash process: - -! bash-4.1$ mkdir /tmp/foo -! bash-4.1$ echo 'foobar' > /tmp/foo/bar - -Following this we try to create a ".tar" archive of the directory _/tmp/foo_ - -! bash-4.1$ cd /tmp -! bash-4.1$ tar cvf foo.tar foo/ -! tar: /tmp/foo: Cannot stat: Function not implemented -! tar: Exiting with failure status due to previous errors -! bash-4.1$ - -Well, this does not look too good but at least we have a useful error message -that leads (hopefully) us into the right direction. - - -Debugging an application that uses the Noux runtime -=================================================== - -Since the Noux service is basically the kernel part of our POSIX runtime -environment, we can ask Noux to show us the system calls executed by tar. -We change its configuration in the run script to trace all system calls: - -! […] -! -! -! […] - -We start the runscript again, create the test files and try to create a -".tar" archive. It still fails but now we have a trace of all system calls -and know at least what is going in Noux itself: - -! […] -! [init -> noux] PID 0 -> SYSCALL FORK -! [init -> noux] PID 0 -> SYSCALL WAIT4 -! [init -> noux] PID 5 -> SYSCALL STAT -! [init -> noux] PID 5 -> SYSCALL EXECVE -! [init -> noux] PID 5 -> SYSCALL STAT -! [init -> noux] PID 5 -> SYSCALL GETTIMEOFDAY -! [init -> noux] PID 5 -> SYSCALL STAT -! [init -> noux] PID 5 -> SYSCALL OPEN -! [init -> noux] PID 5 -> SYSCALL FTRUNCATE -! [init -> noux] PID 5 -> SYSCALL FSTAT -! [init -> noux] PID 5 -> SYSCALL GETTIMEOFDAY -! [init -> noux] PID 5 -> SYSCALL FCNTL -! [init -> noux] PID 5 -> SYSCALL WRITE -! [init -> noux -> /bin/tar] DUMMY fstatat(): fstatat called, not implemented -! [init -> noux] PID 5 -> SYSCALL FCNTL -! [init -> noux] PID 5 -> SYSCALL FCNTL -! [init -> noux] PID 5 -> SYSCALL WRITE -! [init -> noux] PID 5 -> SYSCALL FCNTL -! [init -> noux] PID 5 -> SYSCALL WRITE -! [init -> noux] PID 5 -> SYSCALL GETTIMEOFDAY -! [init -> noux] PID 5 -> SYSCALL CLOSE -! [init -> noux] PID 5 -> SYSCALL FCNTL -! [init -> noux] PID 5 -> SYSCALL WRITE -! [init -> noux] PID 5 -> SYSCALL CLOSE -! [init -> noux] child /bin/tar exited with exit value 2 -! […] - -_The trace log was shortened to only contain the important information._ - -We now see at which point something went wrong. To be honest, we see the -'DUMMY' message even without enabling the tracing of system calls. But -there are situations where a application is actually stuck in a (blocking) -system call and it is difficult to see in which. - -Anyhow, 'fstatat' is not properly implemented. At this point, we either have -to add this function to the Genode's libc or rather add it to libc_noux. -If we add it to the libc, not only applications running in Noux will -benefit but all applications using the libc. Implementing it in -libc_noux is the preferred way if there are special circumstances because -we have to treat the function differently when used in Noux (e.g. 'fork'). - -For the sake of completeness here is a list of all files that were created by -porting GNU tar to Genode's Noux runtime: - -! ports/ports/tar.hash -! ports/ports/tar.port -! ports/run/noux_tar.run -! ports/src/noux-pkg/tar/target.mk - - -Extensive build rules example -============================= - -The build rules for OpenSSH are much more extensive than the ones in -the previous example. Let us take a quick look at those build rules to -get a better understanding of possible challenges one may encounter while -porting a program to Noux: - -! # This prefix 'magic' is needed because OpenSSH uses $exec_prefix -! # while compiling (e.g. -DSSH_PATH) and in the end the $prefix and -! # $exec_prefix path differ. -! -! CONFIGURE_ARGS += --disable-ip6 \ -! […] -! --exec-prefix= \ -! --bindir=/bin \ -! --sbindir=/bin \ -! --libexecdir=/bin - -In addition to the normal configure options, we have to also define the -path prefixes. The OpenSSH build system embeds certain paths in the -ssh binary, which need to be changed for Noux. - -! INSTALL_TARGET = install - -Normally the Noux build rules (_noux.mk_) execute 'make install-strip' to -explicitly install binaries that are stripped of their debug symbols. The -generated Makefile of OpenSSH does not use this target. It automatically -strips the binaries when executing 'make install'. Therefore, we set the -variable 'INSTALL_TARGET' to override the default behaviour of the -Noux build rules. - -! LIBS += libcrypto libssl zlib libc_resolv - -As OpenSSH depends on several libraries, we need to include these in the -build Makefile. These libraries are runtime dependencies and need to be -present when running OpenSSH in Noux. - -Sometimes it is needed to patch the original build system. One way to do -this is by applying a patch while preparing the source code. The other -way is to do it before building the Noux package: - -! noux_built.tag: Makefile Makefile_patch -! -! Makefile_patch: Makefile -! @# -! @# Our $(LDFLAGS) contain options which are usable by gcc(1) -! @# only. So instead of using ld(1) to link the binary, we have -! @# to use gcc(1). -! @# -! $(VERBOSE)sed -i 's|^LD=.*|LD=$(CC)|' Makefile -! @# -! @# We do not want to generate host-keys because we are crosscompiling -! @# and we can not run Genode binaries on the build system. -! @# -! $(VERBOSE)sed -i 's|^install:.*||' Makefile -! $(VERBOSE)sed -i 's|^install-nokeys:|install:|' Makefile -! @# -! @# The path of ssh(1) is hardcoded to $(bindir)/ssh which in our -! @# case is insufficient. -! @# -! $(VERBOSE)sed -i 's|^SSH_PROGRAM=.*|SSH_PROGRAM=/bin/ssh|' Makefile - -The target _noux_built.tag_ is a special target defined by the Noux build -rules. It will be used by the build rules when building the Noux package. -We add the 'Makefile_patch' target as a dependency to it. So after configure -is executed, the generated Makefile will be patched. - -Autoconf's configure script checks if all requirements are fulfilled and -therefore, tests if all required libraries are installed on the host system. -This is done by linking a small test program against the particular library. -Since these libraries are only build-time dependencies, we fool the configure -script by providing dummy libraries: - -! # -! # Make the zlib linking test succeed -! # -! Makefile: dummy_libs -! -! LDFLAGS += -L$(PWD) -! -! dummy_libs: libz.a libcrypto.a libssl.a -! -! libcrypto.a: -! $(VERBOSE)$(AR) -rc $@ -! libssl.a: -! $(VERBOSE)$(AR) -rc $@ -! libz.a: -! $(VERBOSE)$(AR) -rc $@ - - -Porting devices drivers -####################### - -Even though Genode encourages writing native device drivers, this task sometimes -becomes infeasible. Especially if there is no documentation available for a -certain device or if there are not enough programming resources at hand to -implement a fully fledged driver. Examples of ported drivers can be found in -the 'dde_linux', 'dde_bsd', and 'dde_ipxe' repositories. - -In this chapter we will exemplary discuss how to port a Linux driver for an ARM -based SoC to Genode. The goal is to execute driver code in user land directly on -Genode while making the driver believe it is running within the Linux kernel. -Traditionally there have been two approaches to reach this goal in Genode. In -the past, Genode provided a Linux environment, called 'dde_linux26', with the -purpose to offer just enough infrastructure to easily port drivers. However, -after adding more drivers it became clear that this repository grew extensively, -making it hard to maintain. Also updating the environment to support newer -Linux-kernel versions became a huge effort which let the repository to be neglected -over time. - -Therefore we choose the path to write a customized environment for each driver, -which provides a specially tailored infrastructure. We found that the -support code usually is not larger than a couple of thousand lines of code, -while upgrading to newer driver versions, as we did with the USB drivers, is -feasible. - - -Basic driver structure -====================== - -The first step in porting a driver is to identify the driver code that has to be -ported. Once the code is located, we usually create a new Genode repository and -write a port file to download and extract the code. It is good practice to name -the port and the hash file like the new repository, e.g. _dde_linux.port_ if -the repository directory is called _/repos/dde_linux_. -Having the source code ready, there are three main tasks the environment must -implement. The first is the driver back end, which is responsible for raw device -access using Genode primitives, the actual environment that emulates Linux -function calls the driver code is using, and the front end, which exposes for -example some Genode-session interface (like NIC or block session) that client -applications can connect to. - - -Further preparations -==================== - -Having the code ready, the next step is to create an _*.mk_ file that actually -compiles the code. For a driver library _lib/mk/.mk_ has to be -created and for a stand-alone program _src//target.mk_ is created -within the repository. With the _*.mk_ file in place, we can now start the -actual compilation. Of course this will cause a whole lot of errors and -warnings. Most of the messages will deal with implicit declarations of functions -and unknown data types. What we have to do now is to go through each warning and -error message and either add the header file containing the desired function or -data type to the list of files that will be extracted to the _contrib_ directory -or create our own prototype or data definition. - -When creating our own prototypes, we put them in a file called _lx_emul.h_. To -actually get this file included in all driver files we use the following code in -the _*.mk_ file: - -! CC_C_OPT += -include $(INC_DIR)/lx_emul.h - -where 'INC_DIR' points to the include path of _lx_emul.h_. - -The hard part is to decide which of the two ways to go for a specific function -or data type, since adding header files also adds more dependencies and often -more errors and warnings. As a rule of thumb, try adding as few headers as -possible. - -The compiler will also complain about a lot of missing header files. Since we do -not want to create all these header files, we use a trick in our _*.mk_ file that -extracts all header file includes from the driver code and creates symbolic -links that correspond to the file name and links to _lx_emul.h_. You can put the -following code snippet in your _*.mk_ file which does the trick: - -!# -!# Determine the header files included by the contrib code. For each -!# of these header files we create a symlink to _lx_emul.h_. -!# -!GEN_INCLUDES := $(shell grep -rh "^\#include .*\/" $(DRIVER_CONTRIB_DIR) |\ -! sed "s/^\#include [^<\"]*[<\"]\([^>\"]*\)[>\"].*/\1/" | \ -! sort | uniq) -! -!# -!# Filter out original Linux headers that exist in the contrib directory -!# -!NO_GEN_INCLUDES := $(shell cd $(DRIVER_CONTRIB_DIR); find -name "*.h" | sed "s/.\///" | \ -! sed "s/.*include\///") -!GEN_INCLUDES := $(filter-out $(NO_GEN_INCLUDES),$(GEN_INCLUDES)) -! -!# -!# Put Linux headers in 'GEN_INC' dir, since some include use "../../" paths use -!# three level include hierarchy -!# -!GEN_INC := $(shell pwd)/include/include/include -! -!$(shell mkdir -p $(GEN_INC)) -! -!GEN_INCLUDES := $(addprefix $(GEN_INC)/,$(GEN_INCLUDES)) -!INC_DIR += $(GEN_INC) -! -!# -!# Make sure to create the header symlinks prior building -!# -!$(SRC_C:.c=.o) $(SRC_CC:.cc=.o): $(GEN_INCLUDES) -! -!$(GEN_INCLUDES): -! $(VERBOSE)mkdir -p $(dir $@) -! $(VERBOSE)ln -s $(LX_INC_DIR)/lx_emul.h $@ - -Make sure 'LX_INC_DIR' is the directory containing the _lx_emul.h_ file. Note -that 'GEN_INC' is added to your 'INC_DIR' variable. - -The 'DRIVER_CONTRIB_DIR' variable is defined by calling the _select_from_port_ -function at the beginning of a Makefile or a include file, which is used by -all other Makefiles: - -! DRIVER_CONTRIB_DIR := $(call select_from_ports,driver_repo)/src/lib/driver_repo - -The process of function definition and type declaration continues until the code -compiles. This process can be quite tiresome. When the driver code finally compiles, the -next stage is linking. This will of course lead to another whole set of errors -that complain about undefined references. To actually obtain a linked binary we -create a _dummies.cc_ file. To ease things up we suggest to create a macro called -'DUMMY' and implement functions as in the example below: - -! /* -! * Do not include 'lx_emul.h', since the implementation will most likely clash -! * with the prototype -! */ -! -!#define DUMMY(retval, name) \ -! DUMMY name(void) { \ -! PDBG( #name " called (from %p) not implemented", __builtin_return_address(0)); \ -! return retval; \ -!} -! -! DUMMY(-1, kmalloc) -! DUMMY(-1, memcpy) -! ... - -Create a 'DUMMY' for each undefined reference until the binary links. We now -have a linked binary with a dummy environment. - - -Debugging -========= - -From here on, we will actually start executing code, but before we do that, let us -have a look at the debugging options for device drivers. Since drivers have to -be tested on the target platform, there are not as many debugging options -available as for higher level applications, like running applications on the -Linux version of Genode while using GDB for debugging. Having these -restrictions, debugging is almost completely performed over the serial line and -on rare occasions with an hardware debugger using JTAG. - -For basic Linux driver debugging it is useful to implement the 'printk' -function (use 'dde_kit_printf' or something similar) first. This way, the driver -code can output something and additions for debugging can be made. The -'__builtin_return_address' function is also useful in order to determine where a -specific function was called from. 'printk' may become a problem with devices -that require certain time constrains because serial line output is very slow. This is -why we port most drivers by running them on top of the Fiasco.OC version of -Genode. There you can take advantage of Fiasco's debugger (JDB) and trace buffer -facility. - -The trace buffer can be used to log data and is much faster than 'printk' over -serial line. Please inspect the 'ktrace.h' file (at -_base-foc/contrib/l4/pkg/l4sys/include/ARCH-*/ktrace.h_) -that describes the complete interface. A very handy function there is - -!fiasco_tbuf_log_3val("My message", variable1, variable2, variable3); - -which stores a message and three variables in the trace buffer. The trace buffer -can be inspected from within JDB by pressing 'T'. - -JDB can be accessed at any time by pressing the 'ESC' key. It can be used to -inspect the state of all running threads and address spaces on the system. There -is no recent JDB documentation available, but - -:Fiasco kernel debugger manual: - - [http://os.inf.tu-dresden.de/fiasco/doc/jdb.pdf] - -should be a good starting point. It is also possible to enter the debugger at -any time from your program calling the 'enter_kdebug("My breakpoint")' function -from within your code. The complete JDB interface can be found in -_base-foc/contrib/l4/pkg/l4sys/include/ARCH-*/kdebug.h_. - -Note that the backtrace ('bt') command does not work out of the box on ARM -platforms. We have a small patch for that in our Fiasco.OC development branch -located at GitHub: [http://github.com/ssumpf/foc/tree/dev] - - -The back end -============ - -To ease up the porting of drivers and interfacing Genode from C code, Genode offers a -library called DDE kit. DDE kit provides access to common functions required -by drivers like device memory, virtual memory with physical-address lookup, -interrupt handling, timers, etc. Please inspect _os/include/dde_kit_ to see the -complete interface description. You can also use 'grep -r dde_kit_ *' to see -usage of the interface in Genode. - -As an example for using DDE kit we implement the 'kmalloc' call: - -!void *kmalloc(size_t size, gfp_t flags) -!{ -! return dde_kit_simple_malloc(size); -!} - -It is also possible to directly use Genode primitives from C++ files, the -functions only have to be declared as 'extern "C"' so they can be called from C -code. - - -The environment -=============== - -Having a dummy environment we may now begin to actually execute driver code. - -Driver initialization -~~~~~~~~~~~~~~~~~~~~~ - -Most Linux drivers will have an initialization routine to register itself within -the Linux kernel and do other initializations if necessary. In order to be -initialized, the driver will register a function using the 'module_init' call. -This registered function must be called before the driver is actually used. To -be able to call the registered function from Genode, we define the 'module_init' -macro in _lx_emul.h_ as follows: - -! #define module_init(fn) void module_##fn(void) { fn(); } - -when a driver now registers a function like - -! module_init(ehci_hcd_init); - -we would have to call - -! module_ehci_hcd_init(); - -during driver startup. Having implemented the above, it is now time to start our -ported driver on the target platform and check if the initialization function is -successful. Any important dummy functions that are called must be implemented -now. A dummy function that does not do device related things, like Linux book -keeping, may not be implemented. Sometimes Linux checks the return values of -functions we might not want to implement, in this case it is sufficient to simply -adjust the return value of the affected function. - -Device probing -~~~~~~~~~~~~~~ -Having the driver initialized, we will give the driver access to the device -resources. This is performed in two steps. In the case of ARM SoC's we have to -check in which state the boot loader (usually U-Boot) left the device. Sometimes -devices are already setup by the boot loader and only a simple device reset is -necessary to proceed. If the boot loader did not touch the device, we most -likely have to check and setup all the necessary clocks on the platform and may -have to perform other low level initializations like PHY setup. - -If the device is successfully (low level) initialized, we can hand it over to -the driver by calling the 'probe' function of the driver. For ARM platforms the -'probe' function takes a 'struct platform_device' as an argument and all -important fields, like device resources and interrupt numbers, should be set to -the correct values before calling 'probe'. During 'probe' the driver will most -likely map and access device memory, request interrupts, and reset the device. -All dummy functions that are related to these tasks should be implemented or -ported at this point. - -When 'probe' returns successful, you may either test other driver functions by -hand or start building the front-end. - - -The front end -============= - -An important design question is how the front end is attached to the driver. In -some cases the front end may not use the driver directly, but other Linux -subsystems that are ported or emulated by the environment. For example, the USB -storage driver implements parts of the SCSI subsystem, which in turn is used -by the front end. The whole decision depends on the kind of driver that is -ported and on how much additional infrastructure is needed to actually make use -of the data. Again an USB example: For USB HID, we needed to port the USB controller -driver, the hub driver, the USB HID driver, and the generic HID driver in order -to retrieve keyboard and mouse events from the HID driver. - -The last step in porting a device driver is to make it accessible to other -Genode applications. Typically this is achieved by implementing one of Genode's -session interfaces, like a NIC session for network adapters or a block session for -block devices. You may also define your own session interfaces. The -implementation of the session interface will most likely trigger driver calls, -so you have to have to keep an eye on the dummy functions. Also make sure that calls to the -driver actually do what they are supposed to, for example, some wrong return value -of a dummy function may cause a function to return without performing any work. - - -Notes on synchronization -======================== - -After some experiences with Linux drivers and multi-threading, we lately -choose to have all Linux driver code executed by a single thread only. This way no Linux -synchronization primitives have to be implemented and we simply don't have to -worry about subtle pre- and postconditions of many functions (like "this -function has to be called with lock 'x' being held"). - -Unfortunately we cannot get rid of all threads within a device-driver server, -there is at least one waiting for interrupts and one for the entry point that -waits for client session requests. In order to synchronize these threads, we use -Genode's signalling framework. So when, for example, the IRQ thread receives an -interrupt it will send a signal. The Linux driver thread will at certain points -wait for these signals (e.g., functions like 'schedule_timeout' or -'wait_for_completion') and execute the right code depending on the kind of -signal delivered or firmly speaking the signal context. For this to work, we use -a class called 'Signal_dispatcher' (_base/include/base/signal.h_) which inherits -from 'Signal_context'. More than one dispatcher can be bound to a signal -receiver, while each dispatcher might do different work, like calling the -Linux interrupt handler in the IRQ example. - - diff --git a/repos/os/doc/init.txt b/repos/os/doc/init.txt deleted file mode 100644 index 532a46071c..0000000000 --- a/repos/os/doc/init.txt +++ /dev/null @@ -1,314 +0,0 @@ - - ======================================== - Configuring the init component of Genode - ======================================== - - Norman Feske - - -The Genode architecture facilitates the flexible construction of complex usage -scenarios out of Genode's components used as generic building blocks. Thanks -to the strictly hierarchic and, at the same time, recursive structure of -Genode, a parent has full control over the way, its children interact with each -other and with the parent. The init component plays a special role in that -picture. At boot time, it gets started by core, gets assigned all physical -resources, and controls the execution of all further components, which can -be further instances of init. Init's policy is driven by a configuration file, -which declares a number of children, their relationships, and resource -assignments. This document describes the configuration mechansism to steer the -policy of the init component. The configuration is described in a single XML file -called 'config' supplied via core's ROM service. - - -Configuration -############# - -At the parent-child interface, there are two operations that are subject to -policy decisions of the parent, the child announcing a service and the -child requesting a service. If a child announces a service, the parent is up -to decide if and how to make this service accessible to its other children. -When a child requests a service, the parent may deny the session request, -delegate the request to its own parent, implement the requested service -locally, or open a session at one of its other children. This decision may -depend on the requested service or session-construction arguments provided -by the child. Apart from assigning resources to children, the central -element of the policy implemented in the parent is a set of rules to -route session requests. Therefore, init's configuration concept is laid out -around components and the routing of session requests. The concept is best -illustrated by an example (the following config file can be used on Linux): - -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! - -First, there is the declaration of services provided by the parent of the -configured init instance. In this case, we declare that the parent provides a -LOG service. For each child to start, there is a '' -node describing resource assignments, declaring services provided by the child, -and holding a routing table for session requests originating from the child. -The first child is called "timer" and implements the "Timer" service. The -second component called "test-timer" is a client of the timer service. In its -routing table, we see that requests for "Timer" sessions should be routed to -the "timer" child whereas requests for "LOG" sessions should be delegated to -init's parent. Per-child service routing rules provide a flexible way to -express arbitrary client-server relationships. For example, service requests -may be transparently mediated through special policy components acting upon -session-construction arguments. There might be multiple children implementing -the same service, each addressed by different routing tables. If there is no -valid route to a requested service, the service is denied. In the example -above, the routing tables act effectively as a whitelist of services the child -is allowed to use. - -In practice, usage scenarios become more complex than the basic example, -increasing the size of routing tables. Furthermore, in many practical cases, -multiple children may use the same set of services, and require duplicated -routing tables within the configuration. In particular during development, the -elaborative specification of routing tables tend to become an inconvenience. -To alleviate this problem, there are two mechanisms, wildcards and a default -route. Instead of specifying a list of single service routes targeting the same -destination, the wildcard '' becomes handy. For example, instead -of specifying -! -! -! -! -! -! -the following shortcut can be used: -! -! -! -The latter version is not as strict as the first one because it permits the -child to create sessions at the parent, which were not whitelisted in the -elaborative version. Therefore, the use of wildcards is discouraged for -configuring untrusted components. Wildcards and explicit routes may be combined -as illustrated by the following example: -! -! -! -! -The routing table is processed starting with the first entry. If the route -matches the service request, it is taken, otherwise the remaining -routing-table entries are visited. This way, the explicit service route of -"LOG" sessions to "nitlog" shadows the LOG service provided by the parent. - -To emulate the traditional init policy, which allowed a child to use services -provided by arbitrary other children, there is a further wildcard called -''. Using this wildcard, such a policy can be expressed as follows: -! -! -! -! -This rule would delegate all session requests referring to one of the parent's -services to the parent. If no parent service matches the session request, the -request is routed to any child providing the service. The rule can be further -reduced to: -! -! -! -Potential ambiguities caused by multiple children providing the same service -are detected automatically. In this case, the ambiguity must be resolved using -an explicit route preceding the wildcards. - -To reduce the need to specify the same routing table for many children -in one configuration, there is a '' mechanism. The default -route is declared within the '' node and used for each '' -entry with no '' node. In particular during development, the default -route becomes handy to keep the configuration tidy and neat. - -The combination of explicit routes and wildcards is designed to scale well from -being convenient to use during development towards being highly secure at -deployment time. If only explicit rules are present in the configuration, the -permitted relationships between all components are explicitly defined and can be -easily verified. Note however that the degree those rules are enforced at the -kernel-interface level depends on the used base platform. - - -Advanced features -################# - -In addition to the service routing facility described in the previous section, -the following features are worth noting: - - -Resource quota saturation -========================= - -If a specified resource (i.e., RAM quota) exceeds the available resources. -The available resources are assigned completely to the child. This makes -it possible to assign all remaining resources to the last child by -simply specifying an overly large quantum. - - -Multiple instantiation of a single ELF binary -============================================= - -Each '' node requires a unique 'name' attribute. By default, the -value of this attribute is used as file name for obtaining the ELF -binary at the parent's ROM service. If multiple instances of the same -ELF binary are needed, the binary name can be explicitly specified -using a '' sub node of the '' node: -! -This way, the unique child names can be chosen independently from the -binary file name. - - -Nested configuration -==================== - -Each '' node can host a '' sub node. The content of this sub -node is provided to the child when a ROM session for the file name "config" is -requested. Thereby, arbitrary configuration parameters can be passed to the -child. For example, the following configuration starts 'timer-test' within an -init instance within another init instance. To show the flexibility of init's -service routing facility, the "Timer" session of the second-level 'timer-test' -child is routed to the timer service started at the first-level init instance. -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -! -The services ROM, CPU, RM, and PD are required by the second-level -init instance to create the timer-test component. - -As illustrated by this example, the use of the nested configuration feature -enables the construction of arbitrarily complex component trees via a single -configuration file. - - -Assigning subsystems to CPUs -============================ - -The assignment of subsystems to CPU nodes consists of two parts, the -definition of the affinity space dimensions as used for the init component, and -the association sub systems with affinity locations (relative to the affinity -space). The affinity space is configured as a sub node of the config node. For -example, the following declaration describes an affinity space of 4x2: - -! -! ... -! -! ... -! - -Subsystems can be constrained to parts of the affinity space using the -'' sub node of a '' entry: - -! -! ... -! -! -! ... -! -! ... -! - - -Priority support -================ - -The number of CPU priorities to be distinguished by init can be specified with -'prio_levels' attribute of the '' node. The value must be a power of -two. By default, no priorities are used. To assign a priority to a child -component, a priority value can be specified as 'priority' attribute of the -corresponding '' node. Valid priority values lie in the range of --prio_levels + 1 (maximum priority degradation) to 0 (no priority degradation). - - -Verbosity -========= - -To ease the debugging, init can be directed to print various status information -as LOG output. To enable the verbose mode, assign the value "yes" to the -'verbose' attribute of the '' node. - - -Propagation of exit events -========================== - -A component can notify its parent about its graceful exit via the exit RPC -function of the parent interface. By default, init responds to such a -notification from one of its children by merely printing a log message but -ignores it otherwise. However, there are scenarios where the exit of a -particular child should result in the exit of the entire init component. To -propagate the exit of a child to the parent of init, start nodes can host the -optional sub node '' with the attribute 'propagate' set to "yes". - -! -! -! -! ... -! -! - -The exit value specified by the exiting child is forwarded to init's parent. - - -Using the configuration concept -############################### - -To get acquainted with the configuration format, there are two example -configuration files located at 'os/src/init/', which are both ready-to-use with -the Linux version of Genode. Both configurations produce the same scenario but -they differ in the way policy is expressed. The 'explicit_routing' -configuration is an example for the elaborative specification of all service -routes. All service requests not explicitly specified are denied. So this -policy is a whitelist enforcing mandatory access control on each session -request. The example illustrates well that such a elaborative specification is -possible in an intuitive manner. However, it is pretty comprehensive. In cases -where the elaborative specification of service routing is not fundamentally -important, in particular during development, the use of wildcards can help to -simplify the configuration. The 'wildcard' example demonstrates the use of a -default route for session-request resolution and wildcards. This variant is -less strict about which child uses which service. For development, its -simplicity is beneficial but for deployment, we recommend to remove wildcards -('', '', and '') altogether. The -absence of such wildcards is easy to check automatically to ensure that service -routes are explicitly whitelisted. - -Further configuration examples can be found in the 'os/config/' directory. From e520dbbb7eb9db5483adfcb4b241dcd7fa718511 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Sat, 30 Nov 2024 17:58:44 +0100 Subject: [PATCH 55/69] nova: avoid assertion during SC cleanup Regression introduced in Issue #5314 Fixes #5391 --- repos/base-nova/ports/nova.hash | 2 +- repos/base-nova/ports/nova.port | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/repos/base-nova/ports/nova.hash b/repos/base-nova/ports/nova.hash index f963782638..2101237a0c 100644 --- a/repos/base-nova/ports/nova.hash +++ b/repos/base-nova/ports/nova.hash @@ -1 +1 @@ -3ca00c7332c39fe5be7fc14f3149e45bca428858 +d58086480d6a21a06bbd956e2d2e605d0f39b6b2 diff --git a/repos/base-nova/ports/nova.port b/repos/base-nova/ports/nova.port index 5b469baea7..cc0e8e0ac2 100644 --- a/repos/base-nova/ports/nova.port +++ b/repos/base-nova/ports/nova.port @@ -4,7 +4,7 @@ DOWNLOADS := nova.git # r10 branch URL(nova) := https://github.com/alex-ab/NOVA.git -REV(nova) := f74d1d0d9252de6178e30f4402cbb39ea664f3f7 +REV(nova) := fc9ad04ecec3911302451fcbf6cd87063be66ad0 DIR(nova) := src/kernel/nova PATCHES := $(sort $(wildcard $(REP_DIR)/patches/*.patch)) From ba013af1a3f98da623e2bd4012ecc604a46326cb Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 27 Nov 2024 13:06:36 +0100 Subject: [PATCH 56/69] sculpt_manager: handle manual fb config w/o mirror config node gracefully. If no mirror is set, ever claim one entry as the mirrored one. Without this change, the current effect is that the UI does not allow to merge one of the discrete modes. Issue #5392 --- repos/gems/src/app/sculpt_manager/model/fb_config.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/repos/gems/src/app/sculpt_manager/model/fb_config.h b/repos/gems/src/app/sculpt_manager/model/fb_config.h index aaca4ed9a6..2d2f346e06 100644 --- a/repos/gems/src/app/sculpt_manager/model/fb_config.h +++ b/repos/gems/src/app/sculpt_manager/model/fb_config.h @@ -192,6 +192,10 @@ struct Sculpt::Fb_config /* import discrete nodes */ add_connectors(config); + + /* handle case that manual config contains solely discrete items */ + if (count && !_num_merged) + _num_merged = 1; } void apply_connectors(Fb_connectors const &connectors) From 97e638a2ac0fb53a4bae0ef24b8804c6928a504a Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 13 Nov 2024 17:17:06 +0100 Subject: [PATCH 57/69] intel/display: avoid mode detection in irq task On hotplug, the C++ side of the driver now gets just notified, without any further detection. On the C++ side, now specific actions are scheduled explicitly, which will be executed step by step. New appearing actions will be queued and are not eligible to run before the former actions of the list are processed. Fixe #5392 --- repos/pc/run/intel_fb.run | 2 +- .../src/driver/framebuffer/intel/pc/lx_i915.h | 17 +- .../src/driver/framebuffer/intel/pc/lx_user.c | 1293 +++++++---------- .../src/driver/framebuffer/intel/pc/main.cc | 252 +++- 4 files changed, 737 insertions(+), 827 deletions(-) diff --git a/repos/pc/run/intel_fb.run b/repos/pc/run/intel_fb.run index c4395e087f..eeb4457638 100644 --- a/repos/pc/run/intel_fb.run +++ b/repos/pc/run/intel_fb.run @@ -398,7 +398,7 @@ install_config $config build_boot_image [build_artifacts] if { [get_cmd_switch --autopilot] } { - run_genode_until {\[init -\> init_dynamic -\> intel_fb\] HDMI-A-3: enable.*} 30 + run_genode_until {\[init -\> init_dynamic -\> intel_fb\].*connector connected="true" name="HDMI-A-3"} 30 run_genode_until {\} 20 [output_spawn_id] run_genode_until {green} 30 [output_spawn_id] } else { diff --git a/repos/pc/src/driver/framebuffer/intel/pc/lx_i915.h b/repos/pc/src/driver/framebuffer/intel/pc/lx_i915.h index 47d5676846..e94d9fb90c 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/lx_i915.h +++ b/repos/pc/src/driver/framebuffer/intel/pc/lx_i915.h @@ -5,7 +5,7 @@ */ /* - * Copyright (C) 2022 Genode Labs GmbH + * Copyright (C) 2022-2024 Genode Labs GmbH * * This file is distributed under the terms of the GNU General Public License * version 2. @@ -33,15 +33,28 @@ struct genode_mode { char name[32]; }; +enum Action { + ACTION_IDLE = 0, + ACTION_DETECT_MODES = 1, + ACTION_CONFIGURE = 2, + ACTION_REPORT = 3, + ACTION_NEW_CONFIG = 4, + ACTION_READ_CONFIG = 5, + ACTION_HOTPLUG = 6, + ACTION_EXIT = 7, + ACTION_FAILED = 9, +}; + int lx_emul_i915_blit(unsigned const connector_id, char const may_sleep); void lx_emul_i915_wakeup(unsigned connector_id); void lx_emul_i915_report_discrete(void * genode_xml); void lx_emul_i915_report_non_discrete(void * genode_xml); void lx_emul_i915_hotplug_connector(void); +int lx_emul_i915_action_to_process(int); void lx_emul_i915_report_connector(void * lx_data, void * genode_xml, char const *name, char connected, - char modes, + char valid_fb, unsigned brightness, unsigned width_mm, unsigned height_mm); void lx_emul_i915_iterate_modes(void *lx_data, void * genode_data); diff --git a/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c b/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c index 78ecb794e1..563b729022 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c +++ b/repos/pc/src/driver/framebuffer/intel/pc/lx_user.c @@ -25,34 +25,41 @@ #include "lx_emul.h" -enum { MAX_BRIGHTNESS = 100, INVALID_BRIGHTNESS = MAX_BRIGHTNESS + 1 }; +enum { MAX_BRIGHTNESS = 100, INVALID_BRIGHTNESS = MAX_BRIGHTNESS + 1 }; +enum { MAX_CONNECTORS = 32, CONNECTOR_ID_MIRROR = MAX_CONNECTORS - 1 }; +enum { CAPTURE_RATE_MS = 10, ATTEMPTS_BEFORE_STOP = 7 }; + struct task_struct * lx_user_task = NULL; +static struct task_struct * lx_update_task = NULL; +static struct drm_client_dev * dev_client = NULL; - struct task_struct * lx_user_task = NULL; -static struct task_struct * lx_update_task = NULL; -static struct drm_client_dev * dev_client = NULL; +static bool const verbose = false; - -enum { CONNECTOR_ID_MIRROR = 15 }; -static bool mirrored [16] = { }; +static struct state { + struct drm_mode_create_dumb fb_dumb; + struct drm_mode_fb_cmd2 fb_cmd; + struct drm_framebuffer * fbs; + struct i915_vma * vma; + unsigned long vma_flags; + uint8_t mode_id; + uint8_t unchanged; + bool mirrored; + bool enabled; +} states [MAX_CONNECTORS] = { }; static int user_register_fb(struct drm_client_dev const * const dev, struct fb_info * const info, - struct drm_mode_fb_cmd2 const * const dumb_fb, + struct drm_framebuffer * const fb, + struct i915_vma ** vma, + unsigned long * vma_flags, unsigned width_mm, unsigned height_mm); -static int user_attach_fb_to_crtc(struct drm_client_dev * const dev, - struct drm_connector const * const connector, - struct drm_crtc const * const crtc, - struct drm_mode_modeinfo const * const mode, - unsigned const fb_id, - bool const enable); - static int check_resize_fb(struct drm_client_dev * const dev, struct drm_mode_create_dumb * const gem_dumb, struct drm_mode_fb_cmd2 * const dumb_fb, + bool * const resized, unsigned const width, unsigned const height); @@ -81,14 +88,16 @@ static inline bool conf_larger_mode(struct genode_mode const * const g, } -static inline bool fb_smaller_mode(struct fb_info const * const info, - struct drm_display_mode const * const mode) +static inline bool fb_mirror_compatible(struct drm_display_mode const * const a, + struct drm_display_mode const * const b) { - return (uint64_t)info->var.xres * (uint64_t)info->var.yres < - (uint64_t)mode->vdisplay * (uint64_t)mode->hdisplay; + return a->vdisplay <= b->vdisplay && a->hdisplay <= b->hdisplay; } +static int probe_and_apply_fbs(struct drm_client_dev *client, bool); + + /* * Heuristic to calculate mixed resolution across all mirrored connectors */ @@ -229,141 +238,28 @@ static unsigned get_brightness(struct drm_connector * const connector, } -static struct drm_mode_fb_cmd2 *mirror_fb_cmd; - - -static struct drm_framebuffer * lookup_framebuffer(struct drm_crtc *crtc, - struct drm_modeset_acquire_ctx *ctx) -{ - struct drm_atomic_state *state; - struct drm_plane_state *plane; - struct drm_crtc_state *crtc_state; - - if (!crtc || !crtc->dev || !ctx) - return NULL; - - state = drm_atomic_state_alloc(crtc->dev); - if (!state) - return NULL; - - state->acquire_ctx = ctx; - - crtc_state = drm_atomic_get_crtc_state(state, crtc); - if (IS_ERR(crtc_state)) { - drm_atomic_state_put(state); - return NULL; - } - - plane = drm_atomic_get_plane_state(state, crtc->primary); - - drm_atomic_state_put(state); - - return plane ? plane->fb : NULL; -} - - -enum { MAX_FBS = 8 }; - - -/* own data structure for tracking dumb buffers, e.g. GEM handles, flags, vma */ -struct gem_dumb { - struct drm_mode_create_dumb fb_dumb; - struct drm_mode_fb_cmd2 fb_cmd; - struct i915_vma * vma; - unsigned long flags; -}; - - -/* allocator and lookup helper for our own meta data */ -static bool _meta_data(struct drm_client_dev const * const dev, - struct drm_framebuffer const * const fb, - struct drm_mode_create_dumb ** fb_dumb, /* out */ - struct drm_mode_fb_cmd2 ** fb_cmd, /* out */ - struct gem_dumb ** gem_dumb) /* out */ -{ - static struct gem_dumb gem_dumb_list [MAX_FBS] = { }; - - struct gem_dumb * free_slot = NULL; - - if (!dev) - return false; - - for (unsigned i = 0; i < MAX_FBS; i++) { - struct gem_dumb * slot = &gem_dumb_list[i]; - struct drm_framebuffer * cmp = NULL; - - if (!slot->fb_cmd.fb_id) { - if (!free_slot) - free_slot = slot; - - continue; - } - - if (!fb) - continue; - - cmp = drm_framebuffer_lookup(dev->dev, dev->file, - slot->fb_cmd.fb_id); - - if (cmp) - drm_framebuffer_put(cmp); - - /* lookup case */ - if (cmp == fb) { - if (fb_dumb) *fb_dumb = &slot->fb_dumb; - if (fb_cmd) *fb_cmd = &slot->fb_cmd; - if (gem_dumb) *gem_dumb = slot; - return true; - } - } - - /* allocate case */ - if (free_slot) { - if (fb_dumb) *fb_dumb = &free_slot->fb_dumb; - if (fb_cmd) *fb_cmd = &free_slot->fb_cmd; - if (gem_dumb) *gem_dumb = free_slot; - } - - return !!free_slot; -} - - -static bool dumb_meta(struct drm_client_dev const * const dev, - struct drm_framebuffer const * const fb, - struct drm_mode_create_dumb ** fb_dumb, /* out */ - struct drm_mode_fb_cmd2 ** fb_cmd) /* out */ -{ - return _meta_data(dev, fb, fb_dumb, fb_cmd, NULL); -} - - -static bool dumb_gem(struct drm_client_dev const * const dev, - struct drm_framebuffer const * const fb, - struct gem_dumb ** gem_dumb) /* out */ -{ - return _meta_data(dev, fb, NULL, NULL, gem_dumb); -} - - static void destroy_fb(struct drm_client_dev * const dev, struct drm_mode_create_dumb * const gem_dumb, struct drm_mode_fb_cmd2 * const dumb_fb) { - int result = drm_mode_rmfb(dev->dev, dumb_fb->fb_id, dev->file); + if (dumb_fb->fb_id) { + int result = drm_mode_rmfb(dev->dev, dumb_fb->fb_id, dev->file); - if (result) { - drm_err(dev->dev, "%s: failed to remove framebuffer %d\n", - __func__, result); + if (result) { + drm_err(dev->dev, "%s: failed to remove framebuffer %d\n", + __func__, result); + } } - result = drm_mode_destroy_dumb(dev->dev, gem_dumb->handle, dev->file); + if (gem_dumb->handle) { + int result = drm_mode_destroy_dumb(dev->dev, gem_dumb->handle, dev->file); - if (result) { - drm_err(dev->dev, "%s: failed to destroy framebuffer %d\n", - __func__, result); + if (result) { + drm_err(dev->dev, "%s: failed to destroy framebuffer %d\n", + __func__, result); + } } - /* frees the entry in _meta_data allocator */ memset(gem_dumb, 0, sizeof(*gem_dumb)); memset(dumb_fb, 0, sizeof(*dumb_fb)); } @@ -390,21 +286,9 @@ static int kernel_register_fb(struct fb_info const * const fb_info, static void destroy_fb_and_capture(struct drm_client_dev * const dev, struct drm_connector const * const connector, - struct drm_framebuffer * const fb) + struct state * const state) { - struct drm_mode_create_dumb * dumb_create = NULL; - struct drm_mode_fb_cmd2 * fb_cmd = NULL; - struct gem_dumb * gem_dumb = NULL; - struct fb_info info = {}; - - if (!fb) - return; - - if (!dumb_meta(dev, fb, &dumb_create, &fb_cmd)) - return; - - if (!dumb_gem(dev, fb, &gem_dumb)) - return; + struct fb_info info = {}; info.var.bits_per_pixel = 32; info.node = connector->index; @@ -412,130 +296,47 @@ static void destroy_fb_and_capture(struct drm_client_dev * const dev, kernel_register_fb(&info, 0, 0); - if (gem_dumb->vma) { - intel_unpin_fb_vma(gem_dumb->vma, gem_dumb->flags); + if (state->vma) { + intel_unpin_fb_vma(state->vma, + state->vma_flags); - gem_dumb->vma = NULL; - gem_dumb->flags = 0; + state->vma = NULL; + state->vma_flags = 0; } - destroy_fb(dev, dumb_create, fb_cmd); -} + state->enabled = false; + state->unchanged = 0; - -struct drm_mode_fb_cmd2 fb_of_screen(struct drm_client_dev * const dev, - struct genode_mode const * const conf_mode, - struct fb_info * const fb_info, - struct drm_mode_fb_cmd2 const * const dumb_fb_mirror, - struct drm_display_mode const * const mode, - struct drm_framebuffer * fb, - struct drm_connector const * const connector) -{ - int err = -EINVAL; - struct drm_mode_create_dumb *gem_dumb = NULL; - struct drm_mode_fb_cmd2 *fb_cmd = NULL; - struct drm_framebuffer *fb_mirror = drm_framebuffer_lookup(dev->dev, - dev->file, - dumb_fb_mirror->fb_id); - - /* during hotplug the mirrored fb is used for non mirrored connectors temporarily */ - if (fb && !conf_mode->mirror && fb == fb_mirror) { - fb = NULL; - } - - if (!dumb_meta(dev, fb, &gem_dumb, &fb_cmd) || !gem_dumb || !fb_cmd) { - struct drm_mode_fb_cmd2 invalid = { }; - printk("could not create dumb buffer\n"); - return invalid; - } - - /* notify genode side about switch from connector specific fb to mirror fb */ - if (fb && conf_mode->mirror && fb != fb_mirror) { - - destroy_fb_and_capture(dev, connector, fb); - - } - - if (fb_mirror) - drm_framebuffer_put(fb_mirror); - - fb_info->node = connector->index; - - if (!conf_mode->enabled) { - struct drm_mode_fb_cmd2 invalid = { }; - return invalid; - } - - if (conf_mode->mirror) - return *dumb_fb_mirror; - - err = check_resize_fb(dev, gem_dumb, fb_cmd, - mode->hdisplay, mode->vdisplay); - - if (err) { - printk("setting up framebuffer of %ux%u failed - error=%d\n", - mode->hdisplay, mode->vdisplay, err); - return *dumb_fb_mirror; - } - - fb_info->var.xres = mode->hdisplay; - fb_info->var.yres = mode->vdisplay; - fb_info->var.xres_virtual = mode->hdisplay; - fb_info->var.yres_virtual = mode->vdisplay; - - return *fb_cmd; + destroy_fb(dev, &(state->fb_dumb), &(state->fb_cmd)); } static void close_unused_captures(struct drm_client_dev * const dev) { /* report disconnected connectors to close capture connections */ - struct drm_connector_list_iter conn_iter; - struct drm_connector *connector = NULL; - bool mirror_in_use = false; + struct drm_connector_list_iter conn_iter; + struct drm_connector * connector = NULL; + bool mirror_in_use = false; drm_connector_list_iter_begin(dev->dev, &conn_iter); drm_client_for_each_connector_iter(connector, &conn_iter) { - bool unused = connector->status != connector_status_connected; - if (!unused) { - unused = !connector->state || !connector->state->crtc; + if (connector->index >= MAX_CONNECTORS) + continue; - if (!unused) { - struct drm_modeset_acquire_ctx ctx; - void * fb = NULL; - int err = -1; + if (connector->index == CONNECTOR_ID_MIRROR) + continue; - DRM_MODESET_LOCK_ALL_BEGIN(dev->dev, ctx, - DRM_MODESET_ACQUIRE_INTERRUPTIBLE, - err); - - if (connector->state && connector->state->crtc) - fb = lookup_framebuffer(connector->state->crtc, &ctx); - - DRM_MODESET_LOCK_ALL_END(dev->dev, ctx, err); - - unused = !fb; - } - } - - if (unused) { - struct fb_info fb_info = {}; - - if (connector->index < sizeof(mirrored) / sizeof(*mirrored)) - mirrored[connector->index] = false; - - fb_info.par = connector->name; - fb_info.var.bits_per_pixel = 32; - fb_info.node = connector->index; - - kernel_register_fb(&fb_info, 0, 0); - } + if (!states[connector->index].fbs) + destroy_fb_and_capture(dev, connector, &states[connector->index]); } drm_connector_list_iter_end(&conn_iter); - for (unsigned i = 0; i < sizeof(mirrored) / sizeof(mirrored[0]); i++) { - if (!mirrored[i]) + for (unsigned i = 0; i < MAX_CONNECTORS; i++) { + if (i == CONNECTOR_ID_MIRROR) + continue; + + if (!states[i].enabled || !states[i].mirrored) continue; mirror_in_use = true; @@ -545,28 +346,128 @@ static void close_unused_captures(struct drm_client_dev * const dev) if (!mirror_in_use) { struct fb_info fb_info = {}; - fb_info.par = "mirror_capture"; fb_info.var.bits_per_pixel = 32; fb_info.node = CONNECTOR_ID_MIRROR; + fb_info.par = "mirror_capture"; kernel_register_fb(&fb_info, 0, 0); } } -static bool reconfigure(struct drm_client_dev * const dev) +static struct drm_display_mode * best_mode(struct genode_mode const * const conf, + struct drm_connector const * const connector, + struct drm_display_mode const * const mirror_mode, + bool * const no_match, + unsigned * const id_mode) { - static struct drm_mode_create_dumb *gem_mirror = NULL; + struct drm_display_mode * mode = NULL; + struct drm_display_mode * mode_match = NULL; + unsigned mode_id = 0; + + /* heuristics to find matching mode */ + list_for_each_entry(mode, &connector->modes, head) { + mode_id ++; + + if (!mode) + continue; + + /* mode larger mirrored_mode will fail */ + if (conf->mirror && !fb_mirror_compatible(mode, mirror_mode)) + continue; + + /* use mode id if configured and matches exactly */ + if (conf->id) { + if (conf->id != mode_id) + continue; + + mode_match = mode; + break; + } + + /* if invalid, mode is configured in second loop below */ + if (conf->width == 0 || conf->height == 0) + break; + + /* no exact match by mode id -> try matching by size */ + if ((mode->hdisplay != conf->width) || (mode->vdisplay != conf->height)) + continue; + + /* take as default any mode with matching resolution */ + if (!mode_match) { + mode_match = mode; + continue; + } + + /* replace matching mode iif hz matches exactly */ + if ((conf->hz != drm_mode_vrefresh(mode_match)) && + (conf->hz == drm_mode_vrefresh(mode))) + mode_match = mode; + } + + mode_id = 0; + + /* second chance loop */ + list_for_each_entry(mode, &connector->modes, head) { + + mode_id ++; + + if (!mode) + continue; + + /* use first mode for non mirrored connector in case of no match */ + if (!mode_match && !conf->mirror) { + + struct drm_display_mode max = { .hdisplay = conf->max_width, + .vdisplay = conf->max_height }; + + if (conf->max_width && conf->max_height) { + if (conf_larger_mode(conf, &max)) + continue; + } + + mode_match = mode; + } + + /* no matching mode ? */ + if (!mode_match) { + + /* mode larger mirrored_mode will fail */ + if (conf->mirror && !fb_mirror_compatible(mode, mirror_mode)) + continue; + + /* use first smaller mode */ + mode_match = mode; + + if (conf->id) + *no_match = true; + } + + if (mode_match != mode) + continue; + + *id_mode = mode_id; + + break; + } + + return mode_match; +} + + +static void reconfigure(struct drm_client_dev * const dev) +{ + static struct drm_mode_create_dumb * gem_mirror = NULL; + static struct drm_mode_fb_cmd2 * mirror_fb_cmd = NULL; + + struct drm_connector_list_iter conn_iter; + struct drm_connector * connector = NULL; struct drm_display_mode mirror_force = {}; struct drm_display_mode mirror_compound = {}; struct drm_display_mode mirror_minimum = {}; struct drm_display_mode mirror_fb = {}; - struct drm_mode_modeinfo user_mode = {}; - struct drm_display_mode * mode = NULL; - struct drm_mode_set * mode_set = NULL; - struct fb_info info = {}; - bool retry = false; + struct { struct fb_info info; unsigned width_mm; @@ -574,25 +475,19 @@ static bool reconfigure(struct drm_client_dev * const dev) bool report; } mirror = { { }, 0, 0, false }; - if (!gem_mirror) { - /* request storage for gem_mirror and mirror_fb_cmd */ - dumb_meta(dev, NULL, &gem_mirror, &mirror_fb_cmd); - } + gem_mirror = &states[CONNECTOR_ID_MIRROR].fb_dumb; + mirror_fb_cmd = &states[CONNECTOR_ID_MIRROR].fb_cmd; if (!dev || !dev->dev || !gem_mirror || !mirror_fb_cmd) - return false; - - mutex_lock(&dev->modeset_mutex); + return; mirror_heuristic(dev->dev, &mirror_force, &mirror_compound, &mirror_minimum); if (!mirror_minimum.hdisplay || !mirror_minimum.vdisplay) { /* no valid modes on any connector on early boot */ - if (!mirror_fb_cmd->fb_id) { - mutex_unlock(&dev->modeset_mutex); - return false; - } + if (!mirror_fb_cmd->fb_id) + return; /* valid connectors but all are disabled by config */ mirror_minimum.hdisplay = mirror_fb_cmd->width; @@ -606,190 +501,116 @@ static bool reconfigure(struct drm_client_dev * const dev) mirror_fb = mirror_minimum; { - int const err = check_resize_fb(dev, - gem_mirror, - mirror_fb_cmd, - mirror_fb.hdisplay, - mirror_fb.vdisplay); + struct state * state_mirror = &states[CONNECTOR_ID_MIRROR]; + bool resized = false; + + int const err = check_resize_fb( dev, + gem_mirror, + mirror_fb_cmd, + &resized, + mirror_fb.hdisplay, + mirror_fb.vdisplay); if (err) { printk("setting up mirrored framebuffer of %ux%u failed - error=%d\n", mirror_fb.hdisplay, mirror_fb.vdisplay, err); - mutex_unlock(&dev->modeset_mutex); - return true; + return; } + + if (verbose) { + printk("mirror: compound %ux%u force=%ux%u fb=%ux%u\n", + mirror_compound.hdisplay, mirror_compound.vdisplay, + mirror_force.hdisplay, mirror_force.vdisplay, + mirror_fb.hdisplay, mirror_fb.vdisplay); + } + + /* if mirrored fb changed, drop reference and get new framebuffer */ + if (resized) { + if (state_mirror->fbs) + drm_framebuffer_put(state_mirror->fbs); + + state_mirror->fbs = drm_framebuffer_lookup(dev->dev, dev->file, + mirror_fb_cmd->fb_id); + } + + mirror.info.var.xres = mirror_fb.hdisplay; + mirror.info.var.yres = mirror_fb.vdisplay; + mirror.info.var.xres_virtual = mirror_force.hdisplay ? : mirror_compound.hdisplay; + mirror.info.var.yres_virtual = mirror_force.vdisplay ? : mirror_compound.vdisplay; + mirror.info.node = CONNECTOR_ID_MIRROR; + mirror.info.par = "mirror_capture"; } /* without fb handle created by check_resize_fb we can't proceed */ if (!mirror_fb_cmd->fb_id) { printk("%s:%u no mirror fb id\n", __func__, __LINE__); - mutex_unlock(&dev->modeset_mutex); - return retry; + return; } - /* prepare fb info for kernel_register_fb() evaluated by Genode side */ - info.var.xres = mirror_fb.hdisplay; - info.var.yres = mirror_fb.vdisplay; - info.var.xres_virtual = mirror_force.hdisplay ? : mirror_compound.hdisplay; - info.var.yres_virtual = mirror_force.vdisplay ? : mirror_compound.vdisplay; + drm_connector_list_iter_begin(dev_client->dev, &conn_iter); + drm_client_for_each_connector_iter(connector, &conn_iter) { - drm_client_for_each_modeset(mode_set, dev) { - struct drm_display_mode * mode_match = NULL; - unsigned mode_id = 0; - struct drm_connector * connector = NULL; - struct genode_mode conf_mode = {}; + struct drm_display_mode * mode = NULL; + unsigned mode_id = 0; + bool no_match = false; + bool same_state = false; + bool resized = false; + int err = -EINVAL; + struct genode_mode conf_mode = {}; + struct fb_info fb_info = {}; + struct state * state = &states[connector->index]; - if (!mode_set->connectors || !*mode_set->connectors) + if (connector->index >= MAX_CONNECTORS) { + printk("connector id too large %s %u\n", + connector->name, connector->index); continue; - - BUG_ON(!mode_set->crtc); - - /* set connector */ - connector = *mode_set->connectors; + } /* read configuration of connector */ lx_emul_i915_connector_config(connector->name, &conf_mode); - /* heuristics to find matching mode */ - list_for_each_entry(mode, &connector->modes, head) { - mode_id ++; - - if (!mode) - continue; - - /* allocated mirrored framebufer smaller than mode can't be used */ - if (conf_mode.mirror && fb_smaller_mode(&info, mode)) - continue; - - /* use mode id if configured and matches exactly */ - if (conf_mode.id) { - if (conf_mode.id != mode_id) - continue; - - mode_match = mode; - - break; - } - - /* if invalid, mode is configured in second loop below */ - if (conf_mode.width == 0 || conf_mode.height == 0) - break; - - /* no exact match by mode id -> try matching by size */ - if ((mode->hdisplay != conf_mode.width) || - (mode->vdisplay != conf_mode.height)) - continue; - - /* take as default any mode with matching resolution */ - if (!mode_match) { - mode_match = mode; - continue; - } - - /* replace matching mode iif hz matches exactly */ - if ((conf_mode.hz != drm_mode_vrefresh(mode_match)) && - (conf_mode.hz == drm_mode_vrefresh(mode))) - mode_match = mode; + /* drop old fb reference, taken again later */ + if (state->fbs) { + drm_framebuffer_put(state->fbs); + state->fbs = NULL; } - /* track whether connector is used mirrored or discrete */ - if (connector->index < sizeof(mirrored) / sizeof(*mirrored)) - mirrored[connector->index] = conf_mode.enabled && conf_mode.mirror; + /* lookup next mode */ + mode = best_mode(&conf_mode, connector, &mirror_fb, &no_match, &mode_id); - /* apply new mode */ - mode_id = 0; - list_for_each_entry(mode, &connector->modes, head) { - struct fb_info fb_info = info; - int err = -1; - bool no_match = false; - struct drm_mode_fb_cmd2 fb_cmd = *mirror_fb_cmd; + /* reduce flickering if in same state */ + same_state = conf_mode.mirror == state->mirrored && + conf_mode.enabled == state->enabled && + mode_id == state->mode_id; - mode_id ++; + /* close capture on change of discrete -> mirror */ + if (!state->mirrored && conf_mode.mirror) + destroy_fb_and_capture(dev, connector, state); - if (!mode) - continue; + state->mirrored = conf_mode.mirror; + state->enabled = conf_mode.enabled; + state->mode_id = mode_id; - /* use first mode for non mirrored connector in case of no match */ - if (!mode_match && !conf_mode.mirror) { + if (!mode) + continue; - struct drm_display_mode max = { .hdisplay = conf_mode.max_width, - .vdisplay = conf_mode.max_height }; + /* prepare fb info for kernel_register_fb() evaluated by Genode side */ + if (conf_mode.mirror) { + if (conf_mode.enabled) + mirror.report = true; + fb_info = mirror.info; + } else { + fb_info.var.xres = mode->hdisplay; + fb_info.var.yres = mode->vdisplay; + fb_info.var.xres_virtual = mode->hdisplay; + fb_info.var.yres_virtual = mode->vdisplay; + fb_info.node = connector->index; + fb_info.par = connector->name; + } - if (conf_mode.max_width && conf_mode.max_height) { - if (conf_larger_mode(&conf_mode, &max)) - continue; - } - - mode_match = mode; - } - - /* no matching mode ? */ - if (!mode_match) { - - /* fb smaller than mode is denied by drm_mode_setcrtc */ - if (conf_mode.enabled && fb_smaller_mode(&fb_info, mode)) - continue; - - /* use first smaller mode */ - mode_match = mode; - - if (conf_mode.enabled && conf_mode.id) - no_match = true; - } - - if (mode_match != mode) - continue; - - /* Genode side prefer to have a name for the connector */ - fb_info.par = connector->name; - - { - struct drm_modeset_acquire_ctx ctx; - struct drm_framebuffer *fb = NULL; - - DRM_MODESET_LOCK_ALL_BEGIN(dev->dev, ctx, - DRM_MODESET_ACQUIRE_INTERRUPTIBLE, - err); - - fb = lookup_framebuffer(mode_set->crtc, &ctx); - - DRM_MODESET_LOCK_ALL_END(dev->dev, ctx, err); - - /* check for mirrored fb or specific one for connector */ - fb_cmd = fb_of_screen(dev, &conf_mode, &fb_info, mirror_fb_cmd, - mode, fb, connector); - } - - /* convert kernel internal mode to user mode expected via ioctl */ - drm_mode_convert_to_umode(&user_mode, mode); - - /* assign fb & connector to crtc with specified mode */ - err = user_attach_fb_to_crtc(dev, connector, mode_set->crtc, - &user_mode, fb_cmd.fb_id, - conf_mode.enabled); - - /* set brightness */ - if (!err && conf_mode.enabled && conf_mode.brightness <= MAX_BRIGHTNESS) { - drm_modeset_lock(&dev->dev->mode_config.connection_mutex, NULL); - set_brightness(conf_mode.enabled ? conf_mode.brightness : 0, - connector); - drm_modeset_unlock(&dev->dev->mode_config.connection_mutex); - } - - if (!retry) - retry = !!err; - - if (!err && conf_mode.enabled && conf_mode.mirror && !mirror.report) { - /* use fb_info of first mirrored screen */ - mirror.report = true; - mirror.width_mm = 0; - mirror.height_mm = 0; - mirror.info = fb_info; - mirror.info.node = CONNECTOR_ID_MIRROR; - } - - /* diagnostics */ + /* diagnostics */ + if (verbose) printk("%10s: %s name='%9s' id=%u%s%s mode=%4ux%4u@%u%s fb=%4ux%4u%s", connector->name ? connector->name : "unnamed", conf_mode.enabled ? " enable" : "disable", @@ -799,69 +620,113 @@ static bool reconfigure(struct drm_client_dev * const dev) mode->hdisplay, mode->vdisplay, drm_mode_vrefresh(mode), drm_mode_vrefresh(mode) < 100 ? " ": "", fb_info.var.xres, fb_info.var.yres, - (err || no_match) ? "" : "\n"); + (no_match) ? "" : "\n"); - if (no_match) - printk(" - no mode match: %ux%u\n", - conf_mode.width, - conf_mode.height); - if (err) - printk(" - failed, error=%d\n", err); + if (verbose && no_match) + printk(" - no mode match: %ux%u\n", + conf_mode.width, + conf_mode.height); - if (!err && !conf_mode.mirror && conf_mode.enabled) { - unsigned width_mm = mode->width_mm ? : connector->display_info.width_mm; - unsigned height_mm = mode->height_mm ? : connector->display_info.height_mm; + if (!conf_mode.enabled) + continue; - int err = user_register_fb(dev, &fb_info, &fb_cmd, width_mm, height_mm); + /* set brightness */ + if (conf_mode.brightness <= MAX_BRIGHTNESS) { + drm_modeset_lock(&dev->dev->mode_config.connection_mutex, NULL); + set_brightness(conf_mode.enabled ? conf_mode.brightness : 0, + connector); + drm_modeset_unlock(&dev->dev->mode_config.connection_mutex); + } - if (err == -ENOSPC) { + if (conf_mode.mirror) { + /* get new fb reference for mirrored fb */ + state->fbs = drm_framebuffer_lookup(dev->dev, dev->file, + mirror_fb_cmd->fb_id); + continue; + } - struct drm_framebuffer *fb = drm_framebuffer_lookup(dev->dev, - dev->file, - fb_cmd.fb_id); - if (fb) - drm_framebuffer_put(fb); + /* discrete case handling */ - destroy_fb_and_capture(dev, connector, fb); + err = check_resize_fb(dev, &state->fb_dumb, &state->fb_cmd, + &resized, mode->hdisplay, mode->vdisplay); + if (err) { + printk("setting up framebuffer of %ux%u failed - error=%d\n", + mode->hdisplay, mode->vdisplay, err); + } + + /* get new fb reference after check_resize_fb */ + state->fbs = drm_framebuffer_lookup(dev->dev, dev->file, + state->fb_cmd.fb_id); + + if (verbose) + printk("%s:%u %s %s %s\n", __func__, __LINE__, connector->name, + same_state ? " same state " : " different state", + resized ? " resized " : "not resized"); + + if (state->fbs && (!same_state || resized)) { + unsigned width_mm = mode->width_mm ? : connector->display_info.width_mm; + unsigned height_mm = mode->height_mm ? : connector->display_info.height_mm; + + int err = user_register_fb(dev, &fb_info, state->fbs, + &state->vma, &state->vma_flags, + width_mm, height_mm); + + if (err == -ENOSPC) { + if (state->fbs) { + drm_framebuffer_put(state->fbs); + state->fbs = NULL; } + destroy_fb_and_capture(dev, connector, state); } - - break; } } - mutex_unlock(&dev->modeset_mutex); + drm_connector_list_iter_end(&conn_iter); if (mirror.report) { - mirror.info.par = "mirror_capture"; - user_register_fb(dev, &mirror.info, mirror_fb_cmd, mirror.width_mm, - mirror.height_mm); + user_register_fb(dev, &mirror.info, + states[CONNECTOR_ID_MIRROR].fbs, + &states[CONNECTOR_ID_MIRROR].vma, + &states[CONNECTOR_ID_MIRROR].vma_flags, + mirror.width_mm, mirror.height_mm); } close_unused_captures(dev); - return retry; + return; } -static int configure_connectors(void * data) +static int do_action_loop(void * data) { - unsigned retry_count = 0; + int status_last_action = !ACTION_FAILED; while (true) { - bool retry = reconfigure(dev_client); - if (retry && retry_count < 3) { - retry_count ++; + int const action = lx_emul_i915_action_to_process(status_last_action); - printk("retry applying configuration in 1s\n"); - msleep(1000); - continue; - } + switch (action) { + case ACTION_DETECT_MODES: + /* probe new modes of connectors and apply very same previous fbs */ + status_last_action = probe_and_apply_fbs(dev_client, true) + ? ACTION_FAILED : !ACTION_FAILED; + break; + case ACTION_CONFIGURE: + /* re-read Genode configuration and resize fbs depending on config */ + reconfigure(dev_client); - retry_count = 0; + /* + * Apply current fbs to connectors. It may fail when + * the reconfigure decision is outdated. By invoking the Linux + * probe code we may "see" already new hardware state. + */ + status_last_action = probe_and_apply_fbs(dev_client, false) + ? ACTION_FAILED : !ACTION_FAILED; - if (lx_emul_i915_config_done_and_block()) + break; + default: lx_emul_task_schedule(true /* block task */); + break; + } } return 0; @@ -891,21 +756,16 @@ static void mark_framebuffer_dirty(struct drm_framebuffer * const fb) } -/* track per connector (16 max) the empty capture attempts before stopping */ -enum { CAPTURE_RATE_MS = 10, ATTEMPTS_BEFORE_STOP = 7 }; -static unsigned unchanged[16] = { }; - - void lx_emul_i915_wakeup(unsigned const connector_id) { - bool const valid_id = connector_id < sizeof(unchanged) / sizeof(*unchanged); + bool const valid_id = connector_id < MAX_CONNECTORS; if (!valid_id) { printk("%s: connector id invalid %d\n", __func__, connector_id); return; } - unchanged[connector_id] = 0; + states[connector_id].unchanged = 0; /* wake potential sleeping update task */ lx_emul_task_unblock(lx_update_task); @@ -915,41 +775,40 @@ void lx_emul_i915_wakeup(unsigned const connector_id) static int update_content(void *) { while (true) { - struct drm_connector_list_iter conn_iter; - struct drm_connector *connector = NULL; - struct drm_device const *dev = dev_client->dev; - bool block_task = true; - bool mirror_run = false; + struct drm_connector_list_iter conn_iter; + struct drm_connector * connector = NULL; + struct drm_device const * dev = dev_client->dev; + bool block_task = true; + bool mirror_run = false; drm_connector_list_iter_begin(dev, &conn_iter); drm_client_for_each_connector_iter(connector, &conn_iter) { - struct drm_modeset_acquire_ctx ctx; - struct drm_framebuffer *fb = NULL; - - int err = -1; bool may_sleep = false; unsigned index = connector->index; if (connector->status != connector_status_connected) continue; - if (connector->index >= sizeof(unchanged) / sizeof(*unchanged)) { + if (connector->index >= MAX_CONNECTORS) { printk("%s: connector id invalid %d\n", __func__, index); index = CONNECTOR_ID_MIRROR; /* should never happen case */ } - if (mirrored[index] && mirror_run) + if (!states[index].enabled) continue; - if (mirrored[index]) { + if (states[index].mirrored) { + if (mirror_run) + continue; + mirror_run = true; index = CONNECTOR_ID_MIRROR; } - unchanged[index] ++; + states[index].unchanged ++; - may_sleep = unchanged[index] >= ATTEMPTS_BEFORE_STOP; + may_sleep = states[index].unchanged >= ATTEMPTS_BEFORE_STOP; if (!lx_emul_i915_blit(index, may_sleep)) { if (!may_sleep) @@ -960,19 +819,10 @@ static int update_content(void *) block_task = false; - unchanged[index] = 0; + states[index].unchanged = 0; - DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, - DRM_MODESET_ACQUIRE_INTERRUPTIBLE, - err); - - if (connector->state && connector->state->crtc) - fb = lookup_framebuffer(connector->state->crtc, &ctx); - - DRM_MODESET_LOCK_ALL_END(dev, ctx, err); - - if (fb) - mark_framebuffer_dirty(fb); + if (states[index].fbs) + mark_framebuffer_dirty(states[index].fbs); } drm_connector_list_iter_end(&conn_iter); @@ -989,7 +839,7 @@ static int update_content(void *) void lx_user_init(void) { - int pid = kernel_thread(configure_connectors, NULL, "lx_user", + int pid = kernel_thread(do_action_loop, NULL, "lx_user", CLONE_FS | CLONE_FILES); int pid2 = kernel_thread(update_content, NULL, "lx_update", CLONE_FS | CLONE_FILES); @@ -999,97 +849,29 @@ void lx_user_init(void) } -static bool mirrored_fb(struct drm_client_dev * client, - struct drm_crtc const * const crtc) -{ - struct drm_modeset_acquire_ctx ctx; - struct drm_framebuffer const * fb = NULL; - struct drm_framebuffer const * fb_mirror = NULL; - int result = -1; - - if (mirror_fb_cmd && mirror_fb_cmd->fb_id) - fb_mirror = drm_framebuffer_lookup(client->dev, client->file, - mirror_fb_cmd->fb_id); - - if (!fb_mirror || !crtc) - return false; - - if (fb_mirror) - drm_framebuffer_put(fb_mirror); - - DRM_MODESET_LOCK_ALL_BEGIN(client->dev, ctx, - DRM_MODESET_ACQUIRE_INTERRUPTIBLE, - result); - - fb = lookup_framebuffer(crtc, &ctx); - - DRM_MODESET_LOCK_ALL_END(client->dev, ctx, result); - - return fb && fb_mirror == fb; -} - - static void _report_connectors(void * genode_data, bool const discrete) { - struct drm_connector_list_iter conn_iter; - struct drm_connector *connector = NULL; - struct drm_display_mode *mode = NULL; - struct drm_mode_set *modeset = NULL; + struct drm_connector_list_iter conn_iter; + struct drm_connector * connector = NULL; - mutex_lock(&dev_client->modeset_mutex); - drm_client_for_each_modeset(modeset, dev_client) { - - struct genode_mode conf_mode = {}; - bool has_modes = false; - - if (!modeset->connectors || !*modeset->connectors) - continue; - - /* set connector */ - connector = *modeset->connectors; - - /* read configuration for connector */ - lx_emul_i915_connector_config(connector->name, &conf_mode); - - if ((discrete && conf_mode.mirror) || (!discrete && !conf_mode.mirror)) - continue; - - list_for_each_entry(mode, &connector->modes, head) { - - if (!mode) - continue; - - has_modes = true; - } - - lx_emul_i915_report_connector(connector, genode_data, - connector->name, - connector->status != connector_status_disconnected, - has_modes, - get_brightness(connector, INVALID_BRIGHTNESS), - connector->display_info.width_mm, - connector->display_info.height_mm); - } - mutex_unlock(&dev_client->modeset_mutex); - - /* report disconnected connectors */ drm_connector_list_iter_begin(dev_client->dev, &conn_iter); drm_client_for_each_connector_iter(connector, &conn_iter) { - /* read configuration for connector */ + bool const valid_fb = connector->index < MAX_CONNECTORS + ? states[connector->index].fbs : false; + struct genode_mode conf_mode = {}; + + /* read configuration for connector */ lx_emul_i915_connector_config(connector->name, &conf_mode); if ((discrete && conf_mode.mirror) || (!discrete && !conf_mode.mirror)) continue; - if (connector->status != connector_status_disconnected) - continue; - lx_emul_i915_report_connector(connector, genode_data, connector->name, connector->status != connector_status_disconnected, - false, /* has modes */ + valid_fb, get_brightness(connector, INVALID_BRIGHTNESS), connector->display_info.width_mm, connector->display_info.height_mm); @@ -1112,15 +894,21 @@ void lx_emul_i915_report_non_discrete(void * genode_data) void lx_emul_i915_iterate_modes(void * lx_data, void * genode_data) { - struct drm_connector *connector = lx_data; - struct drm_display_mode *mode = NULL; - struct drm_display_mode *prev_mode = NULL; - unsigned mode_id = 0; + struct drm_connector * connector = lx_data; + struct drm_display_mode * mode = NULL; + struct drm_display_mode * prev_mode = NULL; + unsigned mode_id = 0; + bool quirk_inuse = false; + struct state * state = &states[connector->index]; + struct genode_mode conf_mode = { }; - /* mark modes as unavailable due to max_resolution enforcement */ - struct genode_mode conf_max_mode = { }; - lx_emul_i915_connector_config("dummy", &conf_max_mode); + if (connector->index >= MAX_CONNECTORS) + return; + lx_emul_i915_connector_config(connector->name, &conf_mode); + + /* no fb and conf_mode.enabled is a temporary inconsistent state */ + quirk_inuse = conf_mode.enabled && !state->fbs; list_for_each_entry(mode, &connector->modes, head) { bool skip = false; @@ -1130,45 +918,57 @@ void lx_emul_i915_iterate_modes(void * lx_data, void * genode_data) if (!mode) continue; - /* skip duplicates - actually not really, some parameters varies ?! */ + /* skip consecutive similar modes */ if (prev_mode) { + static_assert(sizeof(mode->name) == DRM_DISPLAY_MODE_LEN); skip = (mode->hdisplay == prev_mode->hdisplay) && (mode->vdisplay == prev_mode->vdisplay) && (drm_mode_vrefresh(mode) == drm_mode_vrefresh(prev_mode)) && !strncmp(mode->name, prev_mode->name, DRM_DISPLAY_MODE_LEN); } - if (!skip) { - bool const max_mode = conf_max_mode.max_width && - conf_max_mode.max_height; - bool const inuse = connector->state && connector->state->crtc && - connector->state->crtc->state && - drm_mode_equal(&connector->state->crtc->state->mode, mode); - bool const mirror = connector->state && connector->state->crtc && - mirrored_fb(dev_client, connector->state->crtc); + prev_mode = mode; - struct genode_mode conf_mode = { + { + bool const max_mode = conf_mode.max_width && conf_mode.max_height; + + struct genode_mode config_report = { .width = mode->hdisplay, .height = mode->vdisplay, .width_mm = mode->width_mm, .height_mm = mode->height_mm, .preferred = mode->type & (DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DEFAULT), - .inuse = inuse, - .mirror = mirror, + .inuse = !quirk_inuse && state->mode_id == mode_id, + .mirror = state->mirrored, .hz = drm_mode_vrefresh(mode), .id = mode_id, .enabled = !max_mode || - !conf_smaller_max_mode(&conf_max_mode, mode) + !conf_smaller_max_mode(&conf_mode, mode) }; - static_assert(sizeof(conf_mode.name) == DRM_DISPLAY_MODE_LEN); - memcpy(conf_mode.name, mode->name, sizeof(conf_mode.name)); + /* + * Report first usable mode as used mode in the quirk state to + * avoid sending a mode list with no used mode at all, which + * external configuration components may trigger to disable the + * connector. + */ + if (quirk_inuse && config_report.enabled) { + config_report.inuse = true; + quirk_inuse = false; + } - lx_emul_i915_report_modes(genode_data, &conf_mode); + /* skip similar mode and if it is not the used one */ + if (skip && !config_report.inuse) + continue; + + { + static_assert(sizeof(config_report.name) == DRM_DISPLAY_MODE_LEN); + memcpy(config_report.name, mode->name, sizeof(config_report.name)); + } + + lx_emul_i915_report_modes(genode_data, &config_report); } - - prev_mode = mode; } } @@ -1185,15 +985,20 @@ void i915_switcheroo_unregister(struct drm_i915_private *i915) } -static int fb_client_hotplug(struct drm_client_dev *client) +static int fb_client_hotplug(struct drm_client_dev *) { - struct drm_mode_set *modeset = NULL; - struct drm_framebuffer *fb_mirror = NULL; - int result = -EINVAL; + /* notify Genode side */ + lx_emul_i915_hotplug_connector(); - if (mirror_fb_cmd && mirror_fb_cmd->fb_id) - fb_mirror = drm_framebuffer_lookup(client->dev, client->file, - mirror_fb_cmd->fb_id); + return 0; +} + + +static int probe_and_apply_fbs(struct drm_client_dev *client, bool const detect) +{ + struct drm_modeset_acquire_ctx ctx; + struct drm_mode_set *modeset = NULL; + int result = -EINVAL; /* * Triggers set up of display pipelines for connectors and @@ -1203,113 +1008,100 @@ static int fb_client_hotplug(struct drm_client_dev *client) 0 /* auto height */); if (result) { printk("%s: error on modeset probe %d\n", __func__, result); - return 0; + return result; } + /* (re-)assign framebuffers to enabled connectors */ + DRM_MODESET_LOCK_ALL_BEGIN(client->dev, ctx, + DRM_MODESET_ACQUIRE_INTERRUPTIBLE, + result); + /* * (Re-)assign framebuffers to modeset (lost due to modeset_probe) * and commit the change. */ - { - struct drm_framebuffer * free_fbs[MAX_FBS] = { }; - struct drm_modeset_acquire_ctx ctx; + mutex_lock(&client->modeset_mutex); + drm_client_for_each_modeset(modeset, client) { + struct drm_connector * connector = NULL; - unsigned fb_count = 0; + if (!modeset) + continue; - DRM_MODESET_LOCK_ALL_BEGIN(client->dev, ctx, - DRM_MODESET_ACQUIRE_INTERRUPTIBLE, - result); + if (!modeset->num_connectors || !modeset->connectors || !*modeset->connectors) + continue; - mutex_lock(&client->modeset_mutex); - drm_client_for_each_modeset(modeset, client) { - struct drm_connector *connector = NULL; - struct drm_framebuffer *fb = NULL; + /* set connector */ + connector = *modeset->connectors; - if (!modeset) - continue; + if (verbose) + printk("%s:%u %s fb=%px i=%u fbs[i]=%px %s\n", + __func__, __LINE__, + connector->name, modeset->fb, + connector->index, + connector->index < MAX_CONNECTORS ? + states[connector->index].fbs : NULL, + detect ? " - detect run" : " - configure run"); - if (modeset->crtc) - fb = lookup_framebuffer(modeset->crtc, &ctx); + modeset->fb = connector->index < MAX_CONNECTORS + ? states[connector->index].fbs + : NULL; - if (!modeset->num_connectors || !modeset->connectors || !*modeset->connectors) { - - struct drm_mode_fb_cmd2 *fb_cmd = NULL; - struct drm_mode_create_dumb *fb_dumb = NULL; - - if (!fb || fb == fb_mirror) - continue; - - if (!dumb_meta(client, fb, &fb_dumb, &fb_cmd) || !fb_dumb || !fb_cmd) - continue; - - if (fb_count >= MAX_FBS) { - printk("leaking framebuffer memory\n"); - continue; - } - - free_fbs[fb_count++] = fb; - - continue; + if (!modeset->fb) { + /* + * If no fb is available for the (new) connector, we have to + * explicitly revert structures prepared by + * drm_client_modeset_probe so that drm_client_modeset_commit + * will accept the modeset. + */ + for (unsigned i = 0; i < modeset->num_connectors; i++) { + drm_connector_put(modeset->connectors[i]); + modeset->connectors[i] = NULL; } - /* set connector */ - connector = *modeset->connectors; + modeset->num_connectors = 0; - modeset->fb = fb ? fb : fb_mirror; + if (modeset->mode) { + kfree(modeset->mode); + modeset->mode = NULL; + } + } else { + struct drm_display_mode * mode = NULL; + unsigned mode_id = 0; - /* try to avoid -ENOSPC by using next smaller resolution */ - if (fb_mirror && !fb && - (modeset->mode->hdisplay > fb_mirror->width || - modeset->mode->vdisplay > fb_mirror->height)) - { - struct drm_display_mode * mode = NULL; - list_for_each_entry(mode, &connector->modes, head) { + /* check and select right mode in modeset as configured by state[] */ + list_for_each_entry(mode, &connector->modes, head) { + mode_id ++; - if (mode->hdisplay > fb_mirror->width || - mode->vdisplay > fb_mirror->height) - continue; + if (!mode) + continue; - kfree(modeset->mode); - modeset->mode = drm_mode_duplicate(client->dev, mode); + if (states[connector->index].mode_id != mode_id) + continue; + if (drm_mode_equal(mode, modeset->mode)) break; - } + + if (modeset->mode) + kfree(modeset->mode); + + modeset->mode = drm_mode_duplicate(client->dev, mode); + + break; } } - mutex_unlock(&client->modeset_mutex); - DRM_MODESET_LOCK_ALL_END(client->dev, ctx, result); - - for (unsigned i = 0; i < fb_count; i++) { - struct drm_mode_fb_cmd2 *fb_cmd = NULL; - struct drm_mode_create_dumb *fb_dumb = NULL; - - if (!free_fbs[i]) - continue; - - if (!dumb_meta(client, free_fbs[i], &fb_dumb, &fb_cmd) || !fb_dumb || !fb_cmd) - continue; - - destroy_fb(client, fb_dumb, fb_cmd); - - free_fbs[i] = NULL; - } - - /* triggers disablement of encoders attached to disconnected ports */ - result = drm_client_modeset_commit(client); - - if (result) { - printk("%s: error on modeset commit %d%s\n", __func__, result, - (result == -ENOSPC) ? " - ENOSPC" : " - unknown error"); - } } + mutex_unlock(&client->modeset_mutex); + DRM_MODESET_LOCK_ALL_END(client->dev, ctx, result); - /* notify Genode side */ - lx_emul_i915_hotplug_connector(); + /* triggers also disablement of encoders attached to disconnected ports */ + result = drm_client_modeset_commit(client); - if (fb_mirror) - drm_framebuffer_put(fb_mirror); + if (result) { + printk("%s: error on modeset commit %d%s\n", __func__, result, + (result == -ENOSPC) ? " - ENOSPC" : " - unknown error"); + } - return 0; + return result; } @@ -1357,67 +1149,31 @@ static int register_drm_client(struct drm_device * const dev) } -int user_attach_fb_to_crtc(struct drm_client_dev * const dev, - struct drm_connector const * const connector, - struct drm_crtc const * const crtc, - struct drm_mode_modeinfo const * const mode, - unsigned const fb_id, - bool const enable) -{ - int result = -EINVAL; - uint32_t connectors [1] = { connector->base.id }; - struct drm_mode_crtc crtc_req = { - .set_connectors_ptr = (uintptr_t)(&connectors), - .count_connectors = enable ? 1 : 0, - .crtc_id = crtc->base.id, - .fb_id = fb_id, - .x = 0, - .y = 0, /* position on the framebuffer */ - .gamma_size = 0, - .mode_valid = enable, - .mode = *mode, - }; - - result = drm_mode_setcrtc(dev->dev, &crtc_req, dev->file); - if (result) - drm_err(dev->dev, "%s: failed to set crtc %d\n", __func__, result); - - return result; -} - - -static int user_register_fb(struct drm_client_dev const * const dev, - struct fb_info * const info, - struct drm_mode_fb_cmd2 const * const dumb_fb, - unsigned const width_mm, - unsigned const height_mm) +static int user_register_fb(struct drm_client_dev const * const dev, + struct fb_info * const info, + struct drm_framebuffer * const fb, + struct i915_vma ** const vma, + unsigned long * const vma_flags, + unsigned const width_mm, + unsigned const height_mm) { intel_wakeref_t wakeref; int result = -EINVAL; struct i915_gtt_view const view = { .type = I915_GTT_VIEW_NORMAL }; void __iomem *vaddr = NULL; - struct gem_dumb *gem_dumb = NULL; struct drm_i915_private *dev_priv = to_i915(dev->dev); - struct drm_framebuffer *fb = drm_framebuffer_lookup(dev->dev, - dev->file, - dumb_fb->fb_id); - if (!info || !fb) { + if (!info || !fb || !dev_priv || !vma || !vma_flags) { printk("%s:%u error setting up info and fb\n", __func__, __LINE__); return -ENODEV; } - if (!dumb_gem(dev, fb, &gem_dumb) || !gem_dumb) { - printk("%s:%u error looking up fb and vma\n", __func__, __LINE__); - return -ENODEV; - } + if (*vma) { + intel_unpin_fb_vma(*vma, *vma_flags); - if (gem_dumb->vma) { - intel_unpin_fb_vma(gem_dumb->vma, gem_dumb->flags); - - gem_dumb->vma = NULL; - gem_dumb->flags = 0; + *vma = NULL; + *vma_flags = 0; } wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm); @@ -1426,49 +1182,54 @@ static int user_register_fb(struct drm_client_dev const * const dev, * This also validates that any existing fb inherited from the * BIOS is suitable for own access. */ - gem_dumb->vma = intel_pin_and_fence_fb_obj(fb, false /* phys_cursor */, - &view, false /* use fences */, - &gem_dumb->flags); + *vma = intel_pin_and_fence_fb_obj( fb, false /* phys_cursor */, + &view, false /* use fences */, + vma_flags); - if (IS_ERR(gem_dumb->vma)) { + if (IS_ERR(*vma)) { intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); - result = PTR_ERR(gem_dumb->vma); + result = PTR_ERR(*vma); printk("%s:%u error setting vma %d\n", __func__, __LINE__, result); - gem_dumb->vma = NULL; + *vma = NULL; + *vma_flags = 0; + return result; } - if (!i915_vma_is_map_and_fenceable(gem_dumb->vma)) { + if (!i915_vma_is_map_and_fenceable(*vma)) { printk("%s: framebuffer not mappable in aperture -> destroying framebuffer\n", (info && info->par) ? (char *)info->par : "unknown"); - intel_unpin_fb_vma(gem_dumb->vma, gem_dumb->flags); + intel_unpin_fb_vma(*vma, *vma_flags); - gem_dumb->vma = NULL; - gem_dumb->flags = 0; + *vma = NULL; + *vma_flags = 0; return -ENOSPC; } - vaddr = i915_vma_pin_iomap(gem_dumb->vma); + vaddr = i915_vma_pin_iomap(*vma); + if (IS_ERR(vaddr)) { intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref); result = PTR_ERR(vaddr); printk("%s:%u error pin iomap %d\n", __func__, __LINE__, result); - intel_unpin_fb_vma(gem_dumb->vma, gem_dumb->flags); - gem_dumb->vma = NULL; + intel_unpin_fb_vma(*vma, *vma_flags); + + *vma = NULL; + *vma_flags = 0; return result; } /* fill framebuffer info for kernel_register_fb */ info->screen_base = vaddr; - info->screen_size = gem_dumb->vma->size; + info->screen_size = (*vma)->size; info->fix.line_length = fb->pitches[0]; info->var.bits_per_pixel = drm_format_info_bpp(fb->format, 0); @@ -1476,9 +1237,6 @@ static int user_register_fb(struct drm_client_dev const * const dev, kernel_register_fb(info, width_mm, height_mm); - if (fb) - drm_framebuffer_put(fb); - return 0; } @@ -1486,20 +1244,25 @@ static int user_register_fb(struct drm_client_dev const * const dev, static int check_resize_fb(struct drm_client_dev * const dev, struct drm_mode_create_dumb * const gem_dumb, struct drm_mode_fb_cmd2 * const dumb_fb, + bool * const resized, unsigned const width, unsigned const height) { int result = -EINVAL; /* paranoia */ - if (!dev || !dev->dev || !dev->file || !gem_dumb || !dumb_fb) + if (!dev || !dev->dev || !dev->file || !gem_dumb || !dumb_fb || !resized) return -ENODEV; + *resized = false; + /* if requested size is smaller, free up current dumb buffer */ if (gem_dumb->width && gem_dumb->height && (gem_dumb->width < width || gem_dumb->height < height)) { destroy_fb(dev, gem_dumb, dumb_fb); + + *resized = true; } /* allocate dumb framebuffer, on success a GEM object handle is returned */ @@ -1517,6 +1280,8 @@ static int check_resize_fb(struct drm_client_dev * const dev, memset(gem_dumb, 0, sizeof(*gem_dumb)); return -ENODEV; } + + *resized = true; } /* bind framebuffer(GEM object) to drm client */ @@ -1539,6 +1304,8 @@ static int check_resize_fb(struct drm_client_dev * const dev, memset(dumb_fb, 0, sizeof(*dumb_fb)); return -ENODEV; } + + *resized = true; } return 0; diff --git a/repos/pc/src/driver/framebuffer/intel/pc/main.cc b/repos/pc/src/driver/framebuffer/intel/pc/main.cc index 61461e96ff..f017107475 100644 --- a/repos/pc/src/driver/framebuffer/intel/pc/main.cc +++ b/repos/pc/src/driver/framebuffer/intel/pc/main.cc @@ -49,6 +49,8 @@ struct Framebuffer::Driver Attached_rom_system system { }; Expanding_reporter reporter { env, "connectors", "connectors" }; + Signal_handler process_handler { env.ep(), *this, + &Driver::process_action }; Signal_handler config_handler { env.ep(), *this, &Driver::config_update }; Signal_handler scheduler_handler { env.ep(), *this, @@ -56,14 +58,87 @@ struct Framebuffer::Driver Signal_handler system_handler { env.ep(), *this, &Driver::system_update }; - bool update_in_progress { false }; - bool new_config_rom { false }; bool disable_all { false }; - bool disable_report_once { false }; bool merge_label_changed { false }; + bool verbose { false }; Capture::Connection::Label merge_label { "mirror" }; + char const * action_name(enum Action const action) + { + switch (action) { + case ACTION_IDLE : return "IDLE"; + case ACTION_DETECT_MODES : return "DETECT_MODES"; + case ACTION_CONFIGURE : return "CONFIGURE"; + case ACTION_REPORT : return "REPORT"; + case ACTION_NEW_CONFIG : return "NEW_CONFIG"; + case ACTION_READ_CONFIG : return "READ_CONFIG"; + case ACTION_HOTPLUG : return "HOTPLUG"; + case ACTION_EXIT : return "EXIT"; + case ACTION_FAILED : return "FAILED"; + } + return "UNKNOWN"; + } + + enum Action active { }; + enum Action pending[31] { }; + + void add_action(enum Action const add, bool may_squash = false) + { + Action * prev { }; + + for (auto &entry : pending) { + if (entry != ACTION_IDLE) { + prev = &entry; + continue; + } + + /* skip in case the last entry contains the very same to be added */ + if (may_squash && prev && add == *prev) { + if (verbose) + error("action already queued - '", action_name(add), "'"); + return; + } + + entry = add; + + if (verbose) + error("action added to queue - '", action_name(add), "'"); + + return; + } + + error("action ", action_name(add), " NOT QUEUED - trouble ahead"); + } + + auto next_action() + { + Action next { ACTION_IDLE }; + Action * prev { }; + + for (auto &entry : pending) { + if (next == ACTION_IDLE) + next = entry; + + if (prev) + *prev = entry; + + prev = &entry; + } + + if (prev) + *prev = ACTION_IDLE; + + if (verbose) + error("action now executing - '", action_name(next), "'"); + + active = next; + + return active; + } + + bool action_in_execution() const { return active != ACTION_IDLE; } + struct Connector { using Space = Id_space; using Id = Space::Id; @@ -116,7 +191,7 @@ struct Framebuffer::Driver if (!dirty && may_stop) connector.capture->capture_stopped(); - }, [&](){ /* unknown connector id */ }); + }, [&] () { /* unknown connector id -> no dirty content */ }); return dirty; } @@ -143,21 +218,26 @@ struct Framebuffer::Driver conn.size_phys = size_phys; conn.size_mm = mm; - if (conn.size.valid()) { - Capture::Connection::Screen::Attr attr = { .px = conn.size, .mm = conn.size_mm }; - conn.capture.construct(env, label); - conn.screen .construct(*conn.capture, env.rm(), attr); + conn.screen .destruct(); + conn.capture.destruct(); - conn.capture->wakeup_sigh(conn.capture_wakeup); - } else { - conn.screen .destruct(); - conn.capture.destruct(); - } + if (!conn.size.valid()) + return same; + + Capture::Connection::Screen::Attr attr = { .px = conn.size, + .mm = conn.size_mm }; + + conn.capture.construct(env, label); + conn.screen .construct(*conn.capture, env.rm(), attr); + + conn.capture->wakeup_sigh(conn.capture_wakeup); return same; } + void process_action(); void config_update(); + void config_read(); void system_update(); void generate_report(); void lookup_config(char const *, struct genode_mode &mode); @@ -193,6 +273,8 @@ struct Framebuffer::Driver }); config.sigh(config_handler); + + config_read(); } void start() @@ -272,18 +354,43 @@ struct Framebuffer::Driver enum { MAX_BRIGHTNESS = 100u }; +void Framebuffer::Driver::process_action() +{ + if (action_in_execution()) + return; + + if (!lx_user_task) { + error("no lx user task"); + return; + } + + lx_emul_task_unblock(lx_user_task); + Lx_kit::env().scheduler.execute(); +} + + void Framebuffer::Driver::config_update() +{ + add_action(Action::ACTION_NEW_CONFIG, true); + + if (action_in_execution()) + return; + + Genode::Signal_transmitter(process_handler).submit(); +} + + +void Framebuffer::Driver::config_read() { config.update(); - if (!config.valid() || !lx_user_task) + if (!config.valid()) return; config.xml().with_optional_sub_node("merge", [&](auto const &node) { auto const merge_label_before = merge_label; - if (node.has_attribute("name")) - merge_label = node.attribute_value("name", String<160>(merge_label)); + merge_label = node.attribute_value("name", String<160>("mirror")); merge_label_changed = merge_label_before != merge_label; }); @@ -293,14 +400,6 @@ void Framebuffer::Driver::config_update() system->sigh(system_handler); } else system.destruct(); - - if (update_in_progress) - new_config_rom = true; - else - update_in_progress = true; - - lx_emul_task_unblock(lx_user_task); - Lx_kit::env().scheduler.execute(); } @@ -329,12 +428,8 @@ static Framebuffer::Driver & driver(Genode::Env & env) void Framebuffer::Driver::generate_report() { - if (!config.valid()) - return; - - if (apply_config_on_hotplug() && !disable_report_once) { - disable_report_once = true; - Genode::Signal_transmitter(config_handler).submit(); + if (!config.valid()) { + error("no valid config - report is dropped"); return; } @@ -366,8 +461,6 @@ void Framebuffer::Driver::generate_report() }); }); }); - - disable_report_once = false; } @@ -508,12 +601,15 @@ void lx_emul_i915_framebuffer_ready(unsigned const connector_id, } if (conn.size.valid()) { - log(space, label, ": capture ", xres, "x", yres, " with " - " framebuffer ", phys_width, "x", phys_height); + if (drv.verbose) + log(space, label, ": capture ", xres, "x", yres, " with " + " framebuffer ", phys_width, "x", phys_height); lx_emul_i915_wakeup(unsigned(id.value)); } else - log(space, label, ": capture closed "); + if (drv.verbose) + log(space, label, ": capture closed ", + merge ? "(was mirror capture)" : ""); }, [](){ /* unknown id */ }); } @@ -521,14 +617,70 @@ void lx_emul_i915_framebuffer_ready(unsigned const connector_id, void lx_emul_i915_hotplug_connector() { - Genode::Env &env = Lx_kit::env().env; - driver(env).generate_report(); + auto & drv = driver(Lx_kit::env().env); + + drv.add_action(Action::ACTION_HOTPLUG, true); + + Genode::Signal_transmitter(drv.process_handler).submit(); +} + + +int lx_emul_i915_action_to_process(int const action_failed) +{ + auto & env = Lx_kit::env().env; + + while (true) { + + auto const action = driver(env).next_action(); + + switch (action) { + case Action::ACTION_HOTPLUG: + if (driver(env).apply_config_on_hotplug()) { + driver(env).add_action(Action::ACTION_DETECT_MODES); + driver(env).add_action(Action::ACTION_CONFIGURE); + driver(env).add_action(Action::ACTION_REPORT); + } else { + driver(env).add_action(Action::ACTION_DETECT_MODES); + driver(env).add_action(Action::ACTION_REPORT); + } + break; + case Action::ACTION_NEW_CONFIG: + driver(env).add_action(Action::ACTION_READ_CONFIG); + driver(env).add_action(Action::ACTION_CONFIGURE); + driver(env).add_action(Action::ACTION_REPORT); + if (driver(env).disable_all) + driver(env).add_action(Action::ACTION_EXIT); + + break; + case Action::ACTION_READ_CONFIG: + driver(env).config_read(); + break; + case Action::ACTION_REPORT: + if (action_failed) { + if (driver(env).verbose) + Genode::warning("previous action failed"); + + /* retry */ + driver(env).add_action(Action::ACTION_HOTPLUG, true); + } else + driver(env).generate_report(); + break; + case Action::ACTION_EXIT: + /* good bye world */ + driver(env).disable_all = false; + Lx_kit::env().env.parent().exit(0); + break; + default: + /* other actions are handled by Linux code */ + return action; + } + } } void lx_emul_i915_report_connector(void * lx_data, void * genode_xml, char const *name, char const connected, - char const modes_available, + char const /* fb_available */, unsigned brightness, unsigned width_mm, unsigned height_mm) { @@ -536,7 +688,7 @@ void lx_emul_i915_report_connector(void * lx_data, void * genode_xml, xml.node("connector", [&] () { - xml.attribute("connected", connected && modes_available); + xml.attribute("connected", !!connected); xml.attribute("name", name); if (width_mm) xml.attribute("width_mm" , width_mm); @@ -600,28 +752,6 @@ void lx_emul_i915_connector_config(char * name, struct genode_mode * mode) } -int lx_emul_i915_config_done_and_block(void) -{ - auto &state = driver(Lx_kit::env().env); - - bool const new_config = state.new_config_rom; - - state.update_in_progress = false; - state.new_config_rom = false; - - if (state.disable_all) { - state.disable_all = false; - Lx_kit::env().env.parent().exit(0); - } - - if (!new_config) - driver(Lx_kit::env().env).generate_report(); - - /* true if linux task should block, otherwise continue due to new config */ - return !new_config; -} - - void Component::construct(Genode::Env &env) { driver(env).start(); From 96d9f5d317c25ead15dd9ec509758e3d277fd362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 1 Nov 2024 17:08:24 +0100 Subject: [PATCH 58/69] usb: consider alternate setting in endpoint select When constructing an Usb::Interface and implicitly corresponding Usb::Endpoint instances only select endpoints relevant for the given alternate setting. The libusb has to be changed to delegate the correct alternate setting to the constructor too. Fix genodelabs/genode#5394 --- repos/libports/src/lib/libusb/genode_usb_raw.cc | 17 ++++++++++++++--- repos/os/include/usb_session/device.h | 2 ++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/repos/libports/src/lib/libusb/genode_usb_raw.cc b/repos/libports/src/lib/libusb/genode_usb_raw.cc index 57845480dd..42672b7621 100644 --- a/repos/libports/src/lib/libusb/genode_usb_raw.cc +++ b/repos/libports/src/lib/libusb/genode_usb_raw.cc @@ -58,7 +58,7 @@ struct Usb_device Usb_device &_device; - Interface(Usb_device &device, uint8_t idx); + Interface(Usb_device &device, uint8_t idx, uint8_t alt = 0); void handle_events(); }; @@ -108,9 +108,10 @@ struct Usb_device }; -Usb_device::Interface::Interface(Usb_device &device, uint8_t idx) +Usb_device::Interface::Interface(Usb_device &device, uint8_t idx, uint8_t alt) : - Usb::Interface(device._device, Usb::Interface::Index{idx, 0}, (1UL << 20)), + Usb::Interface(device._device, Usb::Interface::Index{idx, alt}, + (1UL << 20)), Registry::Element(device._interfaces, *this), _device(device) { @@ -461,11 +462,21 @@ static int genode_set_interface_altsetting(struct libusb_device_handle* dev_hand altsetting < 0 || altsetting > 0xff) return LIBUSB_ERROR_INVALID_PARAM; + /* remove already claimed interface with old setting */ + device()._interfaces.for_each([&] (Usb_device::Interface &iface) { + if (iface.index().number == interface_number) + destroy(device()._alloc, &iface); }); + Usb_device::Urb urb(nullptr, 0, device()._device, P::Request::SET_INTERFACE, Rt::value(P::Recipient::IFACE, P::Type::STANDARD, P::Direction::OUT), (uint8_t)altsetting, (uint8_t)interface_number, 0); device()._wait_for_urb(urb); + + /* claim interface */ + new (device()._alloc) + Usb_device::Interface(device(), (uint8_t) interface_number, + (uint8_t) altsetting); return LIBUSB_SUCCESS; } diff --git a/repos/os/include/usb_session/device.h b/repos/os/include/usb_session/device.h index 412bfcf149..765d819425 100644 --- a/repos/os/include/usb_session/device.h +++ b/repos/os/include/usb_session/device.h @@ -671,6 +671,8 @@ inline Usb::Interface::Interface(Device &device, Index idx, size_t buffer_size) device._for_each_iface([&] (Xml_node node) { if (node.attribute_value("number", INVALID) != idx.number) return; + if (node.attribute_value("alt_setting", INVALID) != idx.alt_setting) + return; node.for_each_sub_node("endpoint", [&] (Xml_node node) { Endpoint ep { node.attribute_value("address", 0), node.attribute_value("attributes", 0) }; From 010847b69ce62295e447d3c24c83f71942ae8c38 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 3 Dec 2024 12:48:47 +0100 Subject: [PATCH 59/69] decorator: fix sync-handling corner case This patch fixes the corner case where a call of 'trigger_gui_sync' unexpectedly did not result in the execution of '_handle_gui_sync'. When sporadically called (w/o having installed a period sync handler) in a time window shortly after a previous '_handle_gui_sync' that just switched back to sporadic mode, the situation was considered as !idle. So the 'local_submit' was skipped. The patch fixes the issue by always issuing a 'local_submit' except when operating in period mode. The '_gui_sync_enabled' state is now driven only by '_handle_gui_sync' to make the intent more clear. Fixes #5396 --- repos/gems/src/app/decorator/main.cc | 22 +++++++++++---------- repos/gems/src/app/themed_decorator/main.cc | 22 +++++++++++---------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/repos/gems/src/app/decorator/main.cc b/repos/gems/src/app/decorator/main.cc index 0013a91c66..7ec8beca58 100644 --- a/repos/gems/src/app/decorator/main.cc +++ b/repos/gems/src/app/decorator/main.cc @@ -166,12 +166,7 @@ struct Decorator::Main : Window_factory_base Ticks const now = _now(); bool const idle = now.cs - _previous_sync.cs > 3; - if (!_gui_sync_enabled) { - _gui.framebuffer.sync_sigh(_gui_sync_handler); - _gui_sync_enabled = true; - } - - if (idle) { + if (!_gui_sync_enabled || idle) { _previous_sync = now; _gui_sync_handler.local_submit(); } @@ -358,11 +353,18 @@ void Decorator::Main::_handle_gui_sync() } /* - * Disable sync handling when becoming idle + * Enable/disable periodic sync depending on animation state */ - if (!_animator.active()) { - _gui.framebuffer.sync_sigh(Signal_context_capability()); - _gui_sync_enabled = false; + if (_gui_sync_enabled) { + if (!_animator.active()) { + _gui.framebuffer.sync_sigh(Signal_context_capability()); + _gui_sync_enabled = false; + } + } else { + if (_animator.active()) { + _gui.framebuffer.sync_sigh(_gui_sync_handler); + _gui_sync_enabled = true; + } } _previous_sync = now; diff --git a/repos/gems/src/app/themed_decorator/main.cc b/repos/gems/src/app/themed_decorator/main.cc index 5bcbe84687..edf44d3bca 100644 --- a/repos/gems/src/app/themed_decorator/main.cc +++ b/repos/gems/src/app/themed_decorator/main.cc @@ -107,12 +107,7 @@ struct Decorator::Main : Window_factory_base Ticks const now = _now(); bool const idle = now.cs - _previous_sync.cs > 3; - if (!_gui_sync_enabled) { - _gui.framebuffer.sync_sigh(_gui_sync_handler); - _gui_sync_enabled = true; - } - - if (idle) { + if (!_gui_sync_enabled || idle) { _previous_sync = now; _gui_sync_handler.local_submit(); } @@ -308,11 +303,18 @@ void Decorator::Main::_handle_gui_sync() } /* - * Disable sync handling when becoming idle + * Enable/disable periodic sync depending on animation state */ - if (!_animator.active()) { - _gui.framebuffer.sync_sigh(Signal_context_capability()); - _gui_sync_enabled = false; + if (_gui_sync_enabled) { + if (!_animator.active()) { + _gui.framebuffer.sync_sigh(Signal_context_capability()); + _gui_sync_enabled = false; + } + } else { + if (_animator.active()) { + _gui.framebuffer.sync_sigh(_gui_sync_handler); + _gui_sync_enabled = true; + } } _previous_sync = now; From 1d73cf20031765d263b03873c7ad781e140c7db1 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Tue, 3 Dec 2024 14:45:50 +0100 Subject: [PATCH 60/69] Prevent false warnings in memcpy (GCC 12) GCC 12 tree-loop-distribute-patterns generates false warnings of -Warray-bounds, -Wstringop-overflow, or -Wstringop-overread in memcpy() and memcpy_cpu() in static/inline cases for code that obviously prevents its execution by invariant checking. On -O3, even more warnings are produced. --- repos/base/include/cpu/string.h | 3 +++ repos/base/include/util/string.h | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/repos/base/include/cpu/string.h b/repos/base/include/cpu/string.h index 898b0a9b57..ea6b100227 100644 --- a/repos/base/include/cpu/string.h +++ b/repos/base/include/cpu/string.h @@ -25,7 +25,10 @@ namespace Genode { * \param size number of bytes to copy * * \return number of bytes not copied + * + * The compiler attribute prevents array-bounds warnings with gcc 12.3. */ + __attribute((optimize("no-tree-loop-distribute-patterns"))) inline size_t memcpy_cpu(void * dst, const void * src, size_t size) { using word_t = unsigned long; diff --git a/repos/base/include/util/string.h b/repos/base/include/util/string.h index af2a438d2b..8022266322 100644 --- a/repos/base/include/util/string.h +++ b/repos/base/include/util/string.h @@ -130,7 +130,7 @@ namespace Genode { /** * Return length of null-terminated string in bytes */ - __attribute((optimize("no-tree-loop-distribute-patterns"))) + __attribute((optimize("no-tree-loop-distribute-patterns"))) inline size_t strlen(const char *s) { size_t res = 0; @@ -190,6 +190,9 @@ namespace Genode { */ inline void *memcpy(void *dst, const void *src, size_t size) { + if (!size) + return dst; + char *d = (char *)dst, *s = (char *)src; size_t i; @@ -281,7 +284,7 @@ namespace Genode { * generation of a 'memset()' call in the 'while' loop * with gcc 10. */ - __attribute((optimize("no-tree-loop-distribute-patterns"))) + __attribute((optimize("no-tree-loop-distribute-patterns"))) inline void *memset(void *dst, uint8_t i, size_t size) { using word_t = unsigned long; From 3067a2c51d0ba58cd9ca4bd8b28586528d650f02 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 3 Dec 2024 15:18:02 +0100 Subject: [PATCH 61/69] nitpicker: prevent the pointer from going nowhere The 'size_changed' handling remained without effect when the (last) display re-appears (e.g., back from screen blank) because 'Capture_root::bounding_box()' delivered the '_fallback_bounding_box' in the intermediate phase where no display was present. Unfortunately, 'Capture_root::visible()' failed to apply the same logic. This patch makes 'visible()' consistent with 'bounding_box()'. It has the welcome effect that nitpicker remembers the pointer position during the dark phase. Fixes #5397 --- repos/os/src/server/nitpicker/main.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/repos/os/src/server/nitpicker/main.cc b/repos/os/src/server/nitpicker/main.cc index 12e862158d..2772de0dc6 100644 --- a/repos/os/src/server/nitpicker/main.cc +++ b/repos/os/src/server/nitpicker/main.cc @@ -319,7 +319,10 @@ class Nitpicker::Capture_root : public Root_component [&] (Point const p) { _sessions.for_each([&] (Capture_session const &session) { if (!result && session.bounding_box().contains(p)) - result = true; }); }, + result = true; }); + if (!result) + result = _fallback_bounding_box.contains(p); + }, [&] (Nowhere) { }); return result; } From 5665e8059a9518105c0c84c4bb5e1f20351a0c69 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Wed, 4 Dec 2024 08:39:58 +0100 Subject: [PATCH 62/69] Optional session label in audio_in/out connection --- repos/os/include/audio_in_session/connection.h | 7 +++++-- repos/os/include/audio_out_session/connection.h | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/repos/os/include/audio_in_session/connection.h b/repos/os/include/audio_in_session/connection.h index 4893c80d05..fd0dd4ca62 100644 --- a/repos/os/include/audio_in_session/connection.h +++ b/repos/os/include/audio_in_session/connection.h @@ -26,13 +26,16 @@ struct Audio_in::Connection : Genode::Connection, Audio_in::Session_cli /** * Constructor * + * \param channel channel identifier (e.g., "left") + * \param label optional session label * \param progress_signal install progress signal, the client may then * call 'wait_for_progress', which is sent when the * server processed one or more packets */ - Connection(Genode::Env &env, char const *channel, bool progress_signal = false) + Connection(Genode::Env &env, char const *channel, + Label const &label = Label(), bool progress_signal = false) : - Genode::Connection(env, Label(), + Genode::Connection(env, label, Ram_quota { 10*1024 + sizeof(Stream) }, Args("channel=\"", channel, "\"")), Session_client(env.rm(), cap(), progress_signal) diff --git a/repos/os/include/audio_out_session/connection.h b/repos/os/include/audio_out_session/connection.h index 32589464b4..2ca4b5c73e 100644 --- a/repos/os/include/audio_out_session/connection.h +++ b/repos/os/include/audio_out_session/connection.h @@ -27,6 +27,7 @@ struct Audio_out::Connection : Genode::Connection, Audio_out::Session_c * Constructor * * \param channel channel identifier (e.g., "front left") + * \param label optional session label * \param alloc_signal install 'alloc_signal', the client may then use * 'wait_for_alloc' when the stream is full * \param progress_signal install progress signal, the client may then @@ -35,10 +36,11 @@ struct Audio_out::Connection : Genode::Connection, Audio_out::Session_c */ Connection(Genode::Env &env, char const *channel, + Label const &label = Label(), bool alloc_signal = true, bool progress_signal = false) : - Genode::Connection(env, Label(), + Genode::Connection(env, label, Ram_quota { 2*4096 + 2048 + sizeof(Stream) }, Args("channel=\"", channel, "\"")), Session_client(env.rm(), cap(), alloc_signal, progress_signal) From 4da68e11b69e577bbb713e66a91f1539a25eb531 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 4 Dec 2024 14:08:27 +0100 Subject: [PATCH 63/69] tool: support to set menuentry of GRUB manually to self chosen value, by overwritting the tcl procedure grub_menuentry, e.g.: proc grub_menuentry { } { return "'My OS' --option_of_your_choice " } Fix #5398 --- tool/run/boot_dir/fiasco | 3 ++- tool/run/boot_dir/foc | 4 +++- tool/run/boot_dir/hw | 4 +++- tool/run/boot_dir/linux | 3 ++- tool/run/boot_dir/nova | 4 +++- tool/run/boot_dir/okl4 | 4 +++- tool/run/boot_dir/pistachio | 5 ++++- tool/run/boot_dir/sel4 | 4 +++- 8 files changed, 23 insertions(+), 8 deletions(-) diff --git a/tool/run/boot_dir/fiasco b/tool/run/boot_dir/fiasco index e7f7b86174..21ed900915 100644 --- a/tool/run/boot_dir/fiasco +++ b/tool/run/boot_dir/fiasco @@ -10,6 +10,7 @@ proc core_link_address { } { return "0x01000000" } proc boot_output { } { return "serial" } +proc grub_menuentry { } { return "'Genode on L4/Fiasco'" } ## # Populate boot directory with binaries on fiasco @@ -66,7 +67,7 @@ proc run_boot_dir {binaries} { # The core binary is part of the 'binaries' list but it must # appear right after 'sigma0' as boot module. Hence the special case. # - puts $fh "menuentry 'Genode on L4/Fiasco' {" + puts $fh "menuentry [grub_menuentry] {" puts $fh " insmod multiboot" puts $fh " multiboot /boot/bender [boot_output]" puts $fh " module /boot/bootstrap -serial" diff --git a/tool/run/boot_dir/foc b/tool/run/boot_dir/foc index 805422c00b..b7d6438e95 100644 --- a/tool/run/boot_dir/foc +++ b/tool/run/boot_dir/foc @@ -26,6 +26,8 @@ proc fiasco_serial_esc_arg { } { return "-serial_esc " } proc boot_output { } { return "serial" } +proc grub_menuentry { } { return "'Genode on Fiasco.OC'" } + ## # Reset the target system via the Fiasco.OC kernel debugger @@ -117,7 +119,7 @@ proc run_boot_dir_x86 {binaries} { # The core binary is part of the 'binaries' list but it must # appear right after 'sigma0' as boot module. Hence the special case. # - puts $fh "menuentry 'Genode on Fiasco.OC' {" + puts $fh "menuentry [grub_menuentry] {" puts $fh " insmod multiboot" puts $fh " multiboot /boot/bender $options_bender" puts $fh " module /boot/bootstrap" diff --git a/tool/run/boot_dir/hw b/tool/run/boot_dir/hw index 0c442e5334..5a8648ecbb 100644 --- a/tool/run/boot_dir/hw +++ b/tool/run/boot_dir/hw @@ -36,6 +36,8 @@ proc run_boot_string { } { return "\nkernel initialized" } proc boot_output { } { return "serial" } +proc grub_menuentry { } { return "'Genode on base-hw'" } + proc bootstrap_link_address { } { @@ -157,7 +159,7 @@ proc run_boot_dir {binaries} { # set fh [create_header_grub2_config] - puts $fh "menuentry 'Genode on base-hw' {" + puts $fh "menuentry [grub_menuentry] {" puts $fh " insmod multiboot2" puts $fh " multiboot2 /boot/bender $options_bender" puts $fh " module2 /boot/image-hw.elf.gz image-hw.elf" diff --git a/tool/run/boot_dir/linux b/tool/run/boot_dir/linux index c45f6fe46a..bdca40b561 100644 --- a/tool/run/boot_dir/linux +++ b/tool/run/boot_dir/linux @@ -2,6 +2,7 @@ proc binary_name_ld_lib_so { } { return "ld-linux.lib.so" } proc binary_name_core { } { return "core-linux" } proc binary_name_timer { } { return "linux_timer" } +proc grub_menuentry { } { return "'Genode on Linux'" } ## # Populate boot directory with binaries on Linux @@ -56,7 +57,7 @@ proc run_boot_dir {binaries} { set fh [open "[run_dir]/boot/grub/grub.cfg" "WRONLY CREAT TRUNC"] puts $fh "set timeout=0" - puts $fh "menuentry 'Genode on Linux' {" + puts $fh "menuentry [grub_menuentry] {" puts $fh " insmod linux" puts $fh " linux /vmlinuz console=ttyS0,115200 amd_iommu=off intel_iommu=off" puts $fh " initrd /initrd" diff --git a/tool/run/boot_dir/nova b/tool/run/boot_dir/nova index 720189004f..820262dc6a 100644 --- a/tool/run/boot_dir/nova +++ b/tool/run/boot_dir/nova @@ -35,6 +35,8 @@ proc kernel_output { } { return "serial" } proc boot_output { } { return "serial" } +proc grub_menuentry { } { return "'Genode on NOVA'" } + proc run_boot_string { } { return "\nHypervisor NOVA " } @@ -122,7 +124,7 @@ proc run_boot_dir {binaries} { # set fh [create_header_grub2_config] - puts $fh "menuentry 'Genode on NOVA' {" + puts $fh "menuentry [grub_menuentry] {" puts $fh " insmod multiboot2" puts $fh " insmod gzio" puts $fh " multiboot2 /boot/bender $options_bender" diff --git a/tool/run/boot_dir/okl4 b/tool/run/boot_dir/okl4 index 8ccf0ce370..953d9752eb 100644 --- a/tool/run/boot_dir/okl4 +++ b/tool/run/boot_dir/okl4 @@ -6,6 +6,8 @@ proc kernel_files { } { return okl4 } proc boot_output { } { return "serial" } +proc grub_menuentry { } { return "'Genode on OKL4'" } + ## # Get the base-okl4 repository # @@ -177,7 +179,7 @@ proc run_boot_dir {binaries} { # The core binary is part of the 'binaries' list but it must # appear right after 'sigma0' as boot module. Hence the special case. # - puts $fh "menuentry 'Genode on OKL4' {" + puts $fh "menuentry [grub_menuentry] {" puts $fh " insmod multiboot" puts $fh " multiboot /boot/bender [boot_output]" puts $fh " module /boot/image.elf" diff --git a/tool/run/boot_dir/pistachio b/tool/run/boot_dir/pistachio index b59c0b842f..948ce10fda 100644 --- a/tool/run/boot_dir/pistachio +++ b/tool/run/boot_dir/pistachio @@ -9,6 +9,9 @@ proc core_link_address { } { return "0x02000000" } proc boot_output { } { return "serial" } +proc grub_menuentry { } { return "'Genode on L4ka::Pistachio'" } + + ## # Populdate boot directory with binaries on pistachio # @@ -64,7 +67,7 @@ proc run_boot_dir {binaries} { # The core binary is part of the 'binaries' list but it must # appear right after 'sigma0' as boot module. Hence the special case. # - puts $fh "menuentry 'Genode on L4ka::Pistachio' {" + puts $fh "menuentry [grub_menuentry] {" puts $fh " insmod multiboot" puts $fh " multiboot /boot/bender [boot_output]" puts $fh " module /boot/kickstart" diff --git a/tool/run/boot_dir/sel4 b/tool/run/boot_dir/sel4 index e4dd99a406..0f188000a5 100644 --- a/tool/run/boot_dir/sel4 +++ b/tool/run/boot_dir/sel4 @@ -12,6 +12,8 @@ proc kernel_files { } { return sel4 } proc boot_output { } { return "serial" } +proc grub_menuentry { } { return "'Genode on seL4'" } + proc run_boot_string { } { return "\nBooting all finished, dropped to user space" } proc core_link_address { } { return "0x02000000" } @@ -77,7 +79,7 @@ proc run_boot_dir {binaries} { # set fh [create_header_grub2_config] - puts $fh "menuentry 'Genode on seL4' {" + puts $fh "menuentry [grub_menuentry] {" puts $fh " insmod multiboot2" puts $fh " multiboot2 /boot/bender $options_bender" puts $fh " module2 /boot/sel4 sel4 disable_iommu" From 1ddbb3444c71c8e5ced01cfcc120dbda73480541 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Wed, 4 Dec 2024 12:02:50 +0100 Subject: [PATCH 64/69] sculpt/nitpicker: use label for matching decorator The 'label_suffix=" -> decorator"' rule is weaker than the more generic 'label_prefix="runtime -> wm"' rule, to the effect that the decorator is assigned to the "desktop" domain instead of the "decorator" domain. Replace the 'label_prefix' by the decorator's concrete label to resolve this ambiguity. --- repos/gems/sculpt/nitpicker/default | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repos/gems/sculpt/nitpicker/default b/repos/gems/sculpt/nitpicker/default index 80f455ea6b..b01371e294 100644 --- a/repos/gems/sculpt/nitpicker/default +++ b/repos/gems/sculpt/nitpicker/default @@ -15,7 +15,7 @@ - + From 0749f8cbdf5f7d95a92c738ce5294572d0018307 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Wed, 4 Dec 2024 13:25:05 +0100 Subject: [PATCH 65/69] wm: free content view IDs if decorator disappears This patch fixes the following error message printed by the wm upon the restart of a decorator. Error: freeing non-empty slab block" Error: ID space not empty at destruction time Fortunately, the error is not critical as the backing store is released along with the session. --- repos/gems/src/server/wm/decorator_gui.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/repos/gems/src/server/wm/decorator_gui.h b/repos/gems/src/server/wm/decorator_gui.h index 43ad1fe9d6..067606c2dc 100644 --- a/repos/gems/src/server/wm/decorator_gui.h +++ b/repos/gems/src/server/wm/decorator_gui.h @@ -131,6 +131,12 @@ struct Wm::Decorator_gui_session : Session_object, _input_session.sigh(_input_handler); } + ~Decorator_gui_session() + { + while (_content_view_ids.apply_any([&] (Content_view_ref &view_ref) { + destroy(_content_view_ref_alloc, &view_ref); })); + } + void upgrade_local_or_remote(Resources const &resources) { _upgrade_local_or_remote(resources, *this, _real_gui); From 7f8db062843b85f7310ee665182fd60ecb08da79 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Fri, 6 Dec 2024 09:29:03 +0100 Subject: [PATCH 66/69] Complete removal of tool/sdk approach The SDK approach introduced in #2948 was superseded by Goa. Issue #4446 --- tool/sdk/genode-base.pc.in | 15 --------------- tool/sdk/genode-lib.pc.in | 11 ----------- tool/sdk/genode-libc.pc.in | 11 ----------- tool/sdk/genode-posix.pc.in | 10 ---------- tool/sdk/genode-prg.pc | 11 ----------- tool/sdk/genode-prg.pc.in | 11 ----------- tool/sdk/genode-stdcxx.pc.in | 11 ----------- tool/sdk/genode-vfs.pc.in | 9 --------- 8 files changed, 89 deletions(-) delete mode 100644 tool/sdk/genode-base.pc.in delete mode 100644 tool/sdk/genode-lib.pc.in delete mode 100644 tool/sdk/genode-libc.pc.in delete mode 100644 tool/sdk/genode-posix.pc.in delete mode 100644 tool/sdk/genode-prg.pc delete mode 100644 tool/sdk/genode-prg.pc.in delete mode 100644 tool/sdk/genode-stdcxx.pc.in delete mode 100644 tool/sdk/genode-vfs.pc.in diff --git a/tool/sdk/genode-base.pc.in b/tool/sdk/genode-base.pc.in deleted file mode 100644 index 9a19f9981f..0000000000 --- a/tool/sdk/genode-base.pc.in +++ /dev/null @@ -1,15 +0,0 @@ -prefix=!SDK_DIR! -lddir=${prefix}/ld -libdir=${prefix}/lib -toolchaindir=!TOOLCHAIN_DIR! -cc=${toolchaindir}/bin/genode-x86-gcc -cxx=${toolchaindir}/bin/genode-x86-g++ -ld=${toolchaindir}/bin/genode-x86-ld -ar=${toolchaindir}/bin/genode-x86-ar -ranlib=${toolchaindir}/bin/genode-x86-ranlib - -Name: genode-base -Description: Genode base compiler definitions -URL: https://genode.org/ -Version: !VERSION! -Cflags: -nostdinc -fPIC -I${prefix}/include/genode -I${toolchaindir}/lib/gcc/x86_64-pc-elf/6.3.0/include diff --git a/tool/sdk/genode-lib.pc.in b/tool/sdk/genode-lib.pc.in deleted file mode 100644 index 88101b4217..0000000000 --- a/tool/sdk/genode-lib.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=!SDK_DIR! -lddir=${prefix}/ld -libdir=${prefix}/lib -toolchaindir=!TOOLCHAIN_DIR! - -Name: genode-lib -Description: Flags for linking Genode libraries -URL: https://genode.org/ -Version: !VERSION! -Requires: genode-base -Libs: -shared --eh-frame-hdr -melf_x86_64 -gc-sections -z max-page-size=0x1000 -T ${lddir}/genode_rel.ld --entry=0x0 ${libdir}/ldso-startup.lib.a ${toolchaindir}/lib/gcc/x86_64-pc-elf/6.3.0/64/libgcc.a diff --git a/tool/sdk/genode-libc.pc.in b/tool/sdk/genode-libc.pc.in deleted file mode 100644 index cd92710cee..0000000000 --- a/tool/sdk/genode-libc.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=!SDK_DIR! -includedir=${prefix}/include/libc -libdir=${prefix}/lib - -Name: genode-libc -Description: Genode C runtime library -URL: https://genode.org/ -Version: !VERSION! -Requires: genode-base genode-vfs -Cflags: -D__FreeBSD__=8 -D__ISO_C_VISIBLE=1999 -fno-builtin-sin -fno-builtin-cos -fno-builtin-sinf -fno-builtin-cosf -I${includedir} -I${includedir}/libc -I${includedir}/libc/libc -I${includedir}/libc-genode -Libs: ${libdir}/libc.lib.so ${libdir}/libm.lib.so diff --git a/tool/sdk/genode-posix.pc.in b/tool/sdk/genode-posix.pc.in deleted file mode 100644 index 40f7dbcf08..0000000000 --- a/tool/sdk/genode-posix.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=!SDK_DIR! -includedir=${prefix}/include/libc -libdir=${prefix}/lib - -Name: genode-posix -Description: Genode POSIX entrypoint library -URL: https://genode.org/ -Version: !VERSION! -Requires: genode-libc -Libs: ${libdir}/posix.lib.so diff --git a/tool/sdk/genode-prg.pc b/tool/sdk/genode-prg.pc deleted file mode 100644 index 725e81c499..0000000000 --- a/tool/sdk/genode-prg.pc +++ /dev/null @@ -1,11 +0,0 @@ -prefix=!SDK_DIR! -lddir=${prefix}/ld -libdir=${prefix}/lib -toolchaindir=!TOOLCHAIN_DIR! -ld=${toolchaindir}/bin/genode-x86-ld - -Name: genode-prg -Description: Flags for dynamically-linked Genode programs -URL: https://genode.org/ -Version: !VERSION! -Libs: -melf_x86_64 -gc-sections -z max-page-size=0x1000 --dynamic-list=${lddir}/genode_dyn.dl -nostdlib -Ttext=0x01000000 --dynamic-linker=ld.lib.so --eh-frame-hdr -rpath-link=. -T ${lddir}/genode_dyn.ld ${libdir}/ld.lib.so ${toolchaindir}/lib/gcc/x86_64-pc-elf/6.3.0/64/libgcc.a diff --git a/tool/sdk/genode-prg.pc.in b/tool/sdk/genode-prg.pc.in deleted file mode 100644 index 725e81c499..0000000000 --- a/tool/sdk/genode-prg.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=!SDK_DIR! -lddir=${prefix}/ld -libdir=${prefix}/lib -toolchaindir=!TOOLCHAIN_DIR! -ld=${toolchaindir}/bin/genode-x86-ld - -Name: genode-prg -Description: Flags for dynamically-linked Genode programs -URL: https://genode.org/ -Version: !VERSION! -Libs: -melf_x86_64 -gc-sections -z max-page-size=0x1000 --dynamic-list=${lddir}/genode_dyn.dl -nostdlib -Ttext=0x01000000 --dynamic-linker=ld.lib.so --eh-frame-hdr -rpath-link=. -T ${lddir}/genode_dyn.ld ${libdir}/ld.lib.so ${toolchaindir}/lib/gcc/x86_64-pc-elf/6.3.0/64/libgcc.a diff --git a/tool/sdk/genode-stdcxx.pc.in b/tool/sdk/genode-stdcxx.pc.in deleted file mode 100644 index 9e2c85c62e..0000000000 --- a/tool/sdk/genode-stdcxx.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=!SDK_DIR! -includedir=${prefix}/include/stdcxx/stdcxx -libdir=${prefix}/lib - -Name: genode-stdcxx -Description: Genode Standard C++ library -URL: https://genode.org/ -Version: !VERSION! -Requires: genode-libc -Cflags: -D_GLIBCXX_HAVE_MBSTATE_T -D_GLIBCXX_ATOMIC_BUILTINS_4 -I${includedir} -I${includedir}/std -I${includedir}/c_global -Libs: ${libdir}/stdcxx.lib.so diff --git a/tool/sdk/genode-vfs.pc.in b/tool/sdk/genode-vfs.pc.in deleted file mode 100644 index c29f7caf62..0000000000 --- a/tool/sdk/genode-vfs.pc.in +++ /dev/null @@ -1,9 +0,0 @@ -prefix=!SDK_DIR! -libdir=${prefix}/lib - -Name: genode-vfs -Description: Genode Virtual File-System library -URL: https://genode.org/ -Version: !VERSION! -Requires: genode-base -Libs: ${libdir}/vfs.lib.so From d0522706ba747ee6416a62f353afa4bc73e9952c Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Thu, 5 Dec 2024 13:56:23 +0100 Subject: [PATCH 67/69] nova: avoid false pager assertion Fixes #5399 --- repos/base-nova/src/core/include/pager.h | 4 ---- repos/base-nova/src/core/pager.cc | 6 ------ 2 files changed, 10 deletions(-) diff --git a/repos/base-nova/src/core/include/pager.h b/repos/base-nova/src/core/include/pager.h index db18f28bcd..19cc38baec 100644 --- a/repos/base-nova/src/core/include/pager.h +++ b/repos/base-nova/src/core/include/pager.h @@ -91,7 +91,6 @@ class Core::Pager_object : public Object_pool::Entry DEAD = 0x2U, SINGLESTEP = 0x4U, SIGNAL_SM = 0x8U, - DISSOLVED = 0x10U, SUBMIT_SIGNAL = 0x20U, BLOCKED_PAUSE_SM = 0x40U, MIGRATE = 0x80U @@ -115,9 +114,6 @@ class Core::Pager_object : public Object_pool::Entry inline void mark_signal_sm() { _status |= SIGNAL_SM; } inline bool has_signal_sm() { return _status & SIGNAL_SM; } - inline void mark_dissolved() { _status |= DISSOLVED; } - inline bool dissolved() { return _status & DISSOLVED; } - inline bool to_submit() { return _status & SUBMIT_SIGNAL; } inline void submit_signal() { _status |= SUBMIT_SIGNAL; } inline void reset_submit() { _status &= (uint8_t)(~SUBMIT_SIGNAL); } diff --git a/repos/base-nova/src/core/pager.cc b/repos/base-nova/src/core/pager.cc index 1f8c4c7820..aa2039173f 100644 --- a/repos/base-nova/src/core/pager.cc +++ b/repos/base-nova/src/core/pager.cc @@ -523,8 +523,6 @@ uint8_t Pager_object::_unsynchronized_client_recall(bool get_state_and_block) void Pager_object::cleanup_call() { - _state.mark_dissolved(); - /* revoke ec and sc cap of client before the sm cap */ if (_state.sel_client_ec != Native_thread::INVALID_INDEX) revoke(Obj_crd(_state.sel_client_ec, 2)); @@ -750,10 +748,6 @@ void Pager_object::migrate(Affinity::Location location) Pager_object::~Pager_object() { - /* sanity check that object got dissolved already - otherwise bug */ - if (!_state.dissolved()) - nova_die(); - /* revoke portal used for the cleanup call and sm cap for blocking state */ revoke(Obj_crd(_selectors, 2)); cap_map().remove(_selectors, 2, false); From 60d009e6c64a7ccf2dea47aaccb94e1be88f9cfa Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 5 Dec 2024 14:49:28 +0100 Subject: [PATCH 68/69] nitpicker: notify clients on any panorama change Nitpicker used to notify GUI clients about an updated GUI info only when the total panorama size changed. However, in situations where two capture clients are swapped, the total size may stay the same whereas the relation of displays to different parts of the panorama is no longer the same. Such changes are interesting to some clients like the window layouter, which needs to update the assignement of screens to displays. This patch changes nitpicker so that each panorama change is reflected to GUI clients as a mode-info update. Issue #5390 --- repos/os/src/server/nitpicker/main.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/repos/os/src/server/nitpicker/main.cc b/repos/os/src/server/nitpicker/main.cc index 2772de0dc6..f9749135a3 100644 --- a/repos/os/src/server/nitpicker/main.cc +++ b/repos/os/src/server/nitpicker/main.cc @@ -717,12 +717,12 @@ struct Nitpicker::Main : Focus_updater, Hover_updater, /* redraw */ _view_stack.update_all_views(); - - /* notify clients about the change screen mode */ - for (Gui_session *s = _session_list.first(); s; s = s->next()) - s->notify_mode_change(); } + /* notify GUI clients about the mode-info change */ + for (Gui_session *s = _session_list.first(); s; s = s->next()) + s->notify_mode_change(); + _report_panorama(); _update_input_connection(); } From cd6701c483a102cb97bd0dd929258d2b58db1d58 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Wed, 11 Dec 2024 08:35:22 +0100 Subject: [PATCH 69/69] depot: update recipe hashes --- repos/base-fiasco/recipes/src/base-fiasco/hash | 2 +- repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash | 2 +- repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash | 2 +- repos/base-foc/recipes/src/base-foc-pbxa9/hash | 2 +- repos/base-foc/recipes/src/base-foc-pc/hash | 2 +- repos/base-foc/recipes/src/base-foc-rpi3/hash | 2 +- repos/base-hw/recipes/src/base-hw-pbxa9/hash | 2 +- repos/base-hw/recipes/src/base-hw-pc/hash | 2 +- repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash | 2 +- repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash | 2 +- repos/base-linux/recipes/src/base-linux/hash | 2 +- repos/base-nova/recipes/src/base-nova/hash | 2 +- repos/base-okl4/recipes/src/base-okl4/hash | 2 +- repos/base-pistachio/recipes/src/base-pistachio/hash | 2 +- repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash | 2 +- repos/base-sel4/recipes/src/base-sel4-x86/hash | 2 +- repos/base/recipes/api/base/hash | 2 +- repos/base/recipes/pkg/test-alarm/hash | 2 +- repos/base/recipes/pkg/test-ds_ownership/hash | 2 +- repos/base/recipes/pkg/test-entrypoint/hash | 2 +- repos/base/recipes/pkg/test-log/hash | 2 +- repos/base/recipes/pkg/test-mmio/hash | 2 +- repos/base/recipes/pkg/test-new_delete/hash | 2 +- repos/base/recipes/pkg/test-reconstructible/hash | 2 +- repos/base/recipes/pkg/test-registry/hash | 2 +- repos/base/recipes/pkg/test-rm_fault/hash | 2 +- repos/base/recipes/pkg/test-rm_fault_no_nox/hash | 2 +- repos/base/recipes/pkg/test-rm_nested/hash | 2 +- repos/base/recipes/pkg/test-rm_stress/hash | 2 +- repos/base/recipes/pkg/test-sanitizer/hash | 2 +- repos/base/recipes/pkg/test-stack_smash/hash | 2 +- repos/base/recipes/pkg/test-synced_interface/hash | 2 +- repos/base/recipes/pkg/test-timer/hash | 2 +- repos/base/recipes/pkg/test-tls/hash | 2 +- repos/base/recipes/pkg/test-token/hash | 2 +- repos/base/recipes/pkg/test-xml_generator/hash | 2 +- repos/base/recipes/pkg/test-xml_node/hash | 2 +- repos/base/recipes/src/test-alarm/hash | 2 +- repos/base/recipes/src/test-ds_ownership/hash | 2 +- repos/base/recipes/src/test-entrypoint/hash | 2 +- repos/base/recipes/src/test-log/hash | 2 +- repos/base/recipes/src/test-mmio/hash | 2 +- repos/base/recipes/src/test-new_delete/hash | 2 +- repos/base/recipes/src/test-reconstructible/hash | 2 +- repos/base/recipes/src/test-registry/hash | 2 +- repos/base/recipes/src/test-rm_fault/hash | 2 +- repos/base/recipes/src/test-rm_nested/hash | 2 +- repos/base/recipes/src/test-rm_stress/hash | 2 +- repos/base/recipes/src/test-sanitizer/hash | 2 +- repos/base/recipes/src/test-segfault/hash | 2 +- repos/base/recipes/src/test-stack_smash/hash | 2 +- repos/base/recipes/src/test-synced_interface/hash | 2 +- repos/base/recipes/src/test-timer/hash | 2 +- repos/base/recipes/src/test-tls/hash | 2 +- repos/base/recipes/src/test-token/hash | 2 +- repos/base/recipes/src/test-xml_generator/hash | 2 +- repos/base/recipes/src/test-xml_node/hash | 2 +- repos/dde_bsd/recipes/pkg/bsd_audio/hash | 2 +- repos/dde_bsd/recipes/src/bsd_audio/hash | 2 +- repos/dde_ipxe/recipes/pkg/ipxe_nic/hash | 2 +- repos/dde_ipxe/recipes/src/ipxe_nic/hash | 2 +- repos/dde_linux/recipes/pkg/wireguard/hash | 2 +- repos/dde_linux/recipes/src/usb_hid/hash | 2 +- repos/dde_linux/recipes/src/usb_net/hash | 2 +- repos/dde_linux/recipes/src/vfs_lxip/hash | 2 +- repos/dde_linux/recipes/src/wireguard/hash | 2 +- repos/dde_rump/recipes/pkg/ext2_fs/hash | 2 +- repos/dde_rump/recipes/src/vfs_rump/hash | 2 +- repos/demo/recipes/src/demo/hash | 2 +- repos/gems/recipes/pkg/backdrop/hash | 2 +- repos/gems/recipes/pkg/cpu_load_display/hash | 2 +- repos/gems/recipes/pkg/dbg_download/hash | 2 +- repos/gems/recipes/pkg/depot_download/hash | 2 +- repos/gems/recipes/pkg/drivers_nic-pc/hash | 2 +- repos/gems/recipes/pkg/file_vault/hash | 2 +- repos/gems/recipes/pkg/fonts_fs/hash | 2 +- repos/gems/recipes/pkg/goa-linux/hash | 2 +- repos/gems/recipes/pkg/goa/hash | 2 +- repos/gems/recipes/pkg/motif_decorator/hash | 2 +- repos/gems/recipes/pkg/motif_wm/hash | 2 +- repos/gems/recipes/pkg/nano3d/hash | 2 +- repos/gems/recipes/pkg/osci/hash | 2 +- repos/gems/recipes/pkg/rom_osci/hash | 2 +- repos/gems/recipes/pkg/screenshot_trigger/hash | 2 +- repos/gems/recipes/pkg/sculpt/hash | 2 +- repos/gems/recipes/pkg/sculpt_distribution-pc/hash | 2 +- repos/gems/recipes/pkg/sculpt_distribution/hash | 2 +- repos/gems/recipes/pkg/sculpt_drivers-pc/hash | 2 +- repos/gems/recipes/pkg/sticks_blue_backdrop/hash | 2 +- repos/gems/recipes/pkg/terminal/hash | 2 +- repos/gems/recipes/pkg/test-depot_query_index/hash | 2 +- repos/gems/recipes/pkg/test-file_vault/hash | 2 +- repos/gems/recipes/pkg/test-file_vault_no_entropy/hash | 2 +- repos/gems/recipes/pkg/test-fs_tool/hash | 2 +- repos/gems/recipes/pkg/test-libc_vfs_audit/hash | 2 +- repos/gems/recipes/pkg/themed_decorator/hash | 2 +- repos/gems/recipes/pkg/themed_wm/hash | 2 +- repos/gems/recipes/pkg/touch_keyboard/hash | 2 +- repos/gems/recipes/pkg/trace_fs/hash | 2 +- repos/gems/recipes/pkg/trace_recorder/hash | 2 +- repos/gems/recipes/pkg/unconfigured_nano3d/hash | 2 +- repos/gems/recipes/pkg/window_layouter/hash | 2 +- repos/gems/recipes/pkg/wm/hash | 2 +- repos/gems/recipes/src/backdrop/hash | 2 +- repos/gems/recipes/src/cpu_load_display/hash | 2 +- repos/gems/recipes/src/dbg_download/hash | 2 +- repos/gems/recipes/src/decorator/hash | 2 +- repos/gems/recipes/src/depot_deploy/hash | 2 +- repos/gems/recipes/src/depot_download_manager/hash | 2 +- repos/gems/recipes/src/depot_query/hash | 2 +- repos/gems/recipes/src/depot_remove/hash | 2 +- repos/gems/recipes/src/file_terminal/hash | 2 +- repos/gems/recipes/src/file_vault/hash | 2 +- repos/gems/recipes/src/file_vault_gui/hash | 2 +- repos/gems/recipes/src/fs_query/hash | 2 +- repos/gems/recipes/src/fs_tool/hash | 2 +- repos/gems/recipes/src/gpt_write/hash | 2 +- repos/gems/recipes/src/gui_fader/hash | 2 +- repos/gems/recipes/src/menu_view/hash | 2 +- repos/gems/recipes/src/mixer_gui_qt/hash | 2 +- repos/gems/recipes/src/mixer_gui_qt6/hash | 2 +- repos/gems/recipes/src/nano3d/hash | 2 +- repos/gems/recipes/src/osci/hash | 2 +- repos/gems/recipes/src/rom_osci/hash | 2 +- repos/gems/recipes/src/screenshot_trigger/hash | 2 +- repos/gems/recipes/src/sculpt_manager/hash | 2 +- repos/gems/recipes/src/tcp_terminal/hash | 2 +- repos/gems/recipes/src/terminal/hash | 2 +- repos/gems/recipes/src/test-tiled_wm/hash | 2 +- repos/gems/recipes/src/test-tiled_wm_qt6/hash | 2 +- repos/gems/recipes/src/text_area/hash | 2 +- repos/gems/recipes/src/themed_decorator/hash | 2 +- repos/gems/recipes/src/touch_keyboard/hash | 2 +- repos/gems/recipes/src/trace_recorder/hash | 2 +- repos/gems/recipes/src/trace_recorder_policy/hash | 2 +- repos/gems/recipes/src/tresor/hash | 2 +- repos/gems/recipes/src/vfs_audit/hash | 2 +- repos/gems/recipes/src/vfs_gpu/hash | 2 +- repos/gems/recipes/src/vfs_import/hash | 2 +- repos/gems/recipes/src/vfs_oss/hash | 2 +- repos/gems/recipes/src/vfs_pipe/hash | 2 +- repos/gems/recipes/src/vfs_trace/hash | 2 +- repos/gems/recipes/src/vfs_ttf/hash | 2 +- repos/gems/recipes/src/window_layouter/hash | 2 +- repos/gems/recipes/src/wm/hash | 2 +- repos/libports/recipes/pkg/acpica/hash | 2 +- repos/libports/recipes/pkg/gcov/hash | 2 +- repos/libports/recipes/pkg/mesa_gears/hash | 2 +- repos/libports/recipes/pkg/mesa_gpu-cpu/hash | 2 +- repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash | 2 +- repos/libports/recipes/pkg/mesa_gpu-intel/hash | 2 +- repos/libports/recipes/pkg/mesa_gpu-lima/hash | 2 +- repos/libports/recipes/pkg/pdf_view/hash | 2 +- repos/libports/recipes/pkg/qt5_textedit/hash | 2 +- repos/libports/recipes/pkg/sntp_dummy_rtc/hash | 2 +- repos/libports/recipes/pkg/stdin2out/hash | 2 +- repos/libports/recipes/pkg/system_clock-dummy/hash | 2 +- repos/libports/recipes/pkg/system_clock-pc/hash | 2 +- repos/libports/recipes/pkg/system_rtc-linux/hash | 2 +- repos/libports/recipes/pkg/system_rtc-pc/hash | 2 +- repos/libports/recipes/pkg/test-expat/hash | 2 +- repos/libports/recipes/pkg/test-ldso/hash | 2 +- repos/libports/recipes/pkg/test-libc/hash | 2 +- repos/libports/recipes/pkg/test-libc_alarm/hash | 2 +- repos/libports/recipes/pkg/test-libc_connect_lwip/hash | 2 +- repos/libports/recipes/pkg/test-libc_connect_lxip/hash | 2 +- .../libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash | 2 +- .../libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash | 2 +- repos/libports/recipes/pkg/test-libc_counter/hash | 2 +- repos/libports/recipes/pkg/test-libc_deferred_unlink/hash | 2 +- repos/libports/recipes/pkg/test-libc_execve/hash | 2 +- repos/libports/recipes/pkg/test-libc_fifo_pipe/hash | 2 +- repos/libports/recipes/pkg/test-libc_fork/hash | 2 +- repos/libports/recipes/pkg/test-libc_getenv/hash | 2 +- repos/libports/recipes/pkg/test-libc_kqueue/hash | 2 +- repos/libports/recipes/pkg/test-libc_pipe/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_block/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_counter/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_fs/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_oss/hash | 2 +- repos/libports/recipes/pkg/test-libc_vfs_ram/hash | 2 +- repos/libports/recipes/pkg/test-pipe_read_ready/hash | 2 +- repos/libports/recipes/pkg/test-pthread/hash | 2 +- repos/libports/recipes/pkg/test-sequence/hash | 2 +- repos/libports/recipes/pkg/test-spark/hash | 2 +- repos/libports/recipes/pkg/test-spark_exception/hash | 2 +- repos/libports/recipes/pkg/test-spark_secondary_stack/hash | 2 +- repos/libports/recipes/pkg/test-stdcxx/hash | 2 +- repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash | 2 +- repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash | 2 +- repos/libports/recipes/pkg/usb_webcam/hash | 2 +- repos/libports/recipes/src/acpi_event/hash | 2 +- repos/libports/recipes/src/acpica/hash | 2 +- repos/libports/recipes/src/extract/hash | 2 +- repos/libports/recipes/src/fetchurl/hash | 2 +- repos/libports/recipes/src/gcov/hash | 2 +- repos/libports/recipes/src/libc/hash | 2 +- repos/libports/recipes/src/libdrm/hash | 2 +- repos/libports/recipes/src/libqgenodeviewwidget/hash | 2 +- repos/libports/recipes/src/libusb/hash | 2 +- repos/libports/recipes/src/libyuv/hash | 2 +- repos/libports/recipes/src/mesa/hash | 2 +- repos/libports/recipes/src/mesa_gears/hash | 2 +- repos/libports/recipes/src/pcsc-lite/hash | 2 +- repos/libports/recipes/src/pdf_view/hash | 2 +- repos/libports/recipes/src/posix/hash | 2 +- repos/libports/recipes/src/qt5_base/hash | 2 +- repos/libports/recipes/src/qt5_component/hash | 2 +- repos/libports/recipes/src/qt5_launchpad/hash | 2 +- repos/libports/recipes/src/qt5_quickcontrols2/hash | 2 +- repos/libports/recipes/src/qt5_svg/hash | 2 +- repos/libports/recipes/src/qt6_base/hash | 2 +- repos/libports/recipes/src/qt6_component/hash | 2 +- repos/libports/recipes/src/qt6_launchpad/hash | 2 +- repos/libports/recipes/src/sanitizer/hash | 2 +- repos/libports/recipes/src/sntp_client/hash | 2 +- repos/libports/recipes/src/spark/hash | 2 +- repos/libports/recipes/src/system_rtc/hash | 2 +- repos/libports/recipes/src/test-ldso/hash | 2 +- repos/libports/recipes/src/test-libc_fifo_pipe/hash | 2 +- repos/libports/recipes/src/test-libc_vfs/hash | 2 +- repos/libports/recipes/src/test-libc_vfs_block/hash | 2 +- repos/libports/recipes/src/test-netty/hash | 2 +- repos/libports/recipes/src/test-pthread/hash | 2 +- repos/libports/recipes/src/test-spark/hash | 2 +- repos/libports/recipes/src/test-spark_exception/hash | 2 +- repos/libports/recipes/src/test-spark_secondary_stack/hash | 2 +- repos/libports/recipes/src/test-tcp/hash | 2 +- repos/libports/recipes/src/usb_webcam/hash | 2 +- repos/libports/recipes/src/vesa_fb/hash | 2 +- repos/libports/recipes/src/vfs_fatfs/hash | 2 +- repos/libports/recipes/src/vfs_jitterentropy/hash | 2 +- repos/libports/recipes/src/vfs_legacy_oss/hash | 2 +- repos/libports/recipes/src/vfs_libusb/hash | 2 +- repos/libports/recipes/src/vfs_lwip/hash | 2 +- repos/os/recipes/api/audio_in_session/hash | 2 +- repos/os/recipes/api/audio_out_session/hash | 2 +- repos/os/recipes/api/usb_session/hash | 2 +- repos/os/recipes/pkg/black_hole/hash | 2 +- repos/os/recipes/pkg/chroot/hash | 2 +- repos/os/recipes/pkg/clipboard/hash | 2 +- repos/os/recipes/pkg/cpu_balancer/hash | 2 +- repos/os/recipes/pkg/cpu_balancer_config/hash | 2 +- repos/os/recipes/pkg/cpu_burner/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-linux/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-pbxa9/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-pc/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash | 2 +- repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash | 2 +- repos/os/recipes/pkg/drivers_nic-linux/hash | 2 +- repos/os/recipes/pkg/drivers_nic-pbxa9/hash | 2 +- repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash | 2 +- repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash | 2 +- repos/os/recipes/pkg/dynamic_rom/hash | 2 +- repos/os/recipes/pkg/fs_report/hash | 2 +- repos/os/recipes/pkg/fs_rom/hash | 2 +- repos/os/recipes/pkg/mixer/hash | 2 +- repos/os/recipes/pkg/nic_router-nat/hash | 2 +- repos/os/recipes/pkg/nic_uplink/hash | 2 +- repos/os/recipes/pkg/nit_focus/hash | 2 +- repos/os/recipes/pkg/nitpicker/hash | 2 +- repos/os/recipes/pkg/part_block/hash | 2 +- repos/os/recipes/pkg/ping/hash | 2 +- repos/os/recipes/pkg/recall_fs/hash | 2 +- repos/os/recipes/pkg/record_play_mixer/hash | 2 +- repos/os/recipes/pkg/record_rom/hash | 2 +- repos/os/recipes/pkg/report_rom/hash | 2 +- repos/os/recipes/pkg/rom_filter/hash | 2 +- repos/os/recipes/pkg/rom_reporter/hash | 2 +- repos/os/recipes/pkg/terminal_crosslink/hash | 2 +- repos/os/recipes/pkg/test-audio_out/hash | 2 +- repos/os/recipes/pkg/test-black_hole/hash | 2 +- repos/os/recipes/pkg/test-capture/hash | 2 +- repos/os/recipes/pkg/test-clipboard/hash | 2 +- repos/os/recipes/pkg/test-dynamic_config/hash | 2 +- repos/os/recipes/pkg/test-fault_detection/hash | 2 +- repos/os/recipes/pkg/test-fs_packet/hash | 2 +- repos/os/recipes/pkg/test-fs_report/hash | 2 +- repos/os/recipes/pkg/test-fs_rom_update/hash | 2 +- repos/os/recipes/pkg/test-fs_rom_update_fs/hash | 2 +- repos/os/recipes/pkg/test-fs_rom_update_ram/hash | 2 +- repos/os/recipes/pkg/test-init/hash | 2 +- repos/os/recipes/pkg/test-init_loop/hash | 2 +- repos/os/recipes/pkg/test-lx_block/hash | 2 +- repos/os/recipes/pkg/test-nic_loopback/hash | 2 +- repos/os/recipes/pkg/test-nic_perf/hash | 2 +- repos/os/recipes/pkg/test-nic_perf_router/hash | 2 +- repos/os/recipes/pkg/test-part_block_ahdi/hash | 2 +- repos/os/recipes/pkg/test-part_block_disk/hash | 2 +- repos/os/recipes/pkg/test-part_block_gpt/hash | 2 +- repos/os/recipes/pkg/test-part_block_mbr/hash | 2 +- repos/os/recipes/pkg/test-path/hash | 2 +- repos/os/recipes/pkg/test-ram_fs_chunk/hash | 2 +- repos/os/recipes/pkg/test-read_only_rom/hash | 2 +- repos/os/recipes/pkg/test-report_rom/hash | 2 +- repos/os/recipes/pkg/test-resource_request/hash | 2 +- repos/os/recipes/pkg/test-resource_yield/hash | 2 +- repos/os/recipes/pkg/test-rom_filter/hash | 2 +- repos/os/recipes/pkg/test-rtc/hash | 2 +- repos/os/recipes/pkg/test-sandbox/hash | 2 +- repos/os/recipes/pkg/test-signal/hash | 2 +- repos/os/recipes/pkg/test-slab/hash | 2 +- repos/os/recipes/pkg/test-terminal_crosslink/hash | 2 +- repos/os/recipes/pkg/test-trace/hash | 2 +- repos/os/recipes/pkg/test-trace_buffer/hash | 2 +- repos/os/recipes/pkg/test-trace_logger/hash | 2 +- repos/os/recipes/pkg/test-utf8/hash | 2 +- repos/os/recipes/pkg/test-vfs_block/hash | 2 +- repos/os/recipes/pkg/test-vfs_stress_fs/hash | 2 +- repos/os/recipes/pkg/test-vfs_stress_ram/hash | 2 +- repos/os/recipes/pkg/test-weak_ptr/hash | 2 +- repos/os/recipes/pkg/top/hash | 2 +- repos/os/recipes/pkg/trace_logger/hash | 2 +- repos/os/recipes/pkg/vfs/hash | 2 +- repos/os/recipes/pkg/vfs_block/hash | 2 +- repos/os/recipes/pkg/waveform_player/hash | 2 +- repos/os/recipes/src/acpi/hash | 2 +- repos/os/recipes/src/ahci/hash | 2 +- repos/os/recipes/src/black_hole/hash | 2 +- repos/os/recipes/src/block_tester/hash | 2 +- repos/os/recipes/src/boot_fb/hash | 2 +- repos/os/recipes/src/cached_fs_rom/hash | 2 +- repos/os/recipes/src/chroot/hash | 2 +- repos/os/recipes/src/clipboard/hash | 2 +- repos/os/recipes/src/cpu_balancer/hash | 2 +- repos/os/recipes/src/cpu_burner/hash | 2 +- repos/os/recipes/src/dummy/hash | 2 +- repos/os/recipes/src/dummy_rtc/hash | 2 +- repos/os/recipes/src/dynamic_rom/hash | 2 +- repos/os/recipes/src/event_filter/hash | 2 +- repos/os/recipes/src/fb_sdl/hash | 2 +- repos/os/recipes/src/fs_report/hash | 2 +- repos/os/recipes/src/fs_rom/hash | 2 +- repos/os/recipes/src/global_keys_handler/hash | 2 +- repos/os/recipes/src/gui_fb/hash | 2 +- repos/os/recipes/src/init/hash | 2 +- repos/os/recipes/src/intel_gpu/hash | 2 +- repos/os/recipes/src/lan9118_nic/hash | 2 +- repos/os/recipes/src/linux_nic/hash | 2 +- repos/os/recipes/src/linux_rtc/hash | 2 +- repos/os/recipes/src/log_core/hash | 2 +- repos/os/recipes/src/log_terminal/hash | 2 +- repos/os/recipes/src/lx_block/hash | 2 +- repos/os/recipes/src/lx_fs/hash | 2 +- repos/os/recipes/src/mixer/hash | 2 +- repos/os/recipes/src/monitor/hash | 2 +- repos/os/recipes/src/nic_bridge/hash | 2 +- repos/os/recipes/src/nic_loopback/hash | 2 +- repos/os/recipes/src/nic_perf/hash | 2 +- repos/os/recipes/src/nic_router/hash | 2 +- repos/os/recipes/src/nic_uplink/hash | 2 +- repos/os/recipes/src/nit_focus/hash | 2 +- repos/os/recipes/src/nitpicker/hash | 2 +- repos/os/recipes/src/nvme/hash | 2 +- repos/os/recipes/src/part_block/hash | 2 +- repos/os/recipes/src/pbxa9_drivers/hash | 2 +- repos/os/recipes/src/pc_rtc/hash | 2 +- repos/os/recipes/src/pci_decode/hash | 2 +- repos/os/recipes/src/ping/hash | 2 +- repos/os/recipes/src/platform/hash | 2 +- repos/os/recipes/src/ps2/hash | 2 +- repos/os/recipes/src/record_play_mixer/hash | 2 +- repos/os/recipes/src/record_rom/hash | 2 +- repos/os/recipes/src/report_rom/hash | 2 +- repos/os/recipes/src/rom_filter/hash | 2 +- repos/os/recipes/src/rom_logger/hash | 2 +- repos/os/recipes/src/rom_reporter/hash | 2 +- repos/os/recipes/src/rom_to_file/hash | 2 +- repos/os/recipes/src/sandbox/hash | 2 +- repos/os/recipes/src/sequence/hash | 2 +- repos/os/recipes/src/shim/hash | 2 +- repos/os/recipes/src/terminal_crosslink/hash | 2 +- repos/os/recipes/src/terminal_log/hash | 2 +- repos/os/recipes/src/test-audio_out/hash | 2 +- repos/os/recipes/src/test-black_hole/hash | 2 +- repos/os/recipes/src/test-bomb/hash | 2 +- repos/os/recipes/src/test-capture/hash | 2 +- repos/os/recipes/src/test-clipboard/hash | 2 +- repos/os/recipes/src/test-dynamic_config/hash | 2 +- repos/os/recipes/src/test-fault_detection/hash | 2 +- repos/os/recipes/src/test-fs_packet/hash | 2 +- repos/os/recipes/src/test-fs_report/hash | 2 +- repos/os/recipes/src/test-immutable_rom/hash | 2 +- repos/os/recipes/src/test-init/hash | 2 +- repos/os/recipes/src/test-init_loop/hash | 2 +- repos/os/recipes/src/test-nic_loopback/hash | 2 +- repos/os/recipes/src/test-path/hash | 2 +- repos/os/recipes/src/test-ram_fs_chunk/hash | 2 +- repos/os/recipes/src/test-report_rom/hash | 2 +- repos/os/recipes/src/test-resource_request/hash | 2 +- repos/os/recipes/src/test-resource_yield/hash | 2 +- repos/os/recipes/src/test-rtc/hash | 2 +- repos/os/recipes/src/test-sandbox/hash | 2 +- repos/os/recipes/src/test-signal/hash | 2 +- repos/os/recipes/src/test-slab/hash | 2 +- repos/os/recipes/src/test-terminal_crosslink/hash | 2 +- repos/os/recipes/src/test-terminal_echo/hash | 2 +- repos/os/recipes/src/test-trace/hash | 2 +- repos/os/recipes/src/test-trace_buffer/hash | 2 +- repos/os/recipes/src/test-trace_logger/hash | 2 +- repos/os/recipes/src/test-utf8/hash | 2 +- repos/os/recipes/src/test-vfs_capture/hash | 2 +- repos/os/recipes/src/test-vfs_stress/hash | 2 +- repos/os/recipes/src/test-weak_ptr/hash | 2 +- repos/os/recipes/src/top/hash | 2 +- repos/os/recipes/src/trace_logger/hash | 2 +- repos/os/recipes/src/trace_policy/hash | 2 +- repos/os/recipes/src/trace_subject_reporter/hash | 2 +- repos/os/recipes/src/usb_block/hash | 2 +- repos/os/recipes/src/vfs/hash | 2 +- repos/os/recipes/src/vfs_block/hash | 2 +- repos/os/recipes/src/vfs_capture/hash | 2 +- repos/os/recipes/src/vfs_tap/hash | 2 +- repos/os/recipes/src/virt_qemu_drivers/hash | 2 +- repos/os/recipes/src/virtdev_rom/hash | 2 +- repos/os/recipes/src/virtio_fb/hash | 2 +- repos/os/recipes/src/virtio_input/hash | 2 +- repos/os/recipes/src/virtio_nic/hash | 2 +- repos/os/recipes/src/vmm/hash | 2 +- repos/os/recipes/src/waveform_player/hash | 2 +- repos/pc/recipes/pkg/pc_nic/hash | 2 +- repos/pc/recipes/pkg/pc_wifi/hash | 2 +- repos/pc/recipes/pkg/test_usb_host-pc/hash | 2 +- repos/pc/recipes/src/pc_intel_fb/hash | 2 +- repos/pc/recipes/src/pc_nic/hash | 2 +- repos/pc/recipes/src/pc_platform/hash | 2 +- repos/pc/recipes/src/pc_usb_host/hash | 2 +- repos/pc/recipes/src/pc_wifi/hash | 2 +- repos/ports/recipes/pkg/gdb_x86/hash | 2 +- repos/ports/recipes/pkg/lighttpd/hash | 2 +- repos/ports/recipes/pkg/report_dump/hash | 2 +- repos/ports/recipes/pkg/socat_tcp/hash | 2 +- repos/ports/recipes/pkg/system_shell/hash | 2 +- repos/ports/recipes/pkg/vbox5-nova-capture/hash | 2 +- repos/ports/recipes/pkg/vbox5-nova-sculpt/hash | 2 +- repos/ports/recipes/pkg/vbox6-capture/hash | 2 +- repos/ports/recipes/pkg/vbox6/hash | 2 +- repos/ports/recipes/src/gdb_support/hash | 2 +- repos/ports/recipes/src/vbox5-nova/hash | 2 +- repos/ports/recipes/src/vbox6/hash | 2 +- repos/ports/recipes/src/verify/hash | 2 +- 443 files changed, 443 insertions(+), 443 deletions(-) diff --git a/repos/base-fiasco/recipes/src/base-fiasco/hash b/repos/base-fiasco/recipes/src/base-fiasco/hash index 203b281694..7b847c95e6 100644 --- a/repos/base-fiasco/recipes/src/base-fiasco/hash +++ b/repos/base-fiasco/recipes/src/base-fiasco/hash @@ -1 +1 @@ -2024-11-19 82484aa58beccbef14406669d13425b07ebaf814 +2024-12-10 408b474f632eefaaa19db35812a9aa94a48e6bdb diff --git a/repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash b/repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash index 644982726c..ef89a5e1a5 100644 --- a/repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash +++ b/repos/base-foc/recipes/src/base-foc-imx6q_sabrelite/hash @@ -1 +1 @@ -2024-11-19 e8481f9398446af0a06a52ed1b1a15fe3a794158 +2024-12-10 4247239f4d3ce9a840be368ac9e054e8064c01c6 diff --git a/repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash b/repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash index 2c66f29c07..fba642577e 100644 --- a/repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash +++ b/repos/base-foc/recipes/src/base-foc-imx7d_sabre/hash @@ -1 +1 @@ -2024-11-19 d9eac6d28aaf218469bf2e7aa8b61a1e61e01a13 +2024-12-10 39609d3553422b8c7c6acff2db845c67c5f8912b diff --git a/repos/base-foc/recipes/src/base-foc-pbxa9/hash b/repos/base-foc/recipes/src/base-foc-pbxa9/hash index 1e746f9cfa..3e12c37bf0 100644 --- a/repos/base-foc/recipes/src/base-foc-pbxa9/hash +++ b/repos/base-foc/recipes/src/base-foc-pbxa9/hash @@ -1 +1 @@ -2024-11-19 c86f3687baae33dd51bbb27930c1ac0036c514bf +2024-12-10 7867db59531dc9086e76b74800125ee61ccc310e diff --git a/repos/base-foc/recipes/src/base-foc-pc/hash b/repos/base-foc/recipes/src/base-foc-pc/hash index 0a98cbbcf9..1cbe570570 100644 --- a/repos/base-foc/recipes/src/base-foc-pc/hash +++ b/repos/base-foc/recipes/src/base-foc-pc/hash @@ -1 +1 @@ -2024-11-19 c7d62dda817a1f9eb692a0668981b7aa9261915c +2024-12-10 3fc7c1b2cae2b9af835c97bf384b10411ec9c511 diff --git a/repos/base-foc/recipes/src/base-foc-rpi3/hash b/repos/base-foc/recipes/src/base-foc-rpi3/hash index a51178f37e..ae24ab1091 100644 --- a/repos/base-foc/recipes/src/base-foc-rpi3/hash +++ b/repos/base-foc/recipes/src/base-foc-rpi3/hash @@ -1 +1 @@ -2024-11-19 93a156766fcdb9b1b52d2f93d5a2094aba71dd62 +2024-12-10 68ee5bc5640e1d32c33f46072256d5b1c71bef9b diff --git a/repos/base-hw/recipes/src/base-hw-pbxa9/hash b/repos/base-hw/recipes/src/base-hw-pbxa9/hash index d25317063b..42afb46388 100644 --- a/repos/base-hw/recipes/src/base-hw-pbxa9/hash +++ b/repos/base-hw/recipes/src/base-hw-pbxa9/hash @@ -1 +1 @@ -2024-11-19 9d23402bda8a1dcdb1ef86c44e601f3478a898b5 +2024-12-10 ca4eabba0cf0313545712015ae6e9ebb4d968b2a diff --git a/repos/base-hw/recipes/src/base-hw-pc/hash b/repos/base-hw/recipes/src/base-hw-pc/hash index c6f5a6f9e8..0e8a145703 100644 --- a/repos/base-hw/recipes/src/base-hw-pc/hash +++ b/repos/base-hw/recipes/src/base-hw-pc/hash @@ -1 +1 @@ -2024-11-19 0e968bd738bbbbce8284473e738e32cdeb3d78da +2024-12-10 dad50ef2ab70aa5a7bd316ad116bfb1d59c5df5c diff --git a/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash b/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash index 93ecd2b578..5c22b9792a 100644 --- a/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash +++ b/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v7a/hash @@ -1 +1 @@ -2024-11-19 2debd3a78f11991a41624459098e5e900b80f0c4 +2024-12-10 58d8cb90d04a52f53a9797d964568dc0d1e7c45d diff --git a/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash b/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash index 3a78913e5c..5968b234b6 100644 --- a/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash +++ b/repos/base-hw/recipes/src/base-hw-virt_qemu_arm_v8a/hash @@ -1 +1 @@ -2024-11-19 efef5e8efd0955627ad4bcdaaafbca29bcb8604c +2024-12-10 1a5d21d207bb12797d285e1c3173cdaec7559afe diff --git a/repos/base-linux/recipes/src/base-linux/hash b/repos/base-linux/recipes/src/base-linux/hash index 1f4f8eca43..086788f3a4 100644 --- a/repos/base-linux/recipes/src/base-linux/hash +++ b/repos/base-linux/recipes/src/base-linux/hash @@ -1 +1 @@ -2024-11-19 4fcfa0ce999b6918b5a6249be23b361c37ab93a6 +2024-12-10 bcad5355367be159df49abba05f4975f8391ef4b diff --git a/repos/base-nova/recipes/src/base-nova/hash b/repos/base-nova/recipes/src/base-nova/hash index 17e2c2b3d9..02d5a1981a 100644 --- a/repos/base-nova/recipes/src/base-nova/hash +++ b/repos/base-nova/recipes/src/base-nova/hash @@ -1 +1 @@ -2024-11-19 a5b459cdc477384f4783a65dde7545d008235204 +2024-12-10 bb446406fbb1173c3f243fe323d5cad8423ff958 diff --git a/repos/base-okl4/recipes/src/base-okl4/hash b/repos/base-okl4/recipes/src/base-okl4/hash index 7db792ada1..596a952b40 100644 --- a/repos/base-okl4/recipes/src/base-okl4/hash +++ b/repos/base-okl4/recipes/src/base-okl4/hash @@ -1 +1 @@ -2024-11-19 108fb30d6aee379e8c7b7e1c635c5fb1929dc7f1 +2024-12-10 ed00306cd3e097b95bf2cbd0e9238ccb22d1f0c2 diff --git a/repos/base-pistachio/recipes/src/base-pistachio/hash b/repos/base-pistachio/recipes/src/base-pistachio/hash index f666939ef6..2aed2d2c75 100644 --- a/repos/base-pistachio/recipes/src/base-pistachio/hash +++ b/repos/base-pistachio/recipes/src/base-pistachio/hash @@ -1 +1 @@ -2024-11-19 8be9622271b691373f83334115e771fbbf65f39e +2024-12-10 d6f79e327a46e48890b32d90d2eb8be604a8534d diff --git a/repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash b/repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash index 3b333a3a5b..e5c807bc0c 100644 --- a/repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash +++ b/repos/base-sel4/recipes/src/base-sel4-imx6q_sabrelite/hash @@ -1 +1 @@ -2024-11-19 314cfdc1fb86dfd04926ac48d2aa9d49839baa86 +2024-12-10 4f6772b2b52b10c6462c2be4460981484d2f413f diff --git a/repos/base-sel4/recipes/src/base-sel4-x86/hash b/repos/base-sel4/recipes/src/base-sel4-x86/hash index cf40d90e9b..6a1cac443f 100644 --- a/repos/base-sel4/recipes/src/base-sel4-x86/hash +++ b/repos/base-sel4/recipes/src/base-sel4-x86/hash @@ -1 +1 @@ -2024-11-19 6d0d52161a7057e6ae1f1c639aa6ca0cdde13af4 +2024-12-10 e10d664cb493e322f029ef8a4bb22dabb3276137 diff --git a/repos/base/recipes/api/base/hash b/repos/base/recipes/api/base/hash index 482df7dead..44bbc47734 100644 --- a/repos/base/recipes/api/base/hash +++ b/repos/base/recipes/api/base/hash @@ -1 +1 @@ -2024-11-19 650a6ef52bdd42e857a60cb4b8752efcd8e1666c +2024-12-10 679ce4322aa21ae89a006562d0b7ee2525f49f79 diff --git a/repos/base/recipes/pkg/test-alarm/hash b/repos/base/recipes/pkg/test-alarm/hash index 782b5e2373..f9ea0dc704 100644 --- a/repos/base/recipes/pkg/test-alarm/hash +++ b/repos/base/recipes/pkg/test-alarm/hash @@ -1 +1 @@ -2024-11-19 36479e73eafef752764909ea6a43d70f311a21da +2024-12-10 3ffa5a2865cae514a74efae0db61d377b15d763c diff --git a/repos/base/recipes/pkg/test-ds_ownership/hash b/repos/base/recipes/pkg/test-ds_ownership/hash index c88d28dfa8..6d8d9d7bcb 100644 --- a/repos/base/recipes/pkg/test-ds_ownership/hash +++ b/repos/base/recipes/pkg/test-ds_ownership/hash @@ -1 +1 @@ -2024-11-19 d0b4de8db9df9292ff9961a60ab62cbfdc663310 +2024-12-10 bbe7bf0ec279122d824bee5c1195b01afc84dd4b diff --git a/repos/base/recipes/pkg/test-entrypoint/hash b/repos/base/recipes/pkg/test-entrypoint/hash index 41216ade6a..486badcce4 100644 --- a/repos/base/recipes/pkg/test-entrypoint/hash +++ b/repos/base/recipes/pkg/test-entrypoint/hash @@ -1 +1 @@ -2024-11-19 6f867291555833a69b995060498ef19141e28734 +2024-12-10 a7b0af32394148e425159d04d66eaf68d547e235 diff --git a/repos/base/recipes/pkg/test-log/hash b/repos/base/recipes/pkg/test-log/hash index 8228f78381..359d98afd7 100644 --- a/repos/base/recipes/pkg/test-log/hash +++ b/repos/base/recipes/pkg/test-log/hash @@ -1 +1 @@ -2024-11-19 c180fd59e8fea532a317fe86a98c7d4ede20ba12 +2024-12-10 2b25d7303e7618744a76789b0bd3b67e6ac6118c diff --git a/repos/base/recipes/pkg/test-mmio/hash b/repos/base/recipes/pkg/test-mmio/hash index 687dfb567c..6bb99a884f 100644 --- a/repos/base/recipes/pkg/test-mmio/hash +++ b/repos/base/recipes/pkg/test-mmio/hash @@ -1 +1 @@ -2024-11-19 8351d49090f1a065a1ed3d313e26399eb82024b4 +2024-12-10 53cd2f02ef23b3a499863c6d8ece98a34d5f6c1b diff --git a/repos/base/recipes/pkg/test-new_delete/hash b/repos/base/recipes/pkg/test-new_delete/hash index 5ce325c027..6f2a2c3811 100644 --- a/repos/base/recipes/pkg/test-new_delete/hash +++ b/repos/base/recipes/pkg/test-new_delete/hash @@ -1 +1 @@ -2024-11-19 33ba7a1936918d857e9a9293204ffc72d5ca0045 +2024-12-10 d598d8570fdf0fac3c44800df6d102a685fefd4f diff --git a/repos/base/recipes/pkg/test-reconstructible/hash b/repos/base/recipes/pkg/test-reconstructible/hash index 5a671c9a29..5021bbb37d 100644 --- a/repos/base/recipes/pkg/test-reconstructible/hash +++ b/repos/base/recipes/pkg/test-reconstructible/hash @@ -1 +1 @@ -2024-11-19 7494b6cdb82e6452208467bdf0a501fd4f9d3cc1 +2024-12-10 a0c00bbc6afd51d935a027aac2f99c724b511475 diff --git a/repos/base/recipes/pkg/test-registry/hash b/repos/base/recipes/pkg/test-registry/hash index 7981b29322..1edc9687cd 100644 --- a/repos/base/recipes/pkg/test-registry/hash +++ b/repos/base/recipes/pkg/test-registry/hash @@ -1 +1 @@ -2024-11-19 604a27ec657cd8a63a26a8c0db7df2154302795d +2024-12-10 562d5813faeaea8af1f0d0113eaf8a34bac68278 diff --git a/repos/base/recipes/pkg/test-rm_fault/hash b/repos/base/recipes/pkg/test-rm_fault/hash index 3c85951f6d..5cb4b01b9d 100644 --- a/repos/base/recipes/pkg/test-rm_fault/hash +++ b/repos/base/recipes/pkg/test-rm_fault/hash @@ -1 +1 @@ -2024-11-19 b5acdc41c6083e27be8967e004f6efff2e535fce +2024-12-10 768c693ffc03d646b6d17db9dba0e09b5824831a diff --git a/repos/base/recipes/pkg/test-rm_fault_no_nox/hash b/repos/base/recipes/pkg/test-rm_fault_no_nox/hash index 2b84a863f7..9d98ecf19f 100644 --- a/repos/base/recipes/pkg/test-rm_fault_no_nox/hash +++ b/repos/base/recipes/pkg/test-rm_fault_no_nox/hash @@ -1 +1 @@ -2024-11-19 782f658a608b1d14f4313c6b98dc6bff53ade3f4 +2024-12-10 b0c035bf11e2c58d7d1d63bf419f77f10bb5029c diff --git a/repos/base/recipes/pkg/test-rm_nested/hash b/repos/base/recipes/pkg/test-rm_nested/hash index 00e94de079..9cdb229d58 100644 --- a/repos/base/recipes/pkg/test-rm_nested/hash +++ b/repos/base/recipes/pkg/test-rm_nested/hash @@ -1 +1 @@ -2024-11-19 948a9bf7d631d8d33716a3dc8664ffe08077ccba +2024-12-10 aa6bb600bf3fa65d998647297a92bfd156bac23a diff --git a/repos/base/recipes/pkg/test-rm_stress/hash b/repos/base/recipes/pkg/test-rm_stress/hash index ebed5f6bee..681a8203dd 100644 --- a/repos/base/recipes/pkg/test-rm_stress/hash +++ b/repos/base/recipes/pkg/test-rm_stress/hash @@ -1 +1 @@ -2024-11-19 4f487af90f173db05174fe2ffd78aaadee630291 +2024-12-10 4f8eed217aacbb49e55c92f4a3478e6480ab7d44 diff --git a/repos/base/recipes/pkg/test-sanitizer/hash b/repos/base/recipes/pkg/test-sanitizer/hash index ad02a2675c..c617a7b2ae 100644 --- a/repos/base/recipes/pkg/test-sanitizer/hash +++ b/repos/base/recipes/pkg/test-sanitizer/hash @@ -1 +1 @@ -2024-11-19 6cbf337fb17bb1cd61548caa69b43b032e11cfda +2024-12-10 4446fdee68a430143a7f3fad9967cce025313cda diff --git a/repos/base/recipes/pkg/test-stack_smash/hash b/repos/base/recipes/pkg/test-stack_smash/hash index 2ccdaafb0e..f50ef1c25f 100644 --- a/repos/base/recipes/pkg/test-stack_smash/hash +++ b/repos/base/recipes/pkg/test-stack_smash/hash @@ -1 +1 @@ -2024-11-19 ab67fa4ed6fd691c3aee87c0786a0f57036a97b4 +2024-12-10 86c625e9f1ee148ca591133b949201eb8e35bd62 diff --git a/repos/base/recipes/pkg/test-synced_interface/hash b/repos/base/recipes/pkg/test-synced_interface/hash index 41bab54037..90c581249d 100644 --- a/repos/base/recipes/pkg/test-synced_interface/hash +++ b/repos/base/recipes/pkg/test-synced_interface/hash @@ -1 +1 @@ -2024-11-19 80fd59216e9c833a1fa481ba05deb3037929e718 +2024-12-10 4a3be510164139564f2c0fee666b2a44440c1b63 diff --git a/repos/base/recipes/pkg/test-timer/hash b/repos/base/recipes/pkg/test-timer/hash index 81606ef53b..a66493bc0b 100644 --- a/repos/base/recipes/pkg/test-timer/hash +++ b/repos/base/recipes/pkg/test-timer/hash @@ -1 +1 @@ -2024-11-19 eb422bc15bca23607dd821aa9da5d0e00ea97dab +2024-12-10 ca74ef5ce15156297109d276e4c84de0eb53ea1a diff --git a/repos/base/recipes/pkg/test-tls/hash b/repos/base/recipes/pkg/test-tls/hash index 35c99d6f54..e2b31f1e00 100644 --- a/repos/base/recipes/pkg/test-tls/hash +++ b/repos/base/recipes/pkg/test-tls/hash @@ -1 +1 @@ -2024-11-19 a6b94415e27eb0d2cc74b7907a7911d2ffddc5e0 +2024-12-10 78cfc1241bbeb91375ea7d868dc643da2cb15fdd diff --git a/repos/base/recipes/pkg/test-token/hash b/repos/base/recipes/pkg/test-token/hash index 1a68bb1c71..2ce2c30d7b 100644 --- a/repos/base/recipes/pkg/test-token/hash +++ b/repos/base/recipes/pkg/test-token/hash @@ -1 +1 @@ -2024-11-19 83f699412b71c1280ce4a129d5b5218a51397d42 +2024-12-10 87328a1454e601631109593eea99f67d67f6cb58 diff --git a/repos/base/recipes/pkg/test-xml_generator/hash b/repos/base/recipes/pkg/test-xml_generator/hash index d882341377..e91485077f 100644 --- a/repos/base/recipes/pkg/test-xml_generator/hash +++ b/repos/base/recipes/pkg/test-xml_generator/hash @@ -1 +1 @@ -2024-11-19 3e2848ef89c80d00c8c8302ded21750df3b6eeeb +2024-12-10 24326fce4a9a146c83a56b39ac47225704842e77 diff --git a/repos/base/recipes/pkg/test-xml_node/hash b/repos/base/recipes/pkg/test-xml_node/hash index b96ea39d4f..455960da96 100644 --- a/repos/base/recipes/pkg/test-xml_node/hash +++ b/repos/base/recipes/pkg/test-xml_node/hash @@ -1 +1 @@ -2024-11-19 97f0fd82c375959c6cdb1d5ccd2d8ef0cb2a7fe8 +2024-12-10 ca7dc59df2e889b786ba71945267bc2312921aa2 diff --git a/repos/base/recipes/src/test-alarm/hash b/repos/base/recipes/src/test-alarm/hash index 6684be347b..873d584733 100644 --- a/repos/base/recipes/src/test-alarm/hash +++ b/repos/base/recipes/src/test-alarm/hash @@ -1 +1 @@ -2024-11-19 7842d5de9532df859b9f1a3a2d404efa7dd90d80 +2024-12-10 4c5fdf8c9ec55ce700941db5e92e762b59eadf9d diff --git a/repos/base/recipes/src/test-ds_ownership/hash b/repos/base/recipes/src/test-ds_ownership/hash index 6ac9e3a6ad..33f5e1bb52 100644 --- a/repos/base/recipes/src/test-ds_ownership/hash +++ b/repos/base/recipes/src/test-ds_ownership/hash @@ -1 +1 @@ -2024-11-19 678a2d50b6571771925f2653589b57ed7ba845f0 +2024-12-10 4b2f31583181dd5ea91853d185a3891b5de51991 diff --git a/repos/base/recipes/src/test-entrypoint/hash b/repos/base/recipes/src/test-entrypoint/hash index 3b3f7ef88e..512d851192 100644 --- a/repos/base/recipes/src/test-entrypoint/hash +++ b/repos/base/recipes/src/test-entrypoint/hash @@ -1 +1 @@ -2024-11-19 9ba0f46675d2e0559cee218ecbc88cdc3687121a +2024-12-10 4ce6ec42b350c805f049a20a150de0bdb9450870 diff --git a/repos/base/recipes/src/test-log/hash b/repos/base/recipes/src/test-log/hash index 0717accfc9..f22d23e9e2 100644 --- a/repos/base/recipes/src/test-log/hash +++ b/repos/base/recipes/src/test-log/hash @@ -1 +1 @@ -2024-11-19 407f8b62ecc7038ee1c5a0d52c4bc5e00fe225de +2024-12-10 97a0bfdbe1db15c82b063e3db2047e4b0137951d diff --git a/repos/base/recipes/src/test-mmio/hash b/repos/base/recipes/src/test-mmio/hash index 042ace7fe9..67f9201c98 100644 --- a/repos/base/recipes/src/test-mmio/hash +++ b/repos/base/recipes/src/test-mmio/hash @@ -1 +1 @@ -2024-11-19 4a848d47cc64bc4224f54912a3ec452156d6f3cd +2024-12-10 19da5bfd961e5bd3388a6bf771e902edf8720fcc diff --git a/repos/base/recipes/src/test-new_delete/hash b/repos/base/recipes/src/test-new_delete/hash index f908a8dd08..53677cfa07 100644 --- a/repos/base/recipes/src/test-new_delete/hash +++ b/repos/base/recipes/src/test-new_delete/hash @@ -1 +1 @@ -2024-11-19 f65097697e558c0f05cc7156c6554f4bb17cca93 +2024-12-10 0f5f88878de68adcbadca0ff916f6550fe166691 diff --git a/repos/base/recipes/src/test-reconstructible/hash b/repos/base/recipes/src/test-reconstructible/hash index 162cecd6f2..17d95bf9a1 100644 --- a/repos/base/recipes/src/test-reconstructible/hash +++ b/repos/base/recipes/src/test-reconstructible/hash @@ -1 +1 @@ -2024-11-19 15fd9687267e027e22f77a88dd1e50d17218b581 +2024-12-10 c462994f5183b4fa2e7b510953c61a47758efc8f diff --git a/repos/base/recipes/src/test-registry/hash b/repos/base/recipes/src/test-registry/hash index fd5d3eec4e..9a81e59be7 100644 --- a/repos/base/recipes/src/test-registry/hash +++ b/repos/base/recipes/src/test-registry/hash @@ -1 +1 @@ -2024-11-19 6655f3f091e4df50a5177edd21d979a1a6ffac59 +2024-12-10 73f1c2695f605e5ffb4b436ba46861408a1808f5 diff --git a/repos/base/recipes/src/test-rm_fault/hash b/repos/base/recipes/src/test-rm_fault/hash index cc7d2c09a8..a28c2418cb 100644 --- a/repos/base/recipes/src/test-rm_fault/hash +++ b/repos/base/recipes/src/test-rm_fault/hash @@ -1 +1 @@ -2024-11-19 d40e79d840f66e89110caa0d3c21b416fd65c0c5 +2024-12-10 edb8428080fb555fce9b579b27d5f1a7b64ba98d diff --git a/repos/base/recipes/src/test-rm_nested/hash b/repos/base/recipes/src/test-rm_nested/hash index e854b2b07b..0d33ecafb5 100644 --- a/repos/base/recipes/src/test-rm_nested/hash +++ b/repos/base/recipes/src/test-rm_nested/hash @@ -1 +1 @@ -2024-11-19 721a9634025955b105f4a82c093a5058fe741f85 +2024-12-10 58e5fe045c8f3364f940b1f279b00feb3a490b31 diff --git a/repos/base/recipes/src/test-rm_stress/hash b/repos/base/recipes/src/test-rm_stress/hash index 0f4bcdb130..9879fc1814 100644 --- a/repos/base/recipes/src/test-rm_stress/hash +++ b/repos/base/recipes/src/test-rm_stress/hash @@ -1 +1 @@ -2024-11-19 fced932d7f9077b2b92bc84a31da4a23a1a909b7 +2024-12-10 ae413cc25fbcced7f064f2ec3483c85e2add1043 diff --git a/repos/base/recipes/src/test-sanitizer/hash b/repos/base/recipes/src/test-sanitizer/hash index 589a8254be..486d8f0af7 100644 --- a/repos/base/recipes/src/test-sanitizer/hash +++ b/repos/base/recipes/src/test-sanitizer/hash @@ -1 +1 @@ -2024-11-19 13b62a19e02caebc99f8522b1ab65ed763e29844 +2024-12-10 4721bcab9444c1e20213fc97332435c6a8003c4d diff --git a/repos/base/recipes/src/test-segfault/hash b/repos/base/recipes/src/test-segfault/hash index 8c3a77d292..8d18b996a1 100644 --- a/repos/base/recipes/src/test-segfault/hash +++ b/repos/base/recipes/src/test-segfault/hash @@ -1 +1 @@ -2024-11-19 d1fa9839340b545f1cb1a8ad6a6764d297de5ae4 +2024-12-10 192c06392264f53e181c6f92a5bbcb86273e3918 diff --git a/repos/base/recipes/src/test-stack_smash/hash b/repos/base/recipes/src/test-stack_smash/hash index 6471b122ca..3dd0b6e546 100644 --- a/repos/base/recipes/src/test-stack_smash/hash +++ b/repos/base/recipes/src/test-stack_smash/hash @@ -1 +1 @@ -2024-11-19 d437d7f93f590fa30292c40c051eaefd1fc17feb +2024-12-10 30d45f61656e670e8cb5e18b060a14f356b88ace diff --git a/repos/base/recipes/src/test-synced_interface/hash b/repos/base/recipes/src/test-synced_interface/hash index 76385a6fdc..e17aa8b73e 100644 --- a/repos/base/recipes/src/test-synced_interface/hash +++ b/repos/base/recipes/src/test-synced_interface/hash @@ -1 +1 @@ -2024-11-19 9fc1168e0576737a8b5d131c8c8c66be486a63c0 +2024-12-10 99611181980e7a782fd155eaf36525218350abd2 diff --git a/repos/base/recipes/src/test-timer/hash b/repos/base/recipes/src/test-timer/hash index 6eb2e3ca99..42b21c9985 100644 --- a/repos/base/recipes/src/test-timer/hash +++ b/repos/base/recipes/src/test-timer/hash @@ -1 +1 @@ -2024-11-19 689a20fecdae4d72494bcbce0d253b56bad5d7a2 +2024-12-10 d6fa422e41e40f7da917ea6fc4eb75896945c7ec diff --git a/repos/base/recipes/src/test-tls/hash b/repos/base/recipes/src/test-tls/hash index bf6a6b3e48..2f0a37577d 100644 --- a/repos/base/recipes/src/test-tls/hash +++ b/repos/base/recipes/src/test-tls/hash @@ -1 +1 @@ -2024-11-19 ae2d7f33edf9640e277dd45bca7c88e7d7e73df0 +2024-12-10 380e2f625f1289606d0b1366829b640e0805eb7c diff --git a/repos/base/recipes/src/test-token/hash b/repos/base/recipes/src/test-token/hash index 8772fb0c6d..588653869d 100644 --- a/repos/base/recipes/src/test-token/hash +++ b/repos/base/recipes/src/test-token/hash @@ -1 +1 @@ -2024-11-19 cd712d0d6942a7b646c42de7a0f6bc6e1df5a83c +2024-12-10 906f19242a142f336c9abec8924594920cb68dcd diff --git a/repos/base/recipes/src/test-xml_generator/hash b/repos/base/recipes/src/test-xml_generator/hash index 06ef4cb5df..817eeb17c8 100644 --- a/repos/base/recipes/src/test-xml_generator/hash +++ b/repos/base/recipes/src/test-xml_generator/hash @@ -1 +1 @@ -2024-11-19 514bebef8077ad2144756ee121a03ec383a76900 +2024-12-10 da695ee628e068a05af6e85177612a94409573a5 diff --git a/repos/base/recipes/src/test-xml_node/hash b/repos/base/recipes/src/test-xml_node/hash index 460fa8fcd8..92e06208d5 100644 --- a/repos/base/recipes/src/test-xml_node/hash +++ b/repos/base/recipes/src/test-xml_node/hash @@ -1 +1 @@ -2024-11-19 7f3629531edba64ddb5e524e2bea0cde76bb854d +2024-12-10 1510f2592e0579d9e404288e020b2096d652e465 diff --git a/repos/dde_bsd/recipes/pkg/bsd_audio/hash b/repos/dde_bsd/recipes/pkg/bsd_audio/hash index f43d6502a2..60b199da6d 100644 --- a/repos/dde_bsd/recipes/pkg/bsd_audio/hash +++ b/repos/dde_bsd/recipes/pkg/bsd_audio/hash @@ -1 +1 @@ -2024-11-19 1837e2cb3b521b898a24111036be3461ba831d7d +2024-12-10 19af2857787095f29ff1156ca12921a84b8c2c88 diff --git a/repos/dde_bsd/recipes/src/bsd_audio/hash b/repos/dde_bsd/recipes/src/bsd_audio/hash index 6848db0a91..14cbe64c8c 100644 --- a/repos/dde_bsd/recipes/src/bsd_audio/hash +++ b/repos/dde_bsd/recipes/src/bsd_audio/hash @@ -1 +1 @@ -2024-11-19 97060dde5eb351c966d17e371f9b2cca52ec2aed +2024-12-10 0cb59fb39e1ef2c557804fe74904f262e7cc990d diff --git a/repos/dde_ipxe/recipes/pkg/ipxe_nic/hash b/repos/dde_ipxe/recipes/pkg/ipxe_nic/hash index 8bd736f15b..be8d3b9352 100644 --- a/repos/dde_ipxe/recipes/pkg/ipxe_nic/hash +++ b/repos/dde_ipxe/recipes/pkg/ipxe_nic/hash @@ -1 +1 @@ -2024-11-19 7a919345a769a4e56c436e2fd65a15a757b26b5b +2024-12-10 89e83d53d29fe7dd5d37b53d53715e2e8370c517 diff --git a/repos/dde_ipxe/recipes/src/ipxe_nic/hash b/repos/dde_ipxe/recipes/src/ipxe_nic/hash index ed9ec0da6f..ac5714ac6c 100644 --- a/repos/dde_ipxe/recipes/src/ipxe_nic/hash +++ b/repos/dde_ipxe/recipes/src/ipxe_nic/hash @@ -1 +1 @@ -2024-11-19 35ac9eb4a5aaf60f48737a7647f7e404ce277c52 +2024-12-10 88ed31a9ac73fdb34464241cd03d308382dc9b19 diff --git a/repos/dde_linux/recipes/pkg/wireguard/hash b/repos/dde_linux/recipes/pkg/wireguard/hash index a9c29e11b9..c8682cc48e 100644 --- a/repos/dde_linux/recipes/pkg/wireguard/hash +++ b/repos/dde_linux/recipes/pkg/wireguard/hash @@ -1 +1 @@ -2024-11-19 dc9d740da58bcb483dc708817daaffb30c492f18 +2024-12-10 5709222115ce2978146c734b9d64ed8ee41d8c66 diff --git a/repos/dde_linux/recipes/src/usb_hid/hash b/repos/dde_linux/recipes/src/usb_hid/hash index 279a890bd1..ca73e18d7a 100644 --- a/repos/dde_linux/recipes/src/usb_hid/hash +++ b/repos/dde_linux/recipes/src/usb_hid/hash @@ -1 +1 @@ -2024-11-19 c740c136f18d5b5354805713ac2a018b07b9f199 +2024-12-10 a1bc3222e4396d1234079add6515167e679c0fa5 diff --git a/repos/dde_linux/recipes/src/usb_net/hash b/repos/dde_linux/recipes/src/usb_net/hash index 535b36133c..807f4ae3f4 100644 --- a/repos/dde_linux/recipes/src/usb_net/hash +++ b/repos/dde_linux/recipes/src/usb_net/hash @@ -1 +1 @@ -2024-11-19 864da777b73ba39e5d557108cdcf51622752298f +2024-12-10 a52995e90a5ed10b21494ee62c033feb5c30d491 diff --git a/repos/dde_linux/recipes/src/vfs_lxip/hash b/repos/dde_linux/recipes/src/vfs_lxip/hash index 761374186f..e491fd2a23 100644 --- a/repos/dde_linux/recipes/src/vfs_lxip/hash +++ b/repos/dde_linux/recipes/src/vfs_lxip/hash @@ -1 +1 @@ -2024-11-19 1fe79c695ac8d0e3cbcb167954876fa5847656af +2024-12-10 37f67ddb7b697b6dabfd5d9a9c2a38a3ea85576a diff --git a/repos/dde_linux/recipes/src/wireguard/hash b/repos/dde_linux/recipes/src/wireguard/hash index 6d3a8704d5..80d7380329 100644 --- a/repos/dde_linux/recipes/src/wireguard/hash +++ b/repos/dde_linux/recipes/src/wireguard/hash @@ -1 +1 @@ -2024-11-19 67dfc8b7459ec7546e58d64f3b68552a5029f1d0 +2024-12-10 5e4d8594da6140470549e3a701991486a04fb42c diff --git a/repos/dde_rump/recipes/pkg/ext2_fs/hash b/repos/dde_rump/recipes/pkg/ext2_fs/hash index 7acb7e1ce5..e9296d4b5f 100644 --- a/repos/dde_rump/recipes/pkg/ext2_fs/hash +++ b/repos/dde_rump/recipes/pkg/ext2_fs/hash @@ -1 +1 @@ -2024-11-19 ca112d157ca569ee42f5d31e1fa4ac4be5a70388 +2024-12-10 ac76eef4118d804b780b7580fa05d5755a21ae24 diff --git a/repos/dde_rump/recipes/src/vfs_rump/hash b/repos/dde_rump/recipes/src/vfs_rump/hash index 2a526dbe48..c9b1717fba 100644 --- a/repos/dde_rump/recipes/src/vfs_rump/hash +++ b/repos/dde_rump/recipes/src/vfs_rump/hash @@ -1 +1 @@ -2024-11-19 d5ca8bb47ac61714436f6e92e68faf35b6938aee +2024-12-10 55f332a8a4411482acdcfbb1fbf23011ff06744d diff --git a/repos/demo/recipes/src/demo/hash b/repos/demo/recipes/src/demo/hash index 0c8f934811..f43413be51 100644 --- a/repos/demo/recipes/src/demo/hash +++ b/repos/demo/recipes/src/demo/hash @@ -1 +1 @@ -2024-11-19 c43fde7bd245aa5c0dd65998854ab3f64704bedd +2024-12-10 a3ea43f1df828757d65692f65c98381790eea07a diff --git a/repos/gems/recipes/pkg/backdrop/hash b/repos/gems/recipes/pkg/backdrop/hash index 3949378759..8bd84cf5ac 100644 --- a/repos/gems/recipes/pkg/backdrop/hash +++ b/repos/gems/recipes/pkg/backdrop/hash @@ -1 +1 @@ -2024-11-19 3eeb0bc7293a7166b4d877921fc6970c64fe222c +2024-12-10 2331ab258b8693a25f0ed076caf8b64409b0057f diff --git a/repos/gems/recipes/pkg/cpu_load_display/hash b/repos/gems/recipes/pkg/cpu_load_display/hash index 4aaf27aaec..42142386ff 100644 --- a/repos/gems/recipes/pkg/cpu_load_display/hash +++ b/repos/gems/recipes/pkg/cpu_load_display/hash @@ -1 +1 @@ -2024-11-19 5fdd81e0300ecb3e7fbcb01b514d4cbd23504b7e +2024-12-10 80b7035543eb588baa89b5617f7c4e30dc0ac787 diff --git a/repos/gems/recipes/pkg/dbg_download/hash b/repos/gems/recipes/pkg/dbg_download/hash index 514adc9128..cc69c0ee3c 100644 --- a/repos/gems/recipes/pkg/dbg_download/hash +++ b/repos/gems/recipes/pkg/dbg_download/hash @@ -1 +1 @@ -2024-11-19 89a6be4572e06c1cc0497749d3744bb3a48408b2 +2024-12-10 6cfb903adb9b3a37335b8a153735ea5f2add9479 diff --git a/repos/gems/recipes/pkg/depot_download/hash b/repos/gems/recipes/pkg/depot_download/hash index 5e4a779b8c..301adc4e59 100644 --- a/repos/gems/recipes/pkg/depot_download/hash +++ b/repos/gems/recipes/pkg/depot_download/hash @@ -1 +1 @@ -2024-11-19 c3f66c0f2bb1948fd9b2b8e91ab02785727211f3 +2024-12-10 a8b9d2d9dd065af5c04cd1f30de1fa71c5e88a2e diff --git a/repos/gems/recipes/pkg/drivers_nic-pc/hash b/repos/gems/recipes/pkg/drivers_nic-pc/hash index 955396bbf5..a76962d2f4 100644 --- a/repos/gems/recipes/pkg/drivers_nic-pc/hash +++ b/repos/gems/recipes/pkg/drivers_nic-pc/hash @@ -1 +1 @@ -2024-11-19 05ed49d8e008699b4026839a1845a4112f2bdabc +2024-12-10 26477dd8676b62817d164d071160f668a91ddc29 diff --git a/repos/gems/recipes/pkg/file_vault/hash b/repos/gems/recipes/pkg/file_vault/hash index 54073c402a..f234b8d6e1 100644 --- a/repos/gems/recipes/pkg/file_vault/hash +++ b/repos/gems/recipes/pkg/file_vault/hash @@ -1 +1 @@ -2024-11-19 d75bd3eda46e45b89c70fddf4f1463302d01353e +2024-12-10 7e3d8b208623ee10fd0ad66a7ea3ca7568588670 diff --git a/repos/gems/recipes/pkg/fonts_fs/hash b/repos/gems/recipes/pkg/fonts_fs/hash index cfe79d1d39..37e4e47929 100644 --- a/repos/gems/recipes/pkg/fonts_fs/hash +++ b/repos/gems/recipes/pkg/fonts_fs/hash @@ -1 +1 @@ -2024-11-19 f5894f25b47b8f46c10352fdeeebff089d5bccb4 +2024-12-10 f3e78ab0f567830d43357ec5d426a63ec7227199 diff --git a/repos/gems/recipes/pkg/goa-linux/hash b/repos/gems/recipes/pkg/goa-linux/hash index 422aa90c3c..d559c9cd22 100644 --- a/repos/gems/recipes/pkg/goa-linux/hash +++ b/repos/gems/recipes/pkg/goa-linux/hash @@ -1 +1 @@ -2024-11-19 21821b3e0c7a7144305bf42d1ef03b835e50a0a1 +2024-12-10 8a4e1382b17220274f1de1b0c9896dceee443bda diff --git a/repos/gems/recipes/pkg/goa/hash b/repos/gems/recipes/pkg/goa/hash index 50873f17f5..d217eda59a 100644 --- a/repos/gems/recipes/pkg/goa/hash +++ b/repos/gems/recipes/pkg/goa/hash @@ -1 +1 @@ -2024-11-19 fa1ff6e73420da20143f792ff649ca4815357f22 +2024-12-10 dde12ebb8894f0152a11c7b4c50b589e2dd6c8fe diff --git a/repos/gems/recipes/pkg/motif_decorator/hash b/repos/gems/recipes/pkg/motif_decorator/hash index b2c9c48805..8891bda06f 100644 --- a/repos/gems/recipes/pkg/motif_decorator/hash +++ b/repos/gems/recipes/pkg/motif_decorator/hash @@ -1 +1 @@ -2024-11-19 57aa308f7727a778ea05bf7027ce21d2c3f107c5 +2024-12-10 f6e7dcb77f24f2f69afe225449744ca3f78e94ac diff --git a/repos/gems/recipes/pkg/motif_wm/hash b/repos/gems/recipes/pkg/motif_wm/hash index 0202160041..fcaa6ee2ed 100644 --- a/repos/gems/recipes/pkg/motif_wm/hash +++ b/repos/gems/recipes/pkg/motif_wm/hash @@ -1 +1 @@ -2024-11-19 719db964a5921dbc7b0d1471c84f7380eb5b96cd +2024-12-10 bf64013f34ef01064fe3d5987a71261e97122723 diff --git a/repos/gems/recipes/pkg/nano3d/hash b/repos/gems/recipes/pkg/nano3d/hash index 6997403311..269f63493a 100644 --- a/repos/gems/recipes/pkg/nano3d/hash +++ b/repos/gems/recipes/pkg/nano3d/hash @@ -1 +1 @@ -2024-11-19 3d81e7a12de4179bc152746b3a02cea8cf39cb29 +2024-12-10 694f2a65b464870028354ca9e73a877b80b3ae56 diff --git a/repos/gems/recipes/pkg/osci/hash b/repos/gems/recipes/pkg/osci/hash index 65e150eb40..f1e1b2762e 100644 --- a/repos/gems/recipes/pkg/osci/hash +++ b/repos/gems/recipes/pkg/osci/hash @@ -1 +1 @@ -2024-11-19 41f205a3ee07c3dbc801dade26daee64fbab30d3 +2024-12-10 cabdf37416c957c805a56818741bb03f1df5ef91 diff --git a/repos/gems/recipes/pkg/rom_osci/hash b/repos/gems/recipes/pkg/rom_osci/hash index 4bd7217a38..08a954e776 100644 --- a/repos/gems/recipes/pkg/rom_osci/hash +++ b/repos/gems/recipes/pkg/rom_osci/hash @@ -1 +1 @@ -2024-11-19 aed3c9dae2b0be7449436e7330ec527c52c2d320 +2024-12-10 293004c1e767a5fc2d5ac496c458e957f3fe8950 diff --git a/repos/gems/recipes/pkg/screenshot_trigger/hash b/repos/gems/recipes/pkg/screenshot_trigger/hash index 8492037502..60e89efc97 100644 --- a/repos/gems/recipes/pkg/screenshot_trigger/hash +++ b/repos/gems/recipes/pkg/screenshot_trigger/hash @@ -1 +1 @@ -2024-11-19 51efdef9820f3086cad05794591d9793007c1c19 +2024-12-10 d8ef08caaec6af88d1228832f4afe797e36342a8 diff --git a/repos/gems/recipes/pkg/sculpt/hash b/repos/gems/recipes/pkg/sculpt/hash index 88b5126b25..0b30329965 100644 --- a/repos/gems/recipes/pkg/sculpt/hash +++ b/repos/gems/recipes/pkg/sculpt/hash @@ -1 +1 @@ -2024-11-19 692923335fabc5893c262a476af9256b5d498187 +2024-12-10 23989d36ce92a2d5ad8a46045e9de5f748d32c36 diff --git a/repos/gems/recipes/pkg/sculpt_distribution-pc/hash b/repos/gems/recipes/pkg/sculpt_distribution-pc/hash index f29f9e38bf..3242607fc6 100644 --- a/repos/gems/recipes/pkg/sculpt_distribution-pc/hash +++ b/repos/gems/recipes/pkg/sculpt_distribution-pc/hash @@ -1 +1 @@ -2024-11-19 761397fbf444c3ae9669e5fe246f36b430b9d532 +2024-12-10 72043fd604d902d5d110c585469c559b627481b0 diff --git a/repos/gems/recipes/pkg/sculpt_distribution/hash b/repos/gems/recipes/pkg/sculpt_distribution/hash index 595cbd679c..514737d156 100644 --- a/repos/gems/recipes/pkg/sculpt_distribution/hash +++ b/repos/gems/recipes/pkg/sculpt_distribution/hash @@ -1 +1 @@ -2024-11-19 17d50fb10f0f964266f79d11185b7279e74ef71d +2024-12-10 f4f146eb4ab7c42e202d4592c295f5ea9a5d0a80 diff --git a/repos/gems/recipes/pkg/sculpt_drivers-pc/hash b/repos/gems/recipes/pkg/sculpt_drivers-pc/hash index 0a8ff4aa1b..798345999f 100644 --- a/repos/gems/recipes/pkg/sculpt_drivers-pc/hash +++ b/repos/gems/recipes/pkg/sculpt_drivers-pc/hash @@ -1 +1 @@ -2024-11-19 70717f5a6d90273add37ed460a0f89362e3328c2 +2024-12-10 83a0717a1eac7432c18564b449737a156d6f227a diff --git a/repos/gems/recipes/pkg/sticks_blue_backdrop/hash b/repos/gems/recipes/pkg/sticks_blue_backdrop/hash index 9b60aca9ac..874a453e04 100644 --- a/repos/gems/recipes/pkg/sticks_blue_backdrop/hash +++ b/repos/gems/recipes/pkg/sticks_blue_backdrop/hash @@ -1 +1 @@ -2024-11-19 b2c599d826d1e9587b3e919db4df8295c3684523 +2024-12-10 254be4540e5ee8ed1c2035f04e013c643c104abe diff --git a/repos/gems/recipes/pkg/terminal/hash b/repos/gems/recipes/pkg/terminal/hash index 90f9c922d7..ca5a605f8e 100644 --- a/repos/gems/recipes/pkg/terminal/hash +++ b/repos/gems/recipes/pkg/terminal/hash @@ -1 +1 @@ -2024-11-19 c9889655cf6502e2fa1bbb13830b056967dd8e02 +2024-12-10 9a939261eba41cb34748e9bf0b611037f3be7bb4 diff --git a/repos/gems/recipes/pkg/test-depot_query_index/hash b/repos/gems/recipes/pkg/test-depot_query_index/hash index 9cfa53d52c..a2b071cbea 100644 --- a/repos/gems/recipes/pkg/test-depot_query_index/hash +++ b/repos/gems/recipes/pkg/test-depot_query_index/hash @@ -1 +1 @@ -2024-11-19 c53bd04587ccf6260e98f39b1b2cca0bc5674297 +2024-12-10 23d88707fd9bb388dd04148062e72125991b8158 diff --git a/repos/gems/recipes/pkg/test-file_vault/hash b/repos/gems/recipes/pkg/test-file_vault/hash index 2b6bb3b025..20141b14fd 100644 --- a/repos/gems/recipes/pkg/test-file_vault/hash +++ b/repos/gems/recipes/pkg/test-file_vault/hash @@ -1 +1 @@ -2024-11-19 c075d838a56161d7287d05bbff80d7a643a49257 +2024-12-10 73689b38ac3de066d8e079030c5b921e0a45995a diff --git a/repos/gems/recipes/pkg/test-file_vault_no_entropy/hash b/repos/gems/recipes/pkg/test-file_vault_no_entropy/hash index 99c051f4cf..b7b977fcf6 100644 --- a/repos/gems/recipes/pkg/test-file_vault_no_entropy/hash +++ b/repos/gems/recipes/pkg/test-file_vault_no_entropy/hash @@ -1 +1 @@ -2024-11-19 feda749d1541fdc93edefad7a4d0a2af3d452ed7 +2024-12-10 9057d257a8ccff10e35626860466c7b7fea8aef7 diff --git a/repos/gems/recipes/pkg/test-fs_tool/hash b/repos/gems/recipes/pkg/test-fs_tool/hash index e509226076..4968e49ea4 100644 --- a/repos/gems/recipes/pkg/test-fs_tool/hash +++ b/repos/gems/recipes/pkg/test-fs_tool/hash @@ -1 +1 @@ -2024-11-19 03564e62cf628a90fdaab9919e03e9f945b5793f +2024-12-10 a6ff69ef90ae427a17233b407b25e017b93a09c8 diff --git a/repos/gems/recipes/pkg/test-libc_vfs_audit/hash b/repos/gems/recipes/pkg/test-libc_vfs_audit/hash index 6aa7e1d5b1..ef302ab601 100644 --- a/repos/gems/recipes/pkg/test-libc_vfs_audit/hash +++ b/repos/gems/recipes/pkg/test-libc_vfs_audit/hash @@ -1 +1 @@ -2024-11-19 d35d0346d2e53a788047b967084b3e3bd5ceda4c +2024-12-10 84c5ea804a45e6fa72ddce8c70bf8b5a80f234ad diff --git a/repos/gems/recipes/pkg/themed_decorator/hash b/repos/gems/recipes/pkg/themed_decorator/hash index 05917411aa..2f0829b7d3 100644 --- a/repos/gems/recipes/pkg/themed_decorator/hash +++ b/repos/gems/recipes/pkg/themed_decorator/hash @@ -1 +1 @@ -2024-11-19 4d62bb7ada981a8fe60675233f22514af307a026 +2024-12-10 02135f8e3c8596782a73e510365b357cb4f33b83 diff --git a/repos/gems/recipes/pkg/themed_wm/hash b/repos/gems/recipes/pkg/themed_wm/hash index 3b0c891271..9542c834a1 100644 --- a/repos/gems/recipes/pkg/themed_wm/hash +++ b/repos/gems/recipes/pkg/themed_wm/hash @@ -1 +1 @@ -2024-11-19 cd84dd8935e5a41669943988687b7331bf1db952 +2024-12-10 e264316f974e0b434d8f6465f29ccc9e8cd85cae diff --git a/repos/gems/recipes/pkg/touch_keyboard/hash b/repos/gems/recipes/pkg/touch_keyboard/hash index 2ea36cfbb5..b15e299b15 100644 --- a/repos/gems/recipes/pkg/touch_keyboard/hash +++ b/repos/gems/recipes/pkg/touch_keyboard/hash @@ -1 +1 @@ -2024-11-19 91451475ddb1fd1c53fb03b4ebfaea3582b9d261 +2024-12-10 8c4b668cdca1ca8b54752e67cb765150a5ea1360 diff --git a/repos/gems/recipes/pkg/trace_fs/hash b/repos/gems/recipes/pkg/trace_fs/hash index 5d743dae9a..9c914b4d71 100644 --- a/repos/gems/recipes/pkg/trace_fs/hash +++ b/repos/gems/recipes/pkg/trace_fs/hash @@ -1 +1 @@ -2024-11-19 0058980d87cbd8be2a662f2b0890275d09a61782 +2024-12-10 ad3ca233590cf620f20234ae0fe95e5117d29c81 diff --git a/repos/gems/recipes/pkg/trace_recorder/hash b/repos/gems/recipes/pkg/trace_recorder/hash index ac0b4011c3..fa34f70b3b 100644 --- a/repos/gems/recipes/pkg/trace_recorder/hash +++ b/repos/gems/recipes/pkg/trace_recorder/hash @@ -1 +1 @@ -2024-11-19 37f6e8520ad9027c7245c37b3a2c8db7e555c125 +2024-12-10 26533ef759741686bcef8fa057dfc276af56f28b diff --git a/repos/gems/recipes/pkg/unconfigured_nano3d/hash b/repos/gems/recipes/pkg/unconfigured_nano3d/hash index 7ceb962ee3..0195723a11 100644 --- a/repos/gems/recipes/pkg/unconfigured_nano3d/hash +++ b/repos/gems/recipes/pkg/unconfigured_nano3d/hash @@ -1 +1 @@ -2024-11-19 9ea04f65a37f07b9939e4328dc94418f29694665 +2024-12-10 a926cce68b4eb8a6721881703cf3a47c4be0d397 diff --git a/repos/gems/recipes/pkg/window_layouter/hash b/repos/gems/recipes/pkg/window_layouter/hash index eb8aee470e..73284e610a 100644 --- a/repos/gems/recipes/pkg/window_layouter/hash +++ b/repos/gems/recipes/pkg/window_layouter/hash @@ -1 +1 @@ -2024-11-19 16a054efa54f330606397b9f0c8a46d3b3581d56 +2024-12-10 749e59fb153f6a578cb40e556e6e4cd6b0f285e2 diff --git a/repos/gems/recipes/pkg/wm/hash b/repos/gems/recipes/pkg/wm/hash index 248d3283c0..716e5e9a69 100644 --- a/repos/gems/recipes/pkg/wm/hash +++ b/repos/gems/recipes/pkg/wm/hash @@ -1 +1 @@ -2024-11-19 45d1c7ddd710b1131276760c857c0c2ffb666e59 +2024-12-10 ea7acae1e47b5753a4e5a45a862f564a47b44af3 diff --git a/repos/gems/recipes/src/backdrop/hash b/repos/gems/recipes/src/backdrop/hash index 09a9bad5dc..163e9d6ac2 100644 --- a/repos/gems/recipes/src/backdrop/hash +++ b/repos/gems/recipes/src/backdrop/hash @@ -1 +1 @@ -2024-11-19 7f402b75b9fa41e89d9d7a7d47f6ceb7808cf230 +2024-12-10 e84247e53c9bca6106e387e1829a8293f9163f5b diff --git a/repos/gems/recipes/src/cpu_load_display/hash b/repos/gems/recipes/src/cpu_load_display/hash index fdc1fc4d8a..d8cd2a5346 100644 --- a/repos/gems/recipes/src/cpu_load_display/hash +++ b/repos/gems/recipes/src/cpu_load_display/hash @@ -1 +1 @@ -2024-11-19 23b1b6f733fc0999aab152f97341a8033f6a882c +2024-12-10 282a07f65edfd48daf82cb015a8ef3217cb924bf diff --git a/repos/gems/recipes/src/dbg_download/hash b/repos/gems/recipes/src/dbg_download/hash index 882babebcf..02e6264adb 100644 --- a/repos/gems/recipes/src/dbg_download/hash +++ b/repos/gems/recipes/src/dbg_download/hash @@ -1 +1 @@ -2024-11-19 75b9a961522fd92772a0e6eb38f46da95dc715db +2024-12-10 11b1ec97e8ebc727801208d4d1c5c1066e7037ed diff --git a/repos/gems/recipes/src/decorator/hash b/repos/gems/recipes/src/decorator/hash index 196b394ab1..697e583e81 100644 --- a/repos/gems/recipes/src/decorator/hash +++ b/repos/gems/recipes/src/decorator/hash @@ -1 +1 @@ -2024-11-19 d2ea819ac99467e05a32a9bfdde9cd68cfefbf8c +2024-12-10 3974fb75e5260c9fd495f0ac3f20308651307f2b diff --git a/repos/gems/recipes/src/depot_deploy/hash b/repos/gems/recipes/src/depot_deploy/hash index da482f34d0..a4e859dc26 100644 --- a/repos/gems/recipes/src/depot_deploy/hash +++ b/repos/gems/recipes/src/depot_deploy/hash @@ -1 +1 @@ -2024-11-19 ff45ee56db9b5cf323078005eaa5cc68cfc5bfe0 +2024-12-10 e59f7d94ebe9103f7ce3e91f24c3abd7f8d08e99 diff --git a/repos/gems/recipes/src/depot_download_manager/hash b/repos/gems/recipes/src/depot_download_manager/hash index f1c8cda379..924805adb2 100644 --- a/repos/gems/recipes/src/depot_download_manager/hash +++ b/repos/gems/recipes/src/depot_download_manager/hash @@ -1 +1 @@ -2024-11-19 5559eb97eaa051aece7c4e71fe7349047084aa10 +2024-12-10 c09f1624b4dd9a900be48e4fdd9df46c07ff4d7b diff --git a/repos/gems/recipes/src/depot_query/hash b/repos/gems/recipes/src/depot_query/hash index bc202cb85e..0c83b5aa05 100644 --- a/repos/gems/recipes/src/depot_query/hash +++ b/repos/gems/recipes/src/depot_query/hash @@ -1 +1 @@ -2024-11-19 335929bccb80e7e9d20be64dc433513b354ed9d9 +2024-12-10 8b76180e49e619f1eff26dfef7f611abd3443684 diff --git a/repos/gems/recipes/src/depot_remove/hash b/repos/gems/recipes/src/depot_remove/hash index 2a3676b9d5..c164ee150a 100644 --- a/repos/gems/recipes/src/depot_remove/hash +++ b/repos/gems/recipes/src/depot_remove/hash @@ -1 +1 @@ -2024-11-19 6876b7151f8097ff49bb434563b373f696193db7 +2024-12-10 acc159a472a8521f1c49585ae7961b6c9e7816c8 diff --git a/repos/gems/recipes/src/file_terminal/hash b/repos/gems/recipes/src/file_terminal/hash index 8876b03e8f..70a98ccaef 100644 --- a/repos/gems/recipes/src/file_terminal/hash +++ b/repos/gems/recipes/src/file_terminal/hash @@ -1 +1 @@ -2024-11-19 839e01716ea25a4d40448e66ba83adca01bf3c4a +2024-12-10 709855fd1b9956415ea29cf7d8b1c0cb32444cb7 diff --git a/repos/gems/recipes/src/file_vault/hash b/repos/gems/recipes/src/file_vault/hash index 23d90451e0..ec5d2a3405 100644 --- a/repos/gems/recipes/src/file_vault/hash +++ b/repos/gems/recipes/src/file_vault/hash @@ -1 +1 @@ -2024-11-19 dd3297064057727f52189113fa79c049ca885cdf +2024-12-10 c8df763de7d2a1935906f5fd710852cab1297c6c diff --git a/repos/gems/recipes/src/file_vault_gui/hash b/repos/gems/recipes/src/file_vault_gui/hash index c256c5a691..a582cc6960 100644 --- a/repos/gems/recipes/src/file_vault_gui/hash +++ b/repos/gems/recipes/src/file_vault_gui/hash @@ -1 +1 @@ -2024-11-19 af9339d080d11fa88403014870edfe2fe96e9339 +2024-12-10 30ca16bbfeeaf9798050920443fdf22c388a1175 diff --git a/repos/gems/recipes/src/fs_query/hash b/repos/gems/recipes/src/fs_query/hash index a1b900095b..4b2726db93 100644 --- a/repos/gems/recipes/src/fs_query/hash +++ b/repos/gems/recipes/src/fs_query/hash @@ -1 +1 @@ -2024-11-19 2b1d6bb5c3c8f14bcb92c3e55298800ab4e78ee6 +2024-12-10 ffe25169f242f9ef72a099d602d661c9fb3564a8 diff --git a/repos/gems/recipes/src/fs_tool/hash b/repos/gems/recipes/src/fs_tool/hash index 31233ed040..c4cd37ecbb 100644 --- a/repos/gems/recipes/src/fs_tool/hash +++ b/repos/gems/recipes/src/fs_tool/hash @@ -1 +1 @@ -2024-11-19 ec49d509696a7ce0a93871b6b3c1a48983f870d9 +2024-12-10 f218ca96a9717ceafc57223c7e8f66c344802af4 diff --git a/repos/gems/recipes/src/gpt_write/hash b/repos/gems/recipes/src/gpt_write/hash index 19d3bca7d8..5d7cb40f27 100644 --- a/repos/gems/recipes/src/gpt_write/hash +++ b/repos/gems/recipes/src/gpt_write/hash @@ -1 +1 @@ -2024-11-19 82c8096e525d5f14f6385a23f39534ba92145af7 +2024-12-10 eed7b704b9b0d9c8b049e817cb1b08b3ccb6db50 diff --git a/repos/gems/recipes/src/gui_fader/hash b/repos/gems/recipes/src/gui_fader/hash index 49f8684810..9c40166e23 100644 --- a/repos/gems/recipes/src/gui_fader/hash +++ b/repos/gems/recipes/src/gui_fader/hash @@ -1 +1 @@ -2024-11-19 debee41787123d097fb565d5e9fd437da762197e +2024-12-10 5c25ad9d1a6d9860cd722de943bbfe8dbd4d7feb diff --git a/repos/gems/recipes/src/menu_view/hash b/repos/gems/recipes/src/menu_view/hash index 040cae0170..1082dd5fde 100644 --- a/repos/gems/recipes/src/menu_view/hash +++ b/repos/gems/recipes/src/menu_view/hash @@ -1 +1 @@ -2024-11-19 474b79d1771dd9f5727fd68e4df08e03f088cf18 +2024-12-10 37c4f7488f5ddfe8777faf9e820890706d9d920a diff --git a/repos/gems/recipes/src/mixer_gui_qt/hash b/repos/gems/recipes/src/mixer_gui_qt/hash index 9294722591..e42d146a89 100644 --- a/repos/gems/recipes/src/mixer_gui_qt/hash +++ b/repos/gems/recipes/src/mixer_gui_qt/hash @@ -1 +1 @@ -2024-11-19 54fb2c3c7defa6a3c3038138f0b2e380c45e0bc7 +2024-12-10 4f57c91115e0322f7ae64f0f21753db1df973753 diff --git a/repos/gems/recipes/src/mixer_gui_qt6/hash b/repos/gems/recipes/src/mixer_gui_qt6/hash index cb0da706ce..aca045cd6d 100644 --- a/repos/gems/recipes/src/mixer_gui_qt6/hash +++ b/repos/gems/recipes/src/mixer_gui_qt6/hash @@ -1 +1 @@ -2024-11-19 3f3f47b5cd65ce7d180e9d7cbb3def87332df28d +2024-12-10 763884c319c4ace890dd9d3d54ef07c51a837e9b diff --git a/repos/gems/recipes/src/nano3d/hash b/repos/gems/recipes/src/nano3d/hash index 50df9d8dc7..d9133a1946 100644 --- a/repos/gems/recipes/src/nano3d/hash +++ b/repos/gems/recipes/src/nano3d/hash @@ -1 +1 @@ -2024-11-19 79af9b579ae25cad13b9c002c3a66408879e7dd6 +2024-12-10 b14d61d3d29b0e68970ad83ca8b59aaa8e7806fd diff --git a/repos/gems/recipes/src/osci/hash b/repos/gems/recipes/src/osci/hash index ccf99e2daf..2e296f9c61 100644 --- a/repos/gems/recipes/src/osci/hash +++ b/repos/gems/recipes/src/osci/hash @@ -1 +1 @@ -2024-11-19 3b1bbb073abb316885f024fbd483b1d218c2ca93 +2024-12-10 5f8e4313c51a1fe1a73936aac487cc48b4276b41 diff --git a/repos/gems/recipes/src/rom_osci/hash b/repos/gems/recipes/src/rom_osci/hash index c411673ee7..9e563751b0 100644 --- a/repos/gems/recipes/src/rom_osci/hash +++ b/repos/gems/recipes/src/rom_osci/hash @@ -1 +1 @@ -2024-11-19 6574547dd65e2b270fb9642882b2e66fe309321a +2024-12-10 b8056eef705e729465adc75b86607ae6795a76b9 diff --git a/repos/gems/recipes/src/screenshot_trigger/hash b/repos/gems/recipes/src/screenshot_trigger/hash index 8a47ee2ab1..131d23ab29 100644 --- a/repos/gems/recipes/src/screenshot_trigger/hash +++ b/repos/gems/recipes/src/screenshot_trigger/hash @@ -1 +1 @@ -2024-11-19 6364c7762b29c9c0dc4e462897e84f170b259f40 +2024-12-10 80753cd96b9da29fa2ec2140aa022c5a3dbf5cd1 diff --git a/repos/gems/recipes/src/sculpt_manager/hash b/repos/gems/recipes/src/sculpt_manager/hash index 3d21961e04..5fa4416639 100644 --- a/repos/gems/recipes/src/sculpt_manager/hash +++ b/repos/gems/recipes/src/sculpt_manager/hash @@ -1 +1 @@ -2024-11-19 d9714881a79ba951d805557fb9faf62d82052c71 +2024-12-10 4796bd5def5c9796e0988bea4a70ed1273aac0ae diff --git a/repos/gems/recipes/src/tcp_terminal/hash b/repos/gems/recipes/src/tcp_terminal/hash index 15ca38a7a2..d87695e8fb 100644 --- a/repos/gems/recipes/src/tcp_terminal/hash +++ b/repos/gems/recipes/src/tcp_terminal/hash @@ -1 +1 @@ -2024-11-19 fab980033c045bdc967977a0ee4b12121e8ce2a1 +2024-12-10 ad3571544920386e6f4606644df184f279315b12 diff --git a/repos/gems/recipes/src/terminal/hash b/repos/gems/recipes/src/terminal/hash index d0769d669c..658dcf9f15 100644 --- a/repos/gems/recipes/src/terminal/hash +++ b/repos/gems/recipes/src/terminal/hash @@ -1 +1 @@ -2024-11-19 78612745e2571c8053d70492780a7664f9f3d0ee +2024-12-10 e90c6277d4cc7feb4f57fa6a38ffc336a6440c8d diff --git a/repos/gems/recipes/src/test-tiled_wm/hash b/repos/gems/recipes/src/test-tiled_wm/hash index e76b3e4e47..01158bf133 100644 --- a/repos/gems/recipes/src/test-tiled_wm/hash +++ b/repos/gems/recipes/src/test-tiled_wm/hash @@ -1 +1 @@ -2024-11-19 1eaff06e7df4f2682f8ee0eaf5c5b8605e352d96 +2024-12-10 954cd17a47ee6fc13d1755f8844e061871159132 diff --git a/repos/gems/recipes/src/test-tiled_wm_qt6/hash b/repos/gems/recipes/src/test-tiled_wm_qt6/hash index 9bc759600b..9e7d7ceef5 100644 --- a/repos/gems/recipes/src/test-tiled_wm_qt6/hash +++ b/repos/gems/recipes/src/test-tiled_wm_qt6/hash @@ -1 +1 @@ -2024-11-19 fb301901ffe6901892dd60574cd712f63b7c55fb +2024-12-10 77d9dec5b1ec5851956aa05f0887353b12436d4e diff --git a/repos/gems/recipes/src/text_area/hash b/repos/gems/recipes/src/text_area/hash index 26b4765dda..b23187f8e6 100644 --- a/repos/gems/recipes/src/text_area/hash +++ b/repos/gems/recipes/src/text_area/hash @@ -1 +1 @@ -2024-11-19 63d657cde06c928edfef149c25575b7354eb175b +2024-12-10 3e568be6fb0ecc2a5e7f3e0cc8e7debce557ae67 diff --git a/repos/gems/recipes/src/themed_decorator/hash b/repos/gems/recipes/src/themed_decorator/hash index 70f388c426..bccd349c3d 100644 --- a/repos/gems/recipes/src/themed_decorator/hash +++ b/repos/gems/recipes/src/themed_decorator/hash @@ -1 +1 @@ -2024-11-19 34770f4f11bc3bcd93a66eecfc68073895c34e66 +2024-12-10 cc307c1429f3d6adc354eba1f1120ccdcdb18173 diff --git a/repos/gems/recipes/src/touch_keyboard/hash b/repos/gems/recipes/src/touch_keyboard/hash index 7df5c7f7d4..c6cfc99649 100644 --- a/repos/gems/recipes/src/touch_keyboard/hash +++ b/repos/gems/recipes/src/touch_keyboard/hash @@ -1 +1 @@ -2024-11-19 a7c186f7193c348bd2687e62677d9a0b6784461f +2024-12-10 9cd78ec70366ffe20ba1a5c773ef2e60c4f7553b diff --git a/repos/gems/recipes/src/trace_recorder/hash b/repos/gems/recipes/src/trace_recorder/hash index 6187f268d3..de3c23a71c 100644 --- a/repos/gems/recipes/src/trace_recorder/hash +++ b/repos/gems/recipes/src/trace_recorder/hash @@ -1 +1 @@ -2024-11-19 85996477a238d126fe6d463360aea2271983b623 +2024-12-10 d8bdf9c540f5133d8090e65269659b01a67593e5 diff --git a/repos/gems/recipes/src/trace_recorder_policy/hash b/repos/gems/recipes/src/trace_recorder_policy/hash index 57a6baa760..516dfe38cd 100644 --- a/repos/gems/recipes/src/trace_recorder_policy/hash +++ b/repos/gems/recipes/src/trace_recorder_policy/hash @@ -1 +1 @@ -2024-11-19 2b8019ad22a9b4b0bacae950dab987d25b849aa4 +2024-12-10 155556bc03e19f15a9d2c6bb93587d3e9401fdc2 diff --git a/repos/gems/recipes/src/tresor/hash b/repos/gems/recipes/src/tresor/hash index d83e8ac7ef..d08d42f2c3 100644 --- a/repos/gems/recipes/src/tresor/hash +++ b/repos/gems/recipes/src/tresor/hash @@ -1 +1 @@ -2024-11-19 2126ca74c9b308cb978481044f540e85d2af9b75 +2024-12-10 3fe9f971c9b8696240d7aa77862cca10e3cf0582 diff --git a/repos/gems/recipes/src/vfs_audit/hash b/repos/gems/recipes/src/vfs_audit/hash index 2df6b186bb..e5407b34cd 100644 --- a/repos/gems/recipes/src/vfs_audit/hash +++ b/repos/gems/recipes/src/vfs_audit/hash @@ -1 +1 @@ -2024-11-19 8f69ffbd309a3f4795e0aff17f5fdfe6596e614b +2024-12-10 68ca33922c2fe8ea1b5ae1822849a5043a5e80a7 diff --git a/repos/gems/recipes/src/vfs_gpu/hash b/repos/gems/recipes/src/vfs_gpu/hash index d60af9ee55..55c7e26203 100644 --- a/repos/gems/recipes/src/vfs_gpu/hash +++ b/repos/gems/recipes/src/vfs_gpu/hash @@ -1 +1 @@ -2024-11-19 1ce5ce167a5adab5f7eeefbdecec3bd102c539c2 +2024-12-10 9cd378c6736f6c8b412bfb1336ebe52ec1f18b56 diff --git a/repos/gems/recipes/src/vfs_import/hash b/repos/gems/recipes/src/vfs_import/hash index 303eb27cec..653f6c40f0 100644 --- a/repos/gems/recipes/src/vfs_import/hash +++ b/repos/gems/recipes/src/vfs_import/hash @@ -1 +1 @@ -2024-11-19 4f9ab392a2c8bd8651d13590dbde655f931ab392 +2024-12-10 8c4f1188d10eedcfb9763f60adca853c6d475887 diff --git a/repos/gems/recipes/src/vfs_oss/hash b/repos/gems/recipes/src/vfs_oss/hash index eeead93c56..8fdd0997d8 100644 --- a/repos/gems/recipes/src/vfs_oss/hash +++ b/repos/gems/recipes/src/vfs_oss/hash @@ -1 +1 @@ -2024-11-19 2a2dd334c4ec5c4033d1f0afb12d42b4653b627e +2024-12-10 bb0379f2ddd28957a6d9ceb0029d82b3bd1813a8 diff --git a/repos/gems/recipes/src/vfs_pipe/hash b/repos/gems/recipes/src/vfs_pipe/hash index 851b9cb2d5..0250b340cd 100644 --- a/repos/gems/recipes/src/vfs_pipe/hash +++ b/repos/gems/recipes/src/vfs_pipe/hash @@ -1 +1 @@ -2024-11-19 60d21fa6c0f205f2d7a1601dc980af625af8ec1e +2024-12-10 543fa4df91d914fe585d35f8cebcefe0708899a9 diff --git a/repos/gems/recipes/src/vfs_trace/hash b/repos/gems/recipes/src/vfs_trace/hash index 32446d9ff2..ea46c996fd 100644 --- a/repos/gems/recipes/src/vfs_trace/hash +++ b/repos/gems/recipes/src/vfs_trace/hash @@ -1 +1 @@ -2024-11-19 87ce7e09b5499c10e55937fe8b73df50fed9e367 +2024-12-10 fad0dcc5edf3e1a430663be6b3b3de81034b7512 diff --git a/repos/gems/recipes/src/vfs_ttf/hash b/repos/gems/recipes/src/vfs_ttf/hash index 8ab0820e0d..87aede4014 100644 --- a/repos/gems/recipes/src/vfs_ttf/hash +++ b/repos/gems/recipes/src/vfs_ttf/hash @@ -1 +1 @@ -2024-11-19 4124503e63ec91be3acb359745855099c24331db +2024-12-10 5ebc8fbed543900ece9295e76498d2e00d5ac703 diff --git a/repos/gems/recipes/src/window_layouter/hash b/repos/gems/recipes/src/window_layouter/hash index 1f937bd189..dee9bf7776 100644 --- a/repos/gems/recipes/src/window_layouter/hash +++ b/repos/gems/recipes/src/window_layouter/hash @@ -1 +1 @@ -2024-11-19 c1de7eba73107beb2caa2f1831aa6d390a13ab91 +2024-12-10 8da572807862e6ad18d03f4fee9ae15c8502e5d2 diff --git a/repos/gems/recipes/src/wm/hash b/repos/gems/recipes/src/wm/hash index 3f5d96fafd..f94c94bb0e 100644 --- a/repos/gems/recipes/src/wm/hash +++ b/repos/gems/recipes/src/wm/hash @@ -1 +1 @@ -2024-11-19 57e610855c68613d3bf0d2025832f623f2624168 +2024-12-10 3ab906e9ff02f0bcf5966eee9b14c40faa02c2db diff --git a/repos/libports/recipes/pkg/acpica/hash b/repos/libports/recipes/pkg/acpica/hash index a8d35d0926..ab728d69a1 100644 --- a/repos/libports/recipes/pkg/acpica/hash +++ b/repos/libports/recipes/pkg/acpica/hash @@ -1 +1 @@ -2024-11-19 062be8139763e5af2e72de637c161a48bb069ec8 +2024-12-10 121ec4ccd1bb65240ce5000ca49a48bf58bb74d8 diff --git a/repos/libports/recipes/pkg/gcov/hash b/repos/libports/recipes/pkg/gcov/hash index f542379300..3e93ba3b91 100644 --- a/repos/libports/recipes/pkg/gcov/hash +++ b/repos/libports/recipes/pkg/gcov/hash @@ -1 +1 @@ -2024-11-19 6c928ca8672482c9d69ba1160f88f53a3da1f2f6 +2024-12-10 af269e32d413b8ef33796a3bf00407307f6d727b diff --git a/repos/libports/recipes/pkg/mesa_gears/hash b/repos/libports/recipes/pkg/mesa_gears/hash index 0f0a1f2403..7cb293d0e4 100644 --- a/repos/libports/recipes/pkg/mesa_gears/hash +++ b/repos/libports/recipes/pkg/mesa_gears/hash @@ -1 +1 @@ -2024-11-19 2b8ce6c0144667252a83f7726303a6b59c226cb4 +2024-12-10 dda272c83b32ea84701cf2ae8d88a075330a1d31 diff --git a/repos/libports/recipes/pkg/mesa_gpu-cpu/hash b/repos/libports/recipes/pkg/mesa_gpu-cpu/hash index 503bba4d85..c14603879f 100644 --- a/repos/libports/recipes/pkg/mesa_gpu-cpu/hash +++ b/repos/libports/recipes/pkg/mesa_gpu-cpu/hash @@ -1 +1 @@ -2024-11-19 01fecc481a1134f059028403ee56ba24c042e78e +2024-12-10 48918ee462c6fc17752b9e49cd1542e47eb89b38 diff --git a/repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash b/repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash index f31472e67d..b452372ec1 100644 --- a/repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash +++ b/repos/libports/recipes/pkg/mesa_gpu-etnaviv/hash @@ -1 +1 @@ -2024-11-19 6494350e6b2a1441b266cb2fd19873c680799901 +2024-12-10 6942da742f12b10bad1e722a3f35a3adb57e7ccf diff --git a/repos/libports/recipes/pkg/mesa_gpu-intel/hash b/repos/libports/recipes/pkg/mesa_gpu-intel/hash index 051dc9a99f..48528234ae 100644 --- a/repos/libports/recipes/pkg/mesa_gpu-intel/hash +++ b/repos/libports/recipes/pkg/mesa_gpu-intel/hash @@ -1 +1 @@ -2024-11-19 4469596e0fc44a6568b62a8899e2da4398355a87 +2024-12-10 fe0faac47649d3c25dfc42bb764f18802862def9 diff --git a/repos/libports/recipes/pkg/mesa_gpu-lima/hash b/repos/libports/recipes/pkg/mesa_gpu-lima/hash index 8099b4ab40..426049d6b9 100644 --- a/repos/libports/recipes/pkg/mesa_gpu-lima/hash +++ b/repos/libports/recipes/pkg/mesa_gpu-lima/hash @@ -1 +1 @@ -2024-11-19 0dd0dd8c87c4019ee10ced481a0f936f9940a5ab +2024-12-10 bbdf91328a4fcb2a63ef33cbd4ebc56e721fe338 diff --git a/repos/libports/recipes/pkg/pdf_view/hash b/repos/libports/recipes/pkg/pdf_view/hash index fd73fbfa72..fa261b3fbf 100644 --- a/repos/libports/recipes/pkg/pdf_view/hash +++ b/repos/libports/recipes/pkg/pdf_view/hash @@ -1 +1 @@ -2024-11-19 d6c9bd206540f636641239566aa49bc6fc63b14d +2024-12-10 bc9018e108e8a1e1952f90269cb3b62b1d1ea299 diff --git a/repos/libports/recipes/pkg/qt5_textedit/hash b/repos/libports/recipes/pkg/qt5_textedit/hash index 939ffacd03..fb85ce39db 100644 --- a/repos/libports/recipes/pkg/qt5_textedit/hash +++ b/repos/libports/recipes/pkg/qt5_textedit/hash @@ -1 +1 @@ -2024-11-19 d6d6b3cd1d4fb9f9eee08a4e51bd6449c78262aa +2024-12-10 ca397cfe2adea2dc1448c915a0d755cdfd23cbce diff --git a/repos/libports/recipes/pkg/sntp_dummy_rtc/hash b/repos/libports/recipes/pkg/sntp_dummy_rtc/hash index 9c580b854e..5559d81ebf 100644 --- a/repos/libports/recipes/pkg/sntp_dummy_rtc/hash +++ b/repos/libports/recipes/pkg/sntp_dummy_rtc/hash @@ -1 +1 @@ -2024-11-19 dbfaae97d316aac08edc3784f6708e1d4ba325b7 +2024-12-10 5ad5a2a6da1d082c14f970af2c8a4c99cd6bdcf0 diff --git a/repos/libports/recipes/pkg/stdin2out/hash b/repos/libports/recipes/pkg/stdin2out/hash index 86a9667489..225fc65981 100644 --- a/repos/libports/recipes/pkg/stdin2out/hash +++ b/repos/libports/recipes/pkg/stdin2out/hash @@ -1 +1 @@ -2024-11-19 b1fdbdc8276aa660ff0259fcee3c2920511a6dae +2024-12-10 db496256fec365489f324ff92ee72b4aaa651b8e diff --git a/repos/libports/recipes/pkg/system_clock-dummy/hash b/repos/libports/recipes/pkg/system_clock-dummy/hash index 441ef01208..851043db77 100644 --- a/repos/libports/recipes/pkg/system_clock-dummy/hash +++ b/repos/libports/recipes/pkg/system_clock-dummy/hash @@ -1 +1 @@ -2024-11-19 7338756b3b5ebb651d1b7420277e30c1aea89663 +2024-12-10 0ad8aa8c45e8cf7dd0871be0718ddc92689056af diff --git a/repos/libports/recipes/pkg/system_clock-pc/hash b/repos/libports/recipes/pkg/system_clock-pc/hash index d52dac6022..6e17ab27b1 100644 --- a/repos/libports/recipes/pkg/system_clock-pc/hash +++ b/repos/libports/recipes/pkg/system_clock-pc/hash @@ -1 +1 @@ -2024-11-19 0cfddc157ab6951520fdbd083f33f466d4bac7a4 +2024-12-10 fcda51329ca8462ada61596bcf1ab809ded39599 diff --git a/repos/libports/recipes/pkg/system_rtc-linux/hash b/repos/libports/recipes/pkg/system_rtc-linux/hash index 90006c3e5f..1f3b847c52 100644 --- a/repos/libports/recipes/pkg/system_rtc-linux/hash +++ b/repos/libports/recipes/pkg/system_rtc-linux/hash @@ -1 +1 @@ -2024-11-19 e972fa245bb44c699859e2775bd5449b05b012dc +2024-12-10 08421b5a46a7ce90a846fdb3bed81ad4ba915df8 diff --git a/repos/libports/recipes/pkg/system_rtc-pc/hash b/repos/libports/recipes/pkg/system_rtc-pc/hash index e7fc647289..406ae70cb0 100644 --- a/repos/libports/recipes/pkg/system_rtc-pc/hash +++ b/repos/libports/recipes/pkg/system_rtc-pc/hash @@ -1 +1 @@ -2024-11-19 353513abb695070c7495b5709233b317531c56a4 +2024-12-10 93660c8ddb82a609c314e1a55a02d4a566bc6cbe diff --git a/repos/libports/recipes/pkg/test-expat/hash b/repos/libports/recipes/pkg/test-expat/hash index 9afa2b857b..92846c66f6 100644 --- a/repos/libports/recipes/pkg/test-expat/hash +++ b/repos/libports/recipes/pkg/test-expat/hash @@ -1 +1 @@ -2024-11-19 3f7f1dd1ca200587a14566063db16c30c6f9e179 +2024-12-10 664553d3662c65ac29a769659603a48c12a6b9fb diff --git a/repos/libports/recipes/pkg/test-ldso/hash b/repos/libports/recipes/pkg/test-ldso/hash index 216b3022d3..cc29191da7 100644 --- a/repos/libports/recipes/pkg/test-ldso/hash +++ b/repos/libports/recipes/pkg/test-ldso/hash @@ -1 +1 @@ -2024-11-19 f74815f3961acb8738c6fceef7a4113c9563b0a5 +2024-12-10 a1dc6f056987c1a96492b91668a0e9516a4e09a5 diff --git a/repos/libports/recipes/pkg/test-libc/hash b/repos/libports/recipes/pkg/test-libc/hash index cc06759557..bdeacab157 100644 --- a/repos/libports/recipes/pkg/test-libc/hash +++ b/repos/libports/recipes/pkg/test-libc/hash @@ -1 +1 @@ -2024-11-19 7cfdf43bf65fac5e8f18387bf93b909137f1ac82 +2024-12-10 a4eef0829067c1b0419e58c5a114ac508fbad0b8 diff --git a/repos/libports/recipes/pkg/test-libc_alarm/hash b/repos/libports/recipes/pkg/test-libc_alarm/hash index d3bef6fdee..e96472d591 100644 --- a/repos/libports/recipes/pkg/test-libc_alarm/hash +++ b/repos/libports/recipes/pkg/test-libc_alarm/hash @@ -1 +1 @@ -2024-11-19 5267860f2c350effc49294cf11b9e22d61dea216 +2024-12-10 6fe397534cdb350b062acc6cc1315384da1e268e diff --git a/repos/libports/recipes/pkg/test-libc_connect_lwip/hash b/repos/libports/recipes/pkg/test-libc_connect_lwip/hash index 0e95df388c..e0287d6540 100644 --- a/repos/libports/recipes/pkg/test-libc_connect_lwip/hash +++ b/repos/libports/recipes/pkg/test-libc_connect_lwip/hash @@ -1 +1 @@ -2024-11-19 656b5fb793e4d72325fa6e1e03ef382defc9601e +2024-12-10 6af3ac567ae5a1a44c5023b917c55240538a9f74 diff --git a/repos/libports/recipes/pkg/test-libc_connect_lxip/hash b/repos/libports/recipes/pkg/test-libc_connect_lxip/hash index b12c56437f..a4c35f2ec4 100644 --- a/repos/libports/recipes/pkg/test-libc_connect_lxip/hash +++ b/repos/libports/recipes/pkg/test-libc_connect_lxip/hash @@ -1 +1 @@ -2024-11-19 336e46b648a7c7c5b23873ee962ffe81d89f60dd +2024-12-10 7326696121c89c181551e630489fccef693d7985 diff --git a/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash b/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash index 642ccd4295..3c77e0d8d0 100644 --- a/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash +++ b/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lwip/hash @@ -1 +1 @@ -2024-11-19 8cac66da62e07c564a9c5ac61bb274dc3b95d991 +2024-12-10 b731c3a9cbce909e8d253a7605be787ec73f9999 diff --git a/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash b/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash index f3cca37473..773f5bbff1 100644 --- a/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash +++ b/repos/libports/recipes/pkg/test-libc_connect_vfs_server_lxip/hash @@ -1 +1 @@ -2024-11-19 6919ef472e49b2039ad14149b6419cc313ce6b20 +2024-12-10 de6b3ad2871b7b0cdac4f116f9d3f1a9ad82ef96 diff --git a/repos/libports/recipes/pkg/test-libc_counter/hash b/repos/libports/recipes/pkg/test-libc_counter/hash index e9ecdb0958..7ffa79ffae 100644 --- a/repos/libports/recipes/pkg/test-libc_counter/hash +++ b/repos/libports/recipes/pkg/test-libc_counter/hash @@ -1 +1 @@ -2024-11-19 e342bc5fa644d8b0c74d4b6632b9cc62b6bd4519 +2024-12-10 00eee3dd9ce33aaa002f4a7bb3a1e534f4d218dd diff --git a/repos/libports/recipes/pkg/test-libc_deferred_unlink/hash b/repos/libports/recipes/pkg/test-libc_deferred_unlink/hash index 1a2d213d35..0030507452 100644 --- a/repos/libports/recipes/pkg/test-libc_deferred_unlink/hash +++ b/repos/libports/recipes/pkg/test-libc_deferred_unlink/hash @@ -1 +1 @@ -2024-11-19 8b6fe2c50277d0d82b59895c01e9d940379c9aa0 +2024-12-10 cdd03118be7a56a561061714a83268e9f9ec2478 diff --git a/repos/libports/recipes/pkg/test-libc_execve/hash b/repos/libports/recipes/pkg/test-libc_execve/hash index eb15ad8b9b..8db2a8aa02 100644 --- a/repos/libports/recipes/pkg/test-libc_execve/hash +++ b/repos/libports/recipes/pkg/test-libc_execve/hash @@ -1 +1 @@ -2024-11-19 0ac36a4363ba781bec1723a00f8bb84575fc9985 +2024-12-10 1c18330413564c7330d6242c0fe889b39720cf73 diff --git a/repos/libports/recipes/pkg/test-libc_fifo_pipe/hash b/repos/libports/recipes/pkg/test-libc_fifo_pipe/hash index e26fc03b5d..12e5a327a0 100644 --- a/repos/libports/recipes/pkg/test-libc_fifo_pipe/hash +++ b/repos/libports/recipes/pkg/test-libc_fifo_pipe/hash @@ -1 +1 @@ -2024-11-19 efcbfb81f12ebe212b88927682ae46cd8830a144 +2024-12-10 1e94492019fbca38e656921805a37c54c3395db6 diff --git a/repos/libports/recipes/pkg/test-libc_fork/hash b/repos/libports/recipes/pkg/test-libc_fork/hash index 21e17cecc4..96ec5d25ed 100644 --- a/repos/libports/recipes/pkg/test-libc_fork/hash +++ b/repos/libports/recipes/pkg/test-libc_fork/hash @@ -1 +1 @@ -2024-11-19 9cc236095af759e0edfc7e76479ec96a719251c3 +2024-12-10 1cae3c32f35211ef9d5fadd2912ca0cdb1c33778 diff --git a/repos/libports/recipes/pkg/test-libc_getenv/hash b/repos/libports/recipes/pkg/test-libc_getenv/hash index f7b98f9527..902ff18de3 100644 --- a/repos/libports/recipes/pkg/test-libc_getenv/hash +++ b/repos/libports/recipes/pkg/test-libc_getenv/hash @@ -1 +1 @@ -2024-11-19 1c90ab051139cfb09c9be59f183dc9a0d291eaf7 +2024-12-10 c747699be50cf46caac1b0646ca7a830bd2eb3dd diff --git a/repos/libports/recipes/pkg/test-libc_kqueue/hash b/repos/libports/recipes/pkg/test-libc_kqueue/hash index 7dd84ad305..b3e5d45800 100644 --- a/repos/libports/recipes/pkg/test-libc_kqueue/hash +++ b/repos/libports/recipes/pkg/test-libc_kqueue/hash @@ -1 +1 @@ -2024-11-19 8af6f11efcb9f7d96c3547561b9998006d4cde43 +2024-12-10 647d576e00ce86b009a2a6f9e23826b9b024c544 diff --git a/repos/libports/recipes/pkg/test-libc_pipe/hash b/repos/libports/recipes/pkg/test-libc_pipe/hash index 9add0202dc..c114e9ae69 100644 --- a/repos/libports/recipes/pkg/test-libc_pipe/hash +++ b/repos/libports/recipes/pkg/test-libc_pipe/hash @@ -1 +1 @@ -2024-11-19 674cc17a84999877f71361fa3039c0ef86e6de64 +2024-12-10 cff5f1ca6b50ee2dbd94b48836c0b0c94d7f2d92 diff --git a/repos/libports/recipes/pkg/test-libc_vfs/hash b/repos/libports/recipes/pkg/test-libc_vfs/hash index 7807afe5bd..ce0ff18aec 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs/hash @@ -1 +1 @@ -2024-11-19 dfd56b3ee6db2e5bd31caae08aed9cafb4770c43 +2024-12-10 8ee1d295a355d93fcf41d9b54e1c7ac644f9fc80 diff --git a/repos/libports/recipes/pkg/test-libc_vfs_block/hash b/repos/libports/recipes/pkg/test-libc_vfs_block/hash index 703d08aaa7..3366d285db 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_block/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_block/hash @@ -1 +1 @@ -2024-11-19 eddc00ebbc9e2c78fb44907452286a97217656b1 +2024-12-10 a710420d89ebf3d1f7cb3f7260e8be1581d20e3e diff --git a/repos/libports/recipes/pkg/test-libc_vfs_counter/hash b/repos/libports/recipes/pkg/test-libc_vfs_counter/hash index 707f653c6f..5486325636 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_counter/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_counter/hash @@ -1 +1 @@ -2024-11-19 49aa2e8a87907c7ed24f6936b2f97c742d0daefb +2024-12-10 867cd9017ef096410fc11ea4d2c1c82f4ed5cdee diff --git a/repos/libports/recipes/pkg/test-libc_vfs_fs/hash b/repos/libports/recipes/pkg/test-libc_vfs_fs/hash index 3a1bd25312..709b197278 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_fs/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_fs/hash @@ -1 +1 @@ -2024-11-19 38d27aba88a0d53869823b03d8863169fc2b56fc +2024-12-10 559a9941aaa696bec6b3ddd07961ba7116c66106 diff --git a/repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash b/repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash index fe877ba38f..a64f81496f 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_fs_chained/hash @@ -1 +1 @@ -2024-11-19 c0676b89d3446361e3cdb78b642ae0ceb10efe4b +2024-12-10 b7f55a88ddb7a1267f1eca4f510a45a8507bba5f diff --git a/repos/libports/recipes/pkg/test-libc_vfs_oss/hash b/repos/libports/recipes/pkg/test-libc_vfs_oss/hash index 93065cfb53..363734560c 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_oss/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_oss/hash @@ -1 +1 @@ -2024-11-19 0966985308cf852e7e3a527c2c10f6eaec891556 +2024-12-10 339bb9e81f62342a6a342b336cf1f926e44845be diff --git a/repos/libports/recipes/pkg/test-libc_vfs_ram/hash b/repos/libports/recipes/pkg/test-libc_vfs_ram/hash index 2eeb01f5ac..96b0365ba7 100644 --- a/repos/libports/recipes/pkg/test-libc_vfs_ram/hash +++ b/repos/libports/recipes/pkg/test-libc_vfs_ram/hash @@ -1 +1 @@ -2024-11-19 3fbda30f536fc48279c5224ae37499d45f69c644 +2024-12-10 2891f418ab62e1a3cc09b4ab0162c68ef64f4344 diff --git a/repos/libports/recipes/pkg/test-pipe_read_ready/hash b/repos/libports/recipes/pkg/test-pipe_read_ready/hash index 701f0976af..3bfd46a854 100644 --- a/repos/libports/recipes/pkg/test-pipe_read_ready/hash +++ b/repos/libports/recipes/pkg/test-pipe_read_ready/hash @@ -1 +1 @@ -2024-11-19 33cd7b3cfd8842499a863193fb39a384f3015db7 +2024-12-10 216db93c6d2370a0251d16fbcdcfbd12474ab708 diff --git a/repos/libports/recipes/pkg/test-pthread/hash b/repos/libports/recipes/pkg/test-pthread/hash index 7a59d55bf1..59cbed34d6 100644 --- a/repos/libports/recipes/pkg/test-pthread/hash +++ b/repos/libports/recipes/pkg/test-pthread/hash @@ -1 +1 @@ -2024-11-19 16d4463e806b85f121d3ffd050b12c0690d83cf8 +2024-12-10 d36d6ddbf70c3a20d8fba33b7491ee08ccf5cba0 diff --git a/repos/libports/recipes/pkg/test-sequence/hash b/repos/libports/recipes/pkg/test-sequence/hash index 0316a9544a..0c7225a6f0 100644 --- a/repos/libports/recipes/pkg/test-sequence/hash +++ b/repos/libports/recipes/pkg/test-sequence/hash @@ -1 +1 @@ -2024-11-19 a2c8ee6fa4fc027ecf80b4fb22cba3de00d2d954 +2024-12-10 b4128c2ae28b4302ed04a92d919771a26fbd7405 diff --git a/repos/libports/recipes/pkg/test-spark/hash b/repos/libports/recipes/pkg/test-spark/hash index 7cce3be3c2..b9679bc45a 100644 --- a/repos/libports/recipes/pkg/test-spark/hash +++ b/repos/libports/recipes/pkg/test-spark/hash @@ -1 +1 @@ -2024-11-19 7f97d49942748016b30ab67223d60c1f90e63ee4 +2024-12-10 882475b6306a0cc6480c36c7b7abc03858caed70 diff --git a/repos/libports/recipes/pkg/test-spark_exception/hash b/repos/libports/recipes/pkg/test-spark_exception/hash index adaa5477e9..029cb1cb34 100644 --- a/repos/libports/recipes/pkg/test-spark_exception/hash +++ b/repos/libports/recipes/pkg/test-spark_exception/hash @@ -1 +1 @@ -2024-11-19 14902c8554beb5b487793e31ccb2cebb04b7ec25 +2024-12-10 02175a50adda2e689b55fdd11890d60b6841d2a3 diff --git a/repos/libports/recipes/pkg/test-spark_secondary_stack/hash b/repos/libports/recipes/pkg/test-spark_secondary_stack/hash index 845d9767ae..a0257f7030 100644 --- a/repos/libports/recipes/pkg/test-spark_secondary_stack/hash +++ b/repos/libports/recipes/pkg/test-spark_secondary_stack/hash @@ -1 +1 @@ -2024-11-19 69ddf0ddc5944b7dad65ba02dbd8614cd27ac758 +2024-12-10 fd2594bc1226b6cbd3c6fac3538ba38c7f8a0c88 diff --git a/repos/libports/recipes/pkg/test-stdcxx/hash b/repos/libports/recipes/pkg/test-stdcxx/hash index 8029c74536..1cca32631d 100644 --- a/repos/libports/recipes/pkg/test-stdcxx/hash +++ b/repos/libports/recipes/pkg/test-stdcxx/hash @@ -1 +1 @@ -2024-11-19 1415e390205225440d754ecabb97d9b7b6fcc847 +2024-12-10 2b9306803fe8a55f3c67f2091e3f4811805e065b diff --git a/repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash b/repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash index 99e295e860..35b6a6fecd 100644 --- a/repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash +++ b/repos/libports/recipes/pkg/test-tcp_bulk_lwip/hash @@ -1 +1 @@ -2024-11-19 5cfe41c8e01a3c2603b36c68c354172e5c9523c0 +2024-12-10 0f89c2441fc764052adebac1cfe1c8bdf50635da diff --git a/repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash b/repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash index be310350fa..a0d8472f10 100644 --- a/repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash +++ b/repos/libports/recipes/pkg/test-tcp_bulk_lxip/hash @@ -1 +1 @@ -2024-11-19 d5437179130fa41860445914eb3d49994f07ceac +2024-12-10 e38acbd4c96483f8e19a0bd6defb33dbd7389262 diff --git a/repos/libports/recipes/pkg/usb_webcam/hash b/repos/libports/recipes/pkg/usb_webcam/hash index 437f8d13e0..bf037f8bee 100644 --- a/repos/libports/recipes/pkg/usb_webcam/hash +++ b/repos/libports/recipes/pkg/usb_webcam/hash @@ -1 +1 @@ -2024-11-19 df0cdbbf97c721491692ab5a21e63e211143b6ec +2024-12-10 8fb43b26ae9dcbd80356a53b1b11a9dbcc7947cf diff --git a/repos/libports/recipes/src/acpi_event/hash b/repos/libports/recipes/src/acpi_event/hash index 0c38ad19ad..b3820c5d8a 100644 --- a/repos/libports/recipes/src/acpi_event/hash +++ b/repos/libports/recipes/src/acpi_event/hash @@ -1 +1 @@ -2024-11-19 fd470c537d4f4414343c9458c583fadedf77bf2f +2024-12-10 e6f56eabf60ecc7ef3d270ea8e1b1e74797b3d23 diff --git a/repos/libports/recipes/src/acpica/hash b/repos/libports/recipes/src/acpica/hash index 449e330538..32c81104da 100644 --- a/repos/libports/recipes/src/acpica/hash +++ b/repos/libports/recipes/src/acpica/hash @@ -1 +1 @@ -2024-11-19 7d0844bf77df160790eb0dbed281d448c6293cd7 +2024-12-10 7fdaf553f171d5af35643f456d09af93f4167e69 diff --git a/repos/libports/recipes/src/extract/hash b/repos/libports/recipes/src/extract/hash index f2c8feb75f..94b709fba1 100644 --- a/repos/libports/recipes/src/extract/hash +++ b/repos/libports/recipes/src/extract/hash @@ -1 +1 @@ -2024-11-19 3858c3955218420817a8c7682fef0a5140a7bbb8 +2024-12-10 3f48f809682ca63a9134fdaf477e38f1e01e63d2 diff --git a/repos/libports/recipes/src/fetchurl/hash b/repos/libports/recipes/src/fetchurl/hash index ac617ed343..8c8e6c0459 100644 --- a/repos/libports/recipes/src/fetchurl/hash +++ b/repos/libports/recipes/src/fetchurl/hash @@ -1 +1 @@ -2024-11-19 7e32c93a3e5ef4a4bf7d8f45a11f5f746832b29b +2024-12-10 c63c0c19329f58fe74658724b3f7d96bd7d68d02 diff --git a/repos/libports/recipes/src/gcov/hash b/repos/libports/recipes/src/gcov/hash index 51fb3d8993..8bebaf78eb 100644 --- a/repos/libports/recipes/src/gcov/hash +++ b/repos/libports/recipes/src/gcov/hash @@ -1 +1 @@ -2024-11-19 596fb8ad34165650f1470212814b0953238cda5c +2024-12-10 6e0d7b500e9dc33615df4bc6df27ba0345bca9d1 diff --git a/repos/libports/recipes/src/libc/hash b/repos/libports/recipes/src/libc/hash index 2ea073f85f..ed4b55d9b6 100644 --- a/repos/libports/recipes/src/libc/hash +++ b/repos/libports/recipes/src/libc/hash @@ -1 +1 @@ -2024-11-19 47bf873455adcf2d1f0a8d243bbf293da05aac92 +2024-12-10 5d4785f66d6c46dcad3a8afde61e8071c1d0cd9e diff --git a/repos/libports/recipes/src/libdrm/hash b/repos/libports/recipes/src/libdrm/hash index 657c732e4e..56760279fe 100644 --- a/repos/libports/recipes/src/libdrm/hash +++ b/repos/libports/recipes/src/libdrm/hash @@ -1 +1 @@ -2024-11-19 9adf0577a67e90b75adc5f060dce311fbfcd17d4 +2024-12-10 ed43bf54540fd8dbd58476c6795e7be26013c55a diff --git a/repos/libports/recipes/src/libqgenodeviewwidget/hash b/repos/libports/recipes/src/libqgenodeviewwidget/hash index af8e2f8aff..dd21946ef2 100644 --- a/repos/libports/recipes/src/libqgenodeviewwidget/hash +++ b/repos/libports/recipes/src/libqgenodeviewwidget/hash @@ -1 +1 @@ -2024-11-19 d4d1109c3f8863869f9230a072be9f4d0e8bcf41 +2024-12-10 9dd3add8ad6462f845a137b49e3b98ee7bebd966 diff --git a/repos/libports/recipes/src/libusb/hash b/repos/libports/recipes/src/libusb/hash index 7c4c33aedd..25afc99ee5 100644 --- a/repos/libports/recipes/src/libusb/hash +++ b/repos/libports/recipes/src/libusb/hash @@ -1 +1 @@ -2024-11-19 1b68a2ee7c69188321663f78d08d47f1bc879d10 +2024-12-10 f5924594785fae8f51e2af300808ed75dae9c6be diff --git a/repos/libports/recipes/src/libyuv/hash b/repos/libports/recipes/src/libyuv/hash index b645a203cf..97f3f48e8d 100644 --- a/repos/libports/recipes/src/libyuv/hash +++ b/repos/libports/recipes/src/libyuv/hash @@ -1 +1 @@ -2024-11-19 08b33382f1fcb6091abbf34b2a062a9e62d6deb1 +2024-12-10 17be5055cfcd976c5e89942ee96e9619f3ce7a37 diff --git a/repos/libports/recipes/src/mesa/hash b/repos/libports/recipes/src/mesa/hash index 3fd5ac47a7..917bba2c1b 100644 --- a/repos/libports/recipes/src/mesa/hash +++ b/repos/libports/recipes/src/mesa/hash @@ -1 +1 @@ -2024-11-19 d89eb2ce276496c02cd31070637f9ce65f3b20d8 +2024-12-10 7203470430ebee6839548f1364de891b1a9036ff diff --git a/repos/libports/recipes/src/mesa_gears/hash b/repos/libports/recipes/src/mesa_gears/hash index ee9011648f..cbebb744c8 100644 --- a/repos/libports/recipes/src/mesa_gears/hash +++ b/repos/libports/recipes/src/mesa_gears/hash @@ -1 +1 @@ -2024-11-19 b2a48facc023452f767f815d3ee2c921305b18f3 +2024-12-10 7f428e95e4b2c230e6b63c05d68fcf0aa8063424 diff --git a/repos/libports/recipes/src/pcsc-lite/hash b/repos/libports/recipes/src/pcsc-lite/hash index 3402834a54..36d6826cf2 100644 --- a/repos/libports/recipes/src/pcsc-lite/hash +++ b/repos/libports/recipes/src/pcsc-lite/hash @@ -1 +1 @@ -2024-11-19 56ffdb738ff1fdaec1bfa8e5c5da62421ba616ed +2024-12-10 f3cbd01bc297315f866d9fdf50566885f5ca806a diff --git a/repos/libports/recipes/src/pdf_view/hash b/repos/libports/recipes/src/pdf_view/hash index 3f24e4fb97..18c432b2e5 100644 --- a/repos/libports/recipes/src/pdf_view/hash +++ b/repos/libports/recipes/src/pdf_view/hash @@ -1 +1 @@ -2024-11-19 22eb322449ea1c057ea0fbeb9b2845ebdbc9d6ed +2024-12-10 715fac6080ac94af663e4902d59f802033857e2f diff --git a/repos/libports/recipes/src/posix/hash b/repos/libports/recipes/src/posix/hash index ac67b548b3..425bd69e64 100644 --- a/repos/libports/recipes/src/posix/hash +++ b/repos/libports/recipes/src/posix/hash @@ -1 +1 @@ -2024-11-19 02f2ac1b9990211246ef0355ea590b2164701528 +2024-12-10 5ddd70009c99b45f32b377e80df72c784af335d1 diff --git a/repos/libports/recipes/src/qt5_base/hash b/repos/libports/recipes/src/qt5_base/hash index f5863299b8..e5547a03e9 100644 --- a/repos/libports/recipes/src/qt5_base/hash +++ b/repos/libports/recipes/src/qt5_base/hash @@ -1 +1 @@ -2024-11-19 dac5da6fb7b1db691c137b25740ce3c4f79038c4 +2024-12-10 fa9b38be15e280bd7ac87946b8a84f5dede858d0 diff --git a/repos/libports/recipes/src/qt5_component/hash b/repos/libports/recipes/src/qt5_component/hash index 65dd5c0264..58d18b058f 100644 --- a/repos/libports/recipes/src/qt5_component/hash +++ b/repos/libports/recipes/src/qt5_component/hash @@ -1 +1 @@ -2024-11-19 ef448f09faaee10f1062a8052c188ea41c1e3281 +2024-12-10 a0d9cfff80be3587966f6faf1081b6e56d72f0b1 diff --git a/repos/libports/recipes/src/qt5_launchpad/hash b/repos/libports/recipes/src/qt5_launchpad/hash index 07ba6ce26d..49212359d2 100644 --- a/repos/libports/recipes/src/qt5_launchpad/hash +++ b/repos/libports/recipes/src/qt5_launchpad/hash @@ -1 +1 @@ -2024-11-19 2e8b578ab0a5116029b628311791eced54129491 +2024-12-10 9d6569c5c17a1f45ee72e1e64efdef521145871d diff --git a/repos/libports/recipes/src/qt5_quickcontrols2/hash b/repos/libports/recipes/src/qt5_quickcontrols2/hash index b438f8bd62..cef03ce831 100644 --- a/repos/libports/recipes/src/qt5_quickcontrols2/hash +++ b/repos/libports/recipes/src/qt5_quickcontrols2/hash @@ -1 +1 @@ -2024-11-19 4c2c5b2a19b3ccf818a880e496d791a4fd7d9f92 +2024-12-10 8a2d7a83267d388a3662986a1151faaeb1caeed8 diff --git a/repos/libports/recipes/src/qt5_svg/hash b/repos/libports/recipes/src/qt5_svg/hash index a7044a1dac..2e01fffa78 100644 --- a/repos/libports/recipes/src/qt5_svg/hash +++ b/repos/libports/recipes/src/qt5_svg/hash @@ -1 +1 @@ -2024-11-19 decac0951ec0d6591cca829813341e22b6f8503d +2024-12-10 fd5aaf291b283b39d2eaae0658766c8052300250 diff --git a/repos/libports/recipes/src/qt6_base/hash b/repos/libports/recipes/src/qt6_base/hash index 5eae2f7507..dbb54685e0 100644 --- a/repos/libports/recipes/src/qt6_base/hash +++ b/repos/libports/recipes/src/qt6_base/hash @@ -1 +1 @@ -2024-11-19 10b40980f1594a2790c4dcc954841617df54550b +2024-12-10 c8e8357175b1a7af9c295289015b0849a10db71b diff --git a/repos/libports/recipes/src/qt6_component/hash b/repos/libports/recipes/src/qt6_component/hash index 92190f9dc0..fd3a799716 100644 --- a/repos/libports/recipes/src/qt6_component/hash +++ b/repos/libports/recipes/src/qt6_component/hash @@ -1 +1 @@ -2024-11-19 7d3674621c675bf502a6fb95ed019a44e0badde7 +2024-12-10 ed28dda01981301bd96d564518b52dce929a4850 diff --git a/repos/libports/recipes/src/qt6_launchpad/hash b/repos/libports/recipes/src/qt6_launchpad/hash index 8985950bcf..cfc3e52be8 100644 --- a/repos/libports/recipes/src/qt6_launchpad/hash +++ b/repos/libports/recipes/src/qt6_launchpad/hash @@ -1 +1 @@ -2024-11-19 d66f8daaca8f68a27081842e2a07e1b3709e635d +2024-12-10 6cc4d0425059dfa62b58f6f91e540f074da5efe6 diff --git a/repos/libports/recipes/src/sanitizer/hash b/repos/libports/recipes/src/sanitizer/hash index b1cb42c9cf..8a7951157d 100644 --- a/repos/libports/recipes/src/sanitizer/hash +++ b/repos/libports/recipes/src/sanitizer/hash @@ -1 +1 @@ -2024-11-19 42f44875af9fc25f430c3dc9cbb0a4192fc566d7 +2024-12-10 619bc7064c88412edb23f8587304c699f81dd169 diff --git a/repos/libports/recipes/src/sntp_client/hash b/repos/libports/recipes/src/sntp_client/hash index 7e613528ea..91f77aa845 100644 --- a/repos/libports/recipes/src/sntp_client/hash +++ b/repos/libports/recipes/src/sntp_client/hash @@ -1 +1 @@ -2024-11-19 68953febc0397189433c07389b753534766c057b +2024-12-10 ff89189cce3873c87db1528cf17c53e261497688 diff --git a/repos/libports/recipes/src/spark/hash b/repos/libports/recipes/src/spark/hash index 63522c9f6b..e74df04977 100644 --- a/repos/libports/recipes/src/spark/hash +++ b/repos/libports/recipes/src/spark/hash @@ -1 +1 @@ -2024-11-19 61c0d7d2dd7121252d5efa72ada9e8c6799c077f +2024-12-10 7f51d25b9b9a1d220a3df506a4cf3152f4bcb81b diff --git a/repos/libports/recipes/src/system_rtc/hash b/repos/libports/recipes/src/system_rtc/hash index ffe7902500..efee823178 100644 --- a/repos/libports/recipes/src/system_rtc/hash +++ b/repos/libports/recipes/src/system_rtc/hash @@ -1 +1 @@ -2024-11-19 e1ce22ffd610850f8f6e5141d80043f7eb337de7 +2024-12-10 28fd93ca450980a59d4b01cdc911c58dadb1795f diff --git a/repos/libports/recipes/src/test-ldso/hash b/repos/libports/recipes/src/test-ldso/hash index 9d1f1ae284..de075fd747 100644 --- a/repos/libports/recipes/src/test-ldso/hash +++ b/repos/libports/recipes/src/test-ldso/hash @@ -1 +1 @@ -2024-11-19 cfa25e66fc44cbb657a48a29f3ae04233cf8a521 +2024-12-10 d12ad1e939b257d5700ddb62fccc470e35536ea2 diff --git a/repos/libports/recipes/src/test-libc_fifo_pipe/hash b/repos/libports/recipes/src/test-libc_fifo_pipe/hash index 25ea8b6780..8884e418a0 100644 --- a/repos/libports/recipes/src/test-libc_fifo_pipe/hash +++ b/repos/libports/recipes/src/test-libc_fifo_pipe/hash @@ -1 +1 @@ -2024-11-19 d48356030c79df34f62032cce143e1b684e7df6a +2024-12-10 94844befa19cb9770bfec93be7c02b0271ff34ed diff --git a/repos/libports/recipes/src/test-libc_vfs/hash b/repos/libports/recipes/src/test-libc_vfs/hash index 9a21621bb9..aa0a1c2c98 100644 --- a/repos/libports/recipes/src/test-libc_vfs/hash +++ b/repos/libports/recipes/src/test-libc_vfs/hash @@ -1 +1 @@ -2024-11-19 aa6fa4cec32dc39bdeea10a03abc9551cf5d4c0c +2024-12-10 99bcdc6e0c3f56d927586b57d1be1892aae9efb4 diff --git a/repos/libports/recipes/src/test-libc_vfs_block/hash b/repos/libports/recipes/src/test-libc_vfs_block/hash index 9c7c355d3f..b6c22a7142 100644 --- a/repos/libports/recipes/src/test-libc_vfs_block/hash +++ b/repos/libports/recipes/src/test-libc_vfs_block/hash @@ -1 +1 @@ -2024-11-19 e6e51dd1da3b9e0342ad2d5dc247c30a70c5d25d +2024-12-10 e8443971af9d114abf3d770db59f185feb564d93 diff --git a/repos/libports/recipes/src/test-netty/hash b/repos/libports/recipes/src/test-netty/hash index c654c00117..b69afef505 100644 --- a/repos/libports/recipes/src/test-netty/hash +++ b/repos/libports/recipes/src/test-netty/hash @@ -1 +1 @@ -2024-11-19 c079d583137ee71a600195259a1a0c85a1d8be64 +2024-12-10 d4b13b1aecd897aa42ae600620e47706c4d7cc02 diff --git a/repos/libports/recipes/src/test-pthread/hash b/repos/libports/recipes/src/test-pthread/hash index 4d79e49b2b..63bbf6589f 100644 --- a/repos/libports/recipes/src/test-pthread/hash +++ b/repos/libports/recipes/src/test-pthread/hash @@ -1 +1 @@ -2024-11-19 56d51c05844bad64cf63d27e878a175a50238ca3 +2024-12-10 01ddf263611b06efd62b12d0d60d32c825b3f465 diff --git a/repos/libports/recipes/src/test-spark/hash b/repos/libports/recipes/src/test-spark/hash index f90caec847..845b82db6f 100644 --- a/repos/libports/recipes/src/test-spark/hash +++ b/repos/libports/recipes/src/test-spark/hash @@ -1 +1 @@ -2024-11-19 4de7d32dc190b8ce2323298c43e46c1b9834a9cd +2024-12-10 f687a373cad0e8efa246fc59e068302e8b7f19c0 diff --git a/repos/libports/recipes/src/test-spark_exception/hash b/repos/libports/recipes/src/test-spark_exception/hash index ac0d52ad92..479d36c108 100644 --- a/repos/libports/recipes/src/test-spark_exception/hash +++ b/repos/libports/recipes/src/test-spark_exception/hash @@ -1 +1 @@ -2024-11-19 64ed069b917a2dc0ee42d92137c9897ee434eb70 +2024-12-10 058e943a5debe805346d06021d40724f40f35a8f diff --git a/repos/libports/recipes/src/test-spark_secondary_stack/hash b/repos/libports/recipes/src/test-spark_secondary_stack/hash index db075abf54..831dd3be4e 100644 --- a/repos/libports/recipes/src/test-spark_secondary_stack/hash +++ b/repos/libports/recipes/src/test-spark_secondary_stack/hash @@ -1 +1 @@ -2024-11-19 a1fadb9f5c75cee3a08413466f3450c4641b39ce +2024-12-10 47b572caecbbb1f0917627f7469edaa589b69a1e diff --git a/repos/libports/recipes/src/test-tcp/hash b/repos/libports/recipes/src/test-tcp/hash index 41c3fca89b..b92c2b889c 100644 --- a/repos/libports/recipes/src/test-tcp/hash +++ b/repos/libports/recipes/src/test-tcp/hash @@ -1 +1 @@ -2024-11-19 e2b360198a80eea74c41d1aa22f41fe28e8166ef +2024-12-10 5c6df3a359da18c1b97484252d9bb7fef51b8165 diff --git a/repos/libports/recipes/src/usb_webcam/hash b/repos/libports/recipes/src/usb_webcam/hash index c2e0a2c422..f159fd489a 100644 --- a/repos/libports/recipes/src/usb_webcam/hash +++ b/repos/libports/recipes/src/usb_webcam/hash @@ -1 +1 @@ -2024-11-19 c10a61c1fb23add009a686aed5dd7930518fb060 +2024-12-10 e31c8cd018de957b8023ea00d8a62c528cfc84b2 diff --git a/repos/libports/recipes/src/vesa_fb/hash b/repos/libports/recipes/src/vesa_fb/hash index 3de1bd0262..f657cd6afc 100644 --- a/repos/libports/recipes/src/vesa_fb/hash +++ b/repos/libports/recipes/src/vesa_fb/hash @@ -1 +1 @@ -2024-11-19 65507ac89376f6c5cf439a9beef6d7cc2299bf45 +2024-12-10 14d454ded6f23e3d73261ffbab5a5b6fcb6dd0d6 diff --git a/repos/libports/recipes/src/vfs_fatfs/hash b/repos/libports/recipes/src/vfs_fatfs/hash index 8b95dcca42..bb0b7106a7 100644 --- a/repos/libports/recipes/src/vfs_fatfs/hash +++ b/repos/libports/recipes/src/vfs_fatfs/hash @@ -1 +1 @@ -2024-11-19 d5ad900ec4672380ecdfc971cede826162f8b3b6 +2024-12-10 6447801de86db3af675c58e61fe4520efdb569a1 diff --git a/repos/libports/recipes/src/vfs_jitterentropy/hash b/repos/libports/recipes/src/vfs_jitterentropy/hash index bc2a28044f..166ed65007 100644 --- a/repos/libports/recipes/src/vfs_jitterentropy/hash +++ b/repos/libports/recipes/src/vfs_jitterentropy/hash @@ -1 +1 @@ -2024-11-19 d5dc3ac51a4e2f423b0a1213e3a58e2a4d50de50 +2024-12-10 d74c28796b2421ecf1b8efc2f1d2096300cf7b04 diff --git a/repos/libports/recipes/src/vfs_legacy_oss/hash b/repos/libports/recipes/src/vfs_legacy_oss/hash index b468f13459..33727e453b 100644 --- a/repos/libports/recipes/src/vfs_legacy_oss/hash +++ b/repos/libports/recipes/src/vfs_legacy_oss/hash @@ -1 +1 @@ -2024-11-19 0770c4ef42272fa46a203930e0f6f811149eb06d +2024-12-10 ffc4e0063a72e9b7aa665f6d1150f9d716ba654a diff --git a/repos/libports/recipes/src/vfs_libusb/hash b/repos/libports/recipes/src/vfs_libusb/hash index 6437f4d3d2..b6b632ac0b 100644 --- a/repos/libports/recipes/src/vfs_libusb/hash +++ b/repos/libports/recipes/src/vfs_libusb/hash @@ -1 +1 @@ -2024-11-19 bf694a29e515ab709e6c74720149ccd4aeb48f5b +2024-12-10 ef24de4bbd051a9e74780094aeee496b873341ff diff --git a/repos/libports/recipes/src/vfs_lwip/hash b/repos/libports/recipes/src/vfs_lwip/hash index c334070b7d..b0e2138aef 100644 --- a/repos/libports/recipes/src/vfs_lwip/hash +++ b/repos/libports/recipes/src/vfs_lwip/hash @@ -1 +1 @@ -2024-11-19 2f4ed741932180d50ff3a6cf4e752a772c39febf +2024-12-10 1792496224f84dd0bdba41569a89cd6b5bfc419d diff --git a/repos/os/recipes/api/audio_in_session/hash b/repos/os/recipes/api/audio_in_session/hash index 5808657001..be001e69f2 100644 --- a/repos/os/recipes/api/audio_in_session/hash +++ b/repos/os/recipes/api/audio_in_session/hash @@ -1 +1 @@ -2024-08-28 9addc940df85488fbf88469ff720b945e41c4246 +2024-12-10 b51b8e7b49ba5dc94392eb506f5ee3d867abf914 diff --git a/repos/os/recipes/api/audio_out_session/hash b/repos/os/recipes/api/audio_out_session/hash index 4a14699853..3266472ac9 100644 --- a/repos/os/recipes/api/audio_out_session/hash +++ b/repos/os/recipes/api/audio_out_session/hash @@ -1 +1 @@ -2024-08-28 3ee0c730a62a902abad8d5e600ad6378dbc20189 +2024-12-10 3d0e275e4c295cea47b7ae9d664a2a8883a0c65f diff --git a/repos/os/recipes/api/usb_session/hash b/repos/os/recipes/api/usb_session/hash index fe18225c1c..3ccc38f775 100644 --- a/repos/os/recipes/api/usb_session/hash +++ b/repos/os/recipes/api/usb_session/hash @@ -1 +1 @@ -2024-08-28 ba9453393e9c51b889f0342c718ffaeeb1849af3 +2024-12-10 4b4dff6c9c4f756830dece1f937f376b90b53a43 diff --git a/repos/os/recipes/pkg/black_hole/hash b/repos/os/recipes/pkg/black_hole/hash index 4c571a1d38..a3783587a8 100644 --- a/repos/os/recipes/pkg/black_hole/hash +++ b/repos/os/recipes/pkg/black_hole/hash @@ -1 +1 @@ -2024-11-19 0c18db8cabbea5b82d7dd3a3f605bd917c80a728 +2024-12-10 e3681081231dc4fc9c3703a4a1545e0e4b37409b diff --git a/repos/os/recipes/pkg/chroot/hash b/repos/os/recipes/pkg/chroot/hash index d8ed885d8a..a0af3166b2 100644 --- a/repos/os/recipes/pkg/chroot/hash +++ b/repos/os/recipes/pkg/chroot/hash @@ -1 +1 @@ -2024-11-19 69197573596211253676a9d8f25c1ffaffb5f0b2 +2024-12-10 f2fed7cfd3f387125506ed6a11bb3810b0d9f964 diff --git a/repos/os/recipes/pkg/clipboard/hash b/repos/os/recipes/pkg/clipboard/hash index bcc857ebaf..30cccbfba1 100644 --- a/repos/os/recipes/pkg/clipboard/hash +++ b/repos/os/recipes/pkg/clipboard/hash @@ -1 +1 @@ -2024-11-19 34667e1da378a56658179c73b3910f912495a5e3 +2024-12-10 492ff2a325c9535cc69ffee2351375f9fddec731 diff --git a/repos/os/recipes/pkg/cpu_balancer/hash b/repos/os/recipes/pkg/cpu_balancer/hash index 40d8cc560c..fc98e85bdc 100644 --- a/repos/os/recipes/pkg/cpu_balancer/hash +++ b/repos/os/recipes/pkg/cpu_balancer/hash @@ -1 +1 @@ -2024-11-19 6eeaa115085efdf5d9669bc1c14567df7865d285 +2024-12-10 2fe00f0435b9d9d9804bbfd4d4a1542918db1789 diff --git a/repos/os/recipes/pkg/cpu_balancer_config/hash b/repos/os/recipes/pkg/cpu_balancer_config/hash index c65346a737..260102865b 100644 --- a/repos/os/recipes/pkg/cpu_balancer_config/hash +++ b/repos/os/recipes/pkg/cpu_balancer_config/hash @@ -1 +1 @@ -2024-11-19 1eea9af3c8702f66cddbbffcb9ed7f548a5a6689 +2024-12-10 5fc3cf48f89228ed7dbf7e59fd9b36d6bfa6c7f6 diff --git a/repos/os/recipes/pkg/cpu_burner/hash b/repos/os/recipes/pkg/cpu_burner/hash index 0f46b76d1a..87b292a887 100644 --- a/repos/os/recipes/pkg/cpu_burner/hash +++ b/repos/os/recipes/pkg/cpu_burner/hash @@ -1 +1 @@ -2024-11-19 5d5fdfeafb466f5f6692a783eb298f34f30ddaa1 +2024-12-10 16be55d5616f6c4ec4fea15ff69018427360fdd6 diff --git a/repos/os/recipes/pkg/drivers_interactive-linux/hash b/repos/os/recipes/pkg/drivers_interactive-linux/hash index 5e7f55dbb0..a3a4255bf6 100644 --- a/repos/os/recipes/pkg/drivers_interactive-linux/hash +++ b/repos/os/recipes/pkg/drivers_interactive-linux/hash @@ -1 +1 @@ -2024-11-19 013bf50e5695458da59bfe45355b88685bd50314 +2024-12-10 fc42f5f795a11177c6c5545666c466a5da5e01db diff --git a/repos/os/recipes/pkg/drivers_interactive-pbxa9/hash b/repos/os/recipes/pkg/drivers_interactive-pbxa9/hash index 491bd8b2e6..1f07d348fc 100644 --- a/repos/os/recipes/pkg/drivers_interactive-pbxa9/hash +++ b/repos/os/recipes/pkg/drivers_interactive-pbxa9/hash @@ -1 +1 @@ -2024-11-19 035efd2e2b5625c385cf6735b92bea9eead16a8b +2024-12-10 c7d3072c0e52005c078ff75f35d1a5e6e53ccddf diff --git a/repos/os/recipes/pkg/drivers_interactive-pc/hash b/repos/os/recipes/pkg/drivers_interactive-pc/hash index 7e96f5c774..a8997a790d 100644 --- a/repos/os/recipes/pkg/drivers_interactive-pc/hash +++ b/repos/os/recipes/pkg/drivers_interactive-pc/hash @@ -1 +1 @@ -2024-11-19 eb528a3c36e86f422dab23226b729c9f5e516928 +2024-12-10 9f8df43b519b6a7a8300ff6b26bb8eaf82fcf2ba diff --git a/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash b/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash index 645b6e2834..7f42bf435a 100644 --- a/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash +++ b/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v7a/hash @@ -1 +1 @@ -2024-11-19 d8f18325b09d52d031ac97ee9b4e97f8e6763489 +2024-12-10 20b440c9294b767999b80fc746b77fca8a8c5f87 diff --git a/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash b/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash index 645b6e2834..7f42bf435a 100644 --- a/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash +++ b/repos/os/recipes/pkg/drivers_interactive-virt_qemu_arm_v8a/hash @@ -1 +1 @@ -2024-11-19 d8f18325b09d52d031ac97ee9b4e97f8e6763489 +2024-12-10 20b440c9294b767999b80fc746b77fca8a8c5f87 diff --git a/repos/os/recipes/pkg/drivers_nic-linux/hash b/repos/os/recipes/pkg/drivers_nic-linux/hash index 56a06dc955..8206799ef6 100644 --- a/repos/os/recipes/pkg/drivers_nic-linux/hash +++ b/repos/os/recipes/pkg/drivers_nic-linux/hash @@ -1 +1 @@ -2024-11-19 26ae34a6c28744ad5a89f79c6f29180be9e44f80 +2024-12-10 17f69f524824be2030911853aa0b1180302ce191 diff --git a/repos/os/recipes/pkg/drivers_nic-pbxa9/hash b/repos/os/recipes/pkg/drivers_nic-pbxa9/hash index dc78ba4e43..9791e12151 100644 --- a/repos/os/recipes/pkg/drivers_nic-pbxa9/hash +++ b/repos/os/recipes/pkg/drivers_nic-pbxa9/hash @@ -1 +1 @@ -2024-11-19 2df1041a1d2e6d274ceb1088323e70faafe393c9 +2024-12-10 0171b3651dae8f5d082597a32be42a31e53dc071 diff --git a/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash b/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash index 966badb9a7..9a75127517 100644 --- a/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash +++ b/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v7a/hash @@ -1 +1 @@ -2024-11-19 4d2c28e4b23168e91014d6153b55dae10e892f7c +2024-12-10 d9819b656958843401632e2314ebc26eca3d84c0 diff --git a/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash b/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash index 966badb9a7..9a75127517 100644 --- a/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash +++ b/repos/os/recipes/pkg/drivers_nic-virt_qemu_arm_v8a/hash @@ -1 +1 @@ -2024-11-19 4d2c28e4b23168e91014d6153b55dae10e892f7c +2024-12-10 d9819b656958843401632e2314ebc26eca3d84c0 diff --git a/repos/os/recipes/pkg/dynamic_rom/hash b/repos/os/recipes/pkg/dynamic_rom/hash index bbce63de5c..423099156a 100644 --- a/repos/os/recipes/pkg/dynamic_rom/hash +++ b/repos/os/recipes/pkg/dynamic_rom/hash @@ -1 +1 @@ -2024-11-19 3f8780f1bcc49435700c87944b7e540d31e2e99e +2024-12-10 143522de81d54116bf6c45bb336053398238f474 diff --git a/repos/os/recipes/pkg/fs_report/hash b/repos/os/recipes/pkg/fs_report/hash index f7035c7a65..913be7a43b 100644 --- a/repos/os/recipes/pkg/fs_report/hash +++ b/repos/os/recipes/pkg/fs_report/hash @@ -1 +1 @@ -2024-11-19 ad7ba0f86a828695a0bb3dfb4df353da91a3ac3c +2024-12-10 8dec5187f0a206815d3aca76eeefc15039d87943 diff --git a/repos/os/recipes/pkg/fs_rom/hash b/repos/os/recipes/pkg/fs_rom/hash index 5fa88fbb46..70186fcd4f 100644 --- a/repos/os/recipes/pkg/fs_rom/hash +++ b/repos/os/recipes/pkg/fs_rom/hash @@ -1 +1 @@ -2024-11-19 a602a1f867225803fdf3405d8e3c130d940ecb40 +2024-12-10 db8040e8ea9638a67bdf4cbc890169715515015c diff --git a/repos/os/recipes/pkg/mixer/hash b/repos/os/recipes/pkg/mixer/hash index 76aab0d0f2..d0825ea5d8 100644 --- a/repos/os/recipes/pkg/mixer/hash +++ b/repos/os/recipes/pkg/mixer/hash @@ -1 +1 @@ -2024-11-19 c59f0b664a34d06f7625ad721a14f6426177d3a8 +2024-12-10 c0baa924c868bf386dbc97159c8d9f8b1d49c48f diff --git a/repos/os/recipes/pkg/nic_router-nat/hash b/repos/os/recipes/pkg/nic_router-nat/hash index f84b641b33..1571b343f5 100644 --- a/repos/os/recipes/pkg/nic_router-nat/hash +++ b/repos/os/recipes/pkg/nic_router-nat/hash @@ -1 +1 @@ -2024-11-19 1690b91c3b62fbe8f170e44c99ff1222f98a0f60 +2024-12-10 005b1e6ed934fe274f9f3ff9b1b32da6e38d89e8 diff --git a/repos/os/recipes/pkg/nic_uplink/hash b/repos/os/recipes/pkg/nic_uplink/hash index 66761eca96..6e90d199a6 100644 --- a/repos/os/recipes/pkg/nic_uplink/hash +++ b/repos/os/recipes/pkg/nic_uplink/hash @@ -1 +1 @@ -2024-11-19 758909c94f61dc6822eceee0c79b1ef03135f2c9 +2024-12-10 6400a3d7afc7915a52bc6cbff8e4e183ff413c81 diff --git a/repos/os/recipes/pkg/nit_focus/hash b/repos/os/recipes/pkg/nit_focus/hash index 3933a9059a..e212962b87 100644 --- a/repos/os/recipes/pkg/nit_focus/hash +++ b/repos/os/recipes/pkg/nit_focus/hash @@ -1 +1 @@ -2024-11-19 ad4895992da685993e95d7e5e88a338e73ac5fe0 +2024-12-10 4f248ac41db024a2bef58aa3bdd5eb3ce638a001 diff --git a/repos/os/recipes/pkg/nitpicker/hash b/repos/os/recipes/pkg/nitpicker/hash index 304451f1cc..bc8768ceae 100644 --- a/repos/os/recipes/pkg/nitpicker/hash +++ b/repos/os/recipes/pkg/nitpicker/hash @@ -1 +1 @@ -2024-11-19 4a03491e44c220ca7e60c807a062a69316861389 +2024-12-10 26ad5051afd3dd8d7227d38b5d69c9d3613eb477 diff --git a/repos/os/recipes/pkg/part_block/hash b/repos/os/recipes/pkg/part_block/hash index 1268a4c68c..2027c839bd 100644 --- a/repos/os/recipes/pkg/part_block/hash +++ b/repos/os/recipes/pkg/part_block/hash @@ -1 +1 @@ -2024-11-19 e026c9065d6aee131b56d2764073a64e80ac28d0 +2024-12-10 136eee960b7709875cb83cada916f91c5dc1ea59 diff --git a/repos/os/recipes/pkg/ping/hash b/repos/os/recipes/pkg/ping/hash index 91adb84686..a79e6a19ca 100644 --- a/repos/os/recipes/pkg/ping/hash +++ b/repos/os/recipes/pkg/ping/hash @@ -1 +1 @@ -2024-11-19 4b09636bdcb7b8eaabd5ad3668c4c10e9481adf8 +2024-12-10 9ac6fb2550fbc5083bb346d932c612c446177a51 diff --git a/repos/os/recipes/pkg/recall_fs/hash b/repos/os/recipes/pkg/recall_fs/hash index 2c9919a8a2..9046b0fb6c 100644 --- a/repos/os/recipes/pkg/recall_fs/hash +++ b/repos/os/recipes/pkg/recall_fs/hash @@ -1 +1 @@ -2024-11-19 1d6007d7f2908753afaa72417ceb64c67450cab0 +2024-12-10 126809511e7c96a49bcc4109ccea98102afc9495 diff --git a/repos/os/recipes/pkg/record_play_mixer/hash b/repos/os/recipes/pkg/record_play_mixer/hash index df326479a5..df66f4e79e 100644 --- a/repos/os/recipes/pkg/record_play_mixer/hash +++ b/repos/os/recipes/pkg/record_play_mixer/hash @@ -1 +1 @@ -2024-11-19 deb6e5e90d06a62652eac30daf4892a73819bdba +2024-12-10 855cac282025e574e9a9619bfc063dbd0fa3700d diff --git a/repos/os/recipes/pkg/record_rom/hash b/repos/os/recipes/pkg/record_rom/hash index 341a4c1bbb..d82a67aacd 100644 --- a/repos/os/recipes/pkg/record_rom/hash +++ b/repos/os/recipes/pkg/record_rom/hash @@ -1 +1 @@ -2024-11-19 5089001086942718f2f307c97273fbe18e9f7be9 +2024-12-10 644594d70aedeba0044a2158533659fc4a97dc3e diff --git a/repos/os/recipes/pkg/report_rom/hash b/repos/os/recipes/pkg/report_rom/hash index 9a4701ab37..830cf93c0c 100644 --- a/repos/os/recipes/pkg/report_rom/hash +++ b/repos/os/recipes/pkg/report_rom/hash @@ -1 +1 @@ -2024-11-19 047b3d1d6cacc3b999ce3ba87737f102b461ffe2 +2024-12-10 b9df2d3f4b377dcbffc74699f3f8b4ea2ae62322 diff --git a/repos/os/recipes/pkg/rom_filter/hash b/repos/os/recipes/pkg/rom_filter/hash index 42fd934785..66c9a18ca7 100644 --- a/repos/os/recipes/pkg/rom_filter/hash +++ b/repos/os/recipes/pkg/rom_filter/hash @@ -1 +1 @@ -2024-11-19 d717ba1a448639813b844b07a2545f93f2605200 +2024-12-10 e2941bcefa91bc1c10f7f613a5448d74f8eb64e4 diff --git a/repos/os/recipes/pkg/rom_reporter/hash b/repos/os/recipes/pkg/rom_reporter/hash index bf00b7e108..53dc464e2d 100644 --- a/repos/os/recipes/pkg/rom_reporter/hash +++ b/repos/os/recipes/pkg/rom_reporter/hash @@ -1 +1 @@ -2024-11-19 cd11d26dfa5eecf76a4305e14c4e26a2d6ae9507 +2024-12-10 237deb1aa4f2529673a94d62b6af56dd2a794200 diff --git a/repos/os/recipes/pkg/terminal_crosslink/hash b/repos/os/recipes/pkg/terminal_crosslink/hash index 921866492d..76977444e9 100644 --- a/repos/os/recipes/pkg/terminal_crosslink/hash +++ b/repos/os/recipes/pkg/terminal_crosslink/hash @@ -1 +1 @@ -2024-11-19 0e104ed142c46849da0233b2db936cf01e077231 +2024-12-10 f2d581ac003d2fd10358fffb42c9f6bf8165b913 diff --git a/repos/os/recipes/pkg/test-audio_out/hash b/repos/os/recipes/pkg/test-audio_out/hash index 9a37d5f823..8ac508c916 100644 --- a/repos/os/recipes/pkg/test-audio_out/hash +++ b/repos/os/recipes/pkg/test-audio_out/hash @@ -1 +1 @@ -2024-11-19 c8e83440125d59667dff7dcfe553f66b9b0292dd +2024-12-10 7968e132ca758d6e0e7ea2ac1d7c8780ae4a2d42 diff --git a/repos/os/recipes/pkg/test-black_hole/hash b/repos/os/recipes/pkg/test-black_hole/hash index 5766b6bee4..f0b35c9278 100644 --- a/repos/os/recipes/pkg/test-black_hole/hash +++ b/repos/os/recipes/pkg/test-black_hole/hash @@ -1 +1 @@ -2024-11-19 c97ed325331ed7a7beda5b6d16ba9e1c642a8a25 +2024-12-10 44b10a4df0900e97ea2d98762488d98e213d6663 diff --git a/repos/os/recipes/pkg/test-capture/hash b/repos/os/recipes/pkg/test-capture/hash index a73c5fbc14..c48707c51a 100644 --- a/repos/os/recipes/pkg/test-capture/hash +++ b/repos/os/recipes/pkg/test-capture/hash @@ -1 +1 @@ -2024-11-19 ab8bbff4348401f3429fa2cd5928e0f157c0e161 +2024-12-10 430cff18a2bfb4400a1db9e30156702b5bbde4db diff --git a/repos/os/recipes/pkg/test-clipboard/hash b/repos/os/recipes/pkg/test-clipboard/hash index 5e32f0286e..d667de1095 100644 --- a/repos/os/recipes/pkg/test-clipboard/hash +++ b/repos/os/recipes/pkg/test-clipboard/hash @@ -1 +1 @@ -2024-11-19 42a5bd4b706243239d4546487870970fdb2619d6 +2024-12-10 c46c8be63a92aec44be6278857c2939151cbb0d3 diff --git a/repos/os/recipes/pkg/test-dynamic_config/hash b/repos/os/recipes/pkg/test-dynamic_config/hash index 72a495a5d9..155fce9bb7 100644 --- a/repos/os/recipes/pkg/test-dynamic_config/hash +++ b/repos/os/recipes/pkg/test-dynamic_config/hash @@ -1 +1 @@ -2024-11-19 dd1f18d967e44e3def5bef5a8f16796a1f2b2449 +2024-12-10 ab1b092f3a2726e489ccb74d19318d2b5babd793 diff --git a/repos/os/recipes/pkg/test-fault_detection/hash b/repos/os/recipes/pkg/test-fault_detection/hash index f3ab957af3..0d9555c573 100644 --- a/repos/os/recipes/pkg/test-fault_detection/hash +++ b/repos/os/recipes/pkg/test-fault_detection/hash @@ -1 +1 @@ -2024-11-19 3317141fdefce576e9af43e8b2fd596deab04747 +2024-12-10 75b56aa54d0a57259e3207a78edd913ec9474f62 diff --git a/repos/os/recipes/pkg/test-fs_packet/hash b/repos/os/recipes/pkg/test-fs_packet/hash index 71af45ebcd..f5fb98a535 100644 --- a/repos/os/recipes/pkg/test-fs_packet/hash +++ b/repos/os/recipes/pkg/test-fs_packet/hash @@ -1 +1 @@ -2024-11-19 6160fb6e90916ba18b5e16b311e206aef81648dd +2024-12-10 8f401ff865cce40e9ab876265add90bb7976a15d diff --git a/repos/os/recipes/pkg/test-fs_report/hash b/repos/os/recipes/pkg/test-fs_report/hash index d2fba7b8e4..aaeeff65a5 100644 --- a/repos/os/recipes/pkg/test-fs_report/hash +++ b/repos/os/recipes/pkg/test-fs_report/hash @@ -1 +1 @@ -2024-11-19 a613b0c5d0fb4a430442aee717088366dadfb7bf +2024-12-10 80a177ba94a610b43a47d69123f3e6cef7f0312e diff --git a/repos/os/recipes/pkg/test-fs_rom_update/hash b/repos/os/recipes/pkg/test-fs_rom_update/hash index bdf60592ce..836339a6ad 100644 --- a/repos/os/recipes/pkg/test-fs_rom_update/hash +++ b/repos/os/recipes/pkg/test-fs_rom_update/hash @@ -1 +1 @@ -2024-11-19 8ff36f19c2a084db72cbd460c578685e3d180429 +2024-12-10 84c8695c2dbe6500306246662ad38d9f4ae11d57 diff --git a/repos/os/recipes/pkg/test-fs_rom_update_fs/hash b/repos/os/recipes/pkg/test-fs_rom_update_fs/hash index 9fa4670f05..7b921450a0 100644 --- a/repos/os/recipes/pkg/test-fs_rom_update_fs/hash +++ b/repos/os/recipes/pkg/test-fs_rom_update_fs/hash @@ -1 +1 @@ -2024-11-19 a7f8fa8537b095c15e4b82d7ac7fa5adda395210 +2024-12-10 92c8f8ad5b54418a58af71a6e52ee23b17626248 diff --git a/repos/os/recipes/pkg/test-fs_rom_update_ram/hash b/repos/os/recipes/pkg/test-fs_rom_update_ram/hash index f910983275..895e11ae97 100644 --- a/repos/os/recipes/pkg/test-fs_rom_update_ram/hash +++ b/repos/os/recipes/pkg/test-fs_rom_update_ram/hash @@ -1 +1 @@ -2024-11-19 b0e904105cc7727f54574d95c8ec7ffbf328b4a0 +2024-12-10 d1180e8e24784e906d6e96f5099d1ebcc20d3b8a diff --git a/repos/os/recipes/pkg/test-init/hash b/repos/os/recipes/pkg/test-init/hash index 548a5f2ab9..b79e578237 100644 --- a/repos/os/recipes/pkg/test-init/hash +++ b/repos/os/recipes/pkg/test-init/hash @@ -1 +1 @@ -2024-11-19 9eb62e7a04ca5682adf51a19dce738cc2bf42363 +2024-12-10 3ccf04d59d0a2057e500c721e69a507c4b8635f6 diff --git a/repos/os/recipes/pkg/test-init_loop/hash b/repos/os/recipes/pkg/test-init_loop/hash index 64a133e269..ae7bead5fd 100644 --- a/repos/os/recipes/pkg/test-init_loop/hash +++ b/repos/os/recipes/pkg/test-init_loop/hash @@ -1 +1 @@ -2024-11-19 8fce54d3984c07fd2f24094538c62baf633bb9ad +2024-12-10 be45da1f7d34e89dcff8462ba324e0520a0a5271 diff --git a/repos/os/recipes/pkg/test-lx_block/hash b/repos/os/recipes/pkg/test-lx_block/hash index 04969c375e..3ab5f49bd5 100644 --- a/repos/os/recipes/pkg/test-lx_block/hash +++ b/repos/os/recipes/pkg/test-lx_block/hash @@ -1 +1 @@ -2024-11-19 779d5c6d02e5b1a7ec6fe4a090ca4355d5cb3441 +2024-12-10 c6663eede2843fffafc4b012e74618f857f089c3 diff --git a/repos/os/recipes/pkg/test-nic_loopback/hash b/repos/os/recipes/pkg/test-nic_loopback/hash index d3df61c156..ee6e84d418 100644 --- a/repos/os/recipes/pkg/test-nic_loopback/hash +++ b/repos/os/recipes/pkg/test-nic_loopback/hash @@ -1 +1 @@ -2024-11-19 1a4b3efcf2e9e69caf6b06095164d7c30b0bb533 +2024-12-10 34771214c33eb6523a5ef3f1df1ca54eb2dacfc5 diff --git a/repos/os/recipes/pkg/test-nic_perf/hash b/repos/os/recipes/pkg/test-nic_perf/hash index 2460afb364..d4f3a8c0b7 100644 --- a/repos/os/recipes/pkg/test-nic_perf/hash +++ b/repos/os/recipes/pkg/test-nic_perf/hash @@ -1 +1 @@ -2024-11-19 b6cf03066bc201e61e8caf5c8a0f84f4c6ff5055 +2024-12-10 8acd02819376377d22ba36246340fe3b126c66f1 diff --git a/repos/os/recipes/pkg/test-nic_perf_router/hash b/repos/os/recipes/pkg/test-nic_perf_router/hash index a9462078ca..0431f3f70a 100644 --- a/repos/os/recipes/pkg/test-nic_perf_router/hash +++ b/repos/os/recipes/pkg/test-nic_perf_router/hash @@ -1 +1 @@ -2024-11-19 d18e4ed5813bc8c28f66af3dadeafe597525c807 +2024-12-10 b0fab2e5114cecfae163121f4a7bb9aee681803b diff --git a/repos/os/recipes/pkg/test-part_block_ahdi/hash b/repos/os/recipes/pkg/test-part_block_ahdi/hash index 88af745f0e..1fffe6e099 100644 --- a/repos/os/recipes/pkg/test-part_block_ahdi/hash +++ b/repos/os/recipes/pkg/test-part_block_ahdi/hash @@ -1 +1 @@ -2024-11-19 c58c4dd8baf327914c6d308f678641475a0e03f0 +2024-12-10 7636559fae5b7c62bc11cfede0ab413fa5f6f8fc diff --git a/repos/os/recipes/pkg/test-part_block_disk/hash b/repos/os/recipes/pkg/test-part_block_disk/hash index a64603d928..7955b81b78 100644 --- a/repos/os/recipes/pkg/test-part_block_disk/hash +++ b/repos/os/recipes/pkg/test-part_block_disk/hash @@ -1 +1 @@ -2024-11-19 d7ac9fee76e24264b1705853a8a6ea802ebfa324 +2024-12-10 7bde5f71e60dafe61cedf7e5bd6d811cabf8e424 diff --git a/repos/os/recipes/pkg/test-part_block_gpt/hash b/repos/os/recipes/pkg/test-part_block_gpt/hash index d046af8bde..e9a3fd12ea 100644 --- a/repos/os/recipes/pkg/test-part_block_gpt/hash +++ b/repos/os/recipes/pkg/test-part_block_gpt/hash @@ -1 +1 @@ -2024-11-19 9fbe1d3ec49dd6596941c5d8755cd4754001fe64 +2024-12-10 eebf628d9bf993214af044c359bf28e7cda86f17 diff --git a/repos/os/recipes/pkg/test-part_block_mbr/hash b/repos/os/recipes/pkg/test-part_block_mbr/hash index 9c5028cd1c..c754b2717f 100644 --- a/repos/os/recipes/pkg/test-part_block_mbr/hash +++ b/repos/os/recipes/pkg/test-part_block_mbr/hash @@ -1 +1 @@ -2024-11-19 c6fc9d07872cc543667a4ccf8d92de48ccfbf495 +2024-12-10 f3df580afeaf1f5b63caf9663c9bb5b21d31b8f7 diff --git a/repos/os/recipes/pkg/test-path/hash b/repos/os/recipes/pkg/test-path/hash index 334b29753e..0e26a15a52 100644 --- a/repos/os/recipes/pkg/test-path/hash +++ b/repos/os/recipes/pkg/test-path/hash @@ -1 +1 @@ -2024-11-19 45077cf539f4ce433677eacd41a3dd4e91c57e44 +2024-12-10 4c467afa2e10dae7daf0ae966448c5e893029008 diff --git a/repos/os/recipes/pkg/test-ram_fs_chunk/hash b/repos/os/recipes/pkg/test-ram_fs_chunk/hash index cd8163cf4a..67a995a515 100644 --- a/repos/os/recipes/pkg/test-ram_fs_chunk/hash +++ b/repos/os/recipes/pkg/test-ram_fs_chunk/hash @@ -1 +1 @@ -2024-11-19 4036ae7d65e5425a21ec046907adf6d50bdcc1e1 +2024-12-10 0cfa6a45b39a1b00350891e4f45bf49f4cc33cd8 diff --git a/repos/os/recipes/pkg/test-read_only_rom/hash b/repos/os/recipes/pkg/test-read_only_rom/hash index 268585fb08..4b8af349a7 100644 --- a/repos/os/recipes/pkg/test-read_only_rom/hash +++ b/repos/os/recipes/pkg/test-read_only_rom/hash @@ -1 +1 @@ -2024-11-19 a94ee0d1f8a1cf09f9ff43ef85c140a2037d6176 +2024-12-10 292c21344f80ab656b55a18266e4aec9c2796872 diff --git a/repos/os/recipes/pkg/test-report_rom/hash b/repos/os/recipes/pkg/test-report_rom/hash index 7ca1f028fa..ce1e2703f6 100644 --- a/repos/os/recipes/pkg/test-report_rom/hash +++ b/repos/os/recipes/pkg/test-report_rom/hash @@ -1 +1 @@ -2024-11-19 03597178300df776b3aa904cd75534966ff300fa +2024-12-10 db39ab6adbb08b565e7f0b195ed7672048a7bf6e diff --git a/repos/os/recipes/pkg/test-resource_request/hash b/repos/os/recipes/pkg/test-resource_request/hash index 6505c18d84..9437f47416 100644 --- a/repos/os/recipes/pkg/test-resource_request/hash +++ b/repos/os/recipes/pkg/test-resource_request/hash @@ -1 +1 @@ -2024-11-19 0ad3bff892431ac03d13ca192be94538569b913c +2024-12-10 a4620d85337e88e504f44224202f96c1f7e300c6 diff --git a/repos/os/recipes/pkg/test-resource_yield/hash b/repos/os/recipes/pkg/test-resource_yield/hash index aec01a8510..fc052a4672 100644 --- a/repos/os/recipes/pkg/test-resource_yield/hash +++ b/repos/os/recipes/pkg/test-resource_yield/hash @@ -1 +1 @@ -2024-11-19 cae59355592f5732838c1e933bc742fdbc20e5e7 +2024-12-10 8c393666f30645dc89e26a3631139c53e4e6051e diff --git a/repos/os/recipes/pkg/test-rom_filter/hash b/repos/os/recipes/pkg/test-rom_filter/hash index aed9249f42..053c356e4d 100644 --- a/repos/os/recipes/pkg/test-rom_filter/hash +++ b/repos/os/recipes/pkg/test-rom_filter/hash @@ -1 +1 @@ -2024-11-19 39ac7fb59ca41a6e0cefde90debab9cadd7de102 +2024-12-10 93a11acd4a9953358410fa5afa20816c1ef7dac7 diff --git a/repos/os/recipes/pkg/test-rtc/hash b/repos/os/recipes/pkg/test-rtc/hash index 2b05a2ff59..6be5791abe 100644 --- a/repos/os/recipes/pkg/test-rtc/hash +++ b/repos/os/recipes/pkg/test-rtc/hash @@ -1 +1 @@ -2024-11-19 c9067384737dc2fc27e88689906942d83be444c2 +2024-12-10 ad0fcb040c71adc05524a2b51d5200abe17f9df8 diff --git a/repos/os/recipes/pkg/test-sandbox/hash b/repos/os/recipes/pkg/test-sandbox/hash index 4f4777ed90..7094c5446d 100644 --- a/repos/os/recipes/pkg/test-sandbox/hash +++ b/repos/os/recipes/pkg/test-sandbox/hash @@ -1 +1 @@ -2024-11-19 d61c7c27396b27a147d4e690bf2a7c12c2db56d9 +2024-12-10 cf18ec19a780a790da0ca29da408f343709fd6df diff --git a/repos/os/recipes/pkg/test-signal/hash b/repos/os/recipes/pkg/test-signal/hash index 20e569e913..689b3363e5 100644 --- a/repos/os/recipes/pkg/test-signal/hash +++ b/repos/os/recipes/pkg/test-signal/hash @@ -1 +1 @@ -2024-11-19 3ded4c4f6ad338483799840cd8e8487cfd770267 +2024-12-10 6651448b967acfa6fa35490c33ba66468ca15844 diff --git a/repos/os/recipes/pkg/test-slab/hash b/repos/os/recipes/pkg/test-slab/hash index 496f8cae0d..7dee375c10 100644 --- a/repos/os/recipes/pkg/test-slab/hash +++ b/repos/os/recipes/pkg/test-slab/hash @@ -1 +1 @@ -2024-11-19 9f7d1cb867ff3f1abfe7cb56c0e0e0686dac2874 +2024-12-10 8e93f19b150b87f17cfc7da9d43dfd77d08058c5 diff --git a/repos/os/recipes/pkg/test-terminal_crosslink/hash b/repos/os/recipes/pkg/test-terminal_crosslink/hash index f670cab871..80ab231bcb 100644 --- a/repos/os/recipes/pkg/test-terminal_crosslink/hash +++ b/repos/os/recipes/pkg/test-terminal_crosslink/hash @@ -1 +1 @@ -2024-11-19 86bcc36d247109c0b8374f6aad47c27bffd5f930 +2024-12-10 439e12769dd1b10a7fbca67f8a3600ed85c73e85 diff --git a/repos/os/recipes/pkg/test-trace/hash b/repos/os/recipes/pkg/test-trace/hash index 7abf3faab0..f498beb4b5 100644 --- a/repos/os/recipes/pkg/test-trace/hash +++ b/repos/os/recipes/pkg/test-trace/hash @@ -1 +1 @@ -2024-11-19 bc69befd27c01e4252e610c666121c673d99fe61 +2024-12-10 8b1d9c5d8c0e1fc25fb73f82e9fbd17a2b1562f3 diff --git a/repos/os/recipes/pkg/test-trace_buffer/hash b/repos/os/recipes/pkg/test-trace_buffer/hash index 6f33bbcca1..9319adf9f6 100644 --- a/repos/os/recipes/pkg/test-trace_buffer/hash +++ b/repos/os/recipes/pkg/test-trace_buffer/hash @@ -1 +1 @@ -2024-11-19 f00952542bb718ac3a23d072c2f2f2b5674b5ae3 +2024-12-10 cd133a9fdbb0c03d2eb90855214f04895dac2158 diff --git a/repos/os/recipes/pkg/test-trace_logger/hash b/repos/os/recipes/pkg/test-trace_logger/hash index 5bc22ad2ad..563704837e 100644 --- a/repos/os/recipes/pkg/test-trace_logger/hash +++ b/repos/os/recipes/pkg/test-trace_logger/hash @@ -1 +1 @@ -2024-11-19 8a25120a772102c8386ce38257b3873090cdd739 +2024-12-10 34659066c9f8136a068de2c950a667af4723c5d1 diff --git a/repos/os/recipes/pkg/test-utf8/hash b/repos/os/recipes/pkg/test-utf8/hash index 527a02dec0..fbb1527479 100644 --- a/repos/os/recipes/pkg/test-utf8/hash +++ b/repos/os/recipes/pkg/test-utf8/hash @@ -1 +1 @@ -2024-11-19 6d3170304654b3cdaa3e1d70295410f4cc0273a2 +2024-12-10 f3c0f3112925869ae49f117e4c4155118b6411cd diff --git a/repos/os/recipes/pkg/test-vfs_block/hash b/repos/os/recipes/pkg/test-vfs_block/hash index 06d4b7dbb1..10e4d08d1f 100644 --- a/repos/os/recipes/pkg/test-vfs_block/hash +++ b/repos/os/recipes/pkg/test-vfs_block/hash @@ -1 +1 @@ -2024-11-19 e0f2db579830f4529f24f7d82b44e8bf90a5fed5 +2024-12-10 eeca3761f9434183be43b6cd540065ffed9f2b5f diff --git a/repos/os/recipes/pkg/test-vfs_stress_fs/hash b/repos/os/recipes/pkg/test-vfs_stress_fs/hash index b7e66273da..3041954c8b 100644 --- a/repos/os/recipes/pkg/test-vfs_stress_fs/hash +++ b/repos/os/recipes/pkg/test-vfs_stress_fs/hash @@ -1 +1 @@ -2024-11-19 836feff0469e9d706ed73b5b78461112c4b24a3b +2024-12-10 fa3eb4c5118eebbae25b5b78a77f4e7129a58857 diff --git a/repos/os/recipes/pkg/test-vfs_stress_ram/hash b/repos/os/recipes/pkg/test-vfs_stress_ram/hash index 074f9de6f2..3ab9a495d6 100644 --- a/repos/os/recipes/pkg/test-vfs_stress_ram/hash +++ b/repos/os/recipes/pkg/test-vfs_stress_ram/hash @@ -1 +1 @@ -2024-11-19 8cd35325d27dfd6ee33b8e9ddeb1aa1d5ddcb966 +2024-12-10 6aa2d5b4e845628874e5e883c6922a135a9772c5 diff --git a/repos/os/recipes/pkg/test-weak_ptr/hash b/repos/os/recipes/pkg/test-weak_ptr/hash index d3ae5291d5..652ba759f6 100644 --- a/repos/os/recipes/pkg/test-weak_ptr/hash +++ b/repos/os/recipes/pkg/test-weak_ptr/hash @@ -1 +1 @@ -2024-11-19 e8a891ff2e160ecc87faac816a5ed280b68a531d +2024-12-10 3a190e230f73ce1bbfe13b9d05e18cbf67663ae8 diff --git a/repos/os/recipes/pkg/top/hash b/repos/os/recipes/pkg/top/hash index 6d0cb944da..5be4b1cf14 100644 --- a/repos/os/recipes/pkg/top/hash +++ b/repos/os/recipes/pkg/top/hash @@ -1 +1 @@ -2024-11-19 3e76d21eea75505f36fb1c8c69ae9f266d58fe50 +2024-12-10 b3518ad2b844590d173d502b7105b6de2d9c0c53 diff --git a/repos/os/recipes/pkg/trace_logger/hash b/repos/os/recipes/pkg/trace_logger/hash index 4ea468bc4f..a344b86cb3 100644 --- a/repos/os/recipes/pkg/trace_logger/hash +++ b/repos/os/recipes/pkg/trace_logger/hash @@ -1 +1 @@ -2024-11-19 9d0b381749f976c5a02c693d6418768fea6a85f1 +2024-12-10 aad0a3f76bdc9be33d7c84d70b392e00a5a1e3a6 diff --git a/repos/os/recipes/pkg/vfs/hash b/repos/os/recipes/pkg/vfs/hash index be9b3d0aad..289e782afc 100644 --- a/repos/os/recipes/pkg/vfs/hash +++ b/repos/os/recipes/pkg/vfs/hash @@ -1 +1 @@ -2024-11-19 4d3ccf07460fbc747f4bbcb4930662e57e6aabe0 +2024-12-10 b2c85c9380fb3f56dc310b06f6e17335ee32da03 diff --git a/repos/os/recipes/pkg/vfs_block/hash b/repos/os/recipes/pkg/vfs_block/hash index aeed21f06c..abd7955098 100644 --- a/repos/os/recipes/pkg/vfs_block/hash +++ b/repos/os/recipes/pkg/vfs_block/hash @@ -1 +1 @@ -2024-11-19 bed49dcd84aaed91d8e0af78bc874ed6b913ecc8 +2024-12-10 ce23eea170b0ca521afa68d737d612c8c5f2fc5f diff --git a/repos/os/recipes/pkg/waveform_player/hash b/repos/os/recipes/pkg/waveform_player/hash index 71aaeac15c..86442a2113 100644 --- a/repos/os/recipes/pkg/waveform_player/hash +++ b/repos/os/recipes/pkg/waveform_player/hash @@ -1 +1 @@ -2024-11-19 8daa33e28fc04922080279156b8c885821542ea8 +2024-12-10 608ca6d121e9c0bd01c3610aef2b4ae3140af221 diff --git a/repos/os/recipes/src/acpi/hash b/repos/os/recipes/src/acpi/hash index b60c915117..42c27fa739 100644 --- a/repos/os/recipes/src/acpi/hash +++ b/repos/os/recipes/src/acpi/hash @@ -1 +1 @@ -2024-11-19 3fca34f425c8348447f960d911cfb26c76f18a07 +2024-12-10 6c176b3b33d8ab0c8f233d4baa1ef610231ce453 diff --git a/repos/os/recipes/src/ahci/hash b/repos/os/recipes/src/ahci/hash index b79fc7b086..b65f9ef79b 100644 --- a/repos/os/recipes/src/ahci/hash +++ b/repos/os/recipes/src/ahci/hash @@ -1 +1 @@ -2024-11-19 b85832891b5e46b8e87c56c89600fdcfa7e391bc +2024-12-10 b7150dd8a071eae80a708e83cd37d1d55780b6e1 diff --git a/repos/os/recipes/src/black_hole/hash b/repos/os/recipes/src/black_hole/hash index 03b426ab2c..aed15c05cd 100644 --- a/repos/os/recipes/src/black_hole/hash +++ b/repos/os/recipes/src/black_hole/hash @@ -1 +1 @@ -2024-11-19 698855d0818845da30663fa4a6943f5c300835c1 +2024-12-10 79e77ad57dad4f7d1aaec19775a0152c6fcbb52a diff --git a/repos/os/recipes/src/block_tester/hash b/repos/os/recipes/src/block_tester/hash index 720a779c81..ef25e48081 100644 --- a/repos/os/recipes/src/block_tester/hash +++ b/repos/os/recipes/src/block_tester/hash @@ -1 +1 @@ -2024-11-19 5ba64381a98a4b0a0e16240d0f0162695ac2ff49 +2024-12-10 dae172832f4807555576543f357da42f71e7504b diff --git a/repos/os/recipes/src/boot_fb/hash b/repos/os/recipes/src/boot_fb/hash index 18ff9e4ba6..bbb7b6f6f9 100644 --- a/repos/os/recipes/src/boot_fb/hash +++ b/repos/os/recipes/src/boot_fb/hash @@ -1 +1 @@ -2024-11-19 ef96064624fb0c24eb3646e5ecf4aa7478a4c399 +2024-12-10 b6a060efcd81d6c6f3abbd24d259824c0a31a209 diff --git a/repos/os/recipes/src/cached_fs_rom/hash b/repos/os/recipes/src/cached_fs_rom/hash index acacea35de..c88f7b474a 100644 --- a/repos/os/recipes/src/cached_fs_rom/hash +++ b/repos/os/recipes/src/cached_fs_rom/hash @@ -1 +1 @@ -2024-11-19 512dfe6d7800a7ae5cc3bf93a655a2cd7adfeddf +2024-12-10 4ff5c94c19cb938b2a820fdfc1a440b00e173e51 diff --git a/repos/os/recipes/src/chroot/hash b/repos/os/recipes/src/chroot/hash index d595224ff2..f327510e40 100644 --- a/repos/os/recipes/src/chroot/hash +++ b/repos/os/recipes/src/chroot/hash @@ -1 +1 @@ -2024-11-19 b5cd9d639cd240b67f81bb9cc3971ea5fe629d57 +2024-12-10 0c372f2ea15195a756b6070709ef5ce27bc18b07 diff --git a/repos/os/recipes/src/clipboard/hash b/repos/os/recipes/src/clipboard/hash index d773a851e3..cdab4b59b5 100644 --- a/repos/os/recipes/src/clipboard/hash +++ b/repos/os/recipes/src/clipboard/hash @@ -1 +1 @@ -2024-11-19 124fb14f6393b6d4523f621ce44be28aaf300955 +2024-12-10 904c0ca529c7b5e079df1970c28b092d8a8bc1c5 diff --git a/repos/os/recipes/src/cpu_balancer/hash b/repos/os/recipes/src/cpu_balancer/hash index f7d42032d8..23573c8fd9 100644 --- a/repos/os/recipes/src/cpu_balancer/hash +++ b/repos/os/recipes/src/cpu_balancer/hash @@ -1 +1 @@ -2024-11-19 715f7b06b6ef45c41e81257e88d881d5fdc789aa +2024-12-10 1fc6dec421671c4ece73fe34c62aa05bc6077e9d diff --git a/repos/os/recipes/src/cpu_burner/hash b/repos/os/recipes/src/cpu_burner/hash index ff79da242f..326cf57a68 100644 --- a/repos/os/recipes/src/cpu_burner/hash +++ b/repos/os/recipes/src/cpu_burner/hash @@ -1 +1 @@ -2024-11-19 c83a0f186b593db956e7e0a28abeac57b270e35d +2024-12-10 7f889005afeb75ede2ee5fd299f175efcecdce2d diff --git a/repos/os/recipes/src/dummy/hash b/repos/os/recipes/src/dummy/hash index 5119954b8c..0ba0d58e23 100644 --- a/repos/os/recipes/src/dummy/hash +++ b/repos/os/recipes/src/dummy/hash @@ -1 +1 @@ -2024-11-19 ae02f941a6ede9f2be235983df3ae7c16b1d29c9 +2024-12-10 834f7ac29ab523125e69b5aba8b4ad93c62087df diff --git a/repos/os/recipes/src/dummy_rtc/hash b/repos/os/recipes/src/dummy_rtc/hash index d9a2cf3b06..84e6adad20 100644 --- a/repos/os/recipes/src/dummy_rtc/hash +++ b/repos/os/recipes/src/dummy_rtc/hash @@ -1 +1 @@ -2024-11-19 221e667e44b52614a60dda4c6c67755c0a25528c +2024-12-10 44b6c927d46a6fbec22dcdd66edd70d6e6135c10 diff --git a/repos/os/recipes/src/dynamic_rom/hash b/repos/os/recipes/src/dynamic_rom/hash index 026d2d2cb2..c09cff81e5 100644 --- a/repos/os/recipes/src/dynamic_rom/hash +++ b/repos/os/recipes/src/dynamic_rom/hash @@ -1 +1 @@ -2024-11-19 a968fbcaea378e8c775fdcc0f4b1caff64872e5a +2024-12-10 c91d1398c69ad6600c0b35e15e88a772c02dc75e diff --git a/repos/os/recipes/src/event_filter/hash b/repos/os/recipes/src/event_filter/hash index ae2bf822f5..0727beabee 100644 --- a/repos/os/recipes/src/event_filter/hash +++ b/repos/os/recipes/src/event_filter/hash @@ -1 +1 @@ -2024-11-19 faf16630429cc9c63abe0596ff0ee005be46ac2b +2024-12-10 d2b1397c1e14e02b31544f6931e0efaae7039004 diff --git a/repos/os/recipes/src/fb_sdl/hash b/repos/os/recipes/src/fb_sdl/hash index e84f1c831b..16a3cec914 100644 --- a/repos/os/recipes/src/fb_sdl/hash +++ b/repos/os/recipes/src/fb_sdl/hash @@ -1 +1 @@ -2024-11-19 b3c997cccd9b340c00b578e8e23bb9530b6b977e +2024-12-10 9dc136e357953eba2ddab11f0b5da0b4d31bedf9 diff --git a/repos/os/recipes/src/fs_report/hash b/repos/os/recipes/src/fs_report/hash index 55a5d70084..31f07aad5b 100644 --- a/repos/os/recipes/src/fs_report/hash +++ b/repos/os/recipes/src/fs_report/hash @@ -1 +1 @@ -2024-11-19 52cd7d278f355e1c0deef876dc7c236e64fdaa27 +2024-12-10 7f96fc5e5f061e8587c1702a6e611a88480b59f0 diff --git a/repos/os/recipes/src/fs_rom/hash b/repos/os/recipes/src/fs_rom/hash index 78ceade2c1..2cc8a5e376 100644 --- a/repos/os/recipes/src/fs_rom/hash +++ b/repos/os/recipes/src/fs_rom/hash @@ -1 +1 @@ -2024-11-19 df021553fb93dbf14525d9025ef13adbd10b7a89 +2024-12-10 b9940e311a6dc0c05ae4544d50e913ea8b9f008e diff --git a/repos/os/recipes/src/global_keys_handler/hash b/repos/os/recipes/src/global_keys_handler/hash index bcd1645bcc..c657264c23 100644 --- a/repos/os/recipes/src/global_keys_handler/hash +++ b/repos/os/recipes/src/global_keys_handler/hash @@ -1 +1 @@ -2024-11-19 a866642b1ac96e0016d3475ce18855991bf02754 +2024-12-10 07cd9ef3f22ea00b32850c327850771b20049073 diff --git a/repos/os/recipes/src/gui_fb/hash b/repos/os/recipes/src/gui_fb/hash index 9a86d190a5..b5f4b56817 100644 --- a/repos/os/recipes/src/gui_fb/hash +++ b/repos/os/recipes/src/gui_fb/hash @@ -1 +1 @@ -2024-11-19 fbf186bf2a3445968cf0b23c38d6581b78a4ceb8 +2024-12-10 8d50a86ce244b92246aba5ae52060e97dbb05810 diff --git a/repos/os/recipes/src/init/hash b/repos/os/recipes/src/init/hash index 3b1ec39472..1d4a263080 100644 --- a/repos/os/recipes/src/init/hash +++ b/repos/os/recipes/src/init/hash @@ -1 +1 @@ -2024-11-19 8d13e25b411fc2762d7944bd30f41a2587504def +2024-12-10 72f9e41fb6bbfd5bfa0872dfb99c1e5ad753e192 diff --git a/repos/os/recipes/src/intel_gpu/hash b/repos/os/recipes/src/intel_gpu/hash index 45d8cb2852..d1b2ab6c5d 100644 --- a/repos/os/recipes/src/intel_gpu/hash +++ b/repos/os/recipes/src/intel_gpu/hash @@ -1 +1 @@ -2024-11-19 0a3ad6251b887a33b4e62c7efed75bfdcb7d73f9 +2024-12-10 22276df12ec4da59812a000d7d4900ea1a20a5d6 diff --git a/repos/os/recipes/src/lan9118_nic/hash b/repos/os/recipes/src/lan9118_nic/hash index 4f9a138660..4d80fc19ce 100644 --- a/repos/os/recipes/src/lan9118_nic/hash +++ b/repos/os/recipes/src/lan9118_nic/hash @@ -1 +1 @@ -2024-11-19 ec60f21ec700e9f9b683971863c43bff4f79903f +2024-12-10 49d31219c002852f388fb69206e69049b4ef25db diff --git a/repos/os/recipes/src/linux_nic/hash b/repos/os/recipes/src/linux_nic/hash index 0926649c11..f95f7e711c 100644 --- a/repos/os/recipes/src/linux_nic/hash +++ b/repos/os/recipes/src/linux_nic/hash @@ -1 +1 @@ -2024-11-19 d99579162a111c1ad342ae9035fb619657c01078 +2024-12-10 ab777237430869e92255695855b5ba68cfef9bf7 diff --git a/repos/os/recipes/src/linux_rtc/hash b/repos/os/recipes/src/linux_rtc/hash index 0e037c0d6d..07b79ebca8 100644 --- a/repos/os/recipes/src/linux_rtc/hash +++ b/repos/os/recipes/src/linux_rtc/hash @@ -1 +1 @@ -2024-11-19 871cf6c04708ae0417e5bc68bb5d77312dd720cb +2024-12-10 c3bdf284904bda04df5ba638b68d8b7d7e2ec6bf diff --git a/repos/os/recipes/src/log_core/hash b/repos/os/recipes/src/log_core/hash index ec9129a799..ff3c36c516 100644 --- a/repos/os/recipes/src/log_core/hash +++ b/repos/os/recipes/src/log_core/hash @@ -1 +1 @@ -2024-11-19 732451429d9ed50a940ad5f9cadf28be0ee5b234 +2024-12-10 0fa3811be356607f69a9c34e1a39c53364519c3e diff --git a/repos/os/recipes/src/log_terminal/hash b/repos/os/recipes/src/log_terminal/hash index c92c42f2d0..b4d7913286 100644 --- a/repos/os/recipes/src/log_terminal/hash +++ b/repos/os/recipes/src/log_terminal/hash @@ -1 +1 @@ -2024-11-19 d25d1d69c367e16347985f0f54fc2d6fb66b58cf +2024-12-10 f775033533d042df9b0e102c73daf94376148a3e diff --git a/repos/os/recipes/src/lx_block/hash b/repos/os/recipes/src/lx_block/hash index bd87b1d4e0..dd11c15c9e 100644 --- a/repos/os/recipes/src/lx_block/hash +++ b/repos/os/recipes/src/lx_block/hash @@ -1 +1 @@ -2024-11-19 1b36d0f075df35562019a1882a6f86eb980f726b +2024-12-10 aa31a53451b3f8624dcc26a122d87c126bd946d7 diff --git a/repos/os/recipes/src/lx_fs/hash b/repos/os/recipes/src/lx_fs/hash index f54f38e7b4..3308f75958 100644 --- a/repos/os/recipes/src/lx_fs/hash +++ b/repos/os/recipes/src/lx_fs/hash @@ -1 +1 @@ -2024-11-19 9ac273e0cd2021f2819f18c4f2ca96dda8b5d950 +2024-12-10 4e54ea3679cf0be030921690d578e6019141c2f8 diff --git a/repos/os/recipes/src/mixer/hash b/repos/os/recipes/src/mixer/hash index 2df5453781..dd8a2aa1ba 100644 --- a/repos/os/recipes/src/mixer/hash +++ b/repos/os/recipes/src/mixer/hash @@ -1 +1 @@ -2024-11-19 76d7558374e75ec442c5e8428c1455a1a5c71505 +2024-12-10 1afef68eddc9c0001bf2d86c2830d32d2512fbaf diff --git a/repos/os/recipes/src/monitor/hash b/repos/os/recipes/src/monitor/hash index 782be1961a..8ca69f653c 100644 --- a/repos/os/recipes/src/monitor/hash +++ b/repos/os/recipes/src/monitor/hash @@ -1 +1 @@ -2024-11-19 6e06e469453e45d21e2985dcea864242a3f6894e +2024-12-10 e74969fbf7c7fe519c560d2f0a13bed492682151 diff --git a/repos/os/recipes/src/nic_bridge/hash b/repos/os/recipes/src/nic_bridge/hash index 7e17b9742b..45908f672d 100644 --- a/repos/os/recipes/src/nic_bridge/hash +++ b/repos/os/recipes/src/nic_bridge/hash @@ -1 +1 @@ -2024-11-19 1884536dacf10a08b85983d43fea0f7d3cb265b2 +2024-12-10 c5564e51bd9a038a86b55fa19379bee5325aa0c8 diff --git a/repos/os/recipes/src/nic_loopback/hash b/repos/os/recipes/src/nic_loopback/hash index a7ea37790f..afaa85af13 100644 --- a/repos/os/recipes/src/nic_loopback/hash +++ b/repos/os/recipes/src/nic_loopback/hash @@ -1 +1 @@ -2024-11-19 21e326ee1888519b52fc73481ba9b8b1e5dcf9f5 +2024-12-10 7ffdfae6eff697763b0f9fb8139d62a644c8f5cd diff --git a/repos/os/recipes/src/nic_perf/hash b/repos/os/recipes/src/nic_perf/hash index 0724012706..161039250d 100644 --- a/repos/os/recipes/src/nic_perf/hash +++ b/repos/os/recipes/src/nic_perf/hash @@ -1 +1 @@ -2024-11-19 d49f7784554eec4e06d51bee234735ad77146ff5 +2024-12-10 42c32bde67db9ae6174b0ef5f0e7b523503e406c diff --git a/repos/os/recipes/src/nic_router/hash b/repos/os/recipes/src/nic_router/hash index 395d753528..fe020238b1 100644 --- a/repos/os/recipes/src/nic_router/hash +++ b/repos/os/recipes/src/nic_router/hash @@ -1 +1 @@ -2024-11-19 338762c11196d95a0fa2934422a9673827fdba32 +2024-12-10 16170a13d62ecdeef52a8fabc4c514b1ec296844 diff --git a/repos/os/recipes/src/nic_uplink/hash b/repos/os/recipes/src/nic_uplink/hash index 0ba1a375d2..5caf84e8b5 100644 --- a/repos/os/recipes/src/nic_uplink/hash +++ b/repos/os/recipes/src/nic_uplink/hash @@ -1 +1 @@ -2024-11-19 c0882d3383ed343271d0f35c5f39c76e5dfa45db +2024-12-10 acd9b50f2f02aae72dfbcc1e577aa241138079e0 diff --git a/repos/os/recipes/src/nit_focus/hash b/repos/os/recipes/src/nit_focus/hash index 95209ccbee..7ba2bbbfa7 100644 --- a/repos/os/recipes/src/nit_focus/hash +++ b/repos/os/recipes/src/nit_focus/hash @@ -1 +1 @@ -2024-11-19 7d79739ff1a12dc75956c9e072069a3c30aed154 +2024-12-10 bac87d7749efca1f9230d79c5c900557a1b5d068 diff --git a/repos/os/recipes/src/nitpicker/hash b/repos/os/recipes/src/nitpicker/hash index 4cfd095bfa..798f501051 100644 --- a/repos/os/recipes/src/nitpicker/hash +++ b/repos/os/recipes/src/nitpicker/hash @@ -1 +1 @@ -2024-11-19 2989af13204b7c652def132fd1ba6846b740ba68 +2024-12-10 8be12d1011cf342aafa6b6d454aa98c5cd75ab31 diff --git a/repos/os/recipes/src/nvme/hash b/repos/os/recipes/src/nvme/hash index 22c0416fb2..7068b7dce7 100644 --- a/repos/os/recipes/src/nvme/hash +++ b/repos/os/recipes/src/nvme/hash @@ -1 +1 @@ -2024-11-19 43d30735c71a863c93e1ab11149f25fc8f42621b +2024-12-10 bf8ea49d32e8b2ae50c1fcd115a910f90c1ebd21 diff --git a/repos/os/recipes/src/part_block/hash b/repos/os/recipes/src/part_block/hash index b72908a425..1ba1922f9f 100644 --- a/repos/os/recipes/src/part_block/hash +++ b/repos/os/recipes/src/part_block/hash @@ -1 +1 @@ -2024-11-19 e0ae66a872174077db8ff5e26d1582b1c91b879a +2024-12-10 87e0d8059f550f26c87ddcf959b93b012cc279f5 diff --git a/repos/os/recipes/src/pbxa9_drivers/hash b/repos/os/recipes/src/pbxa9_drivers/hash index 9c6429b25f..61f2c3776c 100644 --- a/repos/os/recipes/src/pbxa9_drivers/hash +++ b/repos/os/recipes/src/pbxa9_drivers/hash @@ -1 +1 @@ -2024-11-19 9c406dc0961bbab36e34061b34f3d18a7916e8c2 +2024-12-10 e6a76b8eec3dac34915a26befadfc2718fb137f8 diff --git a/repos/os/recipes/src/pc_rtc/hash b/repos/os/recipes/src/pc_rtc/hash index c72eb5c5fd..3819fff9bb 100644 --- a/repos/os/recipes/src/pc_rtc/hash +++ b/repos/os/recipes/src/pc_rtc/hash @@ -1 +1 @@ -2024-11-19 3b81abeafdf36a026269dd2db28c1ed7f348fba4 +2024-12-10 0799f5d0e962855e5ca091f31d6808ed62e9be96 diff --git a/repos/os/recipes/src/pci_decode/hash b/repos/os/recipes/src/pci_decode/hash index a757c2bfc8..11e001d3ff 100644 --- a/repos/os/recipes/src/pci_decode/hash +++ b/repos/os/recipes/src/pci_decode/hash @@ -1 +1 @@ -2024-11-19 4f5ee1a17916bb06f6db1435c26bf4e2e92beff6 +2024-12-10 2f925bffecde0d9685940b26aba5b63f08d43f53 diff --git a/repos/os/recipes/src/ping/hash b/repos/os/recipes/src/ping/hash index 601c69a655..43075ff22d 100644 --- a/repos/os/recipes/src/ping/hash +++ b/repos/os/recipes/src/ping/hash @@ -1 +1 @@ -2024-11-19 ad85d02923ac358ca813984585ca425a6bdc039f +2024-12-10 62e289ad0a8e948ce2dd8f27ff0812bf74bf720e diff --git a/repos/os/recipes/src/platform/hash b/repos/os/recipes/src/platform/hash index 724279bd70..313e3697ed 100644 --- a/repos/os/recipes/src/platform/hash +++ b/repos/os/recipes/src/platform/hash @@ -1 +1 @@ -2024-11-19 a89e0f99223035d7356cefd0a06cf4afc3f06cbb +2024-12-10 81f530290840850d6a24d23efad9d98d32674707 diff --git a/repos/os/recipes/src/ps2/hash b/repos/os/recipes/src/ps2/hash index 6e2aaf9d32..1a2a5ec49f 100644 --- a/repos/os/recipes/src/ps2/hash +++ b/repos/os/recipes/src/ps2/hash @@ -1 +1 @@ -2024-11-19 3167f869d033378da7a338ed4bafad089d2e67c8 +2024-12-10 557ee35ec7f013935b909de6e3e9239bdcc5e25d diff --git a/repos/os/recipes/src/record_play_mixer/hash b/repos/os/recipes/src/record_play_mixer/hash index 7ae3036715..93367c0805 100644 --- a/repos/os/recipes/src/record_play_mixer/hash +++ b/repos/os/recipes/src/record_play_mixer/hash @@ -1 +1 @@ -2024-11-19 d7c44e2a14230169756555a493df4a24d3c28f86 +2024-12-10 f87120b971a2fe5732884f78ecd127c86eb6ce28 diff --git a/repos/os/recipes/src/record_rom/hash b/repos/os/recipes/src/record_rom/hash index cb253832b8..a13c6cd110 100644 --- a/repos/os/recipes/src/record_rom/hash +++ b/repos/os/recipes/src/record_rom/hash @@ -1 +1 @@ -2024-11-19 0ba7db522c102a10d45baca5c540e753aa7df1ca +2024-12-10 03a7445f301bde7571821df2621553f01fac3066 diff --git a/repos/os/recipes/src/report_rom/hash b/repos/os/recipes/src/report_rom/hash index b53219b806..8c06b6aaf8 100644 --- a/repos/os/recipes/src/report_rom/hash +++ b/repos/os/recipes/src/report_rom/hash @@ -1 +1 @@ -2024-11-19 25347342deee76ee2018e3070e8c0cf4617a832c +2024-12-10 a467e32a23f0dddd908e3e4f0d02f2ec5da0667e diff --git a/repos/os/recipes/src/rom_filter/hash b/repos/os/recipes/src/rom_filter/hash index a70adec083..c02785c261 100644 --- a/repos/os/recipes/src/rom_filter/hash +++ b/repos/os/recipes/src/rom_filter/hash @@ -1 +1 @@ -2024-11-19 a3c89786b0c8af8f6dc2e4be2b0591f719c0762d +2024-12-10 45460d0e472086d52b0bbe4b0595597b095190b7 diff --git a/repos/os/recipes/src/rom_logger/hash b/repos/os/recipes/src/rom_logger/hash index 1e1ea0d1e0..905a0c3936 100644 --- a/repos/os/recipes/src/rom_logger/hash +++ b/repos/os/recipes/src/rom_logger/hash @@ -1 +1 @@ -2024-11-19 1e1b1fbdf9234c67cb66a76593e7bbb0a3b005d1 +2024-12-10 5072967f8816c410b06b587248bec7a1fac9f4ec diff --git a/repos/os/recipes/src/rom_reporter/hash b/repos/os/recipes/src/rom_reporter/hash index aeb8cc3d0e..45474d2143 100644 --- a/repos/os/recipes/src/rom_reporter/hash +++ b/repos/os/recipes/src/rom_reporter/hash @@ -1 +1 @@ -2024-11-19 79e0e5077f492008f45b57264b976c130ca0d4fc +2024-12-10 c42be74728b96c5a040e60bcaabc402a102d43ba diff --git a/repos/os/recipes/src/rom_to_file/hash b/repos/os/recipes/src/rom_to_file/hash index 7b46854ba6..9f8ae941bc 100644 --- a/repos/os/recipes/src/rom_to_file/hash +++ b/repos/os/recipes/src/rom_to_file/hash @@ -1 +1 @@ -2024-11-19 dd2df48ca80e6ae4f6ed0c965bdedf31b0bd46be +2024-12-10 e902ab50d196a6099b173570078b734d87f11459 diff --git a/repos/os/recipes/src/sandbox/hash b/repos/os/recipes/src/sandbox/hash index 2eb42c9a23..7b0dd62a60 100644 --- a/repos/os/recipes/src/sandbox/hash +++ b/repos/os/recipes/src/sandbox/hash @@ -1 +1 @@ -2024-11-19 c7befbb2025b3ee2e2c0d385c69f5872c253c6d4 +2024-12-10 0360bbd4009c6c0d6580253c6c692bdc0a741846 diff --git a/repos/os/recipes/src/sequence/hash b/repos/os/recipes/src/sequence/hash index 357cd3f7e1..e1e7705555 100644 --- a/repos/os/recipes/src/sequence/hash +++ b/repos/os/recipes/src/sequence/hash @@ -1 +1 @@ -2024-11-19 13be1b857a87f2f281b854a468cac5ba17d33be7 +2024-12-10 52406777fadfcafc060623b0cfdfb8ef5f866b4f diff --git a/repos/os/recipes/src/shim/hash b/repos/os/recipes/src/shim/hash index 20192a92be..56e4100137 100644 --- a/repos/os/recipes/src/shim/hash +++ b/repos/os/recipes/src/shim/hash @@ -1 +1 @@ -2024-11-19 59020e87fb90a10b7274e569bb928a592555d464 +2024-12-10 b0457a09ddb747ee1d1786ad680b86a94b932246 diff --git a/repos/os/recipes/src/terminal_crosslink/hash b/repos/os/recipes/src/terminal_crosslink/hash index f3bc0e20a9..4c983ebc7e 100644 --- a/repos/os/recipes/src/terminal_crosslink/hash +++ b/repos/os/recipes/src/terminal_crosslink/hash @@ -1 +1 @@ -2024-11-19 56288cf0235ecf789093e1b44ec4fe7701ba166b +2024-12-10 ebbe8d67def50c5ecee46eb139df0dc918011cc9 diff --git a/repos/os/recipes/src/terminal_log/hash b/repos/os/recipes/src/terminal_log/hash index 4a4baec1d6..3b0175c32c 100644 --- a/repos/os/recipes/src/terminal_log/hash +++ b/repos/os/recipes/src/terminal_log/hash @@ -1 +1 @@ -2024-11-19 f823dbbe21970429d1482eecf188e46926cbec11 +2024-12-10 32f8e5105daeb3ad311cf02e6009990552dd4d82 diff --git a/repos/os/recipes/src/test-audio_out/hash b/repos/os/recipes/src/test-audio_out/hash index 6becc13d9c..36837b6ae0 100644 --- a/repos/os/recipes/src/test-audio_out/hash +++ b/repos/os/recipes/src/test-audio_out/hash @@ -1 +1 @@ -2024-11-19 1186c2c24f76f439b4c37e55fb4ae7ff3634dfe2 +2024-12-10 3f5936595bcdefb3e2867f6cd494db49f75a2526 diff --git a/repos/os/recipes/src/test-black_hole/hash b/repos/os/recipes/src/test-black_hole/hash index b334dd6c84..42a582e2ac 100644 --- a/repos/os/recipes/src/test-black_hole/hash +++ b/repos/os/recipes/src/test-black_hole/hash @@ -1 +1 @@ -2024-11-19 5fc0f9396160f2daf337767d5f86be49c6971015 +2024-12-10 15555fa3fd9f65873f08f580f33c697a2c0bf0aa diff --git a/repos/os/recipes/src/test-bomb/hash b/repos/os/recipes/src/test-bomb/hash index 492f433c36..57c670ecf6 100644 --- a/repos/os/recipes/src/test-bomb/hash +++ b/repos/os/recipes/src/test-bomb/hash @@ -1 +1 @@ -2024-11-19 107e318d9dea52b6de249b196668913e5f1054a8 +2024-12-10 ee5a1cab8ba075e993541d0aa4c3fd080e617b5d diff --git a/repos/os/recipes/src/test-capture/hash b/repos/os/recipes/src/test-capture/hash index d960bba158..2a0d4246fd 100644 --- a/repos/os/recipes/src/test-capture/hash +++ b/repos/os/recipes/src/test-capture/hash @@ -1 +1 @@ -2024-11-19 e305787d3cc7f4d2e999a5009f0466931dabec61 +2024-12-10 8af243f5b990e3eb7d97fe700feefcea21efa9e1 diff --git a/repos/os/recipes/src/test-clipboard/hash b/repos/os/recipes/src/test-clipboard/hash index 4715b1f956..fa3dbf60cc 100644 --- a/repos/os/recipes/src/test-clipboard/hash +++ b/repos/os/recipes/src/test-clipboard/hash @@ -1 +1 @@ -2024-11-19 dfd270f17be45f3f750ee94ad5a3474c82167196 +2024-12-10 04c753f946f63cfa96550d39993aa6645cf3c44b diff --git a/repos/os/recipes/src/test-dynamic_config/hash b/repos/os/recipes/src/test-dynamic_config/hash index b4a7f7753c..4a2fb2e72e 100644 --- a/repos/os/recipes/src/test-dynamic_config/hash +++ b/repos/os/recipes/src/test-dynamic_config/hash @@ -1 +1 @@ -2024-11-19 f1206cd8ffc4a6d1aa7875af9bf0b26dec2dbb7f +2024-12-10 2a53631de0cc443194a491ecde801a4af3e1db4e diff --git a/repos/os/recipes/src/test-fault_detection/hash b/repos/os/recipes/src/test-fault_detection/hash index 492cb38291..e2b9c2539d 100644 --- a/repos/os/recipes/src/test-fault_detection/hash +++ b/repos/os/recipes/src/test-fault_detection/hash @@ -1 +1 @@ -2024-11-19 b0eed318f90d4a99360499cc81271853fbe9b893 +2024-12-10 74e5553293febfc0359394b17c4524641e6a6492 diff --git a/repos/os/recipes/src/test-fs_packet/hash b/repos/os/recipes/src/test-fs_packet/hash index 9da370b123..ee5769d941 100644 --- a/repos/os/recipes/src/test-fs_packet/hash +++ b/repos/os/recipes/src/test-fs_packet/hash @@ -1 +1 @@ -2024-11-19 5cb4f32d4b77a641d909e30d82956afc4bdf03a1 +2024-12-10 a2403b99fd8b634933a5a215d3d7db84125f5b92 diff --git a/repos/os/recipes/src/test-fs_report/hash b/repos/os/recipes/src/test-fs_report/hash index 2dc7497b39..c1de30fd2f 100644 --- a/repos/os/recipes/src/test-fs_report/hash +++ b/repos/os/recipes/src/test-fs_report/hash @@ -1 +1 @@ -2024-11-19 48afd51023416becd09b7bcdf33683d0bf2e6d00 +2024-12-10 82e408448ce74780f2a0617f4ae60319e0142bb8 diff --git a/repos/os/recipes/src/test-immutable_rom/hash b/repos/os/recipes/src/test-immutable_rom/hash index 41719f1c93..9f1c17d8df 100644 --- a/repos/os/recipes/src/test-immutable_rom/hash +++ b/repos/os/recipes/src/test-immutable_rom/hash @@ -1 +1 @@ -2024-11-19 f76187cbbcfbc21887fb616e761170a32b4568f6 +2024-12-10 8818e702bdaf391188717b33f69491b647fc1ac9 diff --git a/repos/os/recipes/src/test-init/hash b/repos/os/recipes/src/test-init/hash index 051a5eb88d..54b9c23787 100644 --- a/repos/os/recipes/src/test-init/hash +++ b/repos/os/recipes/src/test-init/hash @@ -1 +1 @@ -2024-11-19 119f9067f417ef68929a45a1d9b74a6e6c635fe3 +2024-12-10 c960da84de4ab52c820a29677f2d3aa01e169cf3 diff --git a/repos/os/recipes/src/test-init_loop/hash b/repos/os/recipes/src/test-init_loop/hash index 518b67a81c..ffcb1b151e 100644 --- a/repos/os/recipes/src/test-init_loop/hash +++ b/repos/os/recipes/src/test-init_loop/hash @@ -1 +1 @@ -2024-11-19 88be617d57cf2262ef50724be92ab6381c684bb5 +2024-12-10 d68cc0641cc756ce557f4f4f122914799e36a635 diff --git a/repos/os/recipes/src/test-nic_loopback/hash b/repos/os/recipes/src/test-nic_loopback/hash index cfbfb75475..0360dc803b 100644 --- a/repos/os/recipes/src/test-nic_loopback/hash +++ b/repos/os/recipes/src/test-nic_loopback/hash @@ -1 +1 @@ -2024-11-19 82cdadffb51ac65fc7ef8af9f863e8e103a8bdb7 +2024-12-10 d0580484d7a23b4e7629e0fe5c30f3637a4b25a4 diff --git a/repos/os/recipes/src/test-path/hash b/repos/os/recipes/src/test-path/hash index 64124cf595..b67c096974 100644 --- a/repos/os/recipes/src/test-path/hash +++ b/repos/os/recipes/src/test-path/hash @@ -1 +1 @@ -2024-11-19 517308ee3c0f51771f8ede6da797545e0a2433cd +2024-12-10 4712a0b2bb26e010847123d81e23d03f824fcd5e diff --git a/repos/os/recipes/src/test-ram_fs_chunk/hash b/repos/os/recipes/src/test-ram_fs_chunk/hash index 1e1261c033..b93a31435e 100644 --- a/repos/os/recipes/src/test-ram_fs_chunk/hash +++ b/repos/os/recipes/src/test-ram_fs_chunk/hash @@ -1 +1 @@ -2024-11-19 4efadd53d73d5e4f7b62c22f3f88f7f1e1c5097d +2024-12-10 319b46cecd32f4c07f80d08b963adbe3c1323d10 diff --git a/repos/os/recipes/src/test-report_rom/hash b/repos/os/recipes/src/test-report_rom/hash index 7b77809234..2918fec7fb 100644 --- a/repos/os/recipes/src/test-report_rom/hash +++ b/repos/os/recipes/src/test-report_rom/hash @@ -1 +1 @@ -2024-11-19 00890424d5c331f3247b7cdb9e60a8bf1a55f680 +2024-12-10 a5e09e10fb5efec705a5736e583e61ed5483f75c diff --git a/repos/os/recipes/src/test-resource_request/hash b/repos/os/recipes/src/test-resource_request/hash index fa5bee6d8c..527c129017 100644 --- a/repos/os/recipes/src/test-resource_request/hash +++ b/repos/os/recipes/src/test-resource_request/hash @@ -1 +1 @@ -2024-11-19 67b420ffc73bd3f755f73f6424bf22696ebd0238 +2024-12-10 75de3a73bf9557cc04ad3ac58efa80079b9b6590 diff --git a/repos/os/recipes/src/test-resource_yield/hash b/repos/os/recipes/src/test-resource_yield/hash index f3723025dc..62cd370216 100644 --- a/repos/os/recipes/src/test-resource_yield/hash +++ b/repos/os/recipes/src/test-resource_yield/hash @@ -1 +1 @@ -2024-11-19 9d729527aaf413acc4ea5fcab4c9f7fcf897b143 +2024-12-10 6c0224c13085c3ee383fe2dc490bda41fd0d037c diff --git a/repos/os/recipes/src/test-rtc/hash b/repos/os/recipes/src/test-rtc/hash index 71d147735e..7e5a61bb9b 100644 --- a/repos/os/recipes/src/test-rtc/hash +++ b/repos/os/recipes/src/test-rtc/hash @@ -1 +1 @@ -2024-11-19 b3c6de1808abe2cfec377f93e782c549a5ae6d74 +2024-12-10 faaf348a1d79cd45cb4a570666f8faf0803161a6 diff --git a/repos/os/recipes/src/test-sandbox/hash b/repos/os/recipes/src/test-sandbox/hash index 5c0483e3ea..c67f71347b 100644 --- a/repos/os/recipes/src/test-sandbox/hash +++ b/repos/os/recipes/src/test-sandbox/hash @@ -1 +1 @@ -2024-11-19 d31e9efddee6809608d3c684b406d97d78b90469 +2024-12-10 5e50b16ec36b0f7f430d08662f3114cb516d68e7 diff --git a/repos/os/recipes/src/test-signal/hash b/repos/os/recipes/src/test-signal/hash index 9b3d1255c6..84282782d3 100644 --- a/repos/os/recipes/src/test-signal/hash +++ b/repos/os/recipes/src/test-signal/hash @@ -1 +1 @@ -2024-11-19 e1f2e858daed1cfa1861a21e4b456c0839321454 +2024-12-10 5a998298c13ed3f966884d603361cadb349781ff diff --git a/repos/os/recipes/src/test-slab/hash b/repos/os/recipes/src/test-slab/hash index cd96667e41..67b601aaa5 100644 --- a/repos/os/recipes/src/test-slab/hash +++ b/repos/os/recipes/src/test-slab/hash @@ -1 +1 @@ -2024-11-19 b3a49c48cbbd547cdeb3788c9bd87205c0ac36cb +2024-12-10 f5c7f96a603d97b567dbeb08b1cf49faf097d1bd diff --git a/repos/os/recipes/src/test-terminal_crosslink/hash b/repos/os/recipes/src/test-terminal_crosslink/hash index e0c2379607..d7f9b5c31b 100644 --- a/repos/os/recipes/src/test-terminal_crosslink/hash +++ b/repos/os/recipes/src/test-terminal_crosslink/hash @@ -1 +1 @@ -2024-11-19 26bd3288a9d3c4c763100aa4cc471db79fe509fc +2024-12-10 875c8da8b34dc57b510dc7cda0ef548836031155 diff --git a/repos/os/recipes/src/test-terminal_echo/hash b/repos/os/recipes/src/test-terminal_echo/hash index 7716354098..5212e1c5d2 100644 --- a/repos/os/recipes/src/test-terminal_echo/hash +++ b/repos/os/recipes/src/test-terminal_echo/hash @@ -1 +1 @@ -2024-11-19 aad8c8e3a3fafdad1f3fb4db2fa89e24f841b62f +2024-12-10 75320e38524ceba2e4cfd447ae1bf1599ec92b9a diff --git a/repos/os/recipes/src/test-trace/hash b/repos/os/recipes/src/test-trace/hash index ad2be5b174..f30dab442d 100644 --- a/repos/os/recipes/src/test-trace/hash +++ b/repos/os/recipes/src/test-trace/hash @@ -1 +1 @@ -2024-11-19 bf7f33d89e61a7dabb680f18f0267fb763913ac2 +2024-12-10 c0eb5f42b9e8a82de2d4d6f6533c105744b86639 diff --git a/repos/os/recipes/src/test-trace_buffer/hash b/repos/os/recipes/src/test-trace_buffer/hash index f7ea805a8f..98561eeb98 100644 --- a/repos/os/recipes/src/test-trace_buffer/hash +++ b/repos/os/recipes/src/test-trace_buffer/hash @@ -1 +1 @@ -2024-11-19 65a5457c113eeb6b3c2504e6ea9bc087fa35222a +2024-12-10 ebe51ebbc21a122e74488300e10556e781e3ceae diff --git a/repos/os/recipes/src/test-trace_logger/hash b/repos/os/recipes/src/test-trace_logger/hash index 6e6e42a8ee..992e74e786 100644 --- a/repos/os/recipes/src/test-trace_logger/hash +++ b/repos/os/recipes/src/test-trace_logger/hash @@ -1 +1 @@ -2024-11-19 f9d58409dac68e40342e1cc0ee204a407ddee651 +2024-12-10 594e66cae6c80c2f78a3c0c34c63cafa681c3016 diff --git a/repos/os/recipes/src/test-utf8/hash b/repos/os/recipes/src/test-utf8/hash index 75f1d71546..69a82a36d4 100644 --- a/repos/os/recipes/src/test-utf8/hash +++ b/repos/os/recipes/src/test-utf8/hash @@ -1 +1 @@ -2024-11-19 221223defba20d20750cede6a44031f3374d4cc5 +2024-12-10 67b1a1ad0dddcdc22dd6e266309f8221ff30173f diff --git a/repos/os/recipes/src/test-vfs_capture/hash b/repos/os/recipes/src/test-vfs_capture/hash index fa08871500..f260073413 100644 --- a/repos/os/recipes/src/test-vfs_capture/hash +++ b/repos/os/recipes/src/test-vfs_capture/hash @@ -1 +1 @@ -2024-11-19 6f79efdceee062c884c8ddde07a01fc0cda6473d +2024-12-10 2507933a77757949ac10c85ff90454d9f6ba0be3 diff --git a/repos/os/recipes/src/test-vfs_stress/hash b/repos/os/recipes/src/test-vfs_stress/hash index 1f69b284b1..29e351ed7e 100644 --- a/repos/os/recipes/src/test-vfs_stress/hash +++ b/repos/os/recipes/src/test-vfs_stress/hash @@ -1 +1 @@ -2024-11-19 aa38e07f81c98d834b864b0e2da6c2bef5495048 +2024-12-10 c26f6d3071b186404355651fb1754b0bb3a83058 diff --git a/repos/os/recipes/src/test-weak_ptr/hash b/repos/os/recipes/src/test-weak_ptr/hash index c90676a7c1..1fb919a1fc 100644 --- a/repos/os/recipes/src/test-weak_ptr/hash +++ b/repos/os/recipes/src/test-weak_ptr/hash @@ -1 +1 @@ -2024-11-19 fb6756bd6bc3f12209f1b1c0cc61ecc06bae9f8d +2024-12-10 0d8b486da780dc4628726a95e85288db6b44c0c9 diff --git a/repos/os/recipes/src/top/hash b/repos/os/recipes/src/top/hash index da0db85a71..3a119c22c2 100644 --- a/repos/os/recipes/src/top/hash +++ b/repos/os/recipes/src/top/hash @@ -1 +1 @@ -2024-11-19 b954bea0f952581c258be8603e3e991841f070f8 +2024-12-10 fb5cc2aca003707c643c48291aad89b3cf068a45 diff --git a/repos/os/recipes/src/trace_logger/hash b/repos/os/recipes/src/trace_logger/hash index 4b84f97cf7..164e8a85d4 100644 --- a/repos/os/recipes/src/trace_logger/hash +++ b/repos/os/recipes/src/trace_logger/hash @@ -1 +1 @@ -2024-11-19 e5f9a36dad880c9afc02cbe12b397045c3e60c07 +2024-12-10 58108de21ea66a2c6a202afece58e841e7945b7b diff --git a/repos/os/recipes/src/trace_policy/hash b/repos/os/recipes/src/trace_policy/hash index 7d72f58098..b4b47c5461 100644 --- a/repos/os/recipes/src/trace_policy/hash +++ b/repos/os/recipes/src/trace_policy/hash @@ -1 +1 @@ -2024-11-19 d55039aecda06af17e72c922370b665cdd5a0665 +2024-12-10 0f119f60514d3d5e9ca183b1ca3a3793db5e42c3 diff --git a/repos/os/recipes/src/trace_subject_reporter/hash b/repos/os/recipes/src/trace_subject_reporter/hash index a794d1ab88..0011aabbc6 100644 --- a/repos/os/recipes/src/trace_subject_reporter/hash +++ b/repos/os/recipes/src/trace_subject_reporter/hash @@ -1 +1 @@ -2024-11-19 b60bc17b174e1128c6faf95f31a9a4d6493e45c7 +2024-12-10 b639feda628c3e0be1395a757ff2fc2dbd69d61f diff --git a/repos/os/recipes/src/usb_block/hash b/repos/os/recipes/src/usb_block/hash index 336735768c..68f0827b80 100644 --- a/repos/os/recipes/src/usb_block/hash +++ b/repos/os/recipes/src/usb_block/hash @@ -1 +1 @@ -2024-11-19 fb092fdcf5f0d90ec726514e665a55fc0278c328 +2024-12-10 4f2e138e4bb0b415513e8020df100c7f3afdff34 diff --git a/repos/os/recipes/src/vfs/hash b/repos/os/recipes/src/vfs/hash index 4f862ec03c..0a21b73a2b 100644 --- a/repos/os/recipes/src/vfs/hash +++ b/repos/os/recipes/src/vfs/hash @@ -1 +1 @@ -2024-11-19 0c12ea652d2e60e274de70938b61f8811a224dfe +2024-12-10 ed7285b93b7c97cc1c4bc7232352df00c49163b2 diff --git a/repos/os/recipes/src/vfs_block/hash b/repos/os/recipes/src/vfs_block/hash index 10c65fa63e..386302e0bf 100644 --- a/repos/os/recipes/src/vfs_block/hash +++ b/repos/os/recipes/src/vfs_block/hash @@ -1 +1 @@ -2024-11-19 359acba5419ff938d52c90f7b4d96d89c10feef0 +2024-12-10 6fe9dad44ab96be4d7961d3d988c5c1fb1fdf8d5 diff --git a/repos/os/recipes/src/vfs_capture/hash b/repos/os/recipes/src/vfs_capture/hash index 8386f43e6d..3a7536de22 100644 --- a/repos/os/recipes/src/vfs_capture/hash +++ b/repos/os/recipes/src/vfs_capture/hash @@ -1 +1 @@ -2024-11-19 1ff707756b15bf7510750203aab423f76149866c +2024-12-10 7f415f1af883ac86392ee58046019cf5ece95044 diff --git a/repos/os/recipes/src/vfs_tap/hash b/repos/os/recipes/src/vfs_tap/hash index e8c01f308a..42721c96a6 100644 --- a/repos/os/recipes/src/vfs_tap/hash +++ b/repos/os/recipes/src/vfs_tap/hash @@ -1 +1 @@ -2024-11-19 e6473a2a2e2392fca268a84cabf96c39635daa50 +2024-12-10 81dec905b7b2b85ae8d607f21a54cead0d7ddaaf diff --git a/repos/os/recipes/src/virt_qemu_drivers/hash b/repos/os/recipes/src/virt_qemu_drivers/hash index 373913d21a..448fd17a4a 100644 --- a/repos/os/recipes/src/virt_qemu_drivers/hash +++ b/repos/os/recipes/src/virt_qemu_drivers/hash @@ -1 +1 @@ -2024-11-19 75c41aabf52433d5e4ce3ad7cdeff251fac16e0d +2024-12-10 64dd8599af610aaa64b6f0a90cbf5005012c5b1e diff --git a/repos/os/recipes/src/virtdev_rom/hash b/repos/os/recipes/src/virtdev_rom/hash index 3d3e8ed04d..dc102cac81 100644 --- a/repos/os/recipes/src/virtdev_rom/hash +++ b/repos/os/recipes/src/virtdev_rom/hash @@ -1 +1 @@ -2024-11-19 b9468cd83f0e43a6bc8e0d6378935bf3d0ea2831 +2024-12-10 f76e0e464d22514cf6692e7ffa2d73d4584beaf0 diff --git a/repos/os/recipes/src/virtio_fb/hash b/repos/os/recipes/src/virtio_fb/hash index 89d7668937..c2acd28f34 100644 --- a/repos/os/recipes/src/virtio_fb/hash +++ b/repos/os/recipes/src/virtio_fb/hash @@ -1 +1 @@ -2024-11-19 65c91bacffbd95eee55bdb87304119f656fe062a +2024-12-10 3d9ff76635ecc31153232aca767010f4b2bcaac7 diff --git a/repos/os/recipes/src/virtio_input/hash b/repos/os/recipes/src/virtio_input/hash index 545211c9c9..c1e120d6e5 100644 --- a/repos/os/recipes/src/virtio_input/hash +++ b/repos/os/recipes/src/virtio_input/hash @@ -1 +1 @@ -2024-11-19 de44bc8be7b907f58f58374224061dc6c7420b27 +2024-12-10 fa470f0bcb4ed25c14e6c8bb8538ff7637ee7d59 diff --git a/repos/os/recipes/src/virtio_nic/hash b/repos/os/recipes/src/virtio_nic/hash index 0436705fd4..d06dbed6bb 100644 --- a/repos/os/recipes/src/virtio_nic/hash +++ b/repos/os/recipes/src/virtio_nic/hash @@ -1 +1 @@ -2024-11-19 9ee26b08963f5066fa94d085e86aef709be71998 +2024-12-10 771ed5473eba6aff46ba9b9dd000748f0736633a diff --git a/repos/os/recipes/src/vmm/hash b/repos/os/recipes/src/vmm/hash index 1e5d2c9c01..134cbaa832 100644 --- a/repos/os/recipes/src/vmm/hash +++ b/repos/os/recipes/src/vmm/hash @@ -1 +1 @@ -2024-11-19 40cb95ad917a056e246970e2a332790a74743d91 +2024-12-10 aa9108db658757b08f096287633ac1118c5e46e3 diff --git a/repos/os/recipes/src/waveform_player/hash b/repos/os/recipes/src/waveform_player/hash index 8c36f68f0e..7f8f7a17ca 100644 --- a/repos/os/recipes/src/waveform_player/hash +++ b/repos/os/recipes/src/waveform_player/hash @@ -1 +1 @@ -2024-11-19 be6c26e9a12b07bcd5c57974a19c2099e0b2b565 +2024-12-10 67e20dc1d36c7ea3d65c0251ee552a24f793135d diff --git a/repos/pc/recipes/pkg/pc_nic/hash b/repos/pc/recipes/pkg/pc_nic/hash index 702cf1a413..8f8c01dc39 100644 --- a/repos/pc/recipes/pkg/pc_nic/hash +++ b/repos/pc/recipes/pkg/pc_nic/hash @@ -1 +1 @@ -2024-11-19 737a5154cbc937cd14f57848f81b3ed8b4631c3b +2024-12-10 d875c67823061bee5cfc61869ab105d82efc3178 diff --git a/repos/pc/recipes/pkg/pc_wifi/hash b/repos/pc/recipes/pkg/pc_wifi/hash index d60e08f19d..dab2739ee5 100644 --- a/repos/pc/recipes/pkg/pc_wifi/hash +++ b/repos/pc/recipes/pkg/pc_wifi/hash @@ -1 +1 @@ -2024-11-19 ecbe258890e61ecf2596278e18e57b4fb7f893c3 +2024-12-10 ce3ccc1d0cd776550678a498527b7c6ea335f9ca diff --git a/repos/pc/recipes/pkg/test_usb_host-pc/hash b/repos/pc/recipes/pkg/test_usb_host-pc/hash index f9aa6e3d39..977595c4ce 100644 --- a/repos/pc/recipes/pkg/test_usb_host-pc/hash +++ b/repos/pc/recipes/pkg/test_usb_host-pc/hash @@ -1 +1 @@ -2024-11-19 4fb7a7611e051bb2b157a8176b76e31253883103 +2024-12-10 7a6b2f11a3448f153b37a599779ae828d8475994 diff --git a/repos/pc/recipes/src/pc_intel_fb/hash b/repos/pc/recipes/src/pc_intel_fb/hash index 493f2a1f9f..44a3aaed51 100644 --- a/repos/pc/recipes/src/pc_intel_fb/hash +++ b/repos/pc/recipes/src/pc_intel_fb/hash @@ -1 +1 @@ -2024-11-19 0f199a857d5053c2ec1819d19eff1aa845ba0e8d +2024-12-10 f05a2460a0de3349e7827038eb9f34c78094ba51 diff --git a/repos/pc/recipes/src/pc_nic/hash b/repos/pc/recipes/src/pc_nic/hash index 0f359d9009..ca7fb8ad97 100644 --- a/repos/pc/recipes/src/pc_nic/hash +++ b/repos/pc/recipes/src/pc_nic/hash @@ -1 +1 @@ -2024-11-19 a9bf05ba769e562677ee6a07688e922cb03eccc2 +2024-12-10 399d8a47dd66c8ee3b5fcee9a19e218ec0f8a14e diff --git a/repos/pc/recipes/src/pc_platform/hash b/repos/pc/recipes/src/pc_platform/hash index a66a9f54b2..8bdf5ebe25 100644 --- a/repos/pc/recipes/src/pc_platform/hash +++ b/repos/pc/recipes/src/pc_platform/hash @@ -1 +1 @@ -2024-11-19 e19583d60e2a62c87cab21b36bb8bad57b19c6c0 +2024-12-10 409516884d60906fbd4ae0cddf575e308d52786d diff --git a/repos/pc/recipes/src/pc_usb_host/hash b/repos/pc/recipes/src/pc_usb_host/hash index 056be8ce9e..aa31e77103 100644 --- a/repos/pc/recipes/src/pc_usb_host/hash +++ b/repos/pc/recipes/src/pc_usb_host/hash @@ -1 +1 @@ -2024-11-19 472f8b1333d5b7e432884a3e59d478b978748e81 +2024-12-10 0c87191e64f5c6d42643edee7889c94a35615b88 diff --git a/repos/pc/recipes/src/pc_wifi/hash b/repos/pc/recipes/src/pc_wifi/hash index 7172d66d09..21def5cdb2 100644 --- a/repos/pc/recipes/src/pc_wifi/hash +++ b/repos/pc/recipes/src/pc_wifi/hash @@ -1 +1 @@ -2024-11-19 e319638921b575b46e61e66230eecdd664628243 +2024-12-10 e7cf591c82063556c76a8555efeb8b62709f288c diff --git a/repos/ports/recipes/pkg/gdb_x86/hash b/repos/ports/recipes/pkg/gdb_x86/hash index 068ce80acf..dedf334828 100644 --- a/repos/ports/recipes/pkg/gdb_x86/hash +++ b/repos/ports/recipes/pkg/gdb_x86/hash @@ -1 +1 @@ -2024-11-19 3f30ea4b9347b2d6a9707a5ff66b3da85cd16fdb +2024-12-10 5c32adefe62a440f6560e297a180f82709ec28e6 diff --git a/repos/ports/recipes/pkg/lighttpd/hash b/repos/ports/recipes/pkg/lighttpd/hash index 476b124cae..f8a0d7a8fd 100644 --- a/repos/ports/recipes/pkg/lighttpd/hash +++ b/repos/ports/recipes/pkg/lighttpd/hash @@ -1 +1 @@ -2024-11-19 27adaf5a4eaf30929916b0c62081d98473f45ec5 +2024-12-10 7dedcb18248877f91f2917b9a27eda8dd7da432e diff --git a/repos/ports/recipes/pkg/report_dump/hash b/repos/ports/recipes/pkg/report_dump/hash index da6f9f7431..5124f27fa6 100644 --- a/repos/ports/recipes/pkg/report_dump/hash +++ b/repos/ports/recipes/pkg/report_dump/hash @@ -1 +1 @@ -2024-11-19 5ce84a11bb989ed8ca6cd05c75995531866655ff +2024-12-10 388aed6c056767122c09e69288cf5391368b4ed6 diff --git a/repos/ports/recipes/pkg/socat_tcp/hash b/repos/ports/recipes/pkg/socat_tcp/hash index 8a6d3e5cc7..5ce4c52ed0 100644 --- a/repos/ports/recipes/pkg/socat_tcp/hash +++ b/repos/ports/recipes/pkg/socat_tcp/hash @@ -1 +1 @@ -2024-11-19 662d65884c5e9d10de93ed552872049a3a6dd898 +2024-12-10 b17bb662b8b95f81c5af1305265b3e6c721581d6 diff --git a/repos/ports/recipes/pkg/system_shell/hash b/repos/ports/recipes/pkg/system_shell/hash index f560cc8d35..80702819d1 100644 --- a/repos/ports/recipes/pkg/system_shell/hash +++ b/repos/ports/recipes/pkg/system_shell/hash @@ -1 +1 @@ -2024-11-19 71a3396ae7ea050097d3a68bfe6bedbdf5be481a +2024-12-10 3c29f0d46ab22c4b54aafec1ae88459dfb286045 diff --git a/repos/ports/recipes/pkg/vbox5-nova-capture/hash b/repos/ports/recipes/pkg/vbox5-nova-capture/hash index 3abe86cfb8..f9569d3d8a 100644 --- a/repos/ports/recipes/pkg/vbox5-nova-capture/hash +++ b/repos/ports/recipes/pkg/vbox5-nova-capture/hash @@ -1 +1 @@ -2024-11-19 96301e9b2918454ba2ec1422ca911b9f6785bbee +2024-12-10 49ae1012c3547febdb4fc5db8769a50e285f9224 diff --git a/repos/ports/recipes/pkg/vbox5-nova-sculpt/hash b/repos/ports/recipes/pkg/vbox5-nova-sculpt/hash index 7b0d4f64d4..ead18dd18b 100644 --- a/repos/ports/recipes/pkg/vbox5-nova-sculpt/hash +++ b/repos/ports/recipes/pkg/vbox5-nova-sculpt/hash @@ -1 +1 @@ -2024-11-19 2d15c395c78ead4e056a6d039faa8f6ed85b5a81 +2024-12-10 2b7147b20fcc8a1d63b2fcccb8a6d31a9b7ddb58 diff --git a/repos/ports/recipes/pkg/vbox6-capture/hash b/repos/ports/recipes/pkg/vbox6-capture/hash index 389127301d..3c1e93e395 100644 --- a/repos/ports/recipes/pkg/vbox6-capture/hash +++ b/repos/ports/recipes/pkg/vbox6-capture/hash @@ -1 +1 @@ -2024-11-19 da022d246aacbbf6ee3d1ac5ddaecc6e04fcc963 +2024-12-10 b9082423031ff10ec99a3c8d5764c66c4de93ff8 diff --git a/repos/ports/recipes/pkg/vbox6/hash b/repos/ports/recipes/pkg/vbox6/hash index 60485860ff..ac790169c2 100644 --- a/repos/ports/recipes/pkg/vbox6/hash +++ b/repos/ports/recipes/pkg/vbox6/hash @@ -1 +1 @@ -2024-11-19 86ad8c55f1dc48322f50738736a2139bca94ec12 +2024-12-10 b52e5eaf9d3f6db4a1d916ea51b721a2a4a6576b diff --git a/repos/ports/recipes/src/gdb_support/hash b/repos/ports/recipes/src/gdb_support/hash index caca1514c3..08446bcec8 100644 --- a/repos/ports/recipes/src/gdb_support/hash +++ b/repos/ports/recipes/src/gdb_support/hash @@ -1 +1 @@ -2024-11-19 8a6a5d985feadb37a5f4afe49eff6d8a8feb2040 +2024-12-10 62fe308b88c7790b0cb0d77820f1ce8be8c1891e diff --git a/repos/ports/recipes/src/vbox5-nova/hash b/repos/ports/recipes/src/vbox5-nova/hash index 2ab37c8481..028bb1f668 100644 --- a/repos/ports/recipes/src/vbox5-nova/hash +++ b/repos/ports/recipes/src/vbox5-nova/hash @@ -1 +1 @@ -2024-11-19 4bd735989f55cbd72df14605ebc39407e238f051 +2024-12-10 f8d89d7ba6b14fc168935dbe12b60dc304b952a8 diff --git a/repos/ports/recipes/src/vbox6/hash b/repos/ports/recipes/src/vbox6/hash index bc0c3409fe..14dc25110e 100644 --- a/repos/ports/recipes/src/vbox6/hash +++ b/repos/ports/recipes/src/vbox6/hash @@ -1 +1 @@ -2024-11-19 50b4d046cff7da752b8db38d38e3b4bd03799ab3 +2024-12-10 218fc040e12e4ac66c344f585d582766330dcf57 diff --git a/repos/ports/recipes/src/verify/hash b/repos/ports/recipes/src/verify/hash index 7d45c07644..054e8e6b39 100644 --- a/repos/ports/recipes/src/verify/hash +++ b/repos/ports/recipes/src/verify/hash @@ -1 +1 @@ -2024-11-19 c17e513e4597217e46f86b43bf660a081b57af4b +2024-12-10 b99d4ac8541bbc9f07ecfff259dffbde2fdf6e58