diff options
Diffstat (limited to 'meta/recipes-graphics')
356 files changed, 4782 insertions, 8445 deletions
diff --git a/meta/recipes-graphics/builder/builder_0.1.bb b/meta/recipes-graphics/builder/builder_0.1.bb index 0a64c31ab3..7719b783c2 100644 --- a/meta/recipes-graphics/builder/builder_0.1.bb +++ b/meta/recipes-graphics/builder/builder_0.1.bb @@ -1,23 +1,23 @@ SUMMARY = "New user to do specific job" DESCRIPTION = "This recipe create a new user named ${PN}, who is used for specific jobs like building. The task can be auto started via mini X" SECTION = "x11" -PR = "r6" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://builder_session.sh;endline=5;md5=84796c3c41785d86100fdabcbdade00e" SRC_URI = "file://builder_session.sh \ " -S = "${WORKDIR}" +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" -RDEPENDS_${PN} = "mini-x-session" +RDEPENDS:${PN} = "mini-x-session" inherit useradd # builder user password is "builder" BUILDER_PASSWORD ?= ".gLibiNXn0P12" USERADD_PACKAGES = "${PN}" -USERADD_PARAM_${PN} = "--system --create-home \ +USERADD_PARAM:${PN} = "--system --create-home \ --groups video,tty,audio \ --password ${BUILDER_PASSWORD} \ --user-group builder" @@ -29,3 +29,4 @@ do_install () { chown builder.builder ${D}${sysconfdir}/mini_x/session.d/builder_session.sh } +CVE_STATUS[CVE-2008-4178] = "cpe-incorrect: This CVE is for an unrelated builder" diff --git a/meta/recipes-graphics/cairo/cairo/CVE-2018-19876.patch b/meta/recipes-graphics/cairo/cairo/CVE-2018-19876.patch deleted file mode 100644 index 4252a5663b..0000000000 --- a/meta/recipes-graphics/cairo/cairo/CVE-2018-19876.patch +++ /dev/null @@ -1,34 +0,0 @@ -CVE: CVE-2018-19876 -Upstream-Status: Backport -Signed-off-by: Ross Burton <ross.burton@intel.com> - -From 90e85c2493fdfa3551f202ff10282463f1e36645 Mon Sep 17 00:00:00 2001 -From: Carlos Garcia Campos <cgarcia@igalia.com> -Date: Mon, 19 Nov 2018 12:33:07 +0100 -Subject: [PATCH] ft: Use FT_Done_MM_Var instead of free when available in - cairo_ft_apply_variations - -Fixes a crash when using freetype >= 2.9 ---- - src/cairo-ft-font.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c -index 325dd61b4..981973f78 100644 ---- a/src/cairo-ft-font.c -+++ b/src/cairo-ft-font.c -@@ -2393,7 +2393,11 @@ skip: - done: - free (coords); - free (current_coords); -+#if HAVE_FT_DONE_MM_VAR -+ FT_Done_MM_Var (face->glyph->library, ft_mm_var); -+#else - free (ft_mm_var); -+#endif - } - } - --- -2.11.0 - diff --git a/meta/recipes-graphics/cairo/cairo/CVE-2019-6461.patch b/meta/recipes-graphics/cairo/cairo/CVE-2019-6461.patch deleted file mode 100644 index 5232cf70c6..0000000000 --- a/meta/recipes-graphics/cairo/cairo/CVE-2019-6461.patch +++ /dev/null @@ -1,19 +0,0 @@ -There is a potential infinite-loop in function _arc_error_normalized(). - -CVE: CVE-2019-6461 -Upstream-Status: Pending -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/src/cairo-arc.c b/src/cairo-arc.c -index 390397bae..f9249dbeb 100644 ---- a/src/cairo-arc.c -+++ b/src/cairo-arc.c -@@ -99,7 +99,7 @@ _arc_max_angle_for_tolerance_normalized (double tolerance) - do { - angle = M_PI / i++; - error = _arc_error_normalized (angle); -- } while (error > tolerance); -+ } while (error > tolerance && error > __DBL_EPSILON__); - - return angle; - } diff --git a/meta/recipes-graphics/cairo/cairo/CVE-2019-6462.patch b/meta/recipes-graphics/cairo/cairo/CVE-2019-6462.patch deleted file mode 100644 index 4e4598c5b5..0000000000 --- a/meta/recipes-graphics/cairo/cairo/CVE-2019-6462.patch +++ /dev/null @@ -1,20 +0,0 @@ -There is an assertion in function _cairo_arc_in_direction(). - -CVE: CVE-2019-6462 -Upstream-Status: Pending -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/src/cairo-arc.c b/src/cairo-arc.c -index 390397bae..1bde774a4 100644 ---- a/src/cairo-arc.c -+++ b/src/cairo-arc.c -@@ -186,7 +186,8 @@ _cairo_arc_in_direction (cairo_t *cr, - if (cairo_status (cr)) - return; - -- assert (angle_max >= angle_min); -+ if (angle_max < angle_min) -+ return; - - if (angle_max - angle_min > 2 * M_PI * MAX_FULL_CIRCLES) { - angle_max = fmod (angle_max - angle_min, 2 * M_PI); diff --git a/meta/recipes-graphics/cairo/cairo/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff b/meta/recipes-graphics/cairo/cairo/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff index 7aaad2eedd..6c761bf2a7 100644 --- a/meta/recipes-graphics/cairo/cairo/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff +++ b/meta/recipes-graphics/cairo/cairo/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff @@ -3,7 +3,7 @@ Cairo: Fix Denial-of-Service Attack due to Logical Problem in Program https://bugs.freedesktop.org/show_bug.cgi?id=100763 CVE: CVE-2017-7475 -Upstream-Status: Submitted +Upstream-Status: Submitted [https://gitlab.freedesktop.org/cairo/cairo/-/issues/80] Signed-off-by: Fan Xin <fan.xin@jp.fujitsu.com> diff --git a/meta/recipes-graphics/cairo/cairo_1.16.0.bb b/meta/recipes-graphics/cairo/cairo_1.16.0.bb deleted file mode 100644 index c2628ae0ca..0000000000 --- a/meta/recipes-graphics/cairo/cairo_1.16.0.bb +++ /dev/null @@ -1,90 +0,0 @@ -SUMMARY = "The Cairo 2D vector graphics library" -DESCRIPTION = "Cairo is a multi-platform library providing anti-aliased \ -vector-based rendering for multiple target backends. Paths consist \ -of line segments and cubic splines and can be rendered at any width \ -with various join and cap styles. All colors may be specified with \ -optional translucence (opacity/alpha) and combined using the \ -extended Porter/Duff compositing algebra as found in the X Render \ -Extension." -HOMEPAGE = "http://cairographics.org" -BUGTRACKER = "http://bugs.freedesktop.org" -SECTION = "libs" - -LICENSE = "MPL-1 & LGPLv2.1 & GPLv3+" -LICENSE_${PN} = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-dev = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-doc = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-gobject = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-script-interpreter = "MPL-1 & LGPLv2.1" -LICENSE_${PN}-perf-utils = "GPLv3+" - -LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77" - -DEPENDS = "fontconfig glib-2.0 libpng pixman zlib" - -SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \ - file://cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff \ - file://CVE-2018-19876.patch \ - file://CVE-2019-6461.patch \ - file://CVE-2019-6462.patch \ - " - -SRC_URI[md5sum] = "f19e0353828269c22bd72e271243a552" -SRC_URI[sha256sum] = "5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331" - -inherit autotools pkgconfig upstream-version-is-even gtk-doc multilib_script - -MULTILIB_SCRIPTS = "${PN}-perf-utils:${bindir}/cairo-trace" - -X11DEPENDS = "virtual/libx11 libsm libxrender libxext" - -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'directfb', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'opengl', '', d)}" - -PACKAGECONFIG[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}" -PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb" -PACKAGECONFIG[directfb] = "--enable-directfb=yes,,directfb" -PACKAGECONFIG[valgrind] = "--enable-valgrind=yes,--disable-valgrind,valgrind" -PACKAGECONFIG[egl] = "--enable-egl=yes,--disable-egl,virtual/egl" -PACKAGECONFIG[glesv2] = "--enable-glesv2,--disable-glesv2,virtual/libgles2" -PACKAGECONFIG[opengl] = "--enable-gl,--disable-gl,virtual/libgl" - -EXTRA_OECONF += " \ - ${@bb.utils.contains('TARGET_FPU', 'soft', '--disable-some-floating-point', '', d)} \ - --enable-tee \ -" - -# We don't depend on binutils so we need to disable this -export ac_cv_lib_bfd_bfd_openr="no" -# Ensure we don't depend on LZO -export ac_cv_lib_lzo2_lzo2a_decompress="no" - -do_install_append () { - rm -rf ${D}${bindir}/cairo-sphinx - rm -rf ${D}${libdir}/cairo/cairo-fdr* - rm -rf ${D}${libdir}/cairo/cairo-sphinx* - rm -rf ${D}${libdir}/cairo/.debug/cairo-fdr* - rm -rf ${D}${libdir}/cairo/.debug/cairo-sphinx* -} - -PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils" - -SUMMARY_cairo-gobject = "The Cairo library GObject wrapper library" -DESCRIPTION_cairo-gobject = "A GObject wrapper library for the Cairo API." - -SUMMARY_cairo-script-interpreter = "The Cairo library script interpreter" -DESCRIPTION_cairo-script-interpreter = "The Cairo script interpreter implements \ -CairoScript. CairoScript is used by tracing utilities to enable the ability \ -to replay rendering." - -DESCRIPTION_cairo-perf-utils = "The Cairo library performance utilities" - -FILES_${PN} = "${libdir}/libcairo.so.*" -FILES_${PN}-gobject = "${libdir}/libcairo-gobject.so.*" -FILES_${PN}-script-interpreter = "${libdir}/libcairo-script-interpreter.so.*" -FILES_${PN}-perf-utils = "${bindir}/cairo-trace* ${libdir}/cairo/*.la ${libdir}/cairo/libcairo-trace.so" - -BBCLASSEXTEND = "native nativesdk" - -UPSTREAM_CHECK_REGEX = "cairo-(?P<pver>\d+(\.\d+)+).tar.xz" diff --git a/meta/recipes-graphics/cairo/cairo_1.18.0.bb b/meta/recipes-graphics/cairo/cairo_1.18.0.bb new file mode 100644 index 0000000000..4c97e973d0 --- /dev/null +++ b/meta/recipes-graphics/cairo/cairo_1.18.0.bb @@ -0,0 +1,86 @@ +SUMMARY = "The Cairo 2D vector graphics library" +DESCRIPTION = "Cairo is a multi-platform library providing anti-aliased \ +vector-based rendering for multiple target backends. Paths consist \ +of line segments and cubic splines and can be rendered at any width \ +with various join and cap styles. All colors may be specified with \ +optional translucence (opacity/alpha) and combined using the \ +extended Porter/Duff compositing algebra as found in the X Render \ +Extension." +HOMEPAGE = "http://cairographics.org" +BUGTRACKER = "https://gitlab.freedesktop.org/cairo/cairo/-/issues" +SECTION = "libs" + +LICENSE = "(MPL-1.1 | LGPL-2.1-only) & GPL-3.0-or-later" +LICENSE:${PN} = "MPL-1.1 | LGPL-2.1-only" +LICENSE:${PN}-dev = "MPL-1.1 | LGPL-2.1-only" +LICENSE:${PN}-doc = "MPL-1.1 | LGPL-2.1-only" +LICENSE:${PN}-gobject = "MPL-1.1 | LGPL-2.1-only" +LICENSE:${PN}-script-interpreter = "MPL-1.1 | LGPL-2.1-only" +LICENSE:${PN}-perf-utils = "GPL-3.0-or-later" +# Adapt the licenses for cairo-dbg and cairo-src depending on whether +# cairo-trace is being built. +LICENSE:${PN}-dbg = "(MPL-1.1 | LGPL-2.1-only)${@bb.utils.contains('PACKAGECONFIG', 'trace', ' & GPL-3.0-or-later', '', d)}" +LICENSE:${PN}-src = "(MPL-1.1 | LGPL-2.1-only)${@bb.utils.contains('PACKAGECONFIG', 'trace', ' & GPL-3.0-or-later', '', d)}" + +LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77 \ + ${@bb.utils.contains('PACKAGECONFIG', 'trace', 'file://util/cairo-trace/COPYING-GPL-3;md5=d32239bcb673463ab874e80d47fae504', '', d)}" + + +DEPENDS = "fontconfig freetype glib-2.0 libpng pixman zlib" + +SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \ + file://cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff \ + " + +SRC_URI[sha256sum] = "243a0736b978a33dee29f9cca7521733b78a65b5418206fef7bd1c3d4cf10b64" + +inherit meson pkgconfig upstream-version-is-even gtk-doc multilib_script + +# if qemu usermode isn't available, this value needs to be set statically +# (otherwise it's determinted by running a small target executable with qemu) +do_write_config:append() { + cat >${WORKDIR}/cairo.cross <<EOF +[properties] +ipc_rmid_deferred_release = 'true' +EOF +} +EXTRA_OEMESON:append:class-nativesdk = "${@' --cross-file ${WORKDIR}/cairo.cross' if d.getVar('EXEWRAPPER_ENABLED') == 'False' else ''}" +EXTRA_OEMESON:append:class-target = "${@' --cross-file ${WORKDIR}/cairo.cross' if d.getVar('EXEWRAPPER_ENABLED') == 'False' else ''}" + +GTKDOC_MESON_OPTION = "gtk_doc" + +MULTILIB_SCRIPTS = "${PN}-perf-utils:${bindir}/cairo-trace" + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xlib xcb', '', d)} trace" +PACKAGECONFIG[xlib] = "-Dxlib=enabled,-Dxlib=disabled,virtual/libx11 libxrender libxext" +PACKAGECONFIG[xcb] = "-Dxcb=enabled,-Dxcb=disabled,libxcb" +# cairo-trace is GPLv3 so add an option to remove it +PACKAGECONFIG[trace] = "" + +do_install:append () { + if ! ${@bb.utils.contains('PACKAGECONFIG', 'trace', 'true', 'false', d)}; then + rm ${D}${bindir}/cairo-trace ${D}${libdir}/cairo/libcairo-trace.so + rmdir --ignore-fail-on-non-empty ${D}${bindir} ${D}${libdir}/cairo + fi +} + +PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils" + +SUMMARY:cairo-gobject = "The Cairo library GObject wrapper library" +DESCRIPTION:cairo-gobject = "A GObject wrapper library for the Cairo API." + +SUMMARY:cairo-script-interpreter = "The Cairo library script interpreter" +DESCRIPTION:cairo-script-interpreter = "The Cairo script interpreter implements \ +CairoScript. CairoScript is used by tracing utilities to enable the ability \ +to replay rendering." + +DESCRIPTION:cairo-perf-utils = "The Cairo library performance utilities" + +FILES:${PN} = "${libdir}/libcairo.so.*" +FILES:${PN}-gobject = "${libdir}/libcairo-gobject.so.*" +FILES:${PN}-script-interpreter = "${libdir}/libcairo-script-interpreter.so.*" +FILES:${PN}-perf-utils = "${bindir}/cairo-* ${libdir}/cairo/libcairo-trace.so ${libdir}/cairo/libcairo-fdr.so" + +BBCLASSEXTEND = "native nativesdk" + +UPSTREAM_CHECK_REGEX = "cairo-(?P<pver>\d+(\.\d+)+).tar.xz" diff --git a/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_0.303.1.bb b/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_0.303.1.bb new file mode 100644 index 0000000000..a3a69ae49c --- /dev/null +++ b/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_0.303.1.bb @@ -0,0 +1,18 @@ +SUMMARY = "Cantarell, a Humanist sans-serif font family" + +DESCRIPTION = "The Cantarell font typeface is designed as a \ + contemporary Humanist sans serif, and was developed for \ + on-screen reading; in particular, reading web pages on an \ + HTC Dream mobile phone." + +HOMEPAGE = "https://gitlab.gnome.org/GNOME/cantarell-fonts/" +SECTION = "fonts" +LICENSE = "OFL-1.1 & Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=fb1ef92b6909969a472a6ea3c4e99cb7" + +inherit gnomebase meson allarch fontcache pkgconfig +SRC_URI[archive.sha256sum] = "f9463a0659c63e57e381fdd753cf1929225395c5b49135989424761830530411" + +EXTRA_OEMESON += "-Duseprebuilt=true -Dbuildappstream=false" + +FILES:${PN} = "${datadir}/fonts ${datadir}/fontconfig" diff --git a/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb b/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb deleted file mode 100644 index db480bd397..0000000000 --- a/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "Cantarell, a Humanist sans-serif font family" - -DESCRIPTION = "The Cantarell font typeface is designed as a \ - contemporary Humanist sans serif, and was developed for \ - on-screen reading; in particular, reading web pages on an \ - HTC Dream mobile phone." - -HOMEPAGE = "https://gitlab.gnome.org/GNOME/cantarell-fonts/" -SECTION = "fonts" -LICENSE = "OFL-1.1" -LIC_FILES_CHKSUM = "file://COPYING;md5=df91e3ffcab8cfb972a66bf11255188d" - -PV = "0.0.25" - -SRCREV = "e28a9096da43984212b5b4002b949bcb8c7527f9" -SRC_URI = "git://gitlab.gnome.org/GNOME/cantarell-fonts.git;protocol=https;branch=reconstruction-0.0.25" -UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!0\.13)(?!0\.10\.1)\d+\.\d+(\.\d+)+)" - -S = "${WORKDIR}/git" - -inherit autotools allarch fontcache pkgconfig - -PACKAGECONFIG ??= "" -PACKAGECONFIG[fontforge] = "--enable-source-rebuild=yes,--enable-source-rebuild=no,fontforge-native" -FILES_${PN} = "${datadir}/fonts ${datadir}/fontconfig" diff --git a/meta/recipes-graphics/clutter/clutter-1.0.inc b/meta/recipes-graphics/clutter/clutter-1.0.inc deleted file mode 100644 index 6dbbf4d803..0000000000 --- a/meta/recipes-graphics/clutter/clutter-1.0.inc +++ /dev/null @@ -1,46 +0,0 @@ -SUMMARY = "Graphics library for creating hardware-accelerated user interfaces" -HOMEPAGE = "http://www.clutter-project.org/" -LICENSE = "LGPLv2.1+" - -inherit clutter ptest-gnome distro_features_check upstream-version-is-even gobject-introspection -# depends on cogl-1.0 which needs opengl -REQUIRED_DISTRO_FEATURES ?= "opengl" - -DEPENDS = "pango glib-2.0 json-glib atk udev cogl-1.0" -PACKAGE_BEFORE_PN += "${PN}-examples" -AUTOTOOLS_AUXDIR = "${S}/build" - -EDEPENDS_X11 = "virtual/libx11 libxi libxfixes" -EDEPENDS_GLX = "virtual/libgl" -EDEPENDS_EGL = "virtual/egl" -EDEPENDS_WAYLAND = "wayland libxkbcommon gdk-pixbuf" - -EDEPENDS_EVDEV = "libxkbcommon" -ERDEPENDS_EVDEV = "xkeyboard-config" - -# Disable pretty much everything, override in platform specific set up -EXTRA_OECONF += "--disable-quartz-backend \ - --disable-win32-backend \ - --disable-gdk-backend \ - --disable-cex100-backend \ - --disable-tslib-input \ - " - -PACKAGECONFIG[x11] = "--enable-x11-backend,--disable-x11-backend,${EDEPENDS_X11}" -PACKAGECONFIG[glx] = ",,${EDEPENDS_X11} ${EDEPENDS_GLX}" -PACKAGECONFIG[egl] = "--enable-egl-backend,--disable-egl-backend,${EDEPENDS_EGL}" -PACKAGECONFIG[evdev] = "--enable-evdev-input,--disable-evdev-input,${EDEPENDS_EVDEV},${ERDEPENDS_EVDEV}" -PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,${EDEPENDS_WAYLAND}" -PACKAGECONFIG[wayland-compositor] = "--enable-wayland-compositor,--disable-wayland-compositor,wayland" - -# Default configuration, distros might want to override -PACKAGECONFIG ??= "egl \ - ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11', '', d)}" - -FILES_${PN}-examples = "${libdir}/clutter/examples" - -do_configure_prepend() { - # see https://bugzilla.gnome.org/show_bug.cgi?id=661128 for this - touch -t 200001010000 ${S}/po/clutter-1.0.pot -} diff --git a/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch b/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch deleted file mode 100644 index 7b3c1980b6..0000000000 --- a/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 3a0404dfbc65c6a864e01d1200a48074e19d5def Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 2 Sep 2016 14:28:38 +0300 -Subject: [PATCH] Remove clutter.types as it is build configuration-specific. - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - doc/reference/clutter.types | 122 -------------------------------------------- - 1 file changed, 122 deletions(-) - delete mode 100644 doc/reference/clutter.types - -diff --git a/doc/reference/clutter.types b/doc/reference/clutter.types -deleted file mode 100644 -index 0037acc..0000000 ---- a/doc/reference/clutter.types -+++ /dev/null -@@ -1,122 +0,0 @@ --cally_actor_get_type --cally_clone_get_type --cally_group_get_type --cally_rectangle_get_type --cally_root_get_type --cally_stage_get_type --cally_text_get_type --cally_texture_get_type --cally_util_get_type --clutter_action_get_type --clutter_actor_box_get_type --clutter_actor_get_type --clutter_actor_meta_get_type --clutter_align_constraint_get_type --clutter_alpha_get_type --clutter_animatable_get_type --clutter_animation_get_type --clutter_animator_get_type --clutter_animator_key_get_type --clutter_backend_get_type --clutter_behaviour_depth_get_type --clutter_behaviour_ellipse_get_type --clutter_behaviour_get_type --clutter_behaviour_opacity_get_type --clutter_behaviour_path_get_type --clutter_behaviour_rotate_get_type --clutter_behaviour_scale_get_type --clutter_bin_layout_get_type --clutter_bind_constraint_get_type --clutter_binding_pool_get_type --clutter_blur_effect_get_type --clutter_box_get_type --clutter_box_layout_get_type --clutter_brightness_contrast_effect_get_type --clutter_cairo_texture_get_type --clutter_canvas_get_type --clutter_child_meta_get_type --clutter_click_action_get_type --clutter_clip_node_get_type --clutter_clone_get_type --clutter_color_get_type --clutter_color_node_get_type --clutter_colorize_effect_get_type --clutter_constraint_get_type --clutter_container_get_type --clutter_content_get_type --clutter_deform_effect_get_type --clutter_desaturate_effect_get_type --clutter_device_manager_get_type --clutter_drag_action_get_type --clutter_drop_action_get_type --clutter_effect_get_type --clutter_event_get_type --clutter_event_sequence_get_type --clutter_fixed_layout_get_type --clutter_flow_layout_get_type --clutter_fog_get_type --clutter_geometry_get_type --clutter_gesture_action_get_type --clutter_glx_texture_pixmap_get_type --clutter_grid_layout_get_type --clutter_group_get_type --clutter_image_get_type --clutter_input_device_get_type --clutter_interval_get_type --clutter_keyframe_transition_get_type --clutter_knot_get_type --clutter_layout_manager_get_type --clutter_layout_meta_get_type --clutter_list_model_get_type --clutter_margin_get_type --clutter_media_get_type --clutter_model_get_type --clutter_model_iter_get_type --clutter_offscreen_effect_get_type --clutter_page_turn_effect_get_type --clutter_paint_node_get_type --clutter_paint_volume_get_type --clutter_pan_action_get_type --clutter_param_color_get_type --clutter_param_fixed_get_type --clutter_param_units_get_type --clutter_path_constraint_get_type --clutter_path_get_type --clutter_path_node_get_type --clutter_perspective_get_type --clutter_pipeline_node_get_type --clutter_point_get_type --clutter_property_transition_get_type --clutter_rect_get_type --clutter_rectangle_get_type --clutter_rotate_action_get_type --clutter_score_get_type --clutter_script_get_type --clutter_scriptable_get_type --clutter_scroll_actor_get_type --clutter_settings_get_type --clutter_shader_effect_get_type --clutter_shader_float_get_type --clutter_shader_get_type --clutter_shader_int_get_type --clutter_shader_matrix_get_type --clutter_size_get_type --clutter_snap_constraint_get_type --clutter_stage_get_type --clutter_stage_manager_get_type --clutter_state_get_type --clutter_state_key_get_type --clutter_swipe_action_get_type --clutter_table_layout_get_type --clutter_tap_action_get_type --clutter_text_buffer_get_type --clutter_text_get_type --clutter_text_node_get_type --clutter_texture_get_type --clutter_texture_node_get_type --clutter_timeline_get_type --clutter_transition_get_type --clutter_transition_group_get_type --clutter_units_get_type --clutter_vertex_get_type --clutter_zoom_action_get_type --- -2.9.3 - diff --git a/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch b/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch deleted file mode 100644 index ce9ab3a248..0000000000 --- a/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch +++ /dev/null @@ -1,19 +0,0 @@ -Install the examples to $libdir/clutter/. - -Signed-off-by: Ross Burton <ross.burton@intel.com> -Upstream-Status: Inappropriate - -Index: clutter-1.26.2/examples/Makefile.am -=================================================================== ---- clutter-1.26.2.orig/examples/Makefile.am -+++ clutter-1.26.2/examples/Makefile.am -@@ -33,7 +33,8 @@ AM_CPPFLAGS = \ - -I$(top_srcdir)/clutter \ - -I$(top_builddir)/clutter - --noinst_PROGRAMS = $(all_examples) -+exampledir = $(pkglibdir)/examples -+example_PROGRAMS = $(all_examples) - - EXTRA_DIST = redhand.png - diff --git a/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch b/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch deleted file mode 100644 index f5c18c5828..0000000000 --- a/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 668e1d14af13249384ab324c7d79ec4147f07e48 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Mon, 27 Apr 2015 20:12:33 +0300 -Subject: [PATCH] Run installed tests with tap output - -Configure output from installed-tests to be TAP compliant such that -gnome-desktop-testing-runner properly interprets the results. - -Upstream-Status: Pending - -Signed-off-by: Tim Orling <TicoTimo@gmail.com> ---- - build/autotools/glib-tap.mk | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/build/autotools/glib-tap.mk b/build/autotools/glib-tap.mk -index 7c5f82b..844e17e 100644 ---- a/build/autotools/glib-tap.mk -+++ b/build/autotools/glib-tap.mk -@@ -127,7 +127,8 @@ installed_test_meta_DATA = $(installed_testcases:=.test) - %.test: %$(EXEEXT) Makefile - $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ - echo 'Type=session' >> $@.tmp; \ -- echo 'Exec=env G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 $(installed_testdir)/$<' >> $@.tmp; \ -+ echo 'Exec=env G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 $(installed_testdir)/$< --tap' >> $@.tmp; \ -+ echo 'Output=TAP' >> $@.tmp; \ - mv $@.tmp $@) - - CLEANFILES += $(installed_test_meta_DATA) --- -2.1.4 - diff --git a/meta/recipes-graphics/clutter/clutter-1.0/run-ptest b/meta/recipes-graphics/clutter/clutter-1.0/run-ptest deleted file mode 100644 index 98877e5226..0000000000 --- a/meta/recipes-graphics/clutter/clutter-1.0/run-ptest +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh - -gnome-desktop-testing-runner clutter diff --git a/meta/recipes-graphics/clutter/clutter-1.0_1.26.2.bb b/meta/recipes-graphics/clutter/clutter-1.0_1.26.2.bb deleted file mode 100644 index 48b050198a..0000000000 --- a/meta/recipes-graphics/clutter/clutter-1.0_1.26.2.bb +++ /dev/null @@ -1,10 +0,0 @@ -require clutter-1.0.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" - -SRC_URI[archive.md5sum] = "a03482cbacf735eca8c996f210a21ee5" -SRC_URI[archive.sha256sum] = "e7233314983055e9018f94f56882e29e7fc34d8d35de030789fdcd9b2d0e2e56" -SRC_URI += "file://install-examples.patch \ - file://run-installed-tests-with-tap-output.patch \ - file://0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch \ - file://run-ptest" diff --git a/meta/recipes-graphics/clutter/clutter-gst-3.0.inc b/meta/recipes-graphics/clutter/clutter-gst-3.0.inc deleted file mode 100644 index 4c877982b7..0000000000 --- a/meta/recipes-graphics/clutter/clutter-gst-3.0.inc +++ /dev/null @@ -1,17 +0,0 @@ -SUMMARY = "GStreamer integration library for Clutter" -HOMEPAGE = "http://www.clutter-project.org/" -LICENSE = "LGPLv2+" - -inherit clutter distro_features_check upstream-version-is-even gobject-introspection -# depends on clutter-1.0 which depends on cogl-1.0 -REQUIRED_DISTRO_FEATURES ?= "opengl" - -SRC_URI += "file://0001-Install-example-binary-needed-for-core-image-clutter.patch" - -DEPENDS = "gstreamer1.0-plugins-base gstreamer1.0-plugins-bad clutter-1.0 libgudev" -RDEPENDS_${PN} += "gstreamer1.0-meta-base" -PACKAGES =+ "${PN}-examples" - -FILES_${PN} += "${libdir}/gstreamer-1.0/lib*.so" -FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la" -FILES_${PN}-examples = "${bindir}/video-player ${bindir}/video-sink" diff --git a/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch b/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch deleted file mode 100644 index 0b26b990d7..0000000000 --- a/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d77c711277bf075ce0545c19b322f040c49c778a Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 30 Apr 2015 12:19:13 +0300 -Subject: [PATCH] Install example binary needed for core-image-clutter - -Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> - -Upstream-Status: Inappropriate [configuration] - -Imported from clutter-gst-1.8 package, git://git.openembedded.org/openembedded, -commit ae28ee3f7a060b9e0d13154a84f2444a98490b5b, updated for clutter-gst 3.0 - -Signed-off-by: Tomas Frydrych <tomas@sleepfive.com> -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - examples/Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/examples/Makefile.am b/examples/Makefile.am -index bfbc1b5..09655e3 100644 ---- a/examples/Makefile.am -+++ b/examples/Makefile.am -@@ -1,6 +1,6 @@ - NULL = # - --noinst_PROGRAMS = camera-player video-player video-sink video-sink-navigation video-content -+bin_PROGRAMS = camera-player video-player video-sink video-sink-navigation video-content - - AM_CPPFLAGS = -I$(top_srcdir) \ - $(MAINTAINER_CFLAGS) \ --- -2.1.4 - diff --git a/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb b/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb deleted file mode 100644 index 35382453c2..0000000000 --- a/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb +++ /dev/null @@ -1,7 +0,0 @@ -require clutter-gst-3.0.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ - file://clutter-gst/clutter-gst.h;beginline=1;endline=24;md5=95baacba194e814c110ea3bdf25ddbf4" - -SRC_URI[archive.md5sum] = "2bf9d7ca146c9d71e86c45cd00e9a28e" -SRC_URI[archive.sha256sum] = "fe69bd6c659d24ab30da3f091eb91cd1970026d431179b0724f13791e8ad9f9d" diff --git a/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc b/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc deleted file mode 100644 index 5f7daf8124..0000000000 --- a/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "Library for embedding a Clutter canvas in a GTK+ application" -HOMEPAGE = "http://www.clutter-project.org/" -LICENSE = "LGPLv2+" - -CLUTTERBASEBUILDCLASS = "meson" -inherit clutter distro_features_check upstream-version-is-even gobject-introspection gtk-doc - -# depends on clutter-1.0 which depends on cogl-1.0 -REQUIRED_DISTRO_FEATURES ?= "opengl" -# depends on gtk+3 -ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" - -DEPENDS = "clutter-1.0 gtk+3" -PACKAGES =+ "${PN}-examples" - -GTKDOC_ENABLE_FLAG = "-Denable_docs=true" -GTKDOC_DISABLE_FLAG = "-Denable_docs=false" - -EXTRA_OEMESON_append_class-target = " ${@bb.utils.contains('GTKDOC_ENABLED', 'True', '${GTKDOC_ENABLE_FLAG}', \ - '${GTKDOC_DISABLE_FLAG}', d)} " - -GIR_MESON_OPTION = 'enable_gi' diff --git a/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch b/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch deleted file mode 100644 index e21c6fd903..0000000000 --- a/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 7233883c6bd4e80c0e91b29b5c76fe798023e9fe Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Mon, 11 Feb 2019 16:41:13 +0100 -Subject: [PATCH] Add a config variable for enabling/disabling introspection - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - clutter-gtk/meson.build | 2 +- - meson_options.txt | 4 ++++ - 2 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/clutter-gtk/meson.build b/clutter-gtk/meson.build -index 5d6847d..5d934b6 100644 ---- a/clutter-gtk/meson.build -+++ b/clutter-gtk/meson.build -@@ -49,7 +49,7 @@ clutter_gtk_dep = declare_dependency(link_with: clutter_gtk, - dependencies: [ mathlib_dep, clutter_dep, gtk_dep ], - include_directories: include_directories('.')) - --if not meson.is_cross_build() -+if get_option('enable_gi') - gnome.generate_gir(clutter_gtk, - sources: clutter_gtk_headers + clutter_gtk_sources, - namespace: 'GtkClutter', -diff --git a/meson_options.txt b/meson_options.txt -index aaf59f1..b7e51c3 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -2,3 +2,7 @@ option('enable_docs', - type: 'boolean', - value: false, - description: 'Enable generating the API reference (depends on GTK-Doc)') -+option('enable_gi', -+ type: 'boolean', -+ value: false, -+ description: 'Enable gobject introspection') diff --git a/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb b/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb deleted file mode 100644 index 53948c8944..0000000000 --- a/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb +++ /dev/null @@ -1,7 +0,0 @@ -require clutter-gtk-1.0.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34" - -SRC_URI += " file://0001-Add-a-config-variable-for-enabling-disabling-introsp.patch" -SRC_URI[archive.md5sum] = "b363ac9878e2337be887b8ee9e1da00e" -SRC_URI[archive.sha256sum] = "521493ec038973c77edcb8bc5eac23eed41645117894aaee7300b2487cb42b06" diff --git a/meta/recipes-graphics/cogl/cogl-1.0.inc b/meta/recipes-graphics/cogl/cogl-1.0.inc deleted file mode 100644 index 3e392fa5ec..0000000000 --- a/meta/recipes-graphics/cogl/cogl-1.0.inc +++ /dev/null @@ -1,78 +0,0 @@ -SUMMARY = "Modern 3D graphics API with associated utility APIs" -HOMEPAGE = "http://wiki.clutter-project.org/wiki/Cogl" -LICENSE = "MIT" - -inherit clutter distro_features_check upstream-version-is-even gobject-introspection -# cogl-1.0 needs opengl to build -REQUIRED_DISTRO_FEATURES ?= "opengl" - -DEPENDS = "glib-2.0 gdk-pixbuf" -PACKAGES =+ "${PN}-examples \ - libcogl libcogl-gles2 libcogl-pango libcogl-path \ - " -AUTOTOOLS_AUXDIR = "${S}/build" - -# Extra DEPENDS for PACKAGECONFIG -EDEPENDS_GL = "virtual/libgl libdrm" -EDEPENDS_GLES2 = "virtual/libgles2" -EDEPENDS_KMS = "libdrm virtual/egl" -EDEPENDS_EGL = "virtual/egl" -EDEPENDS_X11 = "virtual/libx11 libxcomposite libxfixes libxi libxrandr" -EDEPENDS_WAYLAND = "virtual/mesa wayland" - -# Extra RDEPENDS for PACKAGECONFIG -# This has to be explictly listed, because cogl dlopens the backends -ERDEPENDS_GL = "libgl" -ERDEPENDS_GLES2 = "libgles2" - -# GLESv1 is rarely tested, so disable it -EXTRA_OECONF += "--enable-examples-install \ - --enable-debug \ - --disable-gles1 \ - --disable-cairo \ - " -DEBUG_OPTIMIZATION_append = " -Wno-error=maybe-uninitialized" - -# OpenGL/GLX -PACKAGECONFIG[glx] = "--enable-gl --enable-glx,--disable-gl --disable-glx,${EDEPENDS_GL} ${EDEPENDS_X11},${ERDEPENDS_GL}" - -# GLESv2 -PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,${EDEPENDS_GLES2}, ${ERDEPENDS_GLES2}" - -# EGL backends -PACKAGECONFIG[egl-kms] = "--enable-kms-egl-platform,--disable-kms-egl-platform,${EDEPENDS_KMS}" -PACKAGECONFIG[egl-null] = "--enable-null-egl-platform,--disable-null-egl-platform" -PACKAGECONFIG[egl-x11] = "--enable-xlib-egl-platform,--disable-xlib-egl-platform,${EDEPENDS_X11} ${EDEPENDS_EGL}" -PACKAGECONFIG[egl-wayland] = "--enable-wayland-egl-platform,--disable-wayland-egl-platform,${EDEPENDS_WAYLAND}" - -# Wayland (server-side) -PACKAGECONFIG[wayland-server] = "--enable-wayland-egl-server,--disable-wayland-egl-server,${EDEPENDS_WAYLAND}" - -# Support rendering text directly with Pango -PACKAGECONFIG[cogl-pango] = "--enable-cogl-pango,--disable-cogl-pango,pango" - -# Respect the DISTRO_FEATURES to pull in GLX or Wayland as appropriate by -# default. -PACKAGECONFIG ??= "cogl-pango gles2 \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'egl-wayland', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx egl-x11', '', d)} \ - " - -do_compile_prepend() { - export GIR_EXTRA_LIBS_PATH="${B}/cogl/.libs" -} - -FILES_${PN} = "" -FILES_${PN}-examples = "${bindir}/* ${datadir}/cogl/examples-data/*" -FILES_libcogl = "${libdir}/libcogl${SOLIBS} ${libdir}/girepository-1.0/Cogl-*.typelib" -FILES_libcogl-gles2 = "${libdir}/libcogl-gles2${SOLIBS}" -FILES_libcogl-pango = "${libdir}/libcogl-pango${SOLIBS} ${libdir}/girepository-1.0/CoglPango*.typelib" - -FILES_libcogl-path = "${libdir}/libcogl-path${SOLIBS}" - -# For backwards compatibility after Debian-renaming -RPROVIDES_libcogl = "cogl-1.0" -RCONFLICTS_libcogl = "cogl-1.0" -RREPLACES_libcogl = "cogl-1.0" - -COMPATIBLE_HOST_armv4 = 'null' diff --git a/meta/recipes-graphics/cogl/cogl-1.0/0001-Fix-an-incorrect-preprocessor-conditional.patch b/meta/recipes-graphics/cogl/cogl-1.0/0001-Fix-an-incorrect-preprocessor-conditional.patch deleted file mode 100644 index 2a9d8f829b..0000000000 --- a/meta/recipes-graphics/cogl/cogl-1.0/0001-Fix-an-incorrect-preprocessor-conditional.patch +++ /dev/null @@ -1,32 +0,0 @@ -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> -Upstream-Status: Backport - - -Original upstream commit follows: - -From b583e21d8698dbd58013320cfb47739102efdea7 Mon Sep 17 00:00:00 2001 -From: Kalev Lember <klember@redhat.com> -Date: Wed, 19 Oct 2016 23:38:28 +0200 -Subject: [PATCH] Fix an incorrect preprocessor conditional - -This fixes the build with wayland wayland egl server support disabled. ---- - cogl/winsys/cogl-winsys-egl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/cogl/winsys/cogl-winsys-egl.c b/cogl/winsys/cogl-winsys-egl.c -index 39bfd884..4a9f3aa6 100644 ---- a/cogl/winsys/cogl-winsys-egl.c -+++ b/cogl/winsys/cogl-winsys-egl.c -@@ -1029,7 +1029,7 @@ _cogl_egl_create_image (CoglContext *ctx, - egl_ctx = EGL_NO_CONTEXT; - else - #endif --#if COGL_HAS_WAYLAND_EGL_SERVER_SUPPORT -+#ifdef COGL_HAS_WAYLAND_EGL_SERVER_SUPPORT - /* The WL_bind_wayland_display spec states that EGL_NO_CONTEXT is to be used - * in conjunction with the EGL_WAYLAND_BUFFER_WL target */ - if (target == EGL_WAYLAND_BUFFER_WL) --- -2.11.0 - diff --git a/meta/recipes-graphics/cogl/cogl-1.0/test-backface-culling.c-fix-may-be-used-uninitialize.patch b/meta/recipes-graphics/cogl/cogl-1.0/test-backface-culling.c-fix-may-be-used-uninitialize.patch deleted file mode 100644 index 479a0ff4b5..0000000000 --- a/meta/recipes-graphics/cogl/cogl-1.0/test-backface-culling.c-fix-may-be-used-uninitialize.patch +++ /dev/null @@ -1,35 +0,0 @@ -From a51f61d675a0e7d6649182c6a1325ceab8342df2 Mon Sep 17 00:00:00 2001 -From: Robert Yang <liezhi.yang@windriver.com> -Date: Mon, 4 Jan 2016 22:47:29 -0800 -Subject: [PATCH] test-backface-culling.c: fix may be used uninitialized error - -Fixed when gcc -O: -test-backface-culling.c:206:7: error: 'cull_front' may be used uninitialized in this function [-Werror=maybe-uninitialized] -| validate_part (framebuffer, -| ^ -| cc1: some warnings being treated as errors - -Upstream-Status: Pending - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> ---- - tests/conform/test-backface-culling.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tests/conform/test-backface-culling.c b/tests/conform/test-backface-culling.c -index e90c2f5..7c45592 100644 ---- a/tests/conform/test-backface-culling.c -+++ b/tests/conform/test-backface-culling.c -@@ -164,7 +164,8 @@ validate_result (CoglFramebuffer *framebuffer, int y_offset) - - for (draw_num = 0; draw_num < 16; draw_num++) - { -- CoglBool cull_front, cull_back; -+ CoglBool cull_front = FALSE; -+ CoglBool cull_back = FALSE; - CoglPipelineCullFaceMode cull_mode; - - if (USE_LEGACY_STATE (draw_num)) --- -1.7.9.5 - diff --git a/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb b/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb deleted file mode 100644 index 5901062a4c..0000000000 --- a/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb +++ /dev/null @@ -1,8 +0,0 @@ -require cogl-1.0.inc - -SRC_URI += "file://test-backface-culling.c-fix-may-be-used-uninitialize.patch \ - file://0001-Fix-an-incorrect-preprocessor-conditional.patch" -SRC_URI[archive.md5sum] = "d53b708ca7c4af03d7254e46945d6b33" -SRC_URI[archive.sha256sum] = "39a718cdb64ea45225a7e94f88dddec1869ab37a21b339ad058a9d898782c00d" - -LIC_FILES_CHKSUM = "file://COPYING;md5=1b1a508d91d25ca607c83f92f3e31c84" diff --git a/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch b/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch deleted file mode 100644 index e3d6c5b853..0000000000 --- a/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch +++ /dev/null @@ -1,35 +0,0 @@ -Upstream-Status: Submitted -Signed-off-by: Ross Burton <ross.burton@intel.com> - -From 46c0fd6c827a8cb4d04e067bf04fab579ac4712e Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@intel.com> -Date: Mon, 18 Jun 2018 15:07:03 +0100 -Subject: [PATCH] tests/nouveau/threaded: adapt ioctl signature - -POSIX says ioctl() has the signature (int, int, ...) but glibc has decided to -use (int, unsigned long int, ...) instead. - -Use a #ifdef to adapt the replacement function as appropriate. ---- - tests/nouveau/threaded.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/tests/nouveau/threaded.c b/tests/nouveau/threaded.c -index 3669bcd3..e1c27c01 100644 ---- a/tests/nouveau/threaded.c -+++ b/tests/nouveau/threaded.c -@@ -36,7 +36,11 @@ static int failed; - - static int import_fd; - -+#ifdef __GLIBC__ - int ioctl(int fd, unsigned long request, ...) -+#else -+int ioctl(int fd, int request, ...) -+#endif - { - va_list va; - int ret; --- -2.11.0 - diff --git a/meta/recipes-graphics/drm/libdrm_2.4.120.bb b/meta/recipes-graphics/drm/libdrm_2.4.120.bb new file mode 100644 index 0000000000..18b3256843 --- /dev/null +++ b/meta/recipes-graphics/drm/libdrm_2.4.120.bb @@ -0,0 +1,59 @@ +SUMMARY = "Userspace interface to the kernel DRM services" +DESCRIPTION = "The runtime library for accessing the kernel DRM services. DRM \ +stands for \"Direct Rendering Manager\", which is the kernel portion of the \ +\"Direct Rendering Infrastructure\" (DRI). DRI is required for many hardware \ +accelerated OpenGL drivers." +HOMEPAGE = "http://dri.freedesktop.org" +SECTION = "x11/base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71" +PROVIDES = "drm" +DEPENDS = "libpthread-stubs" + +SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.xz \ + " + +SRC_URI[sha256sum] = "3bf55363f76c7250946441ab51d3a6cc0ae518055c0ff017324ab76cdefb327a" + +inherit meson pkgconfig manpages + +PACKAGECONFIG ??= "intel radeon amdgpu nouveau vmwgfx omap freedreno vc4 etnaviv tests install-test-programs" +PACKAGECONFIG[intel] = "-Dintel=enabled,-Dintel=disabled,libpciaccess" +PACKAGECONFIG[radeon] = "-Dradeon=enabled,-Dradeon=disabled" +PACKAGECONFIG[amdgpu] = "-Damdgpu=enabled,-Damdgpu=disabled" +PACKAGECONFIG[nouveau] = "-Dnouveau=enabled,-Dnouveau=disabled" +PACKAGECONFIG[vmwgfx] = "-Dvmwgfx=enabled,-Dvmwgfx=disabled" +PACKAGECONFIG[omap] = "-Domap=enabled,-Domap=disabled" +PACKAGECONFIG[exynos] = "-Dexynos=enabled,-Dexynos=disabled" +PACKAGECONFIG[freedreno] = "-Dfreedreno=enabled,-Dfreedreno=disabled" +PACKAGECONFIG[tegra] = "-Dtegra=enabled,-Dtegra=disabled" +PACKAGECONFIG[vc4] = "-Dvc4=enabled,-Dvc4=disabled" +PACKAGECONFIG[etnaviv] = "-Detnaviv=enabled,-Detnaviv=disabled" +PACKAGECONFIG[freedreno-kgsl] = "-Dfreedreno-kgsl=true,-Dfreedreno-kgsl=false" +PACKAGECONFIG[valgrind] = "-Dvalgrind=enabled,-Dvalgrind=disabled,valgrind" +PACKAGECONFIG[install-test-programs] = "-Dinstall-test-programs=true,-Dinstall-test-programs=false" +PACKAGECONFIG[cairo-tests] = "-Dcairo-tests=enabled,-Dcairo-tests=disabled" +PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false" +PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,udev" +PACKAGECONFIG[manpages] = "-Dman-pages=enabled,-Dman-pages=disabled,libxslt-native xmlto-native python3-docutils-native" + +ALLOW_EMPTY:${PN}-drivers = "1" +PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \ + ${PN}-intel ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu \ + ${PN}-etnaviv" + +RRECOMMENDS:${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \ + ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu \ + ${PN}-etnaviv" + +FILES:${PN}-tests = "${bindir}/*" +FILES:${PN}-radeon = "${libdir}/libdrm_radeon.so.*" +FILES:${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*" +FILES:${PN}-omap = "${libdir}/libdrm_omap.so.*" +FILES:${PN}-intel = "${libdir}/libdrm_intel.so.*" +FILES:${PN}-exynos = "${libdir}/libdrm_exynos.so.*" +FILES:${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*" +FILES:${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.* ${datadir}/${PN}/amdgpu.ids" +FILES:${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/drm/libdrm_2.4.97.bb b/meta/recipes-graphics/drm/libdrm_2.4.97.bb deleted file mode 100644 index bbe9a33ba9..0000000000 --- a/meta/recipes-graphics/drm/libdrm_2.4.97.bb +++ /dev/null @@ -1,60 +0,0 @@ -SUMMARY = "Userspace interface to the kernel DRM services" -DESCRIPTION = "The runtime library for accessing the kernel DRM services. DRM \ -stands for \"Direct Rendering Manager\", which is the kernel portion of the \ -\"Direct Rendering Infrastructure\" (DRI). DRI is required for many hardware \ -accelerated OpenGL drivers." -HOMEPAGE = "http://dri.freedesktop.org" -SECTION = "x11/base" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71" -PROVIDES = "drm" -DEPENDS = "libpthread-stubs" - -SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.bz2 \ - file://musl-ioctl.patch" -SRC_URI[md5sum] = "acef22d0c62c89692348c2dd5591393e" -SRC_URI[sha256sum] = "77d0ccda3e10d6593398edb70b1566bfe1a23a39bd3da98ace2147692eadd123" - -inherit meson pkgconfig manpages - -PACKAGECONFIG ??= "libkms intel radeon amdgpu nouveau vmwgfx omap freedreno vc4 etnaviv install-test-programs" -PACKAGECONFIG[libkms] = "-Dlibkms=true,-Dlibkms=false" -PACKAGECONFIG[intel] = "-Dintel=true,-Dintel=false,libpciaccess" -PACKAGECONFIG[radeon] = "-Dradeon=true,-Dradeon=false" -PACKAGECONFIG[amdgpu] = "-Damdgpu=true,-Damdgpu=false" -PACKAGECONFIG[nouveau] = "-Dnouveau=true,-Dnouveau=false" -PACKAGECONFIG[vmwgfx] = "-Dvmwgfx=true,-Dvmwgfx=false" -PACKAGECONFIG[omap] = "-Domap=true,-Domap=false" -PACKAGECONFIG[exynos] = "-Dexynos=true,-Dexynos=false" -PACKAGECONFIG[freedreno] = "-Dfreedreno=true,-Dfreedreno=false" -PACKAGECONFIG[tegra] = "-Dtegra=true,-Dtegra=false" -PACKAGECONFIG[vc4] = "-Dvc4=true,-Dvc4=false" -PACKAGECONFIG[etnaviv] = "-Detnaviv=true,-Detnaviv=false" -PACKAGECONFIG[freedreno-kgsl] = "-Dfreedreno-kgsl=true,-Dfreedreno-kgsl=false" -PACKAGECONFIG[valgrind] = "-Dvalgrind=true,-Dvalgrind=false,valgrind" -PACKAGECONFIG[install-test-programs] = "-Dinstall-test-programs=true,-Dinstall-test-programs=false" -PACKAGECONFIG[cairo-tests] = "-Dcairo-tests=true,-Dcairo-tests=false" -PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,udev" -PACKAGECONFIG[manpages] = "-Dman-pages=true,-Dman-pages=false,libxslt-native xmlto-native" - -ALLOW_EMPTY_${PN}-drivers = "1" -PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \ - ${PN}-intel ${PN}-exynos ${PN}-kms ${PN}-freedreno ${PN}-amdgpu \ - ${PN}-etnaviv" - -RRECOMMENDS_${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \ - ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu \ - ${PN}-etnaviv" - -FILES_${PN}-tests = "${bindir}/*" -FILES_${PN}-radeon = "${libdir}/libdrm_radeon.so.*" -FILES_${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*" -FILES_${PN}-omap = "${libdir}/libdrm_omap.so.*" -FILES_${PN}-intel = "${libdir}/libdrm_intel.so.*" -FILES_${PN}-exynos = "${libdir}/libdrm_exynos.so.*" -FILES_${PN}-kms = "${libdir}/libkms*.so.*" -FILES_${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*" -FILES_${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.*" -FILES_${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/eglinfo/eglinfo-fb_1.0.0.bb b/meta/recipes-graphics/eglinfo/eglinfo-fb_1.0.0.bb deleted file mode 100644 index cccdd2073d..0000000000 --- a/meta/recipes-graphics/eglinfo/eglinfo-fb_1.0.0.bb +++ /dev/null @@ -1,7 +0,0 @@ -EGLINFO_PLATFORM ?= "fb" -EGLINFO_BINARY_NAME ?= "eglinfo-fb" - -require eglinfo.inc - -SUMMARY += "(Framebuffer version)" -CXXFLAGS += "-DMESA_EGL_NO_X11_HEADERS=1" diff --git a/meta/recipes-graphics/eglinfo/eglinfo-wayland_1.0.0.bb b/meta/recipes-graphics/eglinfo/eglinfo-wayland_1.0.0.bb deleted file mode 100644 index 87a131aa7b..0000000000 --- a/meta/recipes-graphics/eglinfo/eglinfo-wayland_1.0.0.bb +++ /dev/null @@ -1,13 +0,0 @@ -EGLINFO_PLATFORM ?= "wayland" -EGLINFO_BINARY_NAME ?= "eglinfo-wayland" - -require eglinfo.inc - -DEPENDS += "wayland" - -inherit distro_features_check - -# depends on wayland -REQUIRED_DISTRO_FEATURES += "wayland" - -SUMMARY += "(Wayland version)" diff --git a/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.0.bb b/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.0.bb deleted file mode 100644 index 48ab8805d8..0000000000 --- a/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.0.bb +++ /dev/null @@ -1,13 +0,0 @@ -EGLINFO_PLATFORM ?= "x11" -EGLINFO_BINARY_NAME ?= "eglinfo-x11" - -require eglinfo.inc - -DEPENDS += "virtual/libx11" - -inherit distro_features_check - -# depends on virtual/libx11 -REQUIRED_DISTRO_FEATURES += "x11" - -SUMMARY += "(X11 version)" diff --git a/meta/recipes-graphics/eglinfo/eglinfo.inc b/meta/recipes-graphics/eglinfo/eglinfo.inc deleted file mode 100644 index 6dcb0c5a19..0000000000 --- a/meta/recipes-graphics/eglinfo/eglinfo.inc +++ /dev/null @@ -1,38 +0,0 @@ -SUMMARY = "Utility for printing information EGL and its client APIs (OpenGL, OpenGL ES, OpenVG)" -SECTION = "graphics" -LICENSE = "Zlib" -HOMEPAGE = "https://github.com/dv1/eglinfo" -LIC_FILES_CHKSUM = "file://LICENSE;md5=8d4f33bc3add976f7dfae85dab66f03c" - -DEPENDS = "virtual/egl" - -SRC_URI = "git://github.com/dv1/eglinfo.git;branch=master \ - file://waf \ - file://0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch \ - file://0001-Check-for-libegl-using-pkg-config.patch \ - " -SRCREV = "223817ee37988042db7873cfb5b2e899dfe35c10" - -CVE_PRODUCT = "eglinfo" - -S = "${WORKDIR}/git" - -inherit waf distro_features_check pkgconfig -# depends on virtual/egl -REQUIRED_DISTRO_FEATURES ?= "opengl" - -# BSP layers should add .bbappend files for the -x11 and -fb .bb recipes, which -# append the respective EGL/OpenGLES/OpenVG libraries to DEPENDS and set -# EGL_DEVICE as appropriate. -EGLINFO_DEVICE ?= "generic" - -EXTRA_OECONF = "--platform=${EGLINFO_PLATFORM} \ - --device=${EGLINFO_DEVICE} \ - --sysroot ${STAGING_DIR_TARGET}" - -do_configure_prepend() { - install -D -m 0755 ${WORKDIR}/waf ${S}/waf -} -do_install_append() { - mv ${D}/${bindir}/eglinfo ${D}/${bindir}/${EGLINFO_BINARY_NAME} -} diff --git a/meta/recipes-graphics/eglinfo/files/0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch b/meta/recipes-graphics/eglinfo/files/0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch deleted file mode 100644 index 61327eb36b..0000000000 --- a/meta/recipes-graphics/eglinfo/files/0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 99a5784d33ad5e0e6fa00338d2732cbccad7661c Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 13 Jan 2016 16:08:22 -0800 -Subject: [PATCH] Add STAGING_INCDIR to searchpath for egl headers - -bcm_host.h is in standard includedir in sysroot -add that to header search paths. - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Submitted - - wscript | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/wscript b/wscript -index 195e247..0f6ec53 100644 ---- a/wscript -+++ b/wscript -@@ -177,9 +177,10 @@ def configure_raspberrypi_device(conf, platform): - conf.check_cxx(mandatory = 1, lib = ['GLESv2', 'EGL', 'bcm_host'], uselib_store = 'EGL') - import os - sysroot = conf.options.sysroot + conf.options.prefix -+ std_include_path = os.path.join(sysroot, 'include') - vcos_pthread_path = os.path.join(sysroot, 'include/interface/vcos/pthreads') - vcms_host_path = os.path.join(sysroot, 'include/interface/vmcs_host/linux') -- if not conf.check_cxx(mandatory = 0, header_name = ['vcos_platform_types.h', 'EGL/egl.h', 'bcm_host.h'], includes = [vcos_pthread_path, vcms_host_path], uselib_store = 'EGL'): -+ if not conf.check_cxx(mandatory = 0, header_name = ['vcos_platform_types.h', 'EGL/egl.h', 'bcm_host.h'], includes = [vcos_pthread_path, vcms_host_path, std_include_path], uselib_store = 'EGL'): - conf.fatal('Check if --prefix and --sysroot are set correctly.') - conf.env['WITH_APIS'] = [] - if check_gles2(conf): --- -2.19.1 diff --git a/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch b/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch deleted file mode 100644 index 572c8014ca..0000000000 --- a/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 17f5d2f574236f8c3459f9efadef2f0f6220a4dd Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Mon, 13 Aug 2018 15:46:53 -0700 -Subject: [PATCH] Check for libegl using pkg-config - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> -[Roman: patch has been rebased to 223817ee3798 ("Add Wayland support") - trivial merge conflicts resolved] -Signed-off-by: Roman Stratiienko <roman.stratiienko@globallogic.com> ---- - wscript | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -diff --git a/wscript b/wscript -index 0f6ec53..401f62e 100644 ---- a/wscript -+++ b/wscript -@@ -174,14 +174,9 @@ def configure_raspberrypi_device(conf, platform): - else: - conf.fatal('Unsupported Raspberry Pi platform "%s"' % platform) - return -- conf.check_cxx(mandatory = 1, lib = ['GLESv2', 'EGL', 'bcm_host'], uselib_store = 'EGL') -+ conf.check_cfg(package='egl', args='--libs --cflags') - import os - sysroot = conf.options.sysroot + conf.options.prefix -- std_include_path = os.path.join(sysroot, 'include') -- vcos_pthread_path = os.path.join(sysroot, 'include/interface/vcos/pthreads') -- vcms_host_path = os.path.join(sysroot, 'include/interface/vmcs_host/linux') -- if not conf.check_cxx(mandatory = 0, header_name = ['vcos_platform_types.h', 'EGL/egl.h', 'bcm_host.h'], includes = [vcos_pthread_path, vcms_host_path, std_include_path], uselib_store = 'EGL'): -- conf.fatal('Check if --prefix and --sysroot are set correctly.') - conf.env['WITH_APIS'] = [] - if check_gles2(conf): - conf.env['WITH_APIS'] += ['GLES1', 'GLES2'] --- -2.19.1 diff --git a/meta/recipes-graphics/eglinfo/files/waf b/meta/recipes-graphics/eglinfo/files/waf deleted file mode 100755 index 04ddd9f63a..0000000000 --- a/meta/recipes-graphics/eglinfo/files/waf +++ /dev/null @@ -1,169 +0,0 @@ -#!/usr/bin/env python -# encoding: latin-1 -# Thomas Nagy, 2005-2018 -# -""" -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -""" - -import os, sys, inspect - -VERSION="2.0.11" -REVISION="41b69b45f8aa445dce066a4aec3cdb75" -GIT="fe03c6fa470f0bc3c086baafed8c6b4b6d28a245" -INSTALL='' -C1='#4' -C2='#*' -C3='#)' -cwd = os.getcwd() -join = os.path.join - - -WAF='waf' -def b(x): - return x -if sys.hexversion>0x300000f: - WAF='waf3' - def b(x): - return x.encode() - -def err(m): - print(('\033[91mError: %s\033[0m' % m)) - sys.exit(1) - -def unpack_wafdir(dir, src): - f = open(src,'rb') - c = 'corrupt archive (%d)' - while 1: - line = f.readline() - if not line: err('run waf-light from a folder containing waflib') - if line == b('#==>\n'): - txt = f.readline() - if not txt: err(c % 1) - if f.readline() != b('#<==\n'): err(c % 2) - break - if not txt: err(c % 3) - txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00')) - - import shutil, tarfile - try: shutil.rmtree(dir) - except OSError: pass - try: - for x in ('Tools', 'extras'): - os.makedirs(join(dir, 'waflib', x)) - except OSError: - err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir) - - os.chdir(dir) - tmp = 't.gz' - t = open(tmp,'wb') - try: t.write(txt) - finally: t.close() - - try: - t = tarfile.open(tmp) - except: - try: - os.system('gzip -d t.gz') - t = tarfile.open('t') - tmp = 't' - except: - os.chdir(cwd) - try: shutil.rmtree(dir) - except OSError: pass - err("Waf cannot be unpacked, check that bzip2 support is present") - - try: - for x in t: t.extract(x) - finally: - t.close() - - for x in ('Tools', 'extras'): - os.chmod(join('waflib',x), 493) - - if sys.hexversion<0x300000f: - sys.path = [join(dir, 'waflib')] + sys.path - import fixpy2 - fixpy2.fixdir(dir) - - os.remove(tmp) - os.chdir(cwd) - - try: dir = unicode(dir, 'mbcs') - except: pass - try: - from ctypes import windll - windll.kernel32.SetFileAttributesW(dir, 2) - except: - pass - -def test(dir): - try: - os.stat(join(dir, 'waflib')) - return os.path.abspath(dir) - except OSError: - pass - -def find_lib(): - src = os.path.abspath(inspect.getfile(inspect.getmodule(err))) - base, name = os.path.split(src) - - #devs use $WAFDIR - w=test(os.environ.get('WAFDIR', '')) - if w: return w - - #waf-light - if name.endswith('waf-light'): - w = test(base) - if w: return w - err('waf-light requires waflib -> export WAFDIR=/folder') - - dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) - for i in (INSTALL,'/usr','/usr/local','/opt'): - w = test(i + '/lib/' + dirname) - if w: return w - - #waf-local - dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname) - w = test(dir) - if w: return w - - #unpack - unpack_wafdir(dir, src) - return dir - -wafdir = find_lib() -sys.path.insert(0, wafdir) - -if __name__ == '__main__': - - from waflib import Scripting - Scripting.waf_entry_point(cwd, VERSION, wafdir) - -#==> -#‹‰†[ÿtmp-waf-2.0.11.tar#)ì½kcÛƱ0ܯâ¯`Ôê#)° Z’/iu‚´Ž$>q$?–Ó´Gfq(”‘€•&ïoçº#)¤ä6iŸç4n#‹ÝÙÙûÌì\nãéäâá`^Nª¬˜õ·¿úÉÿíÿ§Ó/ü«ý|¼ð«ƒG?z´øñÁá¯ö?~òèWÝý_ýþ-ËjPt»¿*ò¼Ú”ï®ïõÆý?òï×u.ËâáÅdþ0›¿ï.n««|Þùu7›óÑd~yÔ]Vã½ßBÊ·ÏÞœ¼<ùâ£î‹¼;Ï«n6šTu¯ªjQ=|x3÷&ùË<¿~8™²U漢MæÕ`2@iu•¥+O¦Y§3™-ò¢êæe\dqy[vÆE>ëÞÐtìÊÇoªÉ´ìÜLóáuBϽêªÈˆVï$†Q§*n:[TvXÝ.²RËžUÅrX-ø#* 3Æô¼‚ð»4Ó|~ ¿“y_ÜÙžo†Wƒ"~}úòäíñxÇ,l5ÌU÷%>.Š¼€J‡ÓAYvŸÁÊy+'Ì/¾Ë†U¶FÙ¸›ÔI•¦a™MÇqYÞ3ú¸… =NHøS¹!ú9Ã:ÊÄÉ*I˜E°yVUÅäbYeŠü[#)J¦BŒ$#4š7¬{ƱZ1öêùÞ`ø×å¤È ³·|ì{\Ë5>§ÐË\d<™¦Sd‘M³AÉ œóœÐ`Š†nÞõ rS„*°%Ú+Çœ“rPU·›Kž¨“MËÌŒíóÓÓ7/B3“¨4Lßl:*Óä<ÜþӶΪ(·ÿlßú#4áìëg¯^¥oŽŸ¿Ý#)æU6®<Hoó…÷þfryåçø,¯ª|ÖRáóÓ“³ÓWÇéÙó7ÇÇ'égß|þùñ›ôåÉç§8›|ŸmÇÔZþ|Y”yñ:‡#a’ÏfÆ•Ûfaú·°Âò›íضS¿¬&³åŒ?ºU4}þÍ›³Ó»°F$ÐuUœ”“‹)%Â"FÈ2ySÜ’å|³=ëè’9Ììjá,0 PŽÅ“é`v1tçËÙEVÄ0wËiuįÝÁ|Ô…L!¿FyÑ•³·/ÒÓoÞ¾þæmú峓¯Ž“½ƒN>~óZfR;[¼õ®³bžMö¾Èª³jô%€Ÿf½AqI»Xr.ìßQ ÈJj†doÍý<Ÿ—ù4;Y6ÿl9gÅËù8oV¦Û^¸~EýªÂ¢×ŽÝ™)ú6[Uf~µ ¦ó wUþùd:•‚§Ëj±¬žÃÖ?ôm+|44ûŠV‡¾êììX}Œë}úê§ÄõþÝj‡ÃßH6Î7Ùî#*ëC‘¸ç„wv¢û Ó:Ç?ˆ.h! ÖSÿ#*àžüümHmH¯&e•·Éy¿\Ѿ’„¥9p“ä0Âͯ¾ualì|øÕ;*Ù´}…\[dJ¥%¢ã<ÙpŒ9™‡¥—Ù=F(×úÊ_èaËd`è‚œ#4óbry_‹äþûä$œ*]L˜`IŠ$9‰UÌô‚€¦…Êì'AÅÅÂ¥¡äƒà1Ò®H§“¹•Øã„òÁYœÐ»9Mù+̤}jw-/‡f{¨æɸKp’žîXSŠL\•0½¶3˜^mËøsdóÃ̾¬®ÉˆtEïO´¬¦üáðíÀÿôwVº·#C´¨Dkþ¿¿<ÒÊ ù*›+Ѿz6_µI#Getƒ(vЊm;dbyÕG÷«ÖìyµZ¥•–HýЪíìå¹×>™Vä‰ïGï´•Š¼yËÐä“?’õ±{°fºµO⬌§Í÷íÏ̽Ýóx®Ï[}äOl±õ3ÛÃ1ï5¹£]¿1^©?ï[Ñ?gQ¸-r»çŸ²,>¸r\ )S¦ëâ>ó¿…âè#*‹l>jßQM½ùb]µ0Ë[ òÄʧ£t‘‹¥V-€aÆß9Ÿ¸¢XfÕ:oã2[Ä+>ôzð·bxÁ„ÁJ·“U|íPMº5I÷éßyvC#*æå=›ÌÃÙ`Ë|ÅÞBˆbûíÖÿöçö™vÏN¼NɧËYs]ù{èÏÓÊMÇñOÓÂYþ>óÆ}•æã1´;ž5÷_!ëÚ¶fƒÛÕê6ðšNؽm-ú“Ž?õÎrÑÜ+°Ûu¦«öj³Âƒ4Êoæ#)k¨i6®îµºZJæ>#)ØXólUµ“Ì÷ÞZÛq_G¬ÞÕQ‹"{ÿ¯Ah]w—‡—²Ò†® 7‡ÿq}òÉaô<á_øy}úéam/jÙŸ!µ”͹\L'•Ù˜ïÓLàÀŠ¤q¼’Èš!ð7]„/”ŽvõP)/8¾÷Éð“G¿å/Ä¿ÿ±¿ÇûÑT¿6}¸÷HŠ…÷?^SxýP+ýxzé±a˜$ûnñÇYk–)uà”ú!Ù_íÿÖûü¸öù·ûÞçÛQþíoqèäõã}ÀÇNÂþÇù{ÊÿjûÂ1â*¿YKÌ8¼OÌÄeßKt?y"q5e†ÄþO‹^úº˜Í€O«Öð·àYp$[w|&ϸùÆÁsy£=/^È+n§qp™M,>ŽÌ_G–ˆƒ/å•°ƒ±ÿú_Á‘˃ÅÁWšÀÀ® »½8˜GNGÆÁÌT†o% b ×8X»!(㵪ü:›—I‘õ ;“iáïÞ.Þ‡çû{¿ûýöDáù`ïûg{ÿ݇iyþüÚߢ j¹JËîu—¦¬HsdYàæÁ»ßp6Â[9ÜH(ŸƒkoÓ`0†¶*eômžÓñr>Llio¸{—ìG³Q¤¸<•1@w’ÊGËÈ霥Nygo|-÷‡™d»ÇE¡Þ¿µÜÄ´9¥R¹oñ£¬ gÂVÀz›K4Rbº)’N¾7¬o1û(ŸË²òQž#)Ïe:exµœ_'?ùä€×õÌ».fûHwåQŽ’[$ç(sŒ¹Cá,J#)Ð9Â?Â?»”—$¸(y¬w“³,Ç1åmåöâ€e&gaÏBàÓOyÄss^MæËLЄúJïˆæžyÿ‰îwEª}ç…®¬¥-®Û òee.xamIjV&¡ˆà»¥Œ#4¿=A·J¿]‰x‡:æC¤Þ÷“%c£a©¦¨¡ƒ;[~°T·v´Hr=¡Ê(Vˆ2EI—²ñx8¯¦1b1ÉËv¥&Yî¨è¾#@œã%ÅûI!îLÁÛã7_qD¨n« -gÍÃ2 >øüźs’ujùU×'ÜrúÓ‰Ý[΃áu¸ý%üÛæ.èMòa5#*?¡}Ñ{ûòôùß¾<9ûïXŠ¹…öùQàÕCªì˜Ëœcúz¸;(»™;ëÍþéÍ‚ÊwþAýV¸y¨·Rÿý¯ýýƒú_ž>ýEÿëµþׯ~ù÷Ã?Yÿp^L`ë™_þÀúŸO5Öÿ“Yÿÿ»×?©l¦ÀX ®WšªÚæͤºÂÛˆ*›eóÊÑ-¯¦Ù#4þ.« Å`˜]À ÃA>ÏQ4ÆBk•Hc ‹Æ“KT}•_–ñ)³š,4>!#!SÆŸ-'ÓPã¬séhR¤Àî0› RÉyž§“Ù…òTerµš ßõ°ø§d›€lwˆ‡>€¶·é"'в(àkȆxAC5% CNHD¢‘îÑ=͉©êV0î}ûìó?¿9{yzòQ"%‘V "¤0ßH?#)–xw‡5Ù ƒŠAq‹¯#ÎÙ ^uCƒ|ŠƒJ³2Å©X ª²Õ¤#4àMsb3á{ÂÙlz±œSº¾OÀ[^QR£':[t1µî£Ž@R'ONŸ¿zùõgwr]ˆâ ¸|}J²«EÜN5LÓî±TW½ïrd·C¢å€ÃT-püé|0ËÂÌ(1ü(û—¯ß¦Ÿ¿ÎAH]*=)q9´”ò¯º2˜Íób†¡&#)vk*f¦é:-0¸( #)þá+íÀ·órÚLº#ÃÑV+Óà)`]¦C~#*ƒœör(ϱ®…Æ#J 4^z•.‚#)—!pøùM#4Ìä<¿™S½<H WålºE~ݼŒÜ8[°Óh‘¬ÅáÕ+ï”—‚Áü(¹F Lc¹©¤÷–%½N*ºíQJÜÑÂkÑ4zxyèÖkèée‘˜VwD#)‰GÃ0-i¢N'ÀÂL#4œ¦ûpzf•À0#ës¹ÛÀgmÝ]ÎQ›%A±#)Ìesì¡g'6#)`ÖÄlš=óÄr#ì‚\Pz0#4ë«*®ÃŽDØ0ϱa¸‡S«Îñ©wöxàÓ¾£ïv̫φ7+fÂaY!ˈ˜ÈÌÁ)©³†že#4èÐÈà¯T åÉ8ð+› LÊøîG‡®Ì#*†.1嶰åÎøš®KÌLwqšX5Û¿Õ:Ìnãëâ8cA¯&Ù#4ó¸9È9ÅiÖÜ#4à¹'ó÷ƒéN±®N‡ÒLúù#)ŠëäÇU_¿ÎˆøtA;ÃägÐ%댷‚tk5ª®@ë^ìLí¦Ð@ÜQ )©o¹v±ÐçDÖ©Ág~Q¤ì~¢YêçNcw§%SC)nkC™KËÂa\Veèž%ÎNxs•Mi“u‡ùíUVfÝA‘uNë^f󬘵H7œç]öpQä¨ÑÚçËùˆÅß[f£/z‹ˆš«Ë@%èîªF•uß,ç]¢Ú#)p:ÊŠ.®;&!#*6*šs!,hX/ݽ«.®íXií:}"«ºjx…›h‹£NËBk`#*½¥èÖ·R‹†…ØŠ^SÌ ¡é,-ÐÑ20)Úƒ#4éÉH…›õs¼9~ÄYè´‹ÎÙYyYëæ²*BÞf=$ÖÊœZÛ*¸ÑÒ¿O{#*.Ójqa‡Ñ¡OÀÃÜ4o™Š¾æ¤x;#nxš‚ÕÂôƒÚß°µÿi M=C˜5ûÿP½jUÑŒ^$\Qïÿ†õ¯½ÀŸßªÉ,"i)§}ü»XöSÝçÍ~ïc`7C;˜~]èáÄ#*‚~lj6æeW ÷ãй›nùP€À+aúÌlVkšb0¡ÝüŽ©ˆÈÒ„‘ù÷©ÜßcŠº-ëi¢7Gµö³ÛÐ<†d–ÏÖpkŠMï9ýüù§ð¾Ên/òA1z ³º(–2,Í&C6#4|pOuTñÀ]âˆCJÔ÷‘eˆ.å«åˆàðl–hè¡L‚>&&[Ç(<À/ÚÐægV/½4ÅÇ4µ‡%¾ã²n#)Oa-«4•ûè#4ïÏÃz®‹ÇXMÇPÊÀB–UŒðÞvÎOWÙi`EíÚœZòµÁ](4>b)±#4ÃNd ¡ˆ#)/¬?¢–lƒª¼Î•‚.LR°!®H>Ò½Ã=9-<i³U6D{ð+Yír!õ4U·tä@36èƒõ§º{¨“vŽÝÑðB™fÙ2Ù¸MÓü2Å´žz‹Ï¡|ÔN¬aÊQ¾¢ÀÌáZë&çj¿Ðëä{ú$·=\o Km¤:îîòÜ”]kE-iŒòØDa/µö Ç´¯DÍ'åU6ê–Ëá0+ËñZÕ#*wúÑR±×u„Íòà3ËOîPÈ[l6¬æ÷X¾EãþRF0ùs¤§×nNZøÈl¥Vê±€¶G#æ~à —Ã~Ù›åCüq "áºÆ¼5¹4/Õ:æɲH¥ÈPá$k׬a‰¢öy¾œŽhpY ^‚XËQ'è‹Ï`ŒEˆ‡]ÈwŒŠ„Eaµ†íf^Lé;’UöŠYUdYÃ&´’—TÌÆë‚€«,»$A¢³$ÒhP#* oùœ-EÝ^ÇãåÜÃ/¯ÝÛÆ+íéY«%ôÓ;>9=>yëíº÷zó®dä)Ž#èqG›! Pz¸wØå¿øòˆßà'M½ÈPK×®¤e¥ì|£C¼ñˆXà5¶Î&œXŠ¼.S©£0§›ƒdEÒ¯"™5D³×#ê3a'y+êÜ!ƒ'wKUœq_'±o˜uæ°å±£<`© ‡5G Mv¾öeC´ÐÙš$uxþæÊuÜ‹óÚlp²5æ…%dÜ\uá‘2;¼îý!¹n:‹Øl(Q‡F_@[Ìv$¿²#*ð鉘ôáÕV›Ã(#?¬|y™/‹!~e´;àù`/Á3læy0½Ì“#)VNïâûÃ#)'m•RÚß~ä-EÏO£hÃú¤jÏeáy]&²ž<HfÎJhŒ;ž£X…¾š*„ϬèšhksðùIåQÂ$…î<§Ï(Œ:xƒ‰¬Ÿ•K¡9šMùß{³Áu–â‡ÐÔìVŒ_z£lš1©±þ\Ø¢óѶƒ^C‘#qï@÷»›Žìð˜H·ÀF”ÍCªWEúQÜ»J‘-¦À T¢‰ÜÖ9«e`F¨XRá*†ÇHjí#*§¹¨à‘¯©#I‚ï'‹€Ï7x—qÛ‚ÇD^{ÿ=Y|Žp(xa°(€’åb³¿|¾8þüÕ³·Ç/Öb-S§67hÔxnìƒÝ#*lŠ²ÐV¦ JQC\9ˆ¹°ãµXaY·od«¡jÆp6OÃà´¿aguÙ;#* ØxÉÅôpù=ÿ®¾Ç#*ûÓ[$Ó¸”WŽP£¼>yj'š¯€…âe‡.}‹”&vC.žàíÞ?ó°àÎŽ§ƒË2 Š˜.½«lÅÅÂ!z’ÝØMˆö¥ÑQw§D¡°YäÜw\^;)/Á£N&åM¬˜f·áþü-˜lgC³“';ð0Ñf©ÕQÿfüÞ4S8¸þœ¡¢E6ž¬îž4xo9‘f'¿]zoKª À#*0°YüDç#4Q/U«¯ºêÒ#4_Ä4@˜yÎcƒ ?(7%ÂØïdìMÁF¾úpkÍ®«ÓÍU¤´ù6î¥n‘Ú´uÚ»Q¥?aîÞ¶[ÎoÍ÷dÔÓŒ.„Í–›'Kouë((Ön;ÖæûF¬ë&t/׉P4áÙë×'Ͼþcžc)ÉýûÝ¥õV>8èíQÇDðØ#*ö‚]Zë§=ÚЬéæi‚9î5Ì• 6=-GYZd—ånÐ}ðà!ù½øØsž™Ú·éæåÁÿGaÃúŽÐ`…Ÿ·C}ÈùábpÍåÍ‚ !E¶wó ¨]#4 ™ÇËl>âÉ…K•íùô¯å5jÒó‘«ÛŽ#*Ü…6Ø6>ÍnÔngÊ Ñïý@ûÝÉlI™Á¼J/§ùE`§1‹YH4Ú‘³2¸åL¦I"8ÌðäºL§t'Sd˜‰ÐP’”IÑ’ÈP¢,™û%‚!>‘´AéRºD«&üR±Q&Ädó"ÒÏ "3±:˜-”øŽ/ùª½E’fK¢î›)@vÒe6vsoW§šV]C©²Fj^ydã^€Þk¨ÏYT‡‡·5V‘e¿;êJq@òø%ˇ鞖sû¼·7ʈÃM‚]n|ð±Sêâ.ãþkôÙŒ¨¨ØRötÎym…§_å äu«Â=míùÈG\?©7»ásôð“&µó"’^b‹Åæ`PY"š,—Àk¡ø÷šðF;áͨõDŠ`ïšTJå{…Q¿U í„ïŽÐ„©Ã'‡œñ”®)ÉE¯¢y?Ø$;ÌFÙ(îÂZåE޽ɀ2E[.¹ÞßqšîK²Úûш¯høíNAï%NQ—G3«²š)]fM#»_¸¬r3QCÙÒYV]å#¬¤ug°ª#)\®g¡¸G˜‹w6k¹Œò”áGÒÒ¢õRSoh×€¹·†›Scùù¼·ˆ‰~‡Ù8D„""‹’6‰fqç:ðŠm˜¬¤Á9¼˜«Êr%«ä*E™X^ÅüŽüÅ83I+j?›ÕzÚpZ§°bs^}D""dšx˜O¼‰ÂjÇ‹ø.g#´tAcâ#)¿ìÞÅEV²Íõ+ s¤ÄÉø› º®Dâd ¿k—Üyž¹Üz¨€¤?˜mÀÜ4>ùƒ#?Û°^üÒíÑ_iò)ñ×òúŒÑ/öÿTýÿ·ƒòú‹lþ³˜ÿÜ¡ÿÿèððÑ£ºþÿÁÓÑÿÿwðÿ<Ì·è:/ñÂjXåù´Õ4NP>HX_Ôôþ>©ê³A¥WírÍ»`ˆ®N:_?{qü&=þÓÛ³ä<è]áUäÕbA?«ý\}aQ*¨/½Úκoœ#*íPøy1’i”¢ßtÚk‘:X#)3²®þ÷®ã®o,/Ãó*…R‹…yL¤ÂÎ[:°É°—–^™òº4< j/\#)e§öõÑoR䥓ъ}#g»‡º¨€'×7çTI߃¯Ÿñú£P>Ëh²ˆü}Ë—È»ÂÀºWLÄχ—sÌØ÷’HøƒÉñ~´{p‡ßL· ÝÜQÑA¥ê2…ïp’.ç•-rwêýp»ô½¾ÊnQ;¬KƒÞƒ):S›aÕä¡ù'ÙÌÜö]¦¦#•ÝþDY‹d°@`Þ3›ðéöÓ$ím6ºÈl£¡nÙY2ßvµŽ¯íªí/Ì!äR‰GöÃ0Õ!åê@«®ËöN™ì”€ä*FÂK·õ«(r„Û#))¸aPd;în3 #)£#*C^Ø¿z¿uÍÁsrC¹Û…ŠžûrEßM³YÄSª¨#)j€®"¿Ÿ9+«–[i*K#4q+4íöiÇzÖRúRà¹b-+H,ÝÇFmÄÃyY>_#)K]T·¡öS¬Å¥·«œ†“WØ=§3 Í°=knHSź¾vÄÝœ€V°ÞŒ ðs3Ü$¸#)”äYB¹”gE†r8‘BÓþIro¹#*€m¥së<xX¹”Ù×%ðÓjó-j,ýÂK½Jðª¯îòDtâÖmÆXí·=: •Ås¸P©„mÇ€‡'b#)ݽ.Уî ê¢ÛŽª½ÔeV†;©~Ä$«¡c’¶X|J«Bâ›Û&ýjwÜÐ#)y±û€ÏиD³qC‘+3;ËÀ+áî‘úlé(’Pfµã0l¦ý#)Y7–AÄ5‘"pXd(QÏÔœi+_Êæ&N=f¬nŸ!3fÝ"wè7H™âÍq%S{3×æ«ìv£Ì(›vR¶æÆêÁš0aFǪÅtÔùmÿè.SÛ3«ÈIkíÉØV…ŽL΃ç·Cè¦QV©ÅGJ7dæ0KˆVL^Ðù¿7ÃèžnO ö`ïÆ*é—ÁNx»ÒS›*”¾8Ãh—½›ËŽà£È'ÅHˆ—Ç(»X^†—G´› ¬ðر2žÈAá-^1N³ãý>©Uwkge}\ ƒ.ëÚ rl:1¨ vîã`geU²ØûîŒ"X¾þ[ïíÕpkãa0Í°êMÈŽÉ»£žˆWÀ7Ôî„ùdÀ;#9ê˜Hk™÷û#*71Èmu¯>˜=]µìùµ»˜ÞÞ.Ü.%Í2²Š#*Í™µmôv—Ö=L—k•ÖQÚþœUŸð¢Æª+ÅØ"D‘"ðC]d~m‚Ý‚Ô[©4ˆ(×bïÛc6.‹!ÑìquYñƒa70gânóçX¢ºÝ¥Ùc3a‘âiRå¶ à)=™/–UBºä€jý9¹ª-Cø †äÓ ô8]ÏøâÌ|•¶OsuTˆV§4w²¼W#4,ŒîAhúD¦·kHG$çCú2êq«¹•¸æêa±ÔéMwndGn¸‡š„ªi”RJqø¤4À’>RÀcÅÓi#4 å9üé»L™AË)UãÛ”²£,ñgn ^“Ï#4AhÍ@Ó#*½UÅ`.³¼²%Ág¯¾9Æ»Gœ1pNÒ™ñEÄpL7>@@‚!”ÃÁœŸän*5Œi\^eÓ)÷¶_àûô'Füël~fãÇ<ÂlFØ.ŒïPò¡n< ‹Zj;5\Éèþ1í”_m,ÿHƒé/7ÿH£è¯,õ•£#4c6K¤%¨ÂÔ«÷|ŸÈ"Xï,Úu¶#4š€àEÓ>ñU"îÔ2¡ÑÆÄ.NXueOâ..H"®y놉1¿Ì`Á«ÔaÕ“MA×ùµGfò|DãkveÀó4Ã1ß#Ï·‰P|`¾aðmû";¾|Üßzk»T ¶KL8YßÚ j¥%šJû¯Ñ¼ÓT¾ø7yòÄb¦<ÊǧçÜ]7E3:F<-ôh¶ÇÐÎ<›Œ_^‰Ñ‚ì[eý(žÃÎÐMK¡‘ÜÎÑ›½À7&;eøàZ¯ì`2åè=¡RËÔbéšIzâpèìÒäÜ+Ûwõ}A7^ÚΟ#)CxN},M×=í㇠Ô"‘õöÁ—¯HqÓøç6 å.Ü-œ#*p¶8}˜¢Ù’~#4ÜW-H»ž±Zãüyß™îf¬’ë›SÑSŽ“ñªr:ZŨBDé¬Lm#ÚÙpIGêDwußÀŸ¾³¦ýkZV-•C B3V+F+HÃ#)I½¹ŠÖ4³9Wž!pp46r)hºA(‡82ž3FÙ&%ÑMǬd>~DæÄsÒn@¬•±pøI9t›-:ÐÍ$x VL¢Ž‘2x#¿qEê~|©g âsâiA•=%ø³Yv…0sNÈbð÷•ÀG²†9RoéLIÌážÔ>ˆáüÜ4®œ[ç"‹èpjºY{D³º”„WÃÄÈšªÃ«ÌÒôJ(§§³ž1Ý\D@ëY>ò¹Ý€ÒuFÊ$PmÈ0-ˆE¤À$W#*¦NÄ&BA’ª’L-éûAQÖ2`M¢úP<^¯„S#*|¶ì&/F-9å‹É½DÇ8ÔCµ¼¦›#)lb@¤_¶«–ÝùÄLþrs¡IÓ{:Êe¢«^-Jñ„Yivkdñá¾Æ5u+ègbGŠ‰T&|cé’Øip¬cêäØA8âN“›%@Æô‰+Ç”xûvñK¿díÙï:q"[Þ§e‹Â’U×àú:ŒŠ|O2]‡Þ²&‰TÂ3Àl†[æïQS\O}W-S+¢ÔôôLšî‚5û)¡ò6¿«áÜìøh¹»8‡ãpyaéex½»$HÄnd‘lN!™Í‚fU˜‚’"…ÙB…©N"BQ‰„Ìdliy(và?˜;g-3èøÑñ%LÇ ÜžÖev\õøõvRóYV/sëùidtÖL“&0âÓúºeN-Œª˜™Xû<FR£›AÙTæºî÷‘Êø¤…µãÕ¶Îé+ìy}¿¹ëtË®ÊòvÖs™®Ám@ #4Zè„D¾Ä¤È¬²À§úÊë†,Ek‡š‘=¼;ˆá.Jè]C ÔÍW£PV^!x7…à¹Ó¼Bój¬ÊžÉXTR…Þà—–ÂƒéÍඬ•åDØøçÖ}YN:Ãbëo#*èê8ÏÎm˜Ìµ;¯]HçµkĶëÅ–{J‡2mãýí%+Š¼He‡#*á¹&ÈæêùN#4qmÒrµ]ä¹|µ{÷÷ðè^™Œz¼ØácöôéãÇ2¯ÛiToÂ9àӶ͵è•4 oF5°F—êL#4~‡ jµu8ª•ÜÃÊפñՔÓÕ!”Ëì¯úJùë2ƒRR¬qia{ÙBfïöõ|ï ÿQø%ƒ#ï~ÆÜÕrÕìký•C¢µÜµÌ¸#*£ó 콓×jµ@: l[$Ðæ;I¹}o‚VúÍ“ý–¤ç¨¥I['MjW¹Ç^‹?„ïnv£?1$~fÆåò¢¬ÒÅ0¤£ÿ(×#*@-Ы9™d–kïÂÝÓÎ%×ý{VÊéQMDSídSªIüq܇I™¢à¼ŽÅ$f©ä|9Ãœ²³©ÜLwºC–Ôù¤Ï‘¤7ĸ‡ÚŸ¾ZW/„[ºÄÀ«ÒˇäæÆb€c}›á›íµ9*®¢…(emèX5•…:!2Ö^îXÒCmîƒüPð%q¤Sö¥Mâuj #)¦Ðó½¶WÞÐ(žÄµ¦#*[ˆ,“QbG)Áƒt)±ù5N`Ë/hÏÌÿÝ#*ù€¤6Ù$Wl¸w#)ÜÎMA£7ÅN?Ó®(¹ù— ½ô.‹|¹6^†M½(Lt©¾íÔ}*·w.Ù󖤓Þ!!´®Á´åàö?öuˆH™^VnT•Ñ°Ú¨Þ4<³•…”¶Áf…vî*ïÈæïÏW}ï·„æЯé×#È@®øáÙs.S»¦¼(o1ùF(Ud-{3t;£ÎÏ3Zx€bpC#*SdK`Þ£~½åö~6mˆÊÉemQ'Y?séØž\Ûh7iÔm¢)V5:ðº\¨Ý•î?hƒ"¡J&tmûZÄÏÅÊëCw’;à›2~-$CÚ0F֙ƉEK[Àˆãp$˜íVð‚–;¯sñ!âþ#4%§Ù6«é#)ú¿IFx\·ƒžõŒÍÿ¬\>è-†°©©†Ôðbؼ…leþ¥6Êׯ4jJJØ| #*¾‰º~ó·W/?{ñòÍ×—l~òNõõ×i™*ú‘F·qˆWüt·¤7\)o]dÍ•¨ÄºÖn¤7IªkÌ_1¬] ´søƒ#4 ›#)+cÙÊÖ#)#´søÓ·þÕ‹aôÇ·ºdnqÍ#*€º‚ì"+ºùXŒ„Šxg-Þ5B“8&šøûÉ‚Ú¨}Eq4t»éâa¾œNÕ3úmlk_°*¥©¼+E®·‰·&q•$ŒÂ ©±±d=ÎÒ—çÙP¢rŠãaæÖ¥Àjþ!.#4S´Ýš<°kô·†ïnàW>‘œÌ+ë>BX5«¸uª¸HÖsò·•Ü6*¹Hní(6#*î°!þÒõî”ÖïNA#ï¹~º¯ˆjååÞRº¶1Ô#)wøìëú ,ëZ”îyv“Åcœ¢£wQSE0qþp«U#4û¸K&-LØØйwmŽŠ¬(,@öHW~ý}õâþ2š¤â㼞ýŸ5wýÄÿy|p؈ÿóä—ø?ÿöy‰Ö^pæCâãÅ¹Í ÐZþ±U Fô!ë@#*æÃQ|ø¼è|ûìóôùéÉç/¿H_~‘¸n>;Ž‘7ëUâKŠî#€qBÆà×ÆwÁNLtTvó¨›Ï»¨“{©·ÐU¨«»Âß÷Yiáàb‚Å.&QKÃûâ?¯¸4´š¢Œõùëî²$ñ\€”_£C¦Iu¡°µÒÌu¿Òó`\º6ïä†;帔ß~µX+SÅ%rÑm¨ðiÛ3å¨HÇš¢•B&‘6duÅ"ª©Ìù‹P›cB=¦u#dÍŽ $rQ¤Ëh帒[.Þm"ÐPy‘±ZÂw«Lì«{ïB#4RlÖõðG~JN_7ÇOÙR#¤êòµkµ\¿÷X.a›¾#)ÿ7AÜšk'i\ÃbÍ#)r÷)—é5¾ÚP*!Ã*ÄÙ³ë"-eþ•Þ¦ù‚®†³¸|‘¸“Àƒâ–•rÔýp –ŒwzÐz{úÚ¥†êåÛmRñK=¼¤Ù‹—bH¿¡¥å!e1wx´xcÓÌHÒ,ÔÐ/Dr ÕÎÈ]s5(Áõ.bÝ–ŒwvÑé7oë]ÔV‘º6±Lq»»ÿN™¿u½;+п3U´d$—•ÒDí; k§#EÂGÈ#*H[c–M=lY®`?Õ`Åðƒ—·Æ”á¶Ú¼—gžƒ6bväìÄY+™m¸Éí•]1Öuni¸5úm1-eÏŸ=ÿò8}ñòM£œÓl/òÉEÛQŒýSÕ€„Sõ2+²"8±ƒá˜ep®Ÿt8ÄÓ™€z^pnn('®ð´±a™ˆo±Æm²f*ÑŽ^1Ä·¸Ìàì àŽ#)é#*éú&Š:©ƒ#œ¶WÙJcârfó;ŸñÔŽ¶ÕzØ„ž‹¦‚£–hzPöóÏ^BÊbÁç4$ÇÁm²Ãx[£´ò2àDalùþÍÙ7ükªfX¶LÛ”$VqäïEI¢)R"ª».rQJ’.1Ъ“3q.þ£’:p=H½Và}ßfÌÇNá†ê³"ëÞæËî¶ÏÙ*J¨‡7pJ¡m*œFˆZ²ÝÛîþž0»“ÈqÂhTû¼à×zH«öþo‰F×Þéwx¤Br#)'X¢3MÒÖDMp]ùžuý#_ê!÷lØ.Çv= ŸV¾ôÃ÷ÙJ½3%†R“Ä6÷†ì‘.!i·g“Ü;9…mèùWéË“ôÍ7'B‰ÕƒCºYè¾H÷’ZO¡+Nã¯Q$öÆ`]ž¾6 È]C–{#ãqO„7º&Û€0w!Yî0í ÷BX²·!ÌÂuKB{vŽ›ú×oŽ?ù'Ý[êk„=ßbëÚ¢þÙòI{Áͮك‡Æg/Oà(^‡šÓ«ƒ6›;iÏÖ¬T²·…eÅ×JÁoþÆøüˆŒ›á Å&ëÐ>ÜC‹s'íÙšhIöMhAQ¤‹8¼<}ç°exn‚Hô<-cHvk){\oqK[û\®b9É»Iwµ³z7'6ÞvŠwó`ÇL·/ÿ¤Ç´å6ÅáóM#*'àãŠ>Æ[íÛ‡îÙÒ•¸8‘õáÒ`-Õ,Ã\¥¶K£åcÛâñ»ÈRpPrץϾù†@—94dŸ§È5ãÕ=)ŽŠ`¬¾sìæÛ’M2Qƒ1f&Û˜dn1Ÿî_D¸j4ÌÐ…ñâšš%Ä5%„WêS®SÖª¨nÍ— •QÛuÜ"m5Àøò…¼Vÿʈ \ûB!‚ˆ†ñ“²;˜¢šË-uºÕ,¯'dp;˜Kôn½€¢µT1ê§ÜLdVU¡-TBáöi“0 ™?$Þ›ëQÀq!oÃÀxsØr2dŽŽÓ÷[1H§ûÐáª!G„‹îø‘½¦Ú€<бè8ãæ÷ød¶ Õføï?(:õŽßjȨQ΃Cò| ‘ð¢ŽæŽAñ5Ê@ÙûÁ”.oËÐÌǦt9vD™Çµ®¹’Z†ÖÜÙ¶rƒŠéÅq–iLO1ƒUÏò=o´à7´B!ÖÁ”¹õ·#)_·ÁN¤×ø»5,€oÁ¿?FÖNªþ•}ƒã;Éc¯¬#4,¬pη*1é±E`…Z’ÐÕZoòɶWztüDãkm'á,#*ÕLJfÂ6?²ë›Ëä$GïºWµ´añ¯$Ä8d5#)ÌŽúåM ýq¢BÇmr}C~c“blŸêî£ÆB#|£7Zž')öÈ]€Ž±±LÆNð@'`søÇž]fds7Ý}6ój#:Àž1Ú&y™Rh#4<1º£æcg´\ØF:ƒãX¸~¶]Æá#)ôm˜&׊ÈÑò¸èVÔÂbÄâ^MkqÍ„jfˆRŽT‹Ä¦ÑôMÉóPè䋼ÓjŒæ湺B¬GuÕô<·îÍ€RĘvÀ{ßd,³E‚ä¨çzÌé°ºX½´5oë}²JÔülúÜÚŠ7âN'#n<>„R㮘Mæ“$8èý®÷»ßñl°‚·Ã>0KGr§NÒ#*r7D.t¼žQÒ¼½íѱ…Z}:Šé ÀF‘®$”85ÉÁŽ#*>_Î!øTäMîÖàVZ^Ñqz‘YWYr°IPå°*Iª¢¶:ÕO>¤ÎY~w•T«” <âÎ̯¥£¡"‰µU Ã'º5¡8‹“ó¾ÄìΛvÌšß5óPõ [Ùjûײ¬=ŠwÏ#Ý°kÓ‘75ÔŽ(”;Áz›E~Yfµfë<„ùRâæM|1¾¨Òƒ2”hÒ@!cTÚ{ƒ*FL€Æ«=8{‹i,Œ‹JB<~|Ó(›ìܱñ#4#?¢Šc²f:[0Ȧxâ îê6¨¹pM#4“#*žEÞ*‡#$±B$Ú#^pp¾×ëC®40ý„j±¢“±ý<ÏkR,p“t$bj.±nªØ0Ì6¯'¬xýìí—]¶#™(°=r}¶…Ó¥˜Êzw“F¨œ‡Ž–)ûþ6õ¼—Eeëç’ ³…Ç &®-éår[Óá7eiÊÏ?(nÍX¢_–RZ=Ånï9Èú†û¦n‘OúÒùx³©ä6…“Žã1¹z_~uüçôù7oÞŸ¼M¿9;~;Óîg¨êÕéóg¯Ò¯¯}yrìÕÕÚ›`ÁÆiåFLN’Å—ü°[ד¤|°£ iâªÉÊÚ½ÓH6ÚeàkÌ…ôà‘>ÑYø×å$3Ö‘oDû”@J`S§)Œ¸#)á}¸¡>\s_&j#4[h+“Ö;;¢ÙqŠ‚7êÕ·IÑ20qº{‚¡²#)7³[†“&KÛIAFL™0ÁŠG—IØ/C‚X.Äi—kˆ^^t”³³¡PL<#*o#*ùè2o¢ý]*àØÁÔÎYlÞñPÒ’£1(õP4t)ƒƒ«bvŒ®$œÓxÒjgß|jëײFÖ28îûÕëlÍa¹4AG‰ˆ¯ZÝyúÒUŸ©Ëš5×°1[¢Žgc»åê$Îk8Ï6nnߣÖ{¸ˆßGžçc<6>JÈ»¬ÙóÉ^n×ß¾ì2±¼ÚIèÞxTÑ.±ü)ÏÏ`לGWÙ*¼²®4r¾¥‹[–a‰ì c³u™Ýé>ÌI‹c…ìǦåÉ#)Iú4s-|"zCÙŒ(CåkTŽ7FePͨõ¦Ê§ÌPÞ n.dTƒ;#¡ˆAŠ»å¢^Éwç#*Pý—b'KæÏN¼¤·Ø5Æ—`ÓàîßÁ1{p'ͦa_˜N]…@(Ð#*ØãΈ”iÉ«\÷JÓ²>y*êÆý®Áœ”pGlPÓ#*LÖ†c—*c½ÖÃvè%ž EþÏ]µ¶>…--.à¤Ùç4V¯/“#)ã¬a‚¨8ªœ®âkãŒØ•iK¸Á#q%«“®o …qr²ñë9¡§N@[ž~Ÿ…ìÝ;0ËIç)—e+Ù¦¤DuËÍ4k›"G¤ºÑ.^ì´Noæê’1$#)ñÄû~°ú–…¶~…Eúµe=ð±ÆŸÛ.6,Hãìß‹Å3¢õ؃7â™WR†Ô²ü¢²Iç™õÈ8‘›¿Ä8Àéab˜ùÒôeZ'ê'8ñxµ Ï)}vDZ$`¤€úJŸáH²”^f–!,íqer2Ë©MB9á¦Ö0åÕƒ?¿zuúm`d|ÐRx#)Vý"/³O¬©Äº°´o‡Ç+¥Hae©ÓÇé8’îrl>ÃÖ` ']:ÐRÓЦû ë„D«‘k#3ýz:±ºüškƒ*œÑÓùûoÿO¶7?KðŸ»õÿŸ<~ü¤¦ÿÿèÉá/ñþôÿoKÑþoSõgÑâwãÇ¢^~‡"Ââß_?ø5þô~ý#)vìÐ[JoÿžÿñL~> /½áûrr9‡ßΞ??Ó_Éð¾,agí•Ã!e/ßÏõW2|6©¾Ê²4˜~9©ôWk€G[CïâûBýTÍ~u)?’~ýöD5ÈÜ›ŒJ|ù¾üH9FðXÚ'Í#*ìê”Îvz{q–ž!€G÷+sØ"Ñm#)z]‰§á€¯SŠŒoRŠ¬÷ýåÛ¯ìxŸÀóõ*ùn•¬¬Žï»w@¡>tµ~>ä>ÍVÖæ#*éôZí1IQ{ÃáÒÆw ðz“`rãA•PÑú„2ë<_'׎ú1àqÞ뻸=@ãänÊï1ÅMØ…„wïvÅEÈuüe§üM°s]ó2#)Œ²ë›å:Ö¾•ËŸÍwáë¬_ŠE-sUVÌ™*½ŽåÊÙ¹+v{p)˜‰h_ýQ'G¹¼ÀE‹~gØ_ôœ§†w`¡)¨ÄÜר¿Ã´¡0D‘32NýlFdnø*¤Ì–”<è·»ãw œõëÎðl¶¶w0iÀ«A; hkºD׌ŠÓh¦Ï¡“¶NÃP#€›Ùwë³ô‰f:ïcBNv>@±¯ÕE¼ÇøQ£•»‰TFêô…”&;[iZNóªLÓ$Ï c,%Ô¢…ç@é|˜wRyZã— ÚÉŠ$ˆ>è3$ü#ñ?èÙXȈ«a1fVŒ6F¶ ;%ž)U¥Š!HHÛBs‚ÐE•%¿21›aNR¢a[!,¶`Pk&&±Øm)¥ÈU+½öëŠ%kš+g†Á[(…L§_ú¨8<S3ü¢×ÍmuŒÙ%áÆx_¢qf•ÛxmÌŒ®˜¼Ìë±ìƬE·\#)ûQ¬ ¤ùfI˜©T=4Þ5ƒ"°^T¬37ì¬%ƒ0Å¥ëŠFZë¹Y[\7`±F#*B½D(ý®Ì;¢9«ËÙŠˆè#4ÜÚX¥E´ÊÓÅ`R”ä†8±¾#4{Iól>Ù_=bÂÔ¿ËOQç(YÎ'CŠOfΟ˜OÎ=g+«ÂxJåšBºð²‚f?4È Ef”¤h6ÍPºGnJ䙕@¹¾]m —z0ý*õ3ÏÆ÷b½;DÞíÂþú—Á¤hNÚ#)ø7m%N€-:b±ø¤àmkÂZZÇM±SÇ’t÷JåR]'YfÂÄ›áQŠ;yiEóo(ª[Ž»ÔœIH¥ÃfuH›Z‘#)QX&xG]¶€ì)…µaP„d:™g(óÄ_(i|ÎÄ»:WýÅfL,)4ò3ÅîWêœÑr¶àm0Pü;ìcl5OÑ®#)×Í™×7WÒ\ijjE²Ùú&WÝúk]-eX[IÇn¬^Ýáy•ÆI^mW±±G°dt·ÊÞĵ£¬‹Û‰´#*ÕnmFy¯y´sÖUŽ;ë,ßš±yIѦ‚ÑŽ…ÊÜèÖx•Žmô42%â*+þ©iAÁ gÎYhxsTª5ër<ž¬lÁëd6X…û6\U¯ ÏùHí×ý$‘öÂõ‘@ºÊ&—W.#4BH{”>K$¸‘ø6õ5„Y8fH=!nžÞœš=÷“ßùè䢮9“30„Èö}®;E6%¤Y᪊9ÓÈíIÇÍLsˆ…ÐW 9ÇÎC÷¢ãž³F#Ú¹zö.¶ë‹VÃKÇäÒñùS᪓å>Y×’o2/óÑâ³£>Ç9t‘é© änYÅaP*ò8ôQSSèLäÁ0Q8÷zëüèâËt¢C€[ÇÔÃjE¦²ŽýC‹4_Ïa 4¾¥ …ßm“-ÿ´5\ºîü°1Àözªc^øODõHxk„â2c6¼¢Ü÷57kÛ yÁ#*ßN(]IÍškF3mµá½”ë#)’xC¢«EŒ8ÉŽY,ÍþÖæç³µX”_Hµ+±+i#0üsÏÌŸsì%»ÙßWý|üïWÓÅgÓ ×û½ÌPX÷ÿPϯ]Í~—¾ýŽµ+k$ûš‰IjI(®™´-Ãă)C,þƒžœ½´ÑBÊ¡›bÜ¥.ä„a(ù)äÕî5ALJ¬^í)#*Eö{CéO!I\Eòù¨AíN™C¯-ÛTDnªÚ«ãàÃGŽïÀÝÉžÄë9DZí?X²Rü QX½Ý5[l°ç¼€¹Ó¹É××a¬=‰Ò}œº½Ó2$£ÙŽªØ%M¹a³î:Äm~w6ô|ÜRÍF°GV3úØ®‘hk5•èÛ:iÓÖF9ýD#fêŽ^²Ý€I»¦o¿¶£zìM“EÈ…Zûm}Ç5¨Üº!¿]ó]ò£Éx,Öâ²²÷ˆØpÖ¹×ñSqà#/>€³°‹F¾YPƒ²£8vRi¼ÃÁûŸK€#ÁËUrø„´‘ˆÒé¤#)«$¹afˆŸIGÓ1z„ìx^ˆö‹Pî‘ý`éu¸k™ˆáºÍ:qd×O;éRÏA$c]t•ïaå‚\ÑÙòbÃÊ'¥˜²¤ãÞtÄä:ñ…ά¹ÇÍe#*äÏF ËÀå[Ç¡b ÜŠ}Ñ¥âÂF…@Ï!ÔšÞQ'ܵó¶u;Ɉ}`™˜¬%#*wÛü^ƒ¶–PS+žPƸOo±XëP'¢ÌAþ±³Pöx6R÷Ī¯…Ó]¤Êlä™ô7ª5ñÚNÿËi~ÑÐ!²ªóÏÖê«Ôr?€Órê;§äÕ^×Òõ޳Ш_èbÛ:0æÇ›!&œ¨Fÿ^mí¦?Œ™‚$ñáªÇ\TZ}c“d£dmqßøÚÕö+uqè^"–îiì~Äƺå>S¡ÿÌËjËÙ1|›šÂËdˆÃÚ“™±l‡Ç›+—MÇΪ‡ã·a<TúZ†¬z>ífýOO*W—”"›?ThH‡f]YžT<§@âM=]K‘òÕ˜€/IëÛ?q5l²“aåeÐÅê“Ä:#)ÁþB´‘ëØÿãˆ~#)h#*ñw£!•ï‡fƒ¦4úÛ¾ø ÚÔÙ‚¤G C½–#4_Óx{M§N”ÿ©m¯aßhÝÚ¾©WÝÒU÷îŠz%Ž¨©¥®wê(ÌI’CWRd•-ŽÃqâ5=ÿðÙ{7þçAš¢ð(Mƒþ®èÔ«Ì8˜þ¹y^7Èš:×vyî©gÓd‚«ùÅp)E¾$ËeL±8$ÆÑZq‹¥/ë>°ïÑXoØ¡ùï”ØùáÜ[º¤‘›ÚÓò¶7CEÈÿœq¼cª#4'ô#)ßž¬*#*Ln¼{rPU‡Ÿ1áÕ]»$Œqî_¨îѧɾT]ˆó£ë¾ZìXË|–OvÐl¹=\¹1]A¸«QF>ÃYL®§#Ÿõ¸Ç¶»ºÕÙN1ü ÒÖA%ßwOýÒíô½OÉæÒÓæÝydô´)¶_Ò¶[;·càtÓcœ›ÊÎÇÆ5Ÿ¬>ßÑ”™8qr±3L„–¼ÞºBì?×ÇHìT̹6xjR—ñøÂ#4„°âÜVσK›ÑNë-Ò2a´$ŽN£ÏJë|—k2Ïå "ú‘'U+s‹è$/&ÃëiFÎÆÔXø#4ïÝ'óËÞ+H#«Lõ(Ô8$où߯ÿ-ÑH0$éÏãÿýã'OÖèï>yú´îÿýéÓG¿èÿ›è“¿w5¢Š/€q~ú8FìÁ´Ã[侦%Üi:²yx•£Ö¬æö@#)ï+SÉâÒyßÕÉÆàÞr`×ãÕbRd£Ä~ïù_:ëvoÞjüÌ¡ÑúŒ¨†@$ß6«Š\|¢#)qN:C¨Þ‚.‰c¥!d$Ù#*äÍV“Š"º¡ó—øú-ªâ!þí'ÒC¢ˆÄß»xúH¤·#)#4EçÆÌ ýíæ-¸OtP]'Ίˆ'¾$4¡sìkøŠävÔëxòƒÂ&¶ô²gŽ#)GóÎ!jLÏPG#*-<j^õ0ãu¢Ñÿ&"¸"óyv“–E/ãËpœcêÉtº¸T£O8™8!¤ú“‘LÈÞÙË/¾zùêUí®˜ra >×"¯‡eRxÊHC£áƒ©‘ç&Æp?å(qV@4J1E'VMHïÃØaÏ?Vî[«ZH©…uìš(®.ž=C8oǹª|¤¤ò•´™<2Ì°,NTªC?»Á»y°«~”d®&ÉìUªãt#4ï£o}âM“_|—Ø ,Ùt~³.ÆëC{>^@#)CÂ.¾ëÉŒoýŽ˜úéãé²D‰ ÕëuŠªëVê"£—è, X.hMrhžÿëÎÿñdµ¸=ü™,À6ÛíÂÉ_?ÿ÷Ÿürþÿï>ÿÉÎ+MÇK¥—¦jëÅ.*QÕ¹K%tÐ(þɘƒ°0b……˜Ñ›k›Q}h¼÷“ϯù¢‰ÞZ¬ yI†éb'}œ?Ò%zª»cdÓÑÊýÈ•!jç ×}Kei/e ×ýɹÕækàrYÝj×*ŠüA #åÈoõ*vµ)}Øf¬ÄÛžÑö3>¡(ˆüëíÒ‰m<È£%{ADÒDÔ˜#&TЕ!RíEolQU̥̬•‰˜˜Ô£\‚$J¿Û†]ûwêίúÚ'ÒÐvůDryY'¼ÛÅ¡óF%x a‹#4èŠxµÄí¥õ3ÒwnæØÖ£Ç9^tå¡óAµ7ˆÙX< ¤`m³C,ÕŸñª5!IÙk–âüf9Ÿgû#ÜÜ[ÁÌUFÖ»ÀË#„fßzô5rÀ«c ÿÉFøÛapLÎxÔ¤66^C*!‹b¤ ÷ËÇ$§O´œö·£_âÈÝãügÈÏd#)¾ùüôä|«Ùüøà—óÿ—ó_Ïx>6aì…sŠ2¹È†š£¿Šgb°xR„˜üïâILìÕO!T`k9þÉói FWbqE[Ðù~ÿ“G–?¸[±ÕŠF‹BxϹ|‚†q˜O§y8.uGÙ_õƒS`°œVd„êõzÊNú°õüÔÞÿ~¿IÎ5}Ä_Ùâ¨Å‰€¸`ˆôÝM;f£'‘ 2ÉͿ꯽FÔ¼fž±›ÿ:ýì,`’P<Ú‰1ú‡äý$8tˆdÇþW´9ɶo¤ï3üërâPP½B¹°Éeó£/.Oìë[zJ0µsöò‹ôäå«$‡T-QÒÁx¯ÉãÃýÎéÇOž$÷¨Säè4¦HÎÙ7Àä#* ö‚>}šŒVɾHçób”Á\$uŠcâ¥k]E&R¾f¦¨ß#*«^{ ¹*„Žp.‡(¿“Ö#4Õ˜£ë9{ÝÆÖT¥SÛ ’ZŸíl©öUðÙAv-`ãé€J2B£lZ+g›ÔúµnÔÄHfò±úº¯ŒŽQÓdX”ĺͪ#4ø±>3O„i±”ømfn{fî@ŠRäõì=ü#)hø‹¶ÚìØ£îlUéå¤c|ï%#)$/ò$jÉһŊî°Ö 5¬¦dkÏ.(ãà#4–N»q=gMö÷-~’Æ?Æ(‚r‚f"ÈÄtOä&ÛÒ«÷É4U>Ëó¶‰c/è©v#*?¢—ó“²k Õm„X˜U NƉ^ç|½mž'“Óý”ømr¶·/YÕÖßiÁsÓz®fÛ5ů‹¶¶*D‹íˆíh]_Ž¢.ê#)XPÑ'Îd8²š±Þ˜¯ë}¸~Xl§ÕTL+©“[ ZÃc˜ÉB°µWî°¤Ò¼ ü·¶m?3¢²$}ÍJÇMFcÉ¡K<=ëZs9OH`,!1L ÿܱѹÎ$°;Ü,Ú+ª¢9©6ÞõÛl‰b>prÕu1'#*KAº£ê`‰qþ‡-Åt‚B"å :êª`ŽId3Ûàqoø=wŸwª¦\ a3£ » ¼ÅfC\…‘ ÕäI¤~£üˆ~†ÿTxâxXpâøy/q÷®W:;ÆÆ^ûƒLÓgÜC|X§ 8ò¢d’Û&í±õˆ«\”t=•±ú¶™%@°†Q…YQ8|¥16f"cö5Ì=rHÈsx"uØ9ù :mì&—è¤1²ˆg]8Þ8…ØÙÌÌÓôäôåÉ—Ço^¾ý^ß¼8=yõgìO§»(ûœÿ³—'ÏÞp†ÝÖo^|ûÆ’ñ#LäökÔÓc¾M{yªöÄìXÛ£±Ž‚qôNý²71&£òä¿WÍÓߌæ¿b8³äù›ãg2CÞ¾ùæä9?~û'Ëþ<ú×ÌI0s‡º]ÛèÔÙ4ëÖ³ö¾®êÄhQ;sWQc>#)ûÚÌ×@þ¦â¶åçÚVxKYÎ'«„;2-)…Ÿ;ÒW”ÄÏ(°q¯ûN`]€w9Å]U“8[4—êIÜÑÙâšw D°JÃþÁ¿z_úýUž_/5qzŒ/‡“ “âB¼4nVõ3â;ŒoÃÒQinqxm´#)ѹ™lÖ뉫"'{D[DÎÔÚÀy}̇ÀÜloowÞÈ–q•uáÓ#)j›ÌÓ.úŽÊÊl^±ÿÖ|Ü Ï”‡tŽˆ€é–G’‚KDÜítŽP•À~ê`ŽgY#*¥õÜ-=ÚJD|¥ìl‘Ö¨c¢Õnp‘Þ.Ï>{þâøó/¾|ù__½úúäôõÿysöö›?~û§?ÿwà~!Gö˜¦ï`5B'Ãerø”|L/Ç W®Þ¶¹)|sˆÎÿ#)a°“ Å £éßbžMö¾ÈªWùåd8˜¾À|g®|VƒKé‹Ûè¨,rŒ~ÉO>¤õŠÁÍùã“#øo÷°ofÍ€=M)P_:œÌ«P{HØFýŽáLŒIú¯K’í£m"ŸwÍn{uš\Yböšo`u@*m=û&ô·w|rz|òÖìVYDZh6¾Q¢Ž<&6µCÊêÆLW3xŠ¦˜†AÂ#)H#*×Õh–F†ª–‹)¥ª#JvÓ,DÍJÞ—ËL§›–“O°k¥z½ÝäðÉÓÂG{“è|=Ÿôk«ØXØfEG–2iÐ#4ÃÚð©UwÂ#*IzSíE2Q«]ñÿUæS°Ë‡t5¤µºê6ˆH#*t£#*3p1¸Ì6Lÿç\óó×at{r—‰Vè®y0\쌂ýd:¯ý>6„ì‡Og‘#TKøð¶1p C(ÔØäj|ŒkÀº,Þ^ÞHü0.àxtyøкݮAC˜ümx e×Īi™$uT#4Ø£</¥ÁùCtÓßmâÉ»ï&4ÙñŒ"J°¥2*…þaT)·Å–‡³¿Püô{/T~2ÅëjÔÔ™Á€âËêj#*Á›Ú’4›bœè´dá<”E{Z8ú´b{Dk#4ëd(^Î#*‡a…¿ð<€é þ8÷nH0Þî©5y5èƒU¥XFåcü?)ÿkFÕ&‘h±º2Z'@G¨}GÀÓÍIÓ¼#^þÌ–ÌWk^ˆ®¯Ïþ|ööøk {Ô#4qvüÀ·æáÍ]ò´gÁÕÚ±ïms†É%Mçâ¶ûý¤¼{÷ŸÝ_ˆ¢“z½§˜‰ùI¤1ýùŸÿÑ®¦þç:BàDCäAÄiTŽÆ#ƒ£.þÃMI©mij@gF7_ýh5nï\Øç¬/âÍ×{åb^ÂqÉå„£‘pAI9ÍÀ8O¢lþÞ˜g©õžp\™½†0õp¨'´ëf³Eu+=õQ`þØ ÞðÙÇ"ú.æx#4ˆÀiÈeý)=ý#4CvÐûØS¡âíG`»”‡¨$©Ø¸®Õ«F8RT'µºÂIgHÇЄÁ©8¢]¿ÎNÎE˜ñ²{á6l‘–"þ¥Ãɘ NLŸinßqf½&—щýŽSäÆJ<cnéH‰/&}=¼Éñ),–¹Öë²Ê&©ÂÞ_—9Ûð4™sø)¦5ÇKEœÿe°÷ý³½ÿÞßû„$D*ÓÉîJ¤Â%§—¨Ð©]Òqyå—ïÞ•?¼~ØÖãò*Ãh6åp°0ñXׇpu‚ ÖÍë‘…#4WŠP§XµB#4ùawL,)œ*KLx+Kz ¿N 0Ù\ÉF¾Øî#4診#*k"Jq=O¼IzùÍC‘ºÑ¿@au5‘‹V‡ãØ“#)Uµú)YÝ¡g”Œ”øPø“£R§Ed3Ë}§A»GA°9βà›Ho%u³=f#¼JDµ±[-ÂMvnWI0ÏTàÀ²Õ߇Xœ®d`$íj‰œî”A|;#*o¹˜‰Üï"ƒá'û\òƒç\ÛÊqÚ0/û>ýO¹'h}ƒ„ÏÒ|•‘eÆ`5›¯p§FŸÑs³^d—¬oé.b;Dò*ú!|÷›w¿‰~€¿Ïÿòc7z÷㶣;š¾oQ8—9,Ž^Lñc8ÓMeÖ»,òå"<ð\Z#)#*ç>ô>ÿ&hz»âŠÈÄ]d„ZòÑþz¼âç¶Tßéé¢*Mˆ±y‘l¥e•—Ãòb2ϪPîhùb±Ñ BL[0÷ò@æß^†rñ+ÝKþAÒÊu¬,pŠËs6ó]Ñr.s ¥P UBöï2qiCž8£ðÝàý€ë #¾ö¦À«²ÍÙm «)»„±§_9lÈÕmˆ.–(¡Ñ_†@·tÿä2#*ÚêCÌÇá[`6ó›²ë»7‘ë0-OÏzPóÒÏðåë½oüz¯{Ë•ÍCÝ}¶œŸžA÷žåÓA1)ýZËå</'6è¾Þ4¿áÃG*Yàûb莪idaÔñ†^IW–gr#*§“@ˆÑg›W.Tí#)3•]|7Úý#*›È‘Äd0¸ÑëiS³zdo^íu+Ûj¡žžàç7á:õ£lZ#*œl{5bQ*dT{ø‡’¸ÿdó+T#4äý¨L8/]XÜÊ[!å#4Î#4g3KF“÷è½™¿JÉøÑS–rÏ&sØ`WˆœÊÅO÷Y[ƒ>ì#4ôÙdXä’öà Û{JcS.§Î™cÜ–2}0}7 vF#øñ’H8ŠõœWÁ¥·dÅÁ·^jìÈ;WvÊÞ£1ÆRçŒÚF@¤ú¹éj󰬆2èŽÐžÔ;aç)Æé0_Î)f¬j³y`Í‚ró;W’étÀ·£Jùû""øœ+ œ+É» ì=ˆÞÁ–M’’#*<Â’„vtCN`xY[è1Vi<ÍÆU\ ¯º8MŒ`³*/N$ÉhxŽ9û e½CÃJ»ohB£æBn‘-¹@lùæn°ƒŠú¹Åöö×ëÜàNª5Gsk4AWô‚• Ýy!HÙߤ²#*‚rú¤4f騇„fPgÔµq£ÃËŠ¶a¡=†Z¥õ!¡ ÿÏ2+n© ÚöY>®nEöîÝ×´¶àõÝ;Ùþß½{¾,ÐñÃù8{÷îÙbÑ},Ô»w;h]mï8áË7pubq×XJF/òåY˜$·O‡‘‘…°²ÆÃ@`é1JA €¢u± ìéã‹ oß-×Rõ&ðÖôº<°é{Ü€¶Ç>Ÿùå#)Ø+¤…ÃbÔ¹À–8Áh‰)Ò®tŒÚMéô°É{¸%z‹|áØZ¾DsÓýØÇžhk4)ˆ¬£–ò]]'–ë wW ‹“s6+ÑÀÑq°7bQŽ‘ª"×IR›‘3‹é<è—¯c²ån¤^,Çåäû,ÙÌê^#)±œ×¦{êæÜm‘01C9²51GÄ$¥Y+ApBßmDÛ´"Ì „ooâó×'t=uNh#4,É%Ð<ë›Òacqo6tl‰|ø÷ÃycöÛ–ŒÖ¾–-ö2¨Ù/õ“¦£èÕZâ[YÛÅw-wé¯y³N‘=ÁÃ0ÐÍŽÚšKµfª{‹iǺ¾ÃrÛ9aÂh0M+IžÐmØO'€\©¯#¢s íÀ†5-¡b&–嶇”[À‘ʵ”ñÍ‚£5Öñ8œ?]¼õkÌJc¶®ÈÙM{‰wäáU~#Ò0ÜÀ’½ƒ˜85xh²ç˜ÃðçjBr3",µž‘}YÜÀžD™û{ÊÑÒãÁ7ók sæÛ›å¥Zð¡bç‡ý:*„d—ËbapgÄå÷GÎý!ÈPÂÆån±ø8÷²µNŒ¥Œîpwb gˆ¸‰†\¨7»–#øbð_Oü-·–e‹ï ÁX]!ÖÐÀ)}3#)ù®>÷n$þ•oQŽœ.±wfÔ0oKá3}ãL_3‰ÉwîšYìŠwËýû¥d?4æÃÔ=¤ÂyµÁYbÜ^Ëý§ÓÎØ9Ðã&sx 22 x<sò€çæŒ(LºÌ2»÷H#Ãd•Š9Òf-zn±¤¥å¸•Y IÝå¶ÖömGøJºÌ¹ß<ßn™ÚÝ͵kš˜¿Û€ÇLÒk‘“qØÐo;ÜÿxlÜ(ê#*l$áŽP7A©îSÌ#*`÷óièQض%ê´ÜÝ~ûìóôä4}ýæøóÓ7_QSáPè@µ·<:YŠ»é>cô‹•÷öߧDýLà›í¿>~úh¿îÿåðãÃ_ì¿ÿMü¿UÙliq¾¨ƒ¢äpàE«ï«"Ž.î&4.xÎ38Q =b=qD:h€‚Öó~šˆ—CøˆŽ õ»¾c½:}þyÆ<{ˆóN™^,'S`ÒÜÍKM¡Î”*ÊB«çõšRÛ†ÕŠNÁ›tÉä´2¢LÍVÕM¦Ûá#4Z7& @7ËSt“?Ò«lºH¹W$X…ìç z¸ÁйáN;¡úí€vÿñøÍÙËÓ“ØIzsüÇ—˜;Böù….@n&£ê*Á1¡‹/Hš¥Ã|ZZ›Chcÿé«ß\ïMzHwo¤5ÄË0ý%SWVe•òBEN”¹ö®»`ë(ÆägƒCbцI6»˜\.óeé|l´nõzê5R]öñ¦‘¸{8}E«ÇXä@‡Äq±§£/ŠÉ¼J—åàRIÓ46΋=¶”§B(Š*f³ÅÙ)ïlT"lFŠÉpJQ•u*ÐL—[#)#*A6-{P®Ë™ñï™x6Ñ»dK•àv#h• f]+T`£#)6ŠÒ¹Àé'rC¡(]¢ïž¥X[Ê!ê8(ëw„Œë$u5J˜e ›8E9py¡—›«%ÐÚ7sãcÉùåPk+„ºJ~2}ÄJÞC~l¬‘÷¦qJn]·÷ŠÓêë~bŠÁ·ïà 2#4Ã×¢èA9©$}Fjb$˜¯#ÿ*èÂrg—9@BN1å‹ ¿œ~S€ÚMý–p’ ÈLÀ({õЮr®›m¿{.ÝÚït¾ tùÒ#*³Õ`¶€aëöðÔèÒÆÚÝûîqÔÙ);#)hïxgºD:ØtôsÛÃ8ëÌ¢¦ÎÜ}mñ `,Q›Ç¯€"FvŸ_#)ÆòE-ÎfïyàJSj”¼Œ¾Ë/J¾žÄ'Ö¸?Ë°As\{ù4/ÇÐÉéóÓW§oÈ…ô[0ÏaMƒe•æNÁ+ðüÕK[Vâ~ Z6‹«ìm]Á(ôçÇZüÀ+~›Ñuô"$Ùw°·GéAŒÊ@ÂãK¨¿„Þã)@&À æJ¸ÁÙs•!P N#êJrÉnðÎó‡Ø¼¨{.pŽºøÞâáU>Ý; sWÐ$G¬¾#¬°Ÿ)}f”ð-¦0Ö°Ê+Åf0ÃËAÔ¢D#*Œé4›v1#ø¨ð¯ þu–-¾>3ü}Ó\ºoÔ#4tç@-€±#¯n¸w}}#)ÇV÷j€>-¢@«zOUÁi}‘c¬®ÍyÝX!ç›T·Ýiöš³÷þOJƒðóÞéÚý¾©pï{8;L¿™®'Úr”],//Qã˜#4tÃjP^£um]”qßá'«†¶i(ôƃHër^ë¢ÊÒªXjæä=ûæ5°“ggé—ǯ^[È£•ÿAˆ¤q½‡î¾Ü y»¼ÊoXß»3 =༥íùåm•Ö7Þ=È•Úˆ‹BÌ¥d;kßjÎqŽQîÌäì'—UàÀ†åÔ""Õ‡Ôl]Þ”G“‚QU†#4Õ7´/HÕRGEuTùâî:Êb¸©„ÑVÃÞ<ß#Â|2ß+–ó uꕵµÔ4ÏÉ-<ìú)¼«Òfþƒ•®ëK·Òfþƒ•j÷Jy’NVxéF"Ò:~Æ ®#(âyù§ r.ü"J;²³¹õ#4cFu‰i¢Q¢"ÖƒÏ6²[#*ùƳ5Ýݑ؇8$u-»ÜuçÃÁôaÐÖÿÚTݬô{܇&“š®^¦S^¹üÅÙtwŠ~°ã—kx`Ç1¨šT¬o²4ùµ°ÊN9}ãrò¶yçùŒÖ=)©»#*¹kº¨»k+ZÐ6+þ˜ÖÒ9è=½wžt{‹£®èBÿìî- i2‚}î,Ú»ÈnÔë5»Œ}Ý|ÞáqÖ5nDð`ë]öºÛ\þ æßÃí;ú÷¬ÊwöféfZÓ{¸ L+ÌËæ6P6$;T#4f,Ev™Úžg@÷†ñƒ‡€æ·|ÛÛ*°N1«ôv€Çgo_¼dtc/¼tçΚåüƒ¦›d~hŠÝÙ[‚rжJQ´·nJ¹Æš·éØý#4½mÂi¦Ó†-}a˜,YKKpö.Ž·(Û§÷hRVd;³‡B† žÁ~þ~#)ü³7_œ²·¸\¢ö:Ïr#—wMI‹ÝÒù3IDÄÐXé®Ë-RëS‚ÖÅûz(PÆOä$N¾ùú³ã7ééçéë7§Ïá¬:}Óâ#)oüVñAT»®«™ÿÃyƒDi¢•eÔƒ³ç鉔žž¼:|¼"†Ywñ’a+(²‘D랟ž|þ×B@"ï”íÑ·qt{ù¢¦ n¢ŽÎµç¤‰üì³ðn6J¡4P—á9õY…:÷P)üê¦7.–A_¢‹îkûÄBÂ7ýRÐêÍÉs±¡gBR†Á_ÎÑ$5‹Ña¿ Wjû#)“›“‰¿(‹K¯Ÿì>v¿Â«cdƒiþÔ® †ßÀZD(”%:Ù}®M»Y·F_Ȩë41µD©Êb²µ2oÒ ËÂÊ›8«Hr]\oºä^‡:Ò÷¬)2ñ;Òƒb*½öªI5Í’D@û±ã)G#Ô›h$NªÉ÷¢•HM!}“áÍÈ#4HuyÜ°Î~Sjw:X·Wh=I²š6ÕE1\ø†r#)$^øéÆž¶–®Ê‡Çn!’]ì—”ÖSÓ#ïÄÚŠµ×ÞÙ$kß#4åÀ$Ýä(qª&òæcC˜©ÑÅ°·(¸¶ìõ#45d£‹p²îøxôbP¤¢pHLèrxùÈŠòôàºjœøÓÈ5"ùו#YIp&š»B{žø'´ølN!“S3_Äh’¼ ÖV.ÂaâÝ°l«H£ä›6-–>U”C2ÆVMŸ¼¸Lµ>›²ø"åõ‰®u#)œ½—2-75"Ùsâ“0E#4sB£´8çqª7ß"g&¨ñž‹š3mÜÏŠ¬FjbÅŠ©Ô÷lþË>NHUë“OyÑP÷¸Q4êû •qºŽ±Òìn}N}F×Y"mK´™ò.‚W?ñÓäÀq“šFaSR‘ŠwËäo$»<:Áåщ1öTAy3ö‡lŽJ)§†üùä*§ôšxµ»bœ·>·<ýV›cÔMýt¿^ÑyPPD@¼5x¹›¹`F»Íµmqî¬m³9Ù=ÒxvŒ×¯—Õ]UJ ¾bHîX*¿;мþµÅ•…-#4T:l,tþ'ë°Àñ,«~®øâÿ|üø铺þÇ“Ã'¿èü;èóÅ-ºðÏËÍêhi‰ž©ý_Â_G~žÿå×IÿÁï£wÝä]7ìÁÓoÐ:£÷µªg˜É½Æ'³ºb怯íΘM€³KÕ]/£‡ÉT;Œõ’ÆK!蔲îTy+a?$|A.Áj=ؾŸîõÆÇN$yß7¾Á¦Ë—¿NØ^¡—Õ!—’x—Ðf¯æ‘‰È«”<›Ž6ú¿T™ç㓦x÷Έ'&Þáq“CõÓ]šØ»#*ËQξýn¾ÍäûùöjÕoï„«¸áyY•Rv?ºÃG¶Ž“·eBs'¡CFÉœÍ+/Ä´iÙª£*!‰3à÷Þóþ½œÒ×(;ÔÓZïñø¹m%2КÕø8‘hY¦Ítg"¯ÏžB#*ò@yFvþs´k§¡u|÷û01(¬ââ`+oôØßÑ#*¦ò¶âžÏAñ¤í¶{”¡w>;ÇçÙ#*ºŒ±»_deöèz6Ž£ñ›«C'hwu1µAägYq™8ú‚«¿/X3ÎÎvúnÚh+€Êdy‘Ò0‰dÀ€]xxôFY¶À‡#ß8ÂjsÈm5ø:1SºáȤôœiŠ#*}ÝK‹RŒ8ÉáÇÀL¡#*hÍ1Œœ©¾QPÞ—ñmB#°s#4qGóë{]#4÷RRß5à2c"²q)úË¢'ǘôÓoóÉ.ÄóÉW3ÎoÔÙ#4éÄú%ԵǢîwîft—áxë_ãýñ'À}>ì°+S§sïR¨&ªU^«Wå½ì'ÀÏé(Mݲû!X:µœOþú¯é)³°!›Î‡•È¨»\‘þx=kM*Ì‚v÷%»sèð|Ç=Ñ£cø`¶Ù€=D»Ép¹@ ¸à8qÄeàM+¾nm nÁHjøŠÍµÕ³[@'·ÒVuåääé'ÞÐøôêZo¾—2“-Ú7X— O[êG¯AkKÚyM²Ô¡Oé9~“ñ¬¸œ#)zŽL2 +W!ÒœHG”Ë9†m„sìZćèõV¦#*úšMº;å»9êD¢‡*Áóë>;˜bv]=ÿ›ø•²Ý‹k]2EJ¿¥ëõÜ”ab§WÕZ›ßº0fì^™žÞ…—HÙj8ÅËD|uä8¼£~’ÁÚ/Åë _HM+DÓoR#)("Œ¸Ì.B}T#uê"`ƒÒ!#4òbré·Îo®KêÒíz{Êuî>Ó ”Ѥö¾{ŽÈ%„bœIUs,có’ƒHB¡«éZfý–rÿûìÞÊëŸ+üãòŸ'ûO÷ëñŸ=yôôùÏ¿‰ýOÁ?ÆÈD—o“±íÉ…Äðçäômú曓d¿óõ˳3@09è<óììËãÉaçøOÏ_¿}yz’<ê<vòüø$?îœ}õòõkxúmçì›çx…žü®óìì«ôÕ³·Ço’½Ê~}œìv#)8=)#)zyÜy~úõë—¯ŽÓ·Ç_¿Æb)ÔøêUˆo”qX•äq{5éÂK˜«Ël.¯F—¨³u1A"$ô੃7’+“©JáwÎ$!Ù¡¬Kg3L@g¡FÒå¿ïüÚ÷èS׺"4VÙPïeȾoB¬3î*i#~FY@ƒMj´öäôçn¯ë»|µj¡IW€0Ѥ]iÝùjåð«Ã sb4Î=TH˜BÚ˜èòuøáühï ßÝížÓ?c>¼G×GÏý4Aãä£ÚƒdÒ;ZÇ4X¾:>;1‰ß~cLÉ5ǺÁƒßàaPÆ?>{sÖ=¾ÙÀšÒ”¤§icÅQ¯œ\òeIô³Îi ©œ®Ãì&(ù-E’ËqЂ#*Ó$¤ªYà+*T¨Nö9ø§aƒ‡c‰îB÷)e¬Q$¥j bÈíØ…ÔË¡`…ÃlƤþTؤhö~2%/{òŽçmP¿}FŒðJ#*…•{ýŒÑvè:*Ù79áÄÊ$7¢×#W³,JÄ×+‡ÒdïžN›#*ɦTR'‡É ß$è¡ILÆæ.çh¢°XSvçÈËfI}Vá‘d! U¯M4óMóDÆœ#4²Ý(l¸ä”0m|uYïTéP#*<D½ƒºbyF—ØGww!áÃKø –y‰<¾vpÜ“útäÙËmDÅûQ¯*p^„øGÞèX¦7ƒÛG)Y=µ¾ˆ‰ÎoŽOЩ窂yJñzàóºƒ`™Ï`øÒ“ÛN‰ÔÚÙBÖT÷ ä&C§thVäæuQLò”¢²â›{¯r5(©ã³+À3ú BC»Å•nÖÔŧTŠQûðç!Ù~ÓˆëÊ5%B#4ÔC—šê“ë›s™u¢µZ!7ú'n±„<iÙëdlsŬÅrRLãœ4ÓH½bá†NM3s4”j3é„5[3õ)epˆìÞ ’u0.ïÆ'kAÜOÖ ¡'…aÎà(IüááÓ…LuY²øÊÉšGõ3ù™å<aѹøƒö)/t’ç¾opQâWë/A@VE+~3ø’UrŸìãM#)e\ŠÖ“9Æãf1”C7¬kôU»ÛV¬’UO*‡I™ãQpÎí5·)߶:ÏØ%+´ÂíR|zWéãv°í@ ¶wÊí`gÕq¯©ÄD™²vãÆws¼yìšIÀÛG¼ç í©8¨.1t*Úÿû*rá8#*ƒâ’|*²M<{X×ÚÐ]Rlñ9t:Óñty€”ë;ʆÂR v¿{8‡ÈÇßZÀ–€)}+ÇÕ<æy©ž•"SÒøZy ¿v¬#*9RHèÔŸ¤¹[;ó»¾aehL"+Z¨. $ ñàwk7î7ZäkÞF;7[k“Õs‘i±$Hõü¶¦ qm¤1ÁdTÍ‹õªOdr&îóqvÀ–÷Ûƒßv’LJœåa¶O%*Ý‘X¢Ç¤¢ÄµzÓŽÜí»Òa~‡:ÊÖjiv«Bõä"N¤ yï#4cNMÊ•®ëAÎ;œæ%æ5$SSwËô ^GÝ?ìݽOÑ9¢÷úÞìm£#*Îp÷<øC°¥ûF·xk<™¦Si«ÕÏK.úÙ2äæ}ßý‘qÕÕS#š®‰0ìÃ"ÚÈÄ’÷ådÄÖím§¿`è(Y$z\»!§Œï@K2À\Lgåebâ*#…"¡½—bÅH&j7bP¡sõ…0‰F»søGÞ_s ã÷;ôóz~kïÝÊõílº·L"…qö<þð‘~áèr´ü†ƒ¹ºfÐ'³EÛ˜·š¶aë§ù%°°È|z!¥ ;K-®ÉZ’<r&µ¹Oî)8uO¯C塺ËLàçÄ&û#+Ÿqµw¶î‡(ØK+‘ö†ËØ°4wØúuîT#44î8ËŠbü#*öá"Ì‚# @…ÞDtÿ›RÖGÆ8Ž†ð{¿‡?Fm©ÃmƒA¿‡øû£,wxÄþhêµÏ$z#*\¿‰'§o¾~ö#4/±%àmý8ZièJaY„Þå?—ìÉN”ö$/un{E÷½f¼ï7Jë·B“›¼Ì*±TWåÕ`cûñÏá}kdyW6PP¶=öûœ :Eb…©9[‘ê½ÑfaN¨Ýq'JßkòKw@¶êNð+pÂ)ü𻩻Sþ νññ%!‹O§Ñ¿$þÒ½ ßÇÔí>áÇÐw¯ðÊ:qƒúÆ)[$q!’ƒC#4Ÿ‰þí1…Ný1à~¾³³3=¤¿ýîÎNiþOxÍc"ä®oUGÃÈ8:ÝMº›#) ï„î)wdîpƒ®oxÞ”:s(êÌ ¼BBÀi0™Weƒ€çP—T/K¢ØI"~ÖKaiD# ݉ª¦ÈäŒÓ¯$T‰'å„a_HŠQ1„'S€6œïæè––wpŸ1TÉ™©zZUT¸Â¹ÃÛöÞ‹]$î6Ý4¶‹ûâ‡b¨ØoßB1IÄÖIÛrŽn;‚>wϪ‰OÓÊž‹n¬2L†5ôÞ̀çŠúˆP™Ã”†m©„sœ|õ²øRç,‡$qÎb%+üCV€¤t*€Öqo¡_ñt#4ŸÈÙ©ÈÐ11´é®õ»©*V#)5Ñ—k ·‹ÔlR–è„m æ=€éQ 4DF[‘#*èË&›JF¤äÄü$ƒ:°Š&ÑüãûÁt2Ò>c}mo}¨£Ho¸§ªDö~Pà¾×0Æ›Èä᧾ݖà[M/´¡äS:rʃtè=†˜Ö#)¬FMOîÒvœËŽIåAšþÿì½{CG²7üþk}#4…7œÑ˜Aì8YÎŽ³Æ OÛÇìîV¯PÐm5ˆÝÍwëÚ]=¹gO¼Y£™ž¾_ª«««~¥Š9¤pË1„GÈçª@åN&:·qxiS£ëKK´†Ô˜íRv§˜†¶DPŠº÷ÎPEwQ`|âXKý¶ÇuFaNj3dg¦^É–‘¯I¼ÝlÑko¾TËñ;ýñ µLM=ÚKÎe¢Q×@Úe|F±²¾²üAêúЪæ³]85Èã®I×HDf‚UlÃübþ³²²<BÕÈ¢/#*ZÀQ¨Å;e†Áù±AeüO¶Ê]Š[#*«sšHµc§EOò¦à]ÓÍÒ׃ñ™¨vlùVSÃu¶„|f´G÷,>ŸªÙ\Õƒ.=‚ÝIòPÒ‰_ß/Æcù(!ï˜Sæ@^¨(”±+Õùmþp-QÕü¥ç—•œ&ñ{wÄ·ó¢~ë F¾l߻ܪè¶X±9ÐèÑÉødþO"øHí£õL˜Z¶h¹FüçÎß5fC£#\.ýrWZê#):+›?’› tYS jøbšê¥l mzh£<oÓÖÒ?Ç^‚Õ‚üœÊÊZ“¼7CV3äž+´ Ô(Û*¥ð[ÔÝ—oº¥`–¾0©¾Üa,æ¥!¤{¡4Iµ‘²P3,N>jyŒª¯å¹!.çå+Ž<ì6Ÿ¼,ŒK·I#*@ß5c„±'A+'ûm‚È÷Qק¥Ù¢»8r\t²åt8è#*.ejL5*£1e¹Ž‹;³)ȱ°'Þg.‡ a¾ý#4a¶—_ƒùW¼„A3WÒÏeNí×Q"ÜäAlùã–íqÑ.R%`·vÜ Zõø¹åù5§¬ä.¼5ÚE·)ˆî4—Ìè“wmØKåÞ}3™¿GɆm…zšôr6SÊt–]S1¡v…eƒ•fc‚ݦÉæh‘Ïq0vCä³ênbH“Ï¢MA’£8›½KôÐÜqG+ÏZ]²õqO|”jeï]W˜ë¿{”HR#*¬\a—`*!]…¨«èjG¯)ÝF-u¼W%»cÄâR/éèkljZª*N쯟\ Ž”ˆÓú8ÕO•`î(œ}³C`rOÿäZô'™Ž!§UåÚ«J¯zALÇAæß-aºP!ûÝ”aåà×7ØJå€Û(‰ä£Â1—Ï”›ÛwWøg·yQ¼`ãÓi¸ÈkïVªˆŠå1“i¾~¾CZà%÷åçîá#).F7#)ÇÐÔó3Nc—Ù >p4xÙya¸ƒöV 3’ öäÊŒºCªXj#<€…òw;ý´åñòÔ^Ý„·!€5!m`aý2øÓuz¶(€uªêÿàÚö:‰ÐäpØ1Ö˜©f„}ví9“jú[¦nõh‘¬ œtsôÔ¬±VýÆ4!amÀ.#*¹ðíP0Zª#)æ©›š;8VCÒ4£“85_ûØ(Na?€¤pEBFˆ¬Lj`JLÐÝ}UÚ‘qsKíŘš'Çz\Æ(áj”ÀT˜&83¢EnSZ+cšj6-`$˜ÙˆUžÕýêpƒeRõ}±q,©ÝÈ*êú²@Uƒ©O”g©–ô½ËÁ°Orœ<•HÕËË_bÁå£c$×ó«-tÚ#)¿$#ní£¤¤§4ëÞøÁh¢ÄqÜn˜p·‰Ña~Щ˜¤³ÿl.Æâ0¢OE¢·wWÁðw¥ÆÞ9S«GÛ™sÝo°e¬¯Š#K]pÓ…}<z©ÂØ[’#cÌÐÈ^¶ÊÝ&aõx^®ŸÁ©wæÁ)ñœ’žÒGQre˜;žÁbvTÓf·Z«¶æ3ØÔ‹ÓyêÐM¢3™ºr»CHaîì!¤¸Wå]Ê‘ìá‡,Cë*s7ÕÑiÁˆi›ëÍ™<aV'I½Cc¯ëÑ›s0íjJFquG‹UI8s>ånBÒÜ͔ӃóFû5ø€÷Êdîš9íÙ’02„Å#*ºguAÂ#>—ÇÛª+NB ½íUqÎtMh“=j–i–ïV„ñiNDäõ«à1†ÑÿvCÑ”êNE:ÞÜŽ’h9ÂqFù\´!ó—`= ¸û‹¹à¯úüHÉ&Ï4iH#4ÿÈl÷7:ø¶˜n€ÄbFºKÞŒ‹9µ¨™ïèÕ¬"Ï_·Ý-«m2fåÞ/äÍÁFãW’îÜ•t[¯•Ã´ò´ÕPY9n¶Õ´JÉmâ8—֌؃£¤D¶uýâÖïî–T|œwOi.ã0Vx@XÑN,¬”7Œ¯w2PSi¨#)ôhž/Ê#*soDí—RÇ*\òÄa6©ä«Sk}ð€z ¤²ö=òvÉX܈/°ˆÂóQ#)~NñS€^65@C¸1ñ„!Üæ/êvø#41˜×øWÉš*’ÉYy:›L³Ùü¶åØ!HPN/Cî f:õð:Q¼º”gÉ~«¦Îeºl—”)HÉçw|yja¼¼‰ãGyÔ]H_D@’°Ìws‰Ÿ™¾n§¶Œ}<8=å»=LôƒO4ØØN\ÂGórÊ4%¾Kô'V:`óúô'41w’ù¶‹ùƒÄ„·Fö|Ú-W¢K°¸¬ôåìTë†=Óÿ¸ƒ2@|>ƒçâñAöµey%têiìÆØ/\]¼š™CÆñÝÙâZ6þÏ°Z=ZP=â4PE£ÕKú=ïuºß;ŽÎ£S„:ƒþèXg/ÞýŒÏOn6âáËžÿÅÀ£>ÿô±2C[û6)gÑßZ‡ï÷þuôÕQ|òçöã/>¦˜.0CADÌ:s —ÏON8÷þd8Ä‚?>ù˜òÅY>Ç÷ÚJá3î‡Ï€íäÇX!Ø”1«µY.µP‘ŒE—ó™ÂM³E0Ð4].Rzv0¨AǪNd·¥µ×Tw"¸qØÂD£VH¬….Ä|»Æx #1‚вÖóµFA·“J¶!_T6&ÔDœ‹:Å;c.ŠÆ–3ku¸'}g׷иËØ÷Q¯5ÒdÑBÛ°½trq#*vñ&³B4¨ap¾L]\ê‘^iuMRÔ!¬üeŽ¿³›–M§)¾H½‰J¡^ âÐ_¢“1ìk©<ÎÔ4‚Éé,!1’PŠ)T#)RÞwñ"žrW)ÅZk®U¨#4 ½iÜtû ÏꔽQ·p#*`i¬ªlÕ¿HÜ}°¯ƒ+QžÇp»*EsC Ø9ÈclõqB©mob„èž=5šžòpýq¯<´I&¥C‚é>ŠMnvLaŸ8$©{¤tcQHê”Ê]?¼¹èèx÷É©BßÏñÎ#)á/œÅ¼”Š@iù¨bT±dÖ¸ZŸ%Íõ<F·™4©cW]»/4ïl9E’LDÝч^¢Ãû§èwMSÐ5'¤¬IY˜KÑJZ¡Ú¬§âVY8a0Ž/Bß\¥‰…±Ö¦Åkë: ÌÞ& •¾¶¾ÎU\[oE *2œÌE_¿ÇÆ·8ÅGÝš^Z˜°N›ABé¡)ñº[ÓS\g6¿Á$ÌÉen°b(Ì&6•µÝíbS8Ÿ=?É7²©QTû}Þ:þÛÇMhöødvr~r}ú/Ú7ⵚmOêá6>…QòûÁ(‹ŒdÔ£ý/Ý4ÌQ0XïH{+¨5œT(è´€[€c&Ih¡q#4Ÿ½IäÇuøXµƒƒÂ#*Û€»G¹Ýdã‚™ƒò^Øð؇Eß‘.ªX>ªJEHä(æ=i»§P…Ý®¶xKdzùn_ðð¥ÉKõ^W±ÙuÆøn·«Øî¼ßUnxßñVo\«÷¼{¦Þõ*¥}ïþ_¸óy¾'ØñÂ#*ÏgõŽW·åéƶ(‘üew¿ãÓ¸´ýÙv—6@?_«v@.1I´Tjš‹P`ë#4Uƒ˜nB§è@pfø=š¦ÃάçÚ}@Î7wNúÝæ. Û"~o0>>¦^öD¢KÛEdô¡)O£T#*NÙûmRÏúîÓk¸®~³…lîµÝÂ_·á6<ÞÔ#*LIæÕ9Ž!ºâx€‡w"ýèQü|«)‡' {^öÿ¬7CEqoé0RÕ:NÁªeßøÎ`ìŒ/-º×cÇ”ÜÎ#)€e™ÈWÖFÚgÿ|‰º!Ÿ€ˆŸgÅËX#*Î Ižõ©$§ èk =¾ÀRµþ#4v¤:[Ñ,É9Cò¥%®)4bÔÆÝ0jÅaÞ÷zE¼€û ¦Š»IWÿÊy™üd6Ïúî;ñ=H×êiš…y4ϼd˜›…`SUžÍµ(I뤪B>Ú^$ *TH8‡E4™Ý²ÑdÚco=4qØEjIPKâqZÓ’(J‹]E‰SÀ¦¢ÏâzÁ¢]üR°Cæh—ý0³Ò.#WRfÑ.ýÀ^=ïâßäÇâúÄÐ@9c!˜¬¹báï¡Ç·èQxzÿ¯ßÝ·Þ0O ‡4X¹»è9‰Žc$BÓ1`:X?î3²ùærƒÞu´äZÃE‡Žµñ±ŸË Xgõ¿&ÑãËEw·h›G,ŒÌ!nÂ`;_Ûë½ ¶Ôî*LtùSóÝ~.iÔ4HR2-…•Äü¾ìæÉ@ÍýÀa6êN/Q°»êŽ`¼ùÛxIá_ÃùDè¡ù‚s,À ÝÁÜÊåFÍú%”gÚ YÅÏS-HŽJ½¿/#4…+ÈfNÑØç+‡ºå<@ÌBÖƒ‹öºcäš0[ý!{Xhë\;•ëY6Ì ëÂâƒøŠ•€IþoÀÿ”;Þ_ôÿ/ÛŸ}¶Uôÿ²½½ýÿó÷€ÿéP$TÈŒSHuøÕD†T^qõNY\ŠvÕ«ÙA¶ª›Šl|K|©Î^‡Õ`2[ÚkIHaT40´Ê–q™£Ì–‰6ÍjõrîÐaô²‡&‚ÇÛ °„Þ¼3?k¡ÞE¶ìuF!>Þ9#*ë¼Q‘Š>@Ü]>t°*"뎱±0:%|øÓ¼ïðÒtÀ¤MÌ#KÞ¥ylmO”‡–,½Yñ&¥ÁeÆó>hN᳎e`8¯´&§ƒø¿f[ãH VuÆ+Í—sÔö)”!Ãw‹öªæ5¯"üƒz¥§¢ëž•û‰”ýV,„+b8}RœýOŽÜþGèÿÎö ùEúŸ?Ðÿßý¿ÌºÓ¿ÈgV#àç¿/²E¦¸Ïÿ…/É;•£·†h‹PU£¤ÿUJÚPµ³ò÷0ÓG•¹òi$ŒÚ¢¿±àNCê#;Sw‰#)0–ÊKP*¿þ5S,à)àÜžqž©,º©§Aàç„É¥U}Â8Ð’1©'S“8®GئÓs…„¶ÝøêÅ»ôÓFØ#*)_u0Œ¯ˆ] r\±cx¶>ŸÇ÷vôå#³sÓúr…‡¶•U=‹¸ÊÆ‚’Ó¡;Û‡§Õ·u¯ß‘ïQAÃ|œ\TÜcq£Í³"$‹(fenù¼ä]»ˆ„=Á<œßòÎTæG$þú}+_Œ`Däì{‰ª¡xÎ9¢§ê=>Ÿvo`ÓñÝY¸†“ÃT)þqg—ʯÎæ/»pÚ·¶-o4sÇÌ@ÍY [%É°-Ø=ù|2µÌYøU]zbÍZ®¢¤üg€ó‚”y6jë‰1nÔä;YÌÛJ\–¦'9è#4#4ä:ä #*ýð¡P-þñã *¼>/KVžݟþ¬Á““ödZ×gáÞì#4µx`®þ¡› èì#)êëBÄ®™m•>XƒÍÒäÁŒÚkŽuzJï––'=J…»3˜PÙp¥ oHwav1)â1ŠÓ°Ÿ²î¾j<#ÀñIC:ï=ÚNòù¦V¿.Â`ŒâÝa6ÏB!uXn¢[±)9-†ä+âJ«ž© ù ìQw¬Œ“™ÁY>ýBˆàñÍæ·a¢YvMB±:Ýàpaéj’i¯#4¨ðêW¾õ5_ìÚÝZI|1&9‰½™)v|…`ɉ;lip\CÆwg8JÉÛwôs;CÃŽoá°IFJcÉÉj›¥»ei(¥Í"€ R{Yɵ®hIz’bÖ×í£tM,ÕÜLiÜe¾èA/ýµ"]nŽÕ<Ò@UØRêFœL¤ãAߢàAÑi‡6k$kÖö°ç'sÆo]gôZÑóŽõŠWg™xiXÉɸé,£-&šø4Q';ã§Á<o>.à<þ‚@I°\-±Úp8z)n#¡AYÁ¦ÊØOá]mdξ±Ÿ"nËcX3JËÅðO>®)Â/f½v‚›Ðfâ:™±£hê© `2RøìuÙ—Ec›:ö`ên÷‹dUåÇË8ˆ`ûÁ2ƒÅ¼mÖ5#úålr•á!‘E7®ÍÉØÃ}}J÷ò,§AzØò48ÖëHØ/ðWp¨x‡½Ñ±î}ãѪ¦\lÓ;¢Ó-EØHŒÂ¨û¿ªi²tªZÔiC^ºFP ?J"ÏúìÀPÚüȃ‰‹Âî#H½C&º?òtÒ ÕMÎâ‚âzWºõvÁ*ZV«Ÿ›k#*s,öaR>_\Íœ#*O=ÓvÚñ±±¿R4ÓJ7M]™\¹Ùéì®Èðã?Fr gf·ÌÅãNƒ´´v©Ú6MâÊØàÜgú•‡ìîYx9ègàÙq”Ê!oEÝÙUÎ#4ƒü2ë‡3î™g·Åø|–eÿÈDÐYV’¢ÕƒZE†<¡(‚5× •äÅ¡ÖøGe·ly§ã±O«<Ò.kæÝ’æLp©Ú;[¢°C>¹Iföç2y#*ºÝÍZÎAYKþÂQ#4Ém#CÌ{"'¹ž‰"…”‘”Ù…K ;2js•™é]jSÞ1¬xéI~È]Te2u$;H#)‰‘µîU'ëV5¿r0‡î›õ¨Ã²‰¢Î#*rU8ãíÚˆ7ÓíoWïËÓlÇ{‡Ì1Ôðøì¹âNuüŸ4±ÊŸþt\Tžèî—}Tí}{€‡».Øð]àx"SþDOuñ7/ž-+–!ÐV ¹ÐÚhÿn¸}OÐÍ\Ÿú~. D\Wc¥Èß“ üNK]ÌùŒýɬsÙEyÜÌ“_#*¦åìųbX¬U³Ž„ˆ„êº:+…½+¯°²ÅyæV#4r"ˆcDCx¨•yî›]>Ú1Š%ó5m¬åô€˜öeP˜gÔw#ÿ׿GíÚ(Ä!›µ ¢Ã®/\<ßnZìÕÌÂpÔõÕ£ªŽ-žøÂBî‘¥t.M‰ÀËAq¾k§qm†ây·ì¤¶Ž™-ÐCJ\ÄReï»ÆË1ì¨B”ðPdÎI!ÀéWÇL«»LvÜDrrØ€NlæòËç©“~ê”Ö~Ädó”ûž»v«ö6G¡‡6CµÛ-k’تVUÌøûb!‡Þ·ÛX5WWLÕ•‚'QHˆrò+ØvIšSØdÙ¾º†0z>Ûªî ^õÑs¢Þß”áà¬4w†å¡u6°n×ÀXÎE’H> sèQ}P«È«žÅ¾ß±éŽSSí¡©pfrœ¬´¦pP2‹R#Øsö"uIkW\«ë®BËŨʼn¯b×câŽqžn R¶Ùv($l#*DµóuMµ¾*(¯aé¸mn°¯§ëx£²Jø¥Øõ™j¹ã%E¾-Û»•r1‡<Ô»í#*”x1îYjo˯ž_x¾Ó?ÒÞ³dÒ1rÜàeBjèéG„mg‹‹ÕKàéhÖRAY=mô¬ªÍßsþWœ0ÛŠ¨ŒÜ׃I#M±ñÄþ 8Ä«WÛO\£Ÿp~*šßÀg+\I·×{À‚(Ì~i±LDÊ+dòi_„‚ǧn]Èëv˜Ÿ´‚Ñ@#*Ö™f#*I6\ö’…Ÿ±ZĶSJÒS«gCrÉÔˆèÙŸ©)zÞ¬Ô,ƒ#FÕ*¬(qÍÍ—µ¦ÁÉ +”’Œ¸bÈd¾€Ýÿóá?]ÿw¨ L×_Gìý¯OwÊú_;Ÿ>û ÿõ{Ðÿš }Nè5ä6¯WG²šHò£µßLúYãëý¿|¿ÿþNKéÖ=7žmm5þüâ•®í´·ÚÛÛkö~ÿûìþá³ógçg[xº½õ‡í³§xöììÙΧçÛŸf½';çÝÏ>Òýü,ë5^|yîl5^~ùêàõ~µ¡ìé w5Ì6×óÍõ>üýDÜæíé°;ÇCq¢%AÜxñîÝ›ßBzyˆZ¿H¢ÆÑÛwi¼rÔxûÝQŠî‘£ÆŸ÷Þ¼;êpá7yo6˜B°¸Áèfh_”T!¹>Bz}Ä®—G¹ÞîèË7RàÉ0sÁÀï^À᤿f|}~xôkµûïߧ›Û/ß}#*[¦º`‡M…„(肬?‘ª ÷F‚ú²Ž›½ûUNª¦]mô9j#4+ÄX¶4yãQo¾L…f…¡mr!.©½AË|¸†×ŠÝË1|…_xI¿Â+üNáÉ&ê%‘4$°±·PŠ84ƒ\]³ñ~+`ÐâF“]]fM©?÷=Þ#*“SvTdNnŸósçCÝÕŠúÚÕNÎfxVkmQï4p¤ÂNçVWy?×…DÍI¹Uˆl7æĽUxW÷¼NðÕ''¹²*j]}C4‰âôc›‘ªÃ&j˜'P]CnèT¼”#4†š—L§kÕ'Š*¢Rßïâ¸Ç¤…HHzÝI„³“€@§-ÖS—ÙÇb³Z³~hСˆ^;†Ü¬¢¢KúO˜]ñž=Ÿë3ZVÊã=þè-šÈ)¥Ç*&‘1z?,éeIT“ì>¾&Üi€dx§ÒáÄ-þÑÛëá>¨ïøᤫi0ƒHæxçyZí¹˜œŒ=~WËç—º’C;øÐ~îe„F Êcëûj ×ÆDm±ÊmÍL“„ùo,§‡•¨«•óH´pvBÇÖh¯“ ù¹žÉÎUÎûÀ^̳‚¼q–¡kЬu¬îСå˜{Kw šz\©S'þÏ:šŽ-Ñ@·<%ÛF;×ÌñªiYÓ^U!˜«Åã¯/ÖdV¬†Þ„9!§‹j„ãnù¯AùAÑÐK¼¡°#*0b¼†á‹¬d‡I~r»±#²!˜®ƒ\>u‰üù·s/œ×X×ØjÀêP³çû¾œ:û©†{à<ˆŠŽšð“°.aô~b9¯óê»7©<oDhƒöTç÷LÍç½Û2OëȘÉÆK®û#41[Ôè즂ËÄ:%V<%ÄfGî–@Ñ(Ý„rÎ8Œ"6ã#*#4;k¦ ‰2ŠV4û.r#ëÀôúOЈ‚„Iè«!‰0j$¡¥øA{5g}=ké”›Æ~å®”Ö-¦)e“TŽBmïBºªÎ•Þ#Ö²ëÜU½kÁÙ…ëíXÉÏBŸ¹eTèõG`K:ÚÝŽZ†'å ç ¦_AVEµ.·À½þJp;RÏ®½™45SV؃Éh•:O•¶j…ÙW6´åýœ¦Ìª9S5ij۶άz¤*ȆôCG¡Søºþ;l\HĶžÃf›ÍHMó«ïIXr„BYh%V›:³{oßêdž¨5zšÆ #4Yÿ|4Gb–1r=ï°p¨ìì}û²ó#4½J9´'Œš¢§ltyÈC‹ó8#ððÙ#):há7¥Xq×F&{ŒÜ_ÿOì6¯nRÄu¡C’îïåf;Ž(_œÉ]‘VÆÛácA‘8M+ZbCW„tª5eñnÏÍ;»—ÖΡóúxbâë‡ÓÔ׬ýîàݾKg‡êdø¡:Y0ØNyÆ´Vƒä´Œ#4®èI¬ïñÖi¼ê öŽ9ÂÔ£ä`]Râá©;»àÃ#*6#)½ocû|íËë)‚¬?õG’ñKzJç÷f¦_DwÉrz…'cSŽöS1†'Ù¨ÈT̪Lˆa…1ŸU”°Ô|oø’dW+Ø'b{7ý°ÐÂúÂçÔ¬2–º§À?’ÛA€…Fv0êg¸9wº°„Š¢“8T¶@/h¼,ëÏ–ªâÂk ¡>¨Ò½hvóf¶jíSŽ1Ñ<y1ËXLNææ1ZÁëÑ]#)O*zkçû#*.P‡›×Ò&%r½½Š77X¹Bu°lÂb@{™CË‹8uš£Ã™ª“uGp¨„ÙÍ«ŸÛÑný(ÍêÔ4¾˜æ`·Ã¿_¦9lÍaÙÔËðPÛ¬FMsð“mNѳ JªðÚJýméð߃lî&8½y9œfæ+ÃÏE ‹ÿâߎXÎjˆe°ÜMשuxcõFoÕE}†º]v›øþ¥ð*ªû¢{Å{Áãm*-‡R^Í6eù¥åá(úºPt¦È…œöß¿¿;§"15 uYZfþEf#*T€©fÖgc(G,ä6¤c· ÜeBy±sÜ»ô»^ñ“#´ÎWY4d9Xǵ÷\Š¼P$í¢6žâÔ 5÷á#º#4[—«ðJ âªÄ¡xÏ:V¾Ú#*CtìÞÆ›‰WoF xŹSqäy÷þàÍQçÕ‹ƒ×ß½ßï¼~û•¢ŠìMjâî힌×ó“14D*™Èò„“ݹ†Á)LÖR]/<ñi5±[5iCGÕk®åí#44ŠLÕÚejê0YÕ\öq÷1÷6ñœéµ¢Ð¾™#*P¢:§Jˆ_ ÿõ|ˆj’K•1µ3v’Mø½Ö 8ì¶ÃÛL£î.u€Ü–²™Eåûz¬¿.‘˜ÇÄh†*gfÈÁj²Å8„ŽpqBÎɆ#)"Bò¿î¿~ýöÏî®$ÖkÍQ>Q«ï´b;•ÝEÛ׌¹›Âíw#GÀ®D”Cé2 ʆå‰T‹ÒeY¿¢L*o¹ls M×ã¬óÃ"Ÿ#XH+JPÁM'Іù<Ý#4Òêýk!ÿÇÑfäVB@¾IýŠ¸¾ét6C·½AyÇë(YƒSíîÚ:¤j1B–(¾œ¦‘^Çè˜>xÄL§mÆf|\d7§9C™×f¡*§îG4'WDnË¥hråPÑY"…ÑügǦFbÊ'Yûéì(‚"„q΂;Yè‡üË#4;–ÕU·.ÅýÍUü|›¶a\ @'i´(¥Š•<y .x0\ë^k^y\;½SëäÓ¬7èé¢J4î‚ù¬;VÌ.Þ9äÅ€¢„À#;Tî‚Z#™ ¹Iý„ŽYy·»è·o89sáeLgý%×íÍ3uÿÈ߯ñWüÞžÞºË<×7´ýc0eQ¢ Ýþ÷`ŠÛ)Ù^QíòÔº6h;%•æµîk+=Ë<lø'È R¸«ïc¨mûqcÏÇ•Î~ÝÝîÿt]'#4—ý Ž”ÃΧʜ…ý4KÏÊE9a°«ä,9w& œ«“ï«…úÄgzžž—û»8.çqƒ®D.O'37ñDðO7£¥[3Y;ªùa39Ƨª%Ä<Ü.À·ñì%ån«¤#)â8-CÕ¥Á½„Xáô´Nþ=YûÍPŽSÙ`¹ú]Tì)ÞÊJRK¢¨z>oMp'EWQÔ½€’ûÝÝ?u:è}Ìß%¸Äl2È¿b#)R~sÚ9òꆗ/¾áO"×ëž<gºpN·é.ŽÑÓ4ú¡{ÝôfŸ_o"HL¡øÇÏÂ#*ôÞ¸ŒÓ;<(ƒ<ž:Ý m®i9éSHOJ= ÚÖÞÁ0Cò5QõŸ‹|Ù0%øë”N‡)O§C9¶…«Ìbá؃DÈõCHÎqè}9¸rWöåQî«;uˆ0¦9ÜÒ(¥ÍƒÓœßì)£²ãUÌ`K]]9ŽFÕnŽ°è6#4#5„©hDÏèë¦ìÝôørÝõyJ¡-Ž#*l“ÉZüf£Xߥ‘´½YOnøCFÔÔ¢¶ZƒÔ-«úÛÿ“úß{ú+ÁÞ¡ÿýé“gÏžô¿Ÿ|¶õéýï߉þ7”´'¨ ž_.€¥JÐ S°@%bï)\Wƒ~JÖÉF⩱+ÊIy“ñnÉ„ç«lÌÒ¨„åE‡ÙœÑ/ñü“¼%Ñ0}#_QFÝ{±÷õ~çåÁû4ê='’Ãï^½:øK±ª2·ƒ7‡G/^¿Na†Öøî¾nÒûá‹ï÷_v^½?Æq"úè#ãn|‚šóì{CHýMçA<b-pœØ{õq¨Qïü‚z9ïÞAþ·oööÓ-~}ýâ¿ÿ#4èwïß½Ý{‹UQÞª¾LTo8@ÊEڲΪ¨«[‚üâE‘hæÄ°ðSDàFý4â×úÎÀŽ<ÃPçe¥k[&éB¥kf)´?±Y᳨6¼WÙ¤÷(ñûÙT·?E8È»O ÞòUTï°A”Ž] ðWr^s_£ø ‹è†|s–ºAsê‹ÄSÛ"]HT4¼u_¼@Ç'/kñIÛ7Á]¥»¨Ž2¾–;2¯¥ŒÓ„¹YkÂtþ“PšÓÙ]Ìí"óz"%zû™0/d‰¶'ò‹>ýú§GÂ5ã` ݸ˜!ŒÅYwVŠh?:¨hGgÔ×»Œvš¨¨6Ê>ý¤Ó^M›lû‘Û½F.ÝËG+Š ‹eÞëܲ»¢»ÈŠ$¥ñJøB‰°[ô\/SÆÜÔÎ*ý2C·6c”¹˜J„®»Í½¦f²¾»Ù0ÒDš¡âú©jØ#g+ôÞM+c;r¯ùFЬÞ6ò°é*¤7–/ú¡¢“ém#)d\}æg <±•ÈŽàm6¦ƒ¬o•Úi9úk•:ÃEo„Óí«³Ûú#*£€v°‰²êRO.UãèZs#*vW¸Ö<Ìò9[8£Ü‹UUX=~üÉc”aÙÝ2a]ÕŠ—º©DlEÕ¨IF¯o#)‡¦Ñt~»‹ú×Z#Ú„¤Q`Fª%jöÒ¸ü#-H'ªY/‘''ptüDüŽ¯SÇ?´ÝSkiô3=LŽRñm*<ÇŠ¡»9·›ËÍý8»©_ ;“Ž2ÅöÔ'±(E^áø¤'W¨»†Ìõ™#4ž’º¾ý(ZWëÚ™Q“¼HGZ¡6¹Ýžc[W|Ö½6þçiA§?ŸõªºZéb‰_#)*Sˆ?ê^eféÚULÔ]a¾w˜]ýT `Kg‘½‰T¢[óȲCd¥PŽºÒ¼FÓôínsŒè0üûÿ`ñ®%µr"–/ò>IPÍÛUDî`ä\fás+.^‡©T²¢íAíÞœòˆ¹Yà>x«“¾ç Eû‹žÇëFdËYs[k‡ÙâEV«—ôsÒþòõwûA#)_†ÅÕ°ÑŠa6ì¼É¬39G¬êo㽦¯«×Y÷ú¾Cô®ë ÄV‰•«Ó¯÷Ñð\k0Ùtú–ÌÁêHf™}p{WÂÛc›×1¯ì=h•d½J™#4n‹×•ÿöÄ+=Þ*ã)I¸š]èüóóÙ¹¦dßœœ£7£¤9%¬¾€vx;òV`X-o æ#)ÐÓxü˜ÆþÙù¸‚e·¬‘6‡-•í`÷»ónp]¹%Ñì,ò=Ø*ö`²ÿö•ñWdÕËi v›þŠ‰?ñÉ漞7[#ÞOâ(Á"ƒ‹5'l%³J>¾Naˆ¡þH.Ÿ#V8ÔH9û5Ì[[è#4}¯;Z&b…rÛXùž:²ëøŒ"ƒ^ä× Ö‘8È%²äeà½RïXwr®[®ÓŒÖuL|R¬FAü“‹ n<ï~ò¬[=®+‡u鲿My G÷‚•=ijžôopÚoDíùhA¿Òè†ç¿#‰dÝÒ'ˆHuœäîÂãÌ¢¡q¦ƒ¼s3?Ù…jTtÜŒM!ùrë,}yºôÍz‰i"V1±%\T>ÝçùL©&Æ‹jaç±Û>#*¯#T=·OΓ€wœ¸að{ÄÀyGÀC•@ZШU¿·8Ÿ#*æêõlÒõŘ-¦óPá&ïÔg+t“¦L»ñ°Dý> #*ÇÀõʪ#*蛲ŠøÞ=%—Ur|$¡8²&‰˜;Käðvýù*‚…C㶗ð@/èJ›Å@óC}'¾Úvò¦Ê‹Ö8D@›¸5Êx-6Êmß#B€¬¼ÍÛ^qKBê•Í*FÑ©ëLW^rÝz~¹ºâ4ˆçä#4HV±ÁþîŽÝaÇCq1t%ù,2+q·Z<‡¾ÇïÂ.Œ!ö#)/S§Žhïî£L¹;|îm:XÈU0i…G$Êh·Î$Öµ<·^|lʬ:vµÀ6Ïo‘˜ŸW·‘:ÏLå@VƆ·#4Íý\‚˜-D«qL¢¥ºóWílœv†÷PÛÃXµgA/¶«sÇ#4ÁrºÄ ÆŽ®Ù¿!L;õ²mçñ€ˆÒê8dQÓr-ÀßãÍýU¿9x¹õ—¤d6è£ïú8ÞÀW^µe93Ù,‹¸—U¹KÀŒE™©³½á"CÝNÍw°äuÓ#|2ŒÜ=Eb×Eb§Õ'ÍS²$ÆœðZØÚK6a—ÚrÂ1@]jâØœÍûe¶D1^œH¢¢Ô)ÄÅg·$,DIÙmQ%8ôÃJŽv_8Àsózõ…9}º(«"ˆéôE›%Fó‹@û Ò¯‰öea拉;fSGwïRF¢ÅÞe¿UÚa˶R#)“hs–fçvýeBˆµ¨Õ»v‰sÍ^œg¢Jå˜@ôqfS>±gõf“yòˆì±šÔbpïrvDZŠý0í¥íöc‰?¡üÃÌÓµãõõõ~ÿøs#4ùúúNþ—Ã;ü[[o(ƒžÙù<=Ï×[…ÆM{Ü>œa,™F˜ÿ;E{Œâ…!.jaIhÓ4Ìf£µâMl7–ÅO”e¼±ó_03ó¼#$þñ3Õ)ÍÓÏH#)#*§ ´…Ñrn77<ÞÜ&}§YÚŠÒè1EÛˆžG±h÷büX4¨EÑôp¬SHšp¥ü’"§»ŒÒ>¢]vå(ˆí#*2#4êÃØ^Z¯Ð" ÎÁ-!{ˆ‰0&òW‘ÃMYÖÅÈ,îÌ £®È#4™)MŒ#42Ù¡Œ1WH·/ŠuH’¥Ç˜àÔ)ÕZY¦Vý¡…jº Tœ’|#*"çÄâm‘!mîê„È”\yv¯à¤Çåû±ÓFÁÙ…¹«Î…¿ÓŽSQÄÒô¡»×a›Üî8¦œUùZ–1ÇXÅK%T2¯ŠCX¡l±A$o³àO¾Géoì0œ1ËB§›Í(°Y1Å^.KÜœH£/×Ê~D¦M xÂnŒÓ>\„è¿Ë†¥ËaE®h‡#4‡ŽÌ/ô&N+£)K¿ÐË]W¤ßRWÞaœ¤ÑÔã*C.1:ûr8Áì´Qð«¦ÃkÆÖ`ñÀ¹Þ):d62]ñêiV½CºbveÌ›Ý!!Õ"ÊaG‰"¬]TßíÊÐEx¬SáB–VÛÈǃ+dçDUz‰¹ž—L ½/4qßrV:vÖHí”w»ïÈÉ@]ð´ø±…« +>Q€C®¿µ¿Tó-5²$/Äß’©Eq«X-ÃiÑh„ˆÖCÏEÛø¢ZÅmI¢m㘄™ÇF²Æ,‘mž£ÁÚ6uu¦Ÿ$MŸ(]Õù…—ÄLªÎ1½ÉW#¯=šFÏ¥X±·“:Œ¸?´zó‹S‡"4JÓ ‰Dò¤Ê@4KÄDâÖU÷Ù¸à]IS%‹Œ¨Är845ÉwÛÇý÷>“.ðKK(Q>š¶·ÆêÁU^¸{ˆ“Tɘ¥¨0ÁîØϤ]ýÖé¡dúT´ÉÿÈþ‚y`ÑaÙ¶…a>lÙíá4sɨãZÁù\ÏÉö#)®sm8Fá\ó–½#*žÂMfNDò7¼Í"õ=/ww—[ ž6zcsS{_-S´r `UÕBâ•k±÷ç—HÂ|Ÿ¼ôP^Yt³…WÌ}ØpÑ©àø‹8J (oªk*(TÕWÄ‹22U\¤QSšºb"ðSÜ[NƒŽp%xÜ#*¸ª(ûæ'È ¹¸k àyyþYo\á©Wö¤rë+jgB²®œW–£m|8þ(è]ã–¡¢MUcñÀUWw»Îü–#)[KÕ¦ÌÞ1,ûpHË(‰RÇ`ÛZ198Qñfˆu_Ó‚ ߪuXRå…HÀGŽ$¶Z•„D%6™l“¸^G÷#?ºŽÎ–G"éÜ5)}®þDò󪫣¨ÜÖ—'ƒlN†°”‚ÈÇ¡.NÇà凙.pœ½e×u1~%WDFœí—À¾8•ÔÖ6}9>U•Òºec½ÌòyBïþt/'(üÄç jë<ë¬Ëò4Ò|°À(qo“”rs¥À¶š¬)«6FA²èSq8ÂøúœE/Úû¦Ý=u7#ð¬Âaù]NÆEØà®m-#*7øUÚdþwææ·£á`|Ujî¯ÖÔû7ÓW-â`|Ã,~N£ÿ¤‡z©+¬~ì#œeçn¢‘IŠww³ÅŠq¯|µé¬K<›¥£©NX|}ü˜)¦³¿ü“•: óÏhèq·”·©¢ç9¯3ïåo#*ßsǾå†2Q†F!:MƒÀ} |Anü)LË•óŒÉ¬0wë¢E;oe¶™r+ÁÐóÔnÊÙBô<Ö»òìæñMoÞ>{úTbÑäÑHøBÖÉ av¢Šå2y×C#)êÁ5<ô®î€#*Ž²¶–$4}}£9Ь|¥©_„0&…jvZ¨ûÆßôƒ6±+ZîïlIˆ+šû£BÄP+:õQsÙ-âÆ=Ö©úOOn0qþyß•`¶&]#4U3N÷‡àö¹¼‘8Ý·äî=ŠíþBe uU™Å¼G™løƒZ^Žé¼&#)k¨µ‚ÀÅ žðeÕNó|C|éåXAC®á‰Ô]i{d$¹×~NýØvȨâšz€¹8ªsÜ^©„µ™Oè`+êÉv͸‚R^æ§Ä…Kœœzç®È·q¨~$ †vÛ}æVšô×ý®fž«bK•,ø!R¿‰³z#*˜"Â#)mö± ša-÷ÀálQ1Ú%5òŽê.û9YçþÒõ–Ü¡S¯†^,«:ƒ:À´BàräTn¥@˜Rϸ¤¸2+'ªûiÍt°YnúH6-ùUÜ‚ïW»ZS¶±ÃnÛº*O±ŒÕú»ôǽ°¢!Gx5eoœ7íC½0ò@\è 4˜÷ŽEí)+¾7¢ì=˜küªòqBBAŠéà7ó¹×â°Ù\Õµô•TŽz¨h.&ß|æÁĨ‰íÖ û³ÁµLôãíÓöA¦§¨8gSk~„1TSpzëo‘Áž_8Í“UcÁ I¿çñóOÿàà=!€UùrTxF˜““/NNœ<zžº #*xÃyIæ¼m,}§¥¥ê|=,;0õFy‹Ci¦Ž:dÃãíG\Eùð o®´"=’̽T•'G¨¬£_ªàÇåÆAÖ‰Ù3¼1éÊIn¯ß*&~é²M–¦÷)èŠIÅ8X<´‹Þ·¹‹¾£Šìü:í£›‡ñ•‘‡÷ÅCƈل¥ªˆH-=e½G‰ò1,Ô÷Ý##.®êè’4™z3!zþqú-EPéØ{61FX@sý³5ú2ÅÄžj¿éÍqˆ¦jÜRE$ùMÜ´ÍK,嬰fÂÏo&ó÷x]h•mä°Ø\Ÿíjæ„‚Éë˜bk‰ìuÂççìG]T0Ü˜Ô ž#*46,¾HŽPø]PóÊçÛNiZ×î¸@È¿vñ•ïV¨·QWz„ú0;ÏSÈ̽óÔâùà°ä+¾„Ž#4*&“µR©²7¥‰6U®C†ÁGÚ;qpÕ¬ÈY(͵qwQÚäVÇUì]sbývnû°sðíÛ—û-;m‘EÞ×8Æ$ºî2Ž#VH"Zº¹x#4_S¬7º(8˜ÛDœ+æ&F`¸_±ñ!ÌÜŒ×ÅŽ7³†%w5ç¤_™Ûiã®Ïôj§KÆ>·;àtä@.Õwó;[°ƒÕ›ÐÑ:T5#4ØlóŒ£&ŽŸm•±ê;º&c>ß;g]ÆkêM;÷3·mÈfØ%gs›µièÑhûÃ]§¥=Îyždø;#4FÑòeIWE¶b`Šú.,E9¡÷"Á=˜Vñ|â×°L¦²Vli‘¤‹?±^wÕ«!QìªgÌì®}÷¶ñ@b¸Ùä.!ÏR•{¥€ dm’ù(¥Ÿöþ›·ûoŽ<¬p)¸uˆ4Xÿ†Ò…Æq‘¹)K›|2bz€¶J+β¦Ë#ë7QÝxv˃›××M_ )Å‘3â¶èúÏ·wK%Zd@é¸f‹jØDð> H0ÜYû\àžéÏ(lva”W,-ûÓ–Kyœ²ëÔÕ%TÜË#4NcQc™FÆ‘iôÒr2¦×ü6Ÿg#T£Âé{àÓ„ß¡Fxe©üw:I´úa¦Ò#)þnrùº»wŸÚK¾oý–‘zïDÕ‡Oªy€Çà*Lߢ_Í#4¾Þ.=äc°%;óЈŒÓo¥ÑÆhöxX#4VUâ`cˆ´Ù«9ŽÝ)Ñ|(AÐ[¡ÔL”h*Ô¼“wÌÁ½kª6™Í8@£_U°w™Ì:¢‰Ý:kp*ârä Äÿ#)´ì#*Ó¨†š›Ñ$ºÃBàëc±«FXõ&aka#4âÉy#)œ¢ÞåC#4/p¦¾Bç:e<®HÁ‘}æ :¼#)^!_1ÿ‘·+ˆ¿Lv¿0ÖÿÄBx@CŽ^IŸÇ¸H´êvÖY:/›—–£Èž<Bþ=8¼ˆÞV>™Í3™ìU<dÓ€¨“X,ö#4ÉœQL:<¦X妪qr ‰)¢«l\o5tÌQOE<È^J•m!eòHƒÑ/Œ‚'³ÐÑ;*•F¦ü#¦“½ñÈf±› }wÜ™"½3DzÂy%ÃîY6L5²ÎþÃy6]1û=(ê’`—táŸM7Ïn7ñ·yÞÍ/ÑU:5½@Çyna`¤ûlg¦+w2"%,/#41®¶«ÍfÕ½è£]<æÙl좨-¬ÁÈË–]ôgÁ4ÔöÍM®Í¨;·{Iw:]ãQµÙ*º#4— ^Ý©”åÖAµ–ñƒÖ¹YX ˜ª©P;ý¤ú—%T1WgêØ¢êô#Â-·¦ì€Æ¯q9^Á&û" .C=Ò-W¦ƒÊÑUËóøóü*ÜÄŽ+ÅÀ²Ë¦Š\ý€n¼ÛöK4¹¥ö䬕埜ƒQÔœý &D2.cåÔ+Ê1›ò½ŠÐ)ã¸Dx³$ü-ÅX¶Ç8Ül>G™ÏœÌ7!*9#)ò·CZ/µÒæå:v8ô©'¯ˆ\cÆ»‘wÎäz¢¡éµÇûÂxBn‰ÿ*惞’$#,»>#Š(9ukaÛd*#49Ql!B]Çæy+ô 2Ó©Ž¥Gko|^#4i€Û“)Öó]tÂ,s4H*GÞjÈ€™N3’_Ýõ‘ú%,#4P,(Œ}XÝ7_¿r?¦^å;¿KÚ¾¶á•†Ú)âgÙÑöÇ×uÞ{à®ämŒ~CfíWÀæÝþ×¾ÿy{ç³þó§Ow>à?ÿNðŸgY2Ÿ]D(xƒ®mf€æî8GôQïdoÞþõÍžjÙ±®£÷+êÉ‘À ^’ûÂæiøŽêLÒéÄêÙB|ÇiÙíðp6½-Éš¬‡%¡;¹°$ KB¯uµ%‘;:ét:Úxýö+ñ;]é–ÚF/nÞÃó\œ7×[½í8_oýžðÛÛ¡@8äݽéë·ß½_•·ùŽ™½»þíîú!$Ä<‰&bG;'Dé?£ï÷£]ÜŽ“èË·¯_F»ÑÉrûìxkû?·Q¥òý¾#*zBa|#)‘Ð';$¾•4ì †½;xóùC§Ïæö÷þúÂgöLòÿ«ùCĹ•&Å Á§¡_ì|ziÂÏÏ͇a”üØp–ñit2£/ß°Ý$àæ‹ñ#)嵊jþXfåsåo1ì8‹î›¹+[7Ãá)M·#*ÊfÅDÄ»÷òBˆõî‰ì«A&ì³è#ãVåÎÎÒ”8ÚÿgôÖcEÌþbt¦²1ŒG®;(0‰²Q·§r1©·ô9·ÔgyÌÙ¦Ñõ|{kO‹n®ÓT;M!ôw€¤àWZܨ;y8»Å` >ßjQY{ÒëtÒµµµÆ£÷‰Å?h1óßÍ ?¿Dn»wÙ)óv£ñh—3Üe4#*è¼@;7‘špÌmâQã¢*È.dŒ¤u¤Nhõ†2GJ}b]$¹o4<½!¢Sädfˆb‘úykr†Â[¯* =wm¯øºt+!›ë#sµRSnܘ!ºÛ…åCgQëäf#Þm¶Úãö’ö·*@ÇÇ°×@µ„Z¶_Ñ«¯¹#UxÄs.Œß.Gt÷¼”=·&m鵑¦ø žŽX®×f×Ùp<yžj o^½#*´äø”2J¹©ê`³Êù·$rF|.omnjȪ D”mI*R‚IôÒ¶†Ö£R#*ÆlNfÑãH߬ï;½•Ú±™)on[áGA¼ºa8$,Ô¯9TG##*æ®''³~pßä•MXéSŽ'ow˜ºqÿcôÒ_ãpL¦©-ΓբèáÎ4âx–•¡ ôâl#)‡<i«¿zU? #4XBÊKé¢jNÃFÈ%ð'#4îuV^pÅhOû˜.7¢4’)Œiû2“ãEþÌš“1C–šÏ3O62ïýÚ9™èD&O¶#Îs<~F…Jó`pnq8Ы©C<—»å¥jÀv"̬\ðª¸#4:ÏÕ}2Çm[¿Ò!“D`?®çùº,H?ï¾ãì“3â#)Š)Hªi¹¨rÁ%#*⺂ÅúW?_ðpX¹2Û¥%)kÚ#*ž'¬RI[CšêF>$«žUMg©„–'I@hC\¡z:–ÚÆ#4/ßÅ$#*f0J$ÍÝóVÄa|éXÇ?[E1˜ö¶Ó€¨ö¶Cu™Þv#)yƒñ Ȫ~wØÿþí{šnK%ÛÀ Ë©K’4Ÿ’yæ;»-ɦ$œ¹ShäN””!°Åw3±ºxÔ Ø½¸è öë|q»øɬõÅG'ãø_À%yrÜúæ_íÇ_´Fÿºü×0ŽqgJüþ·ºÖ½¼ H¿®B`*¿kº7ßt<ThàN´Õ€P”fwqÊ6sqÌ<_ä+¼s䕼W°£·+l1:¬%oÎÆó#)Þû4ÙÉÂä¢fƇ"û&ŒÚ2y7GµžÄÙW^oŽú½+¯Þª0¹°Pv7Ù‡ìÙâÜ\4;äPÇ“Ä=“H^$€D-¢fó•ú hëý„|ÃÌ©Ê,vZ2(3Õfø“â·6ëÅǺ#)!’Üt»ÎÀ®dÅ{øsßÑeN¡ë‚°›OŠ±‚°†3FBϾïÀ»Cœ+ÝÍ]XP¯É‰¸º.Ä‘ÅüÔ};u/0ÃÉï—ýá,µìUÌahâ¦aËÓêX2íöûBà[݇¾r̲òÍšr|ÎÑû—û_~÷·,RØ:C˜*<"‡U4Rh™\fKAK¾µ|ÂÒ3òHª.TÍÁUü3ÏÀý«ïåÞ3m){3½©öÌêú(--ãV#4EVõp¬m®îbüPב–Œd3߯£l¤}KË€ÝD'¤øüùö2‘ÄešŸÎœ}›&³[©ÌÝcBý¤iaY‰^&Sñ¿iAH›RüðSzò|–¹Ê?ÆO°wÃùj¡X¶{É ˆkÁ¬‚¥•]Ǿ–Å J2lr´iä»ó(bŸèÈ9#í—[.üTãDÆ?1ïœvÓá<œc ÊïB¦?>ì~@äÿä*õ“_ÉäjùÿÖÓí‚üÿéöÓgäÿÿ«åÿµB~ò½(nM¤¶>käÐþ9œ†„ô×p3 ÓâôÖ”ýNÞ뎓~‡ÍÊÛ½¹bTQ;šXaqI>wÏrê‡Ñ´NS‘V)ZŒÑ<:>þçË›ðçÕë_ÒÓÁ›½ÎáÑ.ü¼{qô5‡ußïu^íÂ_~=úê^áïÖ9媷ñV CÞu/³n¨ MZê×/á°µ‹¶}jîµ}Šª{|7º¢f6É–M¹ÊI½ª:‰$óµí|½ÿâåþ{|Æò\^¤XܵÜÛÚy#*Œ:'Ä'ßê×o¾áüÈYj˜ï_y=‚CçðèõÁ—o_¼—\9@ã¹Wƒ9èëBr“8Húµ$Å„îùñ M_¼yyðÞ÷A~ “´¥]Á[‡‹ÉÃÈsŒlæ,Ƨ}éOn•´¢vŽíþ#)ÿ¾€7XÆ"í“YHâ|æóIŽx©@4ÎG|ÄAq<lÁ‡G·‡qšFÓA@¢ÉÙlLh^¢Á×^ï·‰µ§+xbjX±¸¿ÄÅ«¶Œâ!RÞ¾1¡°÷ÃÅ¡?jFYÔdÅ‹»:gS\¢ÇÆÂÞ»*7LœãÏiªEloh„ úó™,–ÜX! ÎI}WDÁâ¸W+£`NNýÐÞæ"ë >ƒ2^mˆ¡lõ]»Â,G$E¡mœ\u†c%Å¡‹©ö±;ÿöÖHfN=ãUŽBvéñªŒNr(?ýD©6±Úêy#A_’ƒ…^éaa#)äònÅÄŒ±×'¼”7á¬uͪŒ}ÓæERœ´æãøƒÛõþßÿßý*€;øÿO·?+òÿOž|ðÿþ»áÿÅ÷9ÅgïÐøýåkV žÝY˜ƒ³Â\+ê΄b;Çza,Jª¬#ÆF·+iôâ=J&(‚;s>ì^ä-ø@|cäA©(n•ò‰ÂÒãhÖË£ÓÆ¿÷ú¿èþ*J€w¯ÿ'ÅõÿéÖö‡õÿ{ÐÿÎÝÝ|TlïÎî½Î#˜Ép ¹èõ¢SYð‡nÁÓº=äÓ,ÜÍÄÜ$X=óÙ1†ÿ¨”(‰P>ŠþM9©`ý'ì^õ¦wÿ§ÛÏ#4ëÿÓ'Ï>ìÿ¿;ù#4ˆh³ âÙ°¯Ú.S=šÒRTH#*¢± 7ÌQ‰dP$Éò6ĉú^}A-Æ)üû†‚õ6È'ã_ž¸cýo?ýl§¸þ·>Èÿ§ë…ÈßËöYÂIÓõž²å/ß¾Aq+=8Ùðáû½#)ÜìÇææ‚açÇ`$(‘…‚XXö%°øô§·=ú{+g‘³ÁE‡+ˆP/»yç26û‘/ä5|…HFÊwûtöù¨1Ñ‚ˆhMVÈö"ô ÙÖ'öÀKµo»#Ùåedå€÷(ç§C©æ• ÍÔs"µš0†%á7ßôS+Î%¿l©Î*‡$[Ób'|)ñ€³¡KÜ"IÀ0úQB†°ÿïxÔ»›þ«BÞ/¼ÜÅÿmV¼ÿýôé³ôÿ7ýÿ zý¿oý÷GýÿùÏγ¢üçégO?¬ÿ߃ü§`ïYù$ý‡Ša¯”#*Áw´>õwàgØw""¼ý¦[jJÔõ;]H‡º›Žx¹›ÿæe6œF§,!FDÌ¿µö²¹Ç7¥³æõZœ¦›ÛÂ@Ý•Ÿh?Fz%è³D@qºì{ùíËæõvÛg+#*ë¢ûõ~6ÏzsˆÙÓ#4°%´ñhàZlºâŒ&cwwà£ëªëT«Ïí—ž×Ñ#4¦ï&ù`‰¢°ë¶S° nU£wXASͲᤇžƒÇ›ˆD:L§ƒ²ÎÕõ°CV¨kn°œŽ‹¹\´99GCJ#4bÕéÝi|‚½”“±:hˆÕÙÀܬ#4ˆæ¥ª©‹Oy¼Þº\ŒžÆ2oïµÄsØQl&A]EÕ½zþî`¯0#)æëëÍüxã¾$ö7û)]öÚâ#)&ýe _Ÿk“JáÜÉ?ãÐyeÞé°;GíÎ4e/Ñ=×€_SÁ#4ˆì¢ÚiGñóòô§•Œ‹äÏbrãöå‹é”ð´Ñh^ô{U#43~‡ó éQ\¾J²>Bi²ê +Òb¹@’®˜ÏLciÒmA9[\‹¿½9Øÿ¯»Ãî¯À#)¬Þÿw*ä¿OŸ}úÿÿ]ìÿ³¬JDp+‰¢x±BL‚%äÆ!Ð.V%¥´{‰’‚‚Òݜ˙pYôB9ú€H×¾ñúÅÞZ¿ï÷ß¼}#ïDi×NKÒ£²@dœ8ˆ²Ú^E8ôHõ‡ò 3Ö¯ƒ˜Š‹~F#4Hœ§b9w½|eç]';g ©&âé(P—+ã4V÷ T•eÖCM°ïä 4†¾PáýÁ¬S†ÔaŸ!ÖL˜Ü}8€2Û_Œ¦~6Í;Nje•ó;ã’Ë ÞU÷"Ë-²–]¥¢F"jEÙlËäº%ìo ÅF6…T¥å¦îU&Ñní¹#4ùH$3Íí W%Zä™Æ'*ÎÂ&iNóÓXÇ»,ZÚ–ºVx‰è«·_þŸý½#'¨\XgÜðâl4bì<ó>H½)1NeNÒ!ÌÑVä&v”pÜRÍÈ« æ,‚VµGm¼—#ìÂNTßeÔUQÇàÝ knáL7º}Niœóy…>Iªó3N>*ñÀY5Ð9íÖg¯;&Ÿ^fŠ~’ ’¾º¨ÀsUë4È‹ƒïß`èœãf¼š°´£4póËqlÖ™WõvSøèë÷À—¦pÅ–˜AÇXÇw\blÂx<ir}Ð#*´ð™ê6ÏÍI5¢§ˆ©qa‚©$ÛQÚ̆C[FÞ>êÉù *Í&ôâZÓ/Ž^\74ëJפG¬¢x]©¢Â4jo_–òp‰*Ç—n²ÙÊÈ‘ëÂœ¬º|P¹ëîtÖO¶¡‚Âõ @z¿Ðiü€’0.èBÖ·m$„Q5gïæ«®‘~mú¥Çmè\à¨ØñÍç(Ñï<Óª¨àgM1Fqþð§Mª†›CÅDvÁãy6ƒÁ˜iõ²énìWmlÜé”LvDdAtëêLgƒk r÷ÚP5²n”AͦWÅjÓ*T#*¶æTG$ ¬0`Òh»½…ðÞŠÖzÑað—$zñî@yC4ÒäŸmU0K×Úkj¾,©Ð<]ÛZ‡‚¦6k[íµ#*ŶÙFÂFô9m¬µ·Ö<“d") _¹š“ÑHÚánš[Eû7$øIp£Ì„zT¤qáàã¾|qôâýÛ·GhõBg×Oˆ#)ØŒ`° U¹ÈÁIpäü¶µß½ØûæÅWû6±¨õWÔÃ|¡š¼Ù{ýÝË}ªÈz¾Iö-¥:$åéTÙWgˆ6¾¨é.ù*®Q¹€\ÑBêŸV¯5‰eXÉp¿E6S`;z]¤J~V·Ò˜8K¨K6f$#)öÕ†hÙaúøù–#)qÓ{~mO'âݳ¶¼Ýeã*öl¬ôS"‡œ–Âô‡ÔqN%Ðp›ttxP´ÉÙ{v¡4ál¦“êôÝ#*¬‰Âä]c[ÈÙuxÄ:`S¢@¯Ã[¥Ý&Mmm`•ã¯)›sè2µ$ºçh—fN‚èX g*‡ÝëÆ.‰Ž÷li«Æw÷š™›†.7bîñ}º»ò–Ë3Ï×,``ÜJ0luþÛA^äÒ^´_še¸ÆÅp¼¸†Ž"Ð惿ÿŒgp|s#*ÉƧa²šmlÊ9Ù±9eí7×½¥®Ï=ú©è"óZ¹"þœ:UöMx€ÑØƼéÚê#*Sý¡’ÿ¼(ÈšßãÉö¿¦;,ìÚ³ÍÑUÀò'¡/×uù(Á>ñ€E„l³ÇI·s¼*õøDLtoŽ¹¢¬¸²–u[VXŒi~¦Çšža©8å&í|q~>X¶bà(Ú—koóðÇ~-ìZxø’Ëhö¹l<˜Wí¤Ià·Ü–Ä]ƒ}Ÿª·|Õã–·d:|-Ž¥!.»ŠVÀ§‡4Á±a\ X{äâÜï&¤ÂšC¹¾x¦¸»º¥ƒN#*·_6‘uÃÖhñqèĉ#gå˜;’hüb‡‘ã’è@¤•®¾úµB˜¹AÙÚXl©âMú[½`#4 ÉRÌ_ùÄxj(ôa1¨Íw‘‹6Õè\/8m>a3êDOµ¶©Õ *ôàHìyÏK¡œ2䋶¾ð•¸#)wú<Þõú„3¾ŽjGñéFÔî!dꃛlíud¬œdCµ<ýVèqâÚ¹¯a9ýÛõuAïØ=>2÷?Œ•ñçø"XˆV?Á¤ ºÀšIˆ×n‚¹O¥tt•jõ êZ.G„¼!:1PwDf˺3Númù)Æ¿À‹ÆêZ£Å¥\ç‹)Œä1âß,c·<áë©ÎŽQ~ÑŠöÐ÷ŠÒ0Êz®çÜæó”]ÝÖtb¾¹mÒ…<OmZÆ>Ãïå˜4 ª¦vì?t>™4'èØeœe}®ñÚz8ˆ¶’¶ÚîÖGOþiÆÙØS¨Õ —YÊsÍ䶶’Ï“89›‹w™ª°Ky -²óíÁ([iSWÅ©MÜùòý‹7{_cRÚŠXΪ’£šD¦üãÝSÏTXQ¼T7E¢sƒSoJS·Oã$iY\+^zÛG#4*nIT…ÙUõ?ñkîæÈúyÀ^øúÅ÷û¹'!h¨«‹‚¦ÿTU´«ìÍØ”é̼^‡|GÀG½dI"L››=Úך$ÝÍ£C1ç}…€|—êGÝù0뢃{% %ïHÅ|ð#)uEïü¢õø±æ×õKÛë{‚eà5=!¢ú³ž•h‚+FV5¹/X£D¡8¹Êá.(4`ö÷j–¾ÈÝÛb<ø{áò#*vŒ½Hôä¥q-øÅúÁOEõ°lø’§ø™Ê¦Tì²ÆcœSÚ‘n³éL>½#*»VÄ%P“îb8'¢• ØLZ1j#`Ú¿}ñÞ¾o‘yû>JP‹(ŽØëšê L<9áîBµûê-5ö”*—Æ8ÊñïÝþ«×é]´ûE•€îÒÿýìIÑÿ˧Ϟ}°ÿþÝÙ1þ[ô[µrŽº:pG‰¼5̉p¡Ú#4Š¡kî$–nOF¶ô×þËtI§%¾Q~y¼4ǧíÝS„#4&X§|<8‡VÊílKña¡š¤¸cë{usñ‰¸õùí4Å øE#)f‘#*‰zËe³76{Í^¯¹ ûí¡ÖbIì¤3p×Ü–#4Š7¶ÁyÔ‹$:ÂýÓÁ×¼Ãþj2+ä%¶\+8÷üa«ùªù#4þbà+ ŨØy¯X¯~}É}†æ`o$µ±è«WþáwbH oÉшި'éÏâïœw1³›ÁpHæݽ½›JTŽê,)+ìXÂÄ–$QOÅÅA•–P2‹ƒ}îÞ'NDî´y®nØcŠN&/U%#4!” DUF‡ãˆû†G¬´æ–®õšªY°öE´N˜Ð2™©î<aʺÉ|u“`3 #4nž¦ð—_]-O×D•Íˆ7#4wIËƲÛz@>ƒÓ–].VÏ#*¬o*¤8PfŸ!ƒéÝ•ÏŽ»3›ß+³ù½2ã³@~gv¯.ÃïÿpPÂvøÛÚÿ}¶ý¬„ÿðlëƒþïï`ÿïtÎ8;ÝÙÉ.†dž²ñ<ðWÅ2¨Š°×&5áJtFu]¥)¬ ²gûL¡eWh#*cYNÍ)ð=ØhÝí0ãã|ϺxŠÅýŽ:WóÉ_q/¹Êné€{Ï_LæYŸŽ»ü¸I™¸/ËÑÐ|„7÷}vÞû|g§ŸáwtÖ’Ã rÔ¥œ"GR.Ñ[Y•v,p*rEÔë3¼à«“r¼~»÷â5j@X#*=2ð÷þV#HÂèÑ«ò&W TÑ»wNïÞï¿:øÒòî;Åeö§`¤‰) ØGáÉbƒ©´±3‹¬6öámÇ„wÎ]ïXXKÌ<ØðŠ"T>õ=êÅ:Y{8–†#)Õ¢&xãYPjÁ0¼¹ˆ4BÝ%-}ôò—#)õ‰‘XëMCæA0©–R4’ojz瀚ܗ—VæC#4Ç*ù+•8xsôzïÅÞ×ûéq8p’IA§4N¨à„2Â+¾ £woq¸¶x8âF#42¦)HXuZ›F7ÈEì¼Üõâ»×G¬2ƒ&iÉÁEsCoTußgýŸßÏ››½&€Ì¤NÒç a·øö¦å[èPYÒ¢BVF·¬%íleI-•9¦çS_ûMv[@®55šKh®çkjU]7èC5ñC\¡Ý&ӷǾ*ª™0pÚ&¯‰{à§ÆµÐ¿®úu°§W'¾•úhª„ƒªc{»òúÃU{AVIN¦“jr2üfÄJ®Ð‘“P¿6JŠðâÝ»7/¾Ý‡#4+õªÒ´¬_߇VÝ9n$þGòüÄ¢›'©Þ”„ Fôø–$ç“Þü²9™¢¢Ý‘nÞd1C˜>¹qq£ÞlÐEs·o‚%åŽrâ}Æ»ãþõPÈ™m¤ƒÏÈDI;Ú(ãÝ0:ÞìnþãÅæwþÔ>݈ô–³ Å!ÌÊ;=ÒÄi ~•BW®¦Š«ÎK¯ü6¢6ÎZ>ÌÖ,CˆP‡;<riíâÂë†hÖŒÂðpª]«!^µÛí©1s‡,-*qŽN&ø´Ñólº¡yè{ôz¯óíþáዯö##*”Ù¿AÕmx=2»ü»¥µO…Õ#)¼¦ê]Âê)Ìv#4‹˜m¿…£’…àa×ÜìE„|ã&k´°Ñ#4Aæ5ù\hhÔ›xª5õÙô$°`3ØHß~õêÛ#}ä¡÷C<%ÎH)TmvHúÞ¾}Ù¸m@_h»gò¢_hÿÖ¢¥"Å.ÚGùâϯ#)õá‚êÃíŒJ÷õŽæŽ²Ù…·q.⿾ÛÿÚ™î†ÅL³ÙP#4ÁXrmuŠ÷UÄ+‘ x'`0Èm²!ô¤+Që¼IuŽ`ÎͳÙø±LëÀÕÑÁ¸J®ôflÃ#4]‹3Y©öÞšTû׿üÅ›6ã=UKô¾Øµ*ï9ýôüåÿÎûŸQ~ÝûÍí¿Ÿ=ÝÙ*á¶ýáþçwaÿ=É“ü¥;‰ó<X5Dàjü}·‹ Rj/8º‡€¦Ž†HI/é-—IwÖ#)FL''¼¨}FQÔèö†‹A³Û›®³~Þìö·áÔcóÁ ?¨å†îÕóÛ:ÚkvóË4Ï.Ñ”°y6˜çè©ð<›¡ÞóáäfÑìua€²y£×6{ÙlÞíèwÐ6{ƒÅ²…bsÈUzó!dýá?PÎòÛׇ÷ÀA×½¼L\ªß›ÝN瘡`~€ý'ýÏç—WÍ~wB¥öÏ.2`FáïÞ›ýÞ`ÔE×ñ}ˆðäSùé7øw!ïH—#*»·Ð¯ÍþeoÚƒ¢éÐöègÌo9ìy-_€Ãkö…‚¤"0˦ÍsÜOûÃ!<šç}øûcÖ¿íëøyÑÇÞ†¿Sè¢æÅ°»X^4Å9?#lKãbìú“›&=@ó/éç15§:ViÐAbøýͽÈ.áã`DSx¦8XëÆU6g8WùöÖ6fy¿‹œ|¸ŸõFsùéÓïTÞ§0™S 9üä1‚|#ž:£‹Ñ‹ÁÒBñæhÔkŽ&gùí~§3üGßÿ>阼£¼KÕå½QŽ'³,kŒò~7‡ù`tAQÆs”“DçĈ_÷þ·7ù¤‡–£!¤›/ñ_Ô€¹Â5cMÇ<ñÆÓéœÒxÞ§AÅß³ÞFð÷E6»mNúg=HŒ?Ð#*üíM1`ØG&"‡‡Œ^³n¯G?‹9¿÷ÏèïðþB'c #4$òg[ôp£Ð˜äÓùUsÚaçOû—Mø0ÇÇ‹ Ð9ð°ø8C‰ØÍ-y›<#§ð)Ÿô·/‹†üö›Ÿäd%3ëæÜ|x€ºàå#)‡’°æl#)ó·¿³ÕœM{ãþŒ~ò§ø3›ÃÏ|Ô˜Í%æ:§K-ïug}Ì,ïÍ`M\gúpÓÌ3(-Ïx±À|AÓ/?ï5s˜´Øêüòºš™_oèã ?»ZL›ùxÄ‘ºÑ÷ šÓäóBØäÝs(ëºGSW†u~¹_A¦@ÏÏ=vî}“7³!þMƈ¶ƒuÂÜQùt{«IÄb±„=#)zéÏ·ü·ß¼î€z4T[çúüßœe´&›Í›ì-¬š7ƒ.Õã7“ßÇ£þ¥î¡‡)JÒða>5à—§y3ìwq#4݌ܱ7*!ßéÐtýÂt¦_H1—A\vñôÞ»l.aRÁÂn#)}wgv<áýW <=nEËgOQ9mÔ‡ß8÷ÏŸ¡”þâÛ KŸéG¾v8n!M§2ælDŠo#ÂiéC)—NX*‡…©]˜MJ‚žëea«àûõS›ß&`4˜ÂÞø`B:çÓRàu9¤-¿|J÷ò¦{µ†k8è#*ÃúáégXèÅš4BÝ';¦[æÝñ`1r½|Z§*¬Ñ˜«b Þ†ÃÑý£M&ëŸaÕ>KèÆ}‚¶·Ú[ =ý¡½µæÝÈöµ¦ VzËW$1¤ ˜ÀšŒîÎ}<¡6‡ÝÜF ²+hÎLz–sTzÐB Â`xËÚ®MS"pˆ×ƒÙdŒ÷t¹/UDk@ù7åH£håÐ4‘ŽêzÔá~\ku8ÃŽö©z"n[|pŽŽNIê‚Bwxýöðû½ÎÑ‹÷_íÆ“Ùñ€4YÉ(Q)¯õÒ<ܨX;„ö“€§ÒsW³ÜĪhV)+׺җ°Y¢W~H#)hØj1Oì·rBHk™1hã½#Z&£˜Æ®Ãè‚wT›g‘˜$[•ÿúÅÿµó⻣·/÷ö÷Žð.ôjȾؔ!Ê6*Cõ_öÿº;W]ºËQñ+ÁÍ€`£p#4_µAbÅ{~êõÇëTCÚæÒ«½¦J~àË ïЕ‡È(mmÚäa;Þ½xýzÿ¥ëñÔTUŒ2eŸƒGÍIûØŸ;õìn“{#)™²õYs“M"…¶3°Þe}Ø#4ËsÝM±p&KnX©-9k¯º©bgýPm£íáØZ»ßoa‚ÐNÇDªëÇ¥ª‚AÖåqÃyW2ÅÄ„#æõÀ‚´g²¼šQ²Íã.J4¥$ fK6–³œža•»gàÖÝsoºhØ„<„p~Ìóػ҅j—oÒ¨û8Àx#4ÅŽ&ßv´×[ÅaNxjW®Ù?ª‘–¤0µumÓ9ÄŸ\÷ÒIysB»\þT—Ÿ·W¢Þ Ô½ñ|#Ý^aDŘg0×PzOÎà@@Id)‚Cú& Æy+[ï·!E´ä»l4lmmíOYïrÒœœŸ7`Š7¼!¥—×_¦pʆó$Ýz®ç#*Š‹ðéú:þ¬¯s&[_—'ý€Y¬¯Ãßõõÿ¤_I¯·¸ŸO“W¢cGà†—çŸìïÒ†ðÉ÷ò»%Ú$kÅøˆ.¢RÌw¹˜jØK)¼ƒ ²‹Ï„·°ˆzQ…Žíá]:Ónò*+böò‹reÒuå%W^„Ÿ1Ž?%”Sš¿½iEÿ)ÊUÙi_KŽ¶’ºQk•Ž?ß=5YâÓim¾8T6Oil)ϧUyÂö#4ª€º%¦j‰É2ö–0ì…Zw…Vq-vžÄtí;¾N‘àežðeÚ^LûH ]w“xŸ×,¨¡ŒÃ?Ÿ±°ž Jð²^óv`ËeZ¾•3ÆÒØÚu«Mì½&ÅÝñ5³.Ã<cèilx±ËåÆqô ãÄ&Ø^øç/¼¿Ãshßx€§N ØÆ#*«‹Š×½–ÜéÊëÅE6óx²üÎ6b-¶è.™Äê^@¡™/Fý#4žv/²/ÌEü>ýEbÞ̪wøzúÚÜ|Þ<ï†8ÖóZj‹Zë-Âtª¨pU‚Q¸ÁµTŒèq©àfcÑ•øæ5nUýÌúî-76ç™f¯%ÐŒ·ß¬Ú,`ͽµ¾ƒÙtJè˼Aßc¹ñ’3Oîà€=wNL£/{½"¦ï_ÉÑâͲ‹öÛi6î¤~ýÍþ_;¤«ÐùöÅÞ×oö“èðí«£?¿x¿ròçÉͳ§Ovpó:9ùvЛMòÉù¹xo¿I瓓×ßäf(@åš~¡*Ý«Uˆ„R~ù‹R#4Ùõ`Rµ]‹*ýl™n5(h;Ðbê_Û=èeaëöÇ‹¶ŽËI(‹XT÷ƒÄôÖ´E¸VÄ£¸Ê⽃þ¥•¬d³laôÕûÉdþr0«ë1ƒKtÿ<ÆL¼Ø>2„&‚Ì—£a¨ÑÒÏ›qN7> ‘î®N"ÃËq|§¬L®"w‚H,õ©8/ë¡B3䨢*¨ø²“è5nÐBŽw.'5»hÅ&õYŒr‚²KîU¦ôNXýÚYïª$9¹±×߯_2† ‘UÐw* j¦\ÔxžÍÆ.ÑßZ'ý“þ'mú‰[ûËiüÅÇŒÜZÈË»Šä™VäsZÑ÷{l–å(x'¤}?ÈÝáá|ÑLHpAƒ±ÎËôä/Ú b̪#€ËO"q\zÍJ,W²6~Åþ’õ¹k;Òhi£ýJÒhëidU‰Jó,Ñ{DÊ^ia‰#4˜7¨§IOA• gÙ,=Nºó}…±mV÷ò²#)K¯JsÏ-“ [e6h.JwnD4\OTzãÖ|A6JºªàŽ=ó¼ò¯œžSHåWa)ž¨>‰²R“Ûߨ“JõžÅJ]½ùÒ“Þtáx8º‰ð<k"“ê0Äθ òÐwâÊùæ aé°à,Ô4´‘Â@FªîÃt‘’ÈBPCtH§Äì*œúGóC]ŽÚ}à®qr‡ynP°Â$¼Ø±‘Óp-ZŸÄ&–dA{Ûª¤Ð÷nhÄþ*tˆšn÷µÖ&iÓÃêJ ÀÂäqi¥Ü6)vqSœ^ç:í`;—Yg'=nòUýsñ~£(¨Y6*ƒvF`%ì:²knS³Wù;Üu»ýEv8ú1 9?Ÿ~ßcsMä›?½šÿEkv¿ÊTm:‰Wñå?a繯8+·¢„Zke—uU³»Ø}øp›=2‰¤ÙK„á]ª×̆ŽHšp¤F£^ÏØÈU™ËŒ`åu˜Í÷Ç×(#)nÊÉóÿù£^tÈZR|ùŽjW´Y²Î¿§iq£áªc¶ÖmTÑ'ц”q¿zšI’SŽÍÈÃïžjÙyyÑÛ+½pÍ»ê`Ëðt¦/‚ÓB¹S%UŒ+T÷Åb9º3tÚJ>Fà—%²Ð{$<Ž‹ii:Lס\xVvòñîîæö©¢;z“G&Û¢,çgV¿Á¢Î{õÉ¿GÓN÷ÈÃÒgÐO$ÒÀþÊ1·';¦ÉZyÒX]wÖFp+„Þ~bÉiÆ—´Ø¸#~¡ª×Õ»²(FNಠNV9)òªÜ-Ö¯q>ÑÞk‘'ÜWI…Лs´xˆ¦;ÈrtÓIL: -W¾z]àR9-ÞrBÅ÷öIpRÝelyåö±PxáÇå³ÏjI‡K™DP¡•RY‡ðˆÛI“ŠH´Ú'+£‘:Q´ábóݸpžõEH¿Eõ¹wçÃÁbø¨òÄE?[_DØö»Ë)ćW.Hœ¢m‡¯áùÍõO¯ä–¿%ŽÙ”ïl'8µQ9¢È£%ÞF!™òíʲ۱Öpõ¢u35$9²<Âæˆ4Ê,S¿NyµlD~C^½P§—pôzÐZ-îË?i¹'¯"õ[µ•H¥ê —fr¯¹Îoà'[q,vT4ÅÈñø,lá…9Ö.NøŽI$gM5w¶¶?Su ¯þ¾Ì²¼ùŽtò›;íg‘5ºžÎ.:J•äÎaVÞñuÜ+²N…ù¯kfo÷äD‚šÖät䟀ÛÒ>-;‰üA#hLä˜ålF{eB7ÚhqŠ ǘDèÚ©¿è‘6×c´zfÝr9›,ý†'ìÒÈßÈÌ—·æ;X#*zºâÎÔŽ®Û²>ݶe¶·ÅÁ¥RãóÉñÖéŸheàdŠw€rbƒÚå“aÖQC#4#ïÎf)¶„põò$â@/ˆvGgýns¹»<V+X:n|oP]qmec„õÁõ4›)f+…Õ$“((ˆÚâ5#*|+ÂnÆÁ¹jTäÿ#*tOU® ²å ºAÛzŒØ„XÑÿÚßúU,ÙIøz¡úô°BdÀ„ÊIµ[׎ZÀy/Æ‹Ð;ë^¯J±w<ï:¹CðÆÚÉÉ!*Džœ|¿·V+¬ý¥Ë*-Ú½µŸx&~Çk÷>_?¿kw‹aìm4xyA‡ŸqëÞ<+/¸ëê͸uÆeÙIqE¹›8¾L²Ùyg?-³Úkïôî{ñ@UQ7zZ³R¢8y'`ŠxªèA¢£ÌmÎïyBb’R[Ë*yŠgEBŠ=î:uÔùÛôõÿüîðå7ôûù–;ÃâÂGÂ=òt®¢Ïh·ÀÌIÝ/Óâ{Ñ÷@ÎS&ó¨nýÃm'þÍ$Ãh“pr¢P¸9<nlü†ÂàÚòÿ—È‹‡ú#4qh Ÿ¿ë\*ÑUVêŒF¬˜v±4ÚÿöÙӣΛGßïG!a÷±ŒO'ÝÞî-}æ{K——(ûÙý@9ö½v5“}iÏ®ÜÙ4Æ6þ„ñ4jÂPG¡ªh”ÏGÜ÷;÷Ñ€„Ôþ&U³|ÈtpC÷“:ßã¯8Õ,Æ¿Í`Œº?LfÞã aû›s8å‡pŠ¶âNñ¨“Oä?wøâ·Þƒy–ÿö€/÷áÿ•¿{x$VpùÈÈKIE[tÅÖPE|‹°R…º«ï»_¤:”³ÐÓ#‚ALÏ‹Aÿ.²§Uº8ƒÒ%Ã[(ª»égqŸoôaK¢âÞ#4ëÒA~ˆé&iÔ©üvƒ¬Õµä&ëö“OojSX”òg³Â]áºWÒΑ);¥†,fÃ4B‡ÝO>AADÏÚÔ|Ü>ÉÆ›‹ü ‹QþÉ|2ô>y²óùÓÏ?ð¯ (ì®úñ*E5#ǧ©¢Œ ÷áÿ?ÜÞÞÚ{ûíÄi:„ `ËhÓ©mÒ¦—êzšy'cÍ¢løا=ݘEíöÉÁËý“ïÿ<‹J'Ig5£~v÷÷Ë"£‰M?8oÍ"¨1‰›këa+×kŠ_‹Z?Bë·J+6zAÖXhx]4Û¬Øõ¬õLÙŠŽ.³&mžMSºÉæd¬æÐ9{ùg¡ì»yøÍwÍ(j7ÏÐ{ë¼ÙŸd¹ çf#´³8Ëš"TÍúM(b}Ö†°ÇD¶Wh¦¶˜Z<I«1‡ëÕ\Œ‡ª*BZvZ?‹¢AÞ¤EõÛÍÃ,ÛEIl¼^첤Ô׉[:ñ/Áɱd•M¿U—L•ÕþÓ[†³kõ‚vš8®0pô˜ú½¹m¶Èú"‘”ÂÁVÉ ]ñs#*×YŽª•¿‡5-/]1q”:{`˜'“ì0É$´oLA½2ko^¼ÎÙ¬Ë÷5ÞQ’ÑÖ 'ôíA±75vzŒw«ëy{ØÖ5~Tx½q•yˆf6ƒÜu–d['9ÈæyMv‰pö‡CÕ~¸g€¤ê¡wŽƒœz#4ÒQßG¢tøBÖeHŒ”/Çø3i²+f§KÃñŽ5Ωµw}G¢ÉBŽ³îŒNç6ch÷É×Ä<5¡Òš1‡“›lf?¢Ó¾ÅY+:iÃÛÇXPqpYíÚ‚ŸìFÉ&’¦Ö“a¿#õ±už@˜«¯sêQ‡ãSVÌÓ_©™û¢@¦VRçÒ(²rߪ|+K ?‡EÞ–#“ªB<½pXÏrÞÇ`ÌÆœ˜ökV'¢Lxg¤-Èý±dNVÖ=×*#*ö³ýÌ€7žØ9‡KJ/%83£êKÎl>cŸ)a.ÀÙ"“Šö8¯eêy64KÕcã3$KØé®…Rgô\Ydš%ª=²foθÍâ$)Ô©¢LŸåöP¾n©š·Šô±Ëq¸FŠRšãhñL”¶º÷ð«ý„–·PåBf¸æKùaX×çF)|§~¡ðTB:Úê[Ö(C¶6—˜¶ÞA2»k¸^tÛ¤gcì3¿a܇Î`¥#)唽Â-Æ}ZI]r‹#*Q½ŽÆº™‹å-rnBÑüÕƒéŸ L¯Û0û¨Êœ)NÑé$ÚißIë;Ñ™—`äT- <a)åáal6Ø“A¶JlÓ)HD¥Óò&®ˆãèðENÝ&§SX_ש_K>þŠØ=SÁÖäU´R'ⶕ}„IBc‘ö|E‡#)Øí.æfÜZ²‘XÜÝëžCÝeØ#4Ö#cŽú¥+e#*!éùÐå²2¸×A¸§B·ŠöÿÁ×t¢éät¢ ¾û.Ãß° ÁHùÞ¼íM6£þ įÐ;&«B>$‘ðCuí#)Øqo!ë]늢hc.>ÛIåÐéâ%dú„yÚC O_,šn5Û/÷:{ï¾c#©ë¶QÀÁ¤8L5obŸJ1Dõ„ƒï»ƒ×ûï –ú´ šÄz®ä¼6Äó_•æxwó‰¸ó\#*â°+@Mb&bшMðå}콎2äÊ…ýåàõÁ›o8øÌ„}ù\Ȧ"—rœCˆ§¨¢Œ.°bêíøhº‚¡‰½Û‹›Á8*‚q`o6Ù©?›ßLfWpšF`DN&zx‘3S3!IB“ÃO¿´0ðî^"#*ïAã,¿}ñæàLÙ´eF•ôHÉǵúÁþ<žÌl2ýb<+Äà™DÙÞ¾'#4¡ïýå/‘Á¥#)Z¢})°%b0CÞh#4&ÑF~{Žã¤½.d<TF,‡§#)ÊKHIÍY¨›ö ŸçƒóAFîù<%¼óÊá÷ºÀà@~äžw5DÚð曎ÅHzÍ|ØS -FùE#4ìWó¦Ë““±þ%QŒÜ„OM=®…Eq©{LBä%õ31_¼g˜‚䨰ª¾g••¥Ò_¼r€Ë&´òÄRô>õu*ô=˜Ï5 ûßE•…Ë—ÉQEöÿ?{ïÞÖÆ‘ô#*ÿ#*ŸbÂ.×hÌ ƒ;÷²g `‡]<€û•õèÒ#)Z„¤ÕHX<Ž¿û[§î®žƒo²{Û{mŒ¦Õçîêêª_i|vnL¢}ý07×Ô #4Ãñ á挚º¸@FÌãhƒåq½QUÚç}šJnûª:oLëÖÞ(<OìN¥WÎ#¾¦ßÖGãÔ÷uħU7fuf©©4,…ÖѬU‰›uyqrÎ+#*3—”äz¤È#4™]ï¾rJÿ¸øüåYŽPwô´c}]Û‰•¤zýz¡t¸\*îî=ß?Ü;%OwÉÇí#*§';ç„•BŸg/Îà2£½ÂÃç4/yçðÂwYÊÞE-ÏUèmÞ;^d·/¦w›~.ýSP]Íç;asÍq¼®I`¨úÇÇ8¸/ö¥/¶O$R;€mÇ~½~í>ÇG¯Î¶¸Ø-ÆÎÉYë嫃³}öÿ¾·ËYª"¡J°4çhíÌ%B Ðî}„~|q!H@5êÞ_¥¨I"ªšPÄö³\Ð'ÊÝo¤¯2#4|ÿÊe ÀŠ,å{òü…aRÊÒFwÈŸ*ib«VÂ)ªÃ-!“ܲia‰pp:Ä„:Û;9„ô&•#*a5µw3ÊG™^Øylúæ!ÿ6¦+5quå\É“*òÆÝ®Ÿ>ˆ9ø-íî'.ü!|Q}þ¦}ÔBö†G¬ç³¼“×gç`ŒvRÿ#*F{kFæÙQ†|¦ùîŠèƈøðâ&M_¿Ü=[¹ÕqƒäŠÙB{I‚P|2=gÉcÞë '4WÖbó…]ÊWí#4‘ÈÛ¦' …û€6ª™[âÒŽg7Qˆ-ͨ\Ð…gÝEîáCHóÓM.´ÔA}Ñ26dL‰âƨ{î<vÙNÒ.±<‡Z\ž—Ë3Åq!kuÊ]®åÖP…Ì-$¹ßž€W¸<îcè;ÉòjÆŠBj;WÝã«Û-þ0^šç·nÚƒÞE*^+V€>Smœ·Z…¡zeÀ ´æ&=8‘I]µÇpå`–w8nuÓNBj6Þx'“¦„P¤røMžÛÆÝ#wm$â¼bØbÈÈ#*»hßôúwئ•”»}4ѵP!T`ß?Ü>Þo=ß~¹ðÝ^#41—Øc¼þ¿_Ó9;¶†N¸•Î{N,R nïÓ‹äÔ[¢Ñƒ‡\ÅébÜ)N³´4rÔ¾Dw"ˆÄgr™V¦ÃXÅÞtöW¡+ýiÿtt¸×Ú>>Kü”gšþÁzx$NÂðp"u^ÇXúöhô¹ÿÓ0›Px3×üOË\ä£\û?ÎŽŽ¥é_qý'øÿêuþî¿îóÿ¾ñÝwyÿïß>è¯þ¿¾#)ÿ_ÀMÝëp«=Ž/;<wåý:vœ,¸Ó)‘a5BH‚–ʈ=,’Ê뼑Ô%|z'†Ô‰~¾Ñ쑺×Ç"VÉ{üií7´±üå#n`0.z°)iö}ïBEžzrë<=¿ûÝýÿm|÷í·›Eÿß}]ÿ_†ÿ¿2w,µ®þЯ{Ççîï<½@ç5¾¿?tœÎpýÃòI¸ 'òBYs¥è#*:¤ #)›GÎw,)Χƒnß}ª;¡DJ–]òîJô¢þùýöÉÎO»û'“W?¾A_¸”ˆy°ÄóžîßB8#±škjˆ4¬·zNaŸ¶ùÓÜ8©ŸsïõÙGdÆÔÑGô&uN<—Ïä„H:šü®Ã8'ráyY‘Š™ˆ‚6•§±%ã›Þ#)aØŸF+ý%û2áâ—ú2&B’sC¥Ãºky%d•õ …‰×á:N)¼ÕPËÞ íþPÑmüÈÏ`+ÀrP®#)ut5ªU‚cØÑ”ç0÷ø…ïããÔ;Ƙ@ﶢËrà¡®AÉd:ê§pÿÕz‹Ô¢'¢…ë5X³l¯>ä(Žš#€¯&ç£7#4}„kMæg‘}¡à´òt¿¾w™½jPѽ,€3]šÒM§Üd—pÅ„ï?Hݯ+ÜMWÙT¸tÞáÄDÅú¾S°Ö¸êø|QID*)82]`ŠÆ,(ÈÓ&0:ó.B3ó… ôƒÎÃÎÚš{ý²ôÍ$öǽt¾È,X©¯Do”Ôv‡ÓI#*¦¿†õt#4Ä#+e<>gVqd`Ù@â¦WÇ"êŠj*Åó2;9ç³bkkçèðùþ‹Æ긮b˜f£mÕ¨1‚ÊÁšj(Òßöἶÿ%Þàq”¯ºãBVŒàpëH1k‰Ê°¼äS}oU•<O«TF×ÇÞR¥ ÃúB£Â‚ Ì©EùŽ¾‰¼#4ÒM"Ù‡ìŽïö„¦,S 7Ò´ ZBs‚¾äŒšr^#)Ô’ãÆo«(gÏI¿fÆL%1O¤–¦T[%‘GŒÒBwvvÙ‡»Wnî„!Ñ~¸æeÜ= ó’,§ö¢vOÚ>ÙÛE²lœI‰h±Ò/Èÿÿ& ×I|Ì$8fs‹Ôûé€ØѳM•q³™$+£Qg%ŸïÑVÓë;óòaN©æ¥ÈM>èýÓÜpÜ›#¶O^´\ë¡!eG¨Œ¤V¬kÎ)™“©¨mègõ*•õ&©]Õ4\5âùçQe¿$Õõá,%Õѵ1+Sz†°R“°.ô›Ö¨e›ÈR‹Î«\…¢…'”NnOóûw]äOäÄ ÞÂlþ•öÑMbóþ?%u®ËšµPÐPÎqjïŒuýÇùú{$ùÿ7{5#)&d|.Œ¦°óÜe$.ÏY)u`&)IØqW´˜ÛcÉ:ãÄ›ÐÞPèšÂÜâ#)¡º‘±'†>€¿?Ò"ø¬ïÃ×éɾíˆäߺöúÀQÂÅü“¢ûžu,}ÝÌÕœïPvΩñôy:J;½à`ì:“áø. “$´/“› {ûË(]¯C›uVî^ÔÕÂXÓTUÂÄûuh÷Ñ:šÇÕ(ScÜW ³ÔÕšø¹J¢ÿõ’iOþ³wpùù@÷È67¾}œ“ÿ<Ù€?_å?ÿ›å?ÿ.¡/ÍáùbßÒ„|)aµÈ—éÜ+ôå*yb_'î÷oo`§&_ÚFÍê“ÿ9Bâ¯ÿû2öÿYÿxÿ{´ñ¨ ÿ²¹ùuÿÿÂ÷ÿßûaþÞ÷àIZ¸ÙÂߊ'?LᎀÒ}3«²1ÇzÊVX”‚í:>B®í÷¹ºú;;œ•e}jN}¶!´|Üu£ƒ«•”×wv#+=®÷]€ËzPPµé|µQ›òÄýÒ×Ç$ÿ1YŽ°1’ë~úR}¹}ò½tVRú—2œØP$~>žôE#*´D“2,Ñ>#*×/Ž÷wÂreSˆ}ãaHÿélt1í÷KuMÅÐ6~„–¨äißÏ;à”®â#4óîëiÿõ¿éþÇŠ¹Ÿ›˜þ?~úèñ·ùûߣÇ_Ïÿ/äý?§e*#)îÍ?>vÓXTÐüjž€Ö\ŒË5Prw™Lp¹‚€Ï’´Úý^;K³¸ÓBC§ñ®†"ˆ…Ãlÿâ;E¶#)Ïrúæôlï%:ª&Ödž†##)9ž~‹Ê«òa;í~.ÖÁôêtIý¼}r*°7‚´G–•"“ª$ØžBk#*e>?ù—£“°Ñ–RßÂhÕîììîÓ‚¢rÔ/õ˜Í>½ˆ×¯MN›·´”nY»œ%ŸÖ¼C-Rò&]óf’oª‹aÒhÕ3Àüµfp¡e“(Ôªó†'*Lšn«TU=H]ÑRÑ/VÓ„ÿgTrRQɉ®¤1ÏPÅ&ÁgïýB Ÿ¹ãŠô?¶ÍíÌ5wûÔöðßü]ùJ~©÷ù.?Yð»îšÇátBÏ’«Ýú0\Yëq>ÚE@Wgñ¡Ÿ?,™ø“…(ÿ‚¤«d#*ÄHÞ…¶'“qï|:Iýg!?kÒÀ?MûBƒ_¥}1¢ÎVSžvzƒ~F/(ð‡˜ô,MÔ¯bwàLVÊÍ‚·4‰†“Gl¤fy ZŒÄGŠÚLJ”EÔŒµú¡ÁÖÂtè)ë³}žA´@¹ìNµßûFš÷ØRHŠíÈ9_ƺ76ÐäèO'v”X#4ð¥"‚¯È‚uëfãNuB‘%´©x½†¼µÈ«£GšÒb#)=åv®z}˜[µ|}©Ò¨~sŽÔ¢|#4!·zBK¬æâý+âz‹CíÁ,[ÔB¢ ¨UÙŒ¡UîÁyh¦›7U+´ülmâF3ŠÖ#4j‘U*ätÔ¡Y‚m]ê¼y¿ëÖ"_B“#*™hÕ •Ó“"Myë´æFþcggØŽ“ðÍÞÁÁÑ/p3~—ö.¯&ÉcDšÎ&hÆà`«›aW—£ïž<aõ¼2~$7V0Ö·#4ëÈøžŒyœ—fZ6HÇíÉp\g˜Ì¯Þ¾Ö`DáY`+Ys¢‚ šwâ2‡€Æ-^ýhµ¨Z-øE0KµÐÜÿ)OD=’Ý 3-–[ =!:™¥ýÚ‚#²Æ”‚7ÖkÅ"i/®…b÷l£`²æZ‡·ƒégøßY¾í˜Hiî™ÕéìÉ”1>Yãˤ°ÍÚz¸†”ÙðM#)þüüG§w«ô<ëÚ=ÊõLÕjÈ‚¢²FÏ’GÎO¯%!e¦<›f¸“eÜŒþ^ƒþÎÒÑšd]%¸Òæc£ô,-„Þê1ÀAÓû<7”ä*}–²T§-{üà:~ðàúÑQK²)Bm9sZÚ@ê^>“Åap@ÆÀ3eT†–Cf0º¹¨EZ%n¢*wsá¹q÷_žiĽ#*¶l$Eƒ¶Iˆ¹bÄhOXé {ài#GÔÚµª¬Å¡”!nsX eJªÆLWÍ-QGÔö%†næËù ¾u„ðSµQêE§ä7]må±›Ëf 9eáj~^H Î÷¨Ô‘]zsžvñÖ˜ž!Vìj‰½ëOfyÖÔ¨q`îÂÝZI?p2b7£ÈOÝ×í¸ÄæWÓ$2záë<Æek5û+-c=þ¨ýbk«fáóù39—”u¹Ë“SÃÙ>AÝaºù'‹Ð?üù=ü•³0:8þ‰õôÛoéLÃÐ^Nj>MØ?’ÐN¼nÞÛÎ2Òº"DíÍð6î„#4_#4$o€-û¼SÐ!.ðèý,Få¤0Æ¢£e©Ÿgr_Åñ¯ƒlO¥•h ;ƒtm}öÙ,Ã8#—Yh‡%—¥]š%zI-›u‚ùyA,›*–¸š"F²—eÓs#4«éèƬ{Sg‰áË’™Þ\ÌÞb†çÿÄk‰NrRA«çßdˆ3Z—¶Ôâ£b,#ʧ縦º=WŒsRá¼#4¶&sî\^W”Ó{•ü¶7´D ì> @…üV3æå—‹§ÀبgyÉe˜ôÖ8í¨»°9`ñ<<Hô-B’—Çá=OO#)éí;wWB.{‚u8g`çš(%Þ£é[ÖHž¥|½èŠi"M#4ÌQ¹«†]uïl2(Îó÷úÀ@ówh ]~áâMjh˜´Òn>ß¹±™3ë\ôB«0MåH+tYAoÛ+: &¹ÕË55Yó¥0ô ãrÑ,õY6Z7‚‰T%00ëýŽl²ø¢&» ½,¬ðSçÊÚ¬Yðt#çÄ6¢ü,®ûGz§NH—4H½VM!šé³87º±»ê£€jÂbvp¥Ö[Õ÷c…E`O™ëI~òMa¾“HÇŒOqÄÈ{ÐGšÓ5ÈzÄ»S'ßÏ——*yn9&NíØMDzB‹¥L+r&íÛ#)˜ ,ïóû‹ì©¨ÇðJ#^rõ|Îít{ª“›xʵոÞ*gÂœ–u±Qàc‚±£!ÙªaUMJšõfE .±¢é^º ˜M²{]Áþç]OI®/ݺ±Ø»»¦¹^š&z’¯\3{A†ŽßË£ÆïÜu„Ôøx€âP·2šeÌ=ª·Z#*(0’¨³’2Ü»ÙlçƒÓ¨Q#4÷Y$‰ÃÐÛÅ©=Ä= —`¦¦çûÔ?7‚¯‚^*qãNØû£>&áßÒ£µÍf³©›ŽXôeî+wEÆ"2÷y6½½+]ù¶“‰ù"´¨´ ‚ámXÑ”ÓÌzg±êÒvçP*œF§v'W|uÒ¤3|kl¹íÇItJö.óµvçÉïê92•å°j±˜Â(º?o´% ¡òíÏ,ü{gh5K•—U8òYÓ>º-Ï9—2c¾ŒÞî‡þsjrmkr]Z“²ªTð¸ívÍüÕhp]jÓ‚…•ÊZU¬”téTdAí%’.p}þ’œÃøñŽm:–.NÙµ¾:M.K/N[Þ^>qëvË“P–uÊÌ:yQ·›5+ӱ¬#4}•?$åoÂ$sr{TÊþ«÷6:sï[;ÿæþÏöm›‚³PA̽Ï3ê“ð^E&®Ð4ÙõtsvµÐyI~€þàŠ·4×ezemaŒœ¨Á™Ó“á³~)l=(Ð?ÿî0³9¯úìns4¢ÃÅ+"£HKý:³GL Nw5k‘©Ì¢¦=ö˜¾-#)iêQ›'ä[ÃŽ1,+MÃKåðævˆ®‚æ ÑùO,J”{´$™¾Š®³Ü¬Þ’G-– ù;·Â2øÈœ"U—D誤≙S” ¨‘IÝ3—Aú\åÜx¨X¡Û|$=[\DÆÇ…¾´½l8* u5ÊÈG¹«œâcc—3Æå+D‹dž“Bwl—õʺ*Oÿ<Q´<#3—Z‘KÛµ mÒ½/©°4¬C¥ôK–’cŠÇ’r]-C›—ßæÿüž'Þîþɇб0™˜¦Kœ_ç–˜f¼ˆ$gJlÅt¼Ô>‡´ŽI}´h½Ý#*¦7¾‡æZcsý/Í·o»~݈jzÓˆÞoÄ>üðçð¾í´›ßWå}ó^yÄ=4H$¿éúÓŸQÃu/`÷cßTáh˜õfx*ÛX„5¨…YoÚõaèÁê’Ø9ÏEÙ§=ª•¸M¦Dø͹eîËFéÐA‘s£L[†#ûmÃÆð6@+Û=ž…ioúz'K‡;'§îBóqº,éä‰Êãn‡_wí;/#4f)ï–‹m~CÙ³9`vKœ{íIï¼å@Z°Ÿ«Ä²ÉÆßYžeîÞÙg:Œzl½#ÓQ¿#*›ºIã3´ü^u#&ù-–Oj§[[""ܬYÂyºÛ¡} X»2:IŠát?Z^䨸5ž}ßæ}ÿÿ}æH–4´™S¢vk%ÂùGß"Ác~CËåùEVrî™ïóZ%#*¶!‹=UŠ›öU;O = þcÿøxo·4Ý`ØJÇcÆh@Q¡î²Ã鹈ÉËKK(J˜¹Z#*m56‹Û}ÛÛëaj>4ªWÖ™¿õSßUoüîøÇ®ö›Úd3öNýûkDp5¢—Asàã+3yì#4ÉînØþ¥²ëåË+†f¤)ägäÒäÑÇ”@ù«èÏëºÉ£xò8§Û7/ùcšÝẸàÃ-¤§ü^ži.³tß›aîÑpi$¯é®>áë¤a3Lõ"Q´Ê»ÝŽyu/ƾ6ÂuÓ>ȬnÌlæÖù»:+>‚ÔtŒ;•GD¬Å@ìF™bÝΛíC|›¡ˆ.i„uô=ÞdmƒëôîÝpÜu#4ÌE„§<CP°¦—ÈUhñ õûÌW±±Sb¯N¥#4Fïå“ÅQ“Ù¥7¨x.1†lJ']à^O\ž¯é!M ³ÂèŸf~s'¶¹¨B|¡–NdO÷#4¥ÁØ>ýGë`ûÝzyá¸ï·^îyõšÐ5}òR3gµJ`BÜkî\<6ãœøW‰œ6a©›BÆ©Y?cj“%!õ±.=£í<ñµ¢…ô|‘¹ï|ù9±q¡e“ÿ„–M>GË„>êfÉ{鮆3<%ϬôWœ¾#4³h]À†Æ×kØŒ¥R6›#Ûåéµ_Zë#)¶P×/Ûþó–NÑm€#)Å•øŒ÷:R¨pjŪ¡#*㣔º²Yx“´¾Ö°"”æZÞ¸j«TE }?K|zÅ8úœŒFi¦mÖý×o÷öѽnQ'̉;G¢kTJÍö¸ÄGâ;/÷UEÇ^^:ØŸÖ#*%j‡”;s©!³p}Ð=ï®BKRµ#¯äT~•Êú9×·¡æè~Ý&žJö 4ƒÃ¥ËAÓ¾ô³–¥7Ü¡^ÎÝjKwH#*†kª><ÿ§‘ †ÕÕèD4â=©Lª5DÙµ€„-b#4ó)–0h“[–\õ¼îÆ\µÔ-ó4ù<MÝÉ°¥,˜€»ûGZ¬R£~An¯æÇ$îKøD+jÑBDì¢ÕuD+¨RŠýÝ<·‡cÅR7,„åÖçÿ”Y«äLžÓós1#*÷Ä‚šß&À»Wëj4•ú¡q7å«Ñútæ ðU‚¶ÙQš{!i”š©‘悱|Z*xèk@Þ¦Õåðì%†Eû£¼‰‘Š2ìú`8¾¡Êyü;¶#žE‘vICe“™ÊWëüßÙþÐÎn~üÿï¾}’ÇÿyúÝ·_íÿ¿üù¥#*ïë0çYùË–¬öf~ßvrzœÊþãuŽÜØÐÆs^Ÿ‰¤ðtt/l‹°áÙí#4¼Ûi¨a…¶Os¸=*¦ê£×r›uò—>ÚȘ–Æÿ0ž›á¤ûŒûÀ=ëÿñ·6rëÿé·]ÿ_Âú÷Á?ÊÀÊÀAŠ¾@ÐÊÄ’IÔ2Ìá–õaþ=Ÿ=~„·^òꇗkkÈÅ!4#ü‚k±ñ#*ß% ÛK€I›¨vo†á³~džz´€ù›Î©XåïuFºƒOÃÀŽ¦Ü÷fªÈªÏav±ù³ú¾L‹¥4YÈEH‹‹µ¤’&~ Nâm7²‚ïù°#*ĤÈn§‘c¦(ôÎ<ÊÑ0Ëzxý²ûyìÖD¶>áXÇ7l]›–™ã¾”~Õ&-—/´ÄkA9nŽÐ>j0¹ù}FWõUK:dÎ-Mù—_Ùîv}èfü’}\o»a´"ì»-·‡˜æ´ÄM¥BíC{< `OËXPKA#4åÛóJ±:j;ʃC®ÚŸêÀ9:VšÍeVyLÚY:"„ˆšÊ–"K`è{Ilu¿l‘cš×˜uØ|¯_[Œ#i£Q!𠹉E‚â2‹_ìD&¦T? Zö&9³Òh”©´šJjbgiÐô€|#<Mô»8wK'¦™a-ìn÷ï±p¾ó f8¢ig‰Ýº§#”©¡5õ)%Ã妅´©ÖM*Äâ¦Ú’DP`¸qÅïõè_%€I4V³f¸Zh5cz¯—êŠÖ¼,d3/Ó$8°‹¥N³/þÎãÿúÓö€ÿº¹¹ùÝWü×/ÿÕ¿Ý•"²i\8_F³V‰gák¡,$ë„#4»Ès¨M‘¤¹"/Ùå*!äŒÀ)E¼ÚÞÝ?!×â~ÏPãKŒmJ,e?^ÓnâÙ¬Ð#ècŠW:€*í|Ö³`}XûvcÔίÊÇû‡ÿ¾ÜJ'²ñ$ÿêÇ÷¿ÿóß±ûßÿ½ù]ÿ{óÉ×ûÿ³ÿëŽr÷9ŒS 8‹Iê,10)K-Á—ÿ&ÅÔõÒ‘¤Óº‚øHÑ[ž¤#WA>òêȃة}ŸBÕûúΕì äoÿâ÷Ž5ñà1‰@i-Lø–ÿÂ`¾%?)ñŽ‡ˆÂ!#45ÅÃ/ê\ÈF¢†mj¦+üÌ:íAbG¸ŽŸ¦ýæÔ©sŒt,ÑêZqí,Vº®²•¬VÔÚ#)˜o˜^º¿m€[6:ßÜ~ºöÃ¥4¡ò“ŸWåTù$—ä,΢2†z§NgLÅAN.ksk~ ãÀ*Cf8h¸ÄÖ°Á$.Ó~"]°¯GïàùBÀÏ*ú_èþ·ñ$ÿ{òø»¯þ¿¿ û_…ÿ§Ùìý?ÍfîÚ2›Uº€By7»#)A¡`…¨Ù¬Ê#*”8Çý8?PPµÏä Š^%ž bŽ'(ˆ-sÁ_½C|áûÿE§…×ï¼ÿ?~ôx£°ÿ?úêÿïKyÿ…+GëdïÅÞëdee¥öÃÖÿýµ®<k¾Íü5‚ ä×?ÁßH€ßfkôöÝZ+ú¡ñýJجÕ×~ˆj?$•ðY3˜ž£H” sfk¿Âúõ æÚþáÙÉþáéþNôomET<”DD_í–…àW@÷ø}|r´³·ûêd/ú#*åŒST×F±¶ƒbÜ'»Ùi–ê¶Á.A©¶ö’BfaÆíAk7€t\c=L£5Û‚zô&–ÁKg¤/§ìia¶ø“á¥Õ7+z7HÌ.…Žµn:Ê©Ò.Mf6¸D#*QzXƒ|BZ/¿ •™Óa„ãŠ4U!/?ò`€A¥B;cìY¨7z±Å{dj°oŒ‘vÇjàÞÔùåk“)7”;'7Öj^n¨ëœÜØ’òÜ,*¨aåb,Q3A¦—Ý\ÏQo¿k÷&°èبû‡Q¶t+¥‹©œ„òÖ†³cêM`ZºR}ù…ùµ@;¤Æ°ß>Æar#ÌΤ‚½›d¾š)ëiï¨öÏ1M4îQ“wÇßV³•Õ™RØ÷€ó#)TôܳԱŠ:,¬ßN<øM¢nÆÒøë†La´ŒòÀ–a–”Àà`ºAN#*Ú’² ×JWK2P¤²@4³£mžÂ¥åŽª bëWɯœÙÀÿáé<Å=ßÌ?8ŸÿÛ¾ïi^ÿïéWÿÏ_ÿ7Ìâ쪟Îâì.[@ã7öü{åP¹ªéA<‡ÅG¬¸r¯Î!.€þ°s-Úm“+äBp<€@àFNwNöÏZg{/ÑÚYBèÉÕw_d•š³é¹X€Ä¶°sÓ#*H£1ô)‚þ#*§P“Á•]Hñ)@C‹à²{¾µü'Nßá+Œƒp½=¾ÌÂf°@Ä2ŽCûèñ2Û6A€+³Þi÷ûXV 8üèúc•¼yŒ¡JWi¿Ÿ(#J‹Þ4¢e¨n=!hŽ–‘9-B»jº}`Žò‡ÎëôŽDP–÷tá±{‡è¢Gtî<#4Îo°Þ”ÊLªüß`êy+ço†r8rÒÊ:ãÞhb``(mo#)³pŒ¾Ö¤‚‘¯‘Ï^Vchû¡“ôÅ3)[ãÈyÕÎ\ 6ý¿k¶M"ázÁMO°AYi)‡#*mO1šü0Ä9ßZb^/YÌÄWð[† ˜ÕÜÐЋÂÅ×L‰ÅXI·ˆ²–ÊIÌ‚"D÷R5Ž)9Tˆ*5ô£ž=k@ƒ×̇„3â"-`ô¤år*+L§=©d¢ûý#)!¡`àÍé-ˆÕ€O‡í;iÉuÊ‚:‚ÜùÁbHÙÞÕjé65§4Af~ÿ{¸vßFгŒœý\Ñš"MÜkÄ/=9Y€²ZX¬·n©Þ&·¥éÆu3q‘¢»»v›_pmQGKÒ[†¥ÀLyü[³}Þì*ÇR)‹vB‡äabî]{œt±aTn‰UMî²9Ê;©°½`4Ožb"_°ô¢}@´ùˆ¬®j.>šÁ‡ðü”å,@ïbqP[#)v—º›kÄ] j¯g=mz[\˜“$çXsÁÕ½‡:*,ÕΤd¹ZÇVT#*2®:$f‹G¯NkL+Ñ#ÃPV3#½¬EÆai2¸pd¼dܧ•Ÿ$Ö¾Á'³ûæ`íçO¶OÞ´,M• ,ÚŽÚÜdUL‡ß‰`—plF1Ÿ·8Ì!¢¡–¶B¸þNû‘-M¦#,F¹ÍY™NP±|…¢|»ì©ÎoͲ)Ù|³l/cÒ€,MŸ2.•O¦^È,%V´*µIE$|”¶A†uý–h§M¶›Ó hÞc?¯6ÀÂ8#*†ì×”ö¿äÜk¯VT]ñì“/U&N4Ã)VÖ„*UñêròêÐVÅóxE{v7,än@ÎC/·î5Z¾N±6MtOWvúi{ܺh³vn‰UDò®îfn46›NÓ÷_‡‹¦•õ.gcÚ>§)Â¥4PïÂ[´ÚiŸm¡7ºÅn±ÔôN9K;I•/:‰GÎβÛ8±y¹½¢„ŠÞ)¨!æºÅÔ„n¡ÂÁpšUk`¤z©¬¿4í°Í¦¬r膗,ëÑM;ñŸŽÙÔoˆ÷L‹îÎeç·0¶DÉ]WW߇|Q#*·ø–—v¦\jqˆÚ–Åpµ3?‚I|Ėu…ØÑ[ðÏU6Þô“ª\qZ ʲ…;y7¶ô¢¦²Çª‘8Í"07/‘óiÄ›Ôpø³ôÙ&/x#4ë#*.†µð]£ñm›€r±à Ü£Úƒ–8ÚHYN‡Qf.×ǼG7æ¢;MÕ3;ס٤›ŽÇ%d÷÷0u´*"Ëní|i_ZªqV!%¤G‡Óv‡°¶µÈ=”l œ&IjÌb¢Æ³G$ö³:œÔÛM{c.Î0‹åûCá°æspé¢7€›sZ²ãöBösa¶g#uÐ;ó¼æqœk óˆ‚Ï1…¥:¾«Á.iܲj‡Þé2¨8²ûšc£Ñ¸7@[3iCO ¸¾ÐnJhÏ4NÚýKÉkàOY ]ä²w“ý[x¼8ÙÛÃ’#4dÁäªEáÜ_í>\톫5*eHÇôÛ`›×`ÜËÇŽ‹Ò¢ûŽE%ª(3 aÃEEÐÝ*µ(Ù?OövóUÅxWÕdEM9¶zu¥Y´‘|ÔØΆ®ÅMvÉ—'qa)ïz™}6 yµlf„ª9D0A#4÷$g#)U-$qk(ÈÙ($K)ax‘„–SÂCŸí]j>Ý€nTjfè[¢1Læ>ÚB€3ÄšŒ§©³ê£3HÌúö`êÃd#4pŸ $/Yí9ö0*+þ§”ÙJŠrü_iYÄ]3wµxyχãNp.U&JqáXÚ—mÿJgÞ»IMUJ8¹Ò:ÙKŽW|M˜¦MË;™ŠÏ W§)I1¿×Q¨Ç†¥³öÍο[d²rÛî_ŽÆk}ìz×qݱ +jÅ´p:€)˜ÄåÍ@…¯[eÑþÝ!AŒ¼GVÞ90ZŽno”‹ÜÐ×WÄ|ÿCØ€wŸßhþûߣǟô7¾Úÿ|AïÀõ«‚˜·rpÐ ^à!уÄóžï})¤vÑ#^wšä÷§îlŸž#4èÚß·ÞfcÄ®8=zu²ƒÊZIøàÁÃuBêXþûö‰#*Û‰›µ.]†Ë£éy¿× X®C˜÷ËKˆ"øs;ìuƒèïÚ)íïfÐ_ÞF˜ri‡MD{çeÆ¥†Quà7/'WÁ÷Á&§Z:½Ë&é#*B:Ô‰¡êj+/åq rLir%ú«NŠ¯„ß}Ga˜ÝgR8”I@åÖ¡·Q&Œ…"Ê?%:è³ ¨Q’Ãáä9ªì‘#)ÙåtN•Ê³”TlÓÖ‹«3˜öû¢Ól`šË–±ŸÝkê‚ø‰üHYìm„¯oè,YL‘Bþ³=&Í¡0Œi( ]94„üU‡Ïq§ÛÓOÈѺa$Ì’÷L #AÌ*0’˜ËCà@ýðÄ!åਗGHÂîÍo^ÀSÂU×½žähH© /ª³šúÖo®á_ëÇS2ðÜuôêý™H…vH)h°X´ü5ÇŒ¦ur)]ìw†,tÏyB¢¨\Ï‘ÿÕ0µ9/ê¼`´wä_Ú¹¡Í#[bWyè³wêmÛ±ù#4ð•@Y‘ý»ö‘i[ÍÚãèò0s¨šüºäÜV">,¾/I!¦äÍ‹!ѵÃ~cÍᬩmØÍ‹xf.éL&’Û´ÿFà–F(špýnÒ¨èC‰Î‚"j/w[¹£^OJýÐÅ·¡Æ{ƒ'žóõiæ\q ÆqIR×Mëm:ûÈ^cÜÊٌۮ÷ÌKRdÝdóªrX·æÚÜh~¢ÿÜqƒk1~Ë^绉ķ³ûBÞë×ÑyÉödàw°5æ§ä"ê]ÝDêWÈxsnǪ£xÂ"½+9õåñŽDø™vûTIÑ„+#)¯B‚¨’ùT9Oª<&Ñ(ê¹£°o퉥_ës[ŠI’I/úUÕÕ¯$’sª,ÒÒ{36æ2d#4+ÞÙy›$ÞÓ°î®ñ=Uì”…8œþ#4Ä/ ×óÞç8Xê\£%øCÈN~b )×M{лH•<Œ™`Ë< boñДPÍbHP9Á‹šSä?SÂ|VCR©MwN>ûô¬*µÀi)©ƒ,çËÔœaYþc<Ÿû·8@ÓµXˆä¸âI˜Ï7aTÚ›†R¾'çú4™¼#*r˜˜¿ƒùN3.´LãuÐõ—›é+:è*=#)ʤD_1ˆ§¶ïM]ë2¥v :̬“\‡ÙU•ë3åhÒ$qdMHÙœrþ9×3¶¦g&²oË©¡ËÂ(3¿å¯]ÖV&¼¾£» •ÔžsË|Fòfø¸ŠŸ&’È‹Ø9ÙCeWÛÅ%[·;ƒr¡"åΫè¾mÔnk’ß¿(†ÄÛtœ›˜útÔÅg>ጥ×ßQRôŒ@ïÝ-¸““› ó:-–=øJ4àò¿6 Õá+ˆaôæVXüúß#*ƒÄÔª#)㙲‰¥–ýk:„½íŽ!µg…„bÎaZç6×Úßsj.üå!…ÀLFL;¡?88,™ýÂßËG—á÷H_½NE$úYPŸCõö`ÒºìÏk,GŠÙ!‹Ó#¼mb“ôº5íÛ ¥0M¥–g…(RãrW¿åœ´À¤#4ãRáÇŒ.ì…ýñàÕ^~\&„3Ëù!ЋaÚ ¼ß,Cà¡6W+…ƒfðiÊåwò™Œq¸5í©hºQó#4ø…;B«çž¾ó¢Œ¢ê%ßÙµŸr¸àß'¤[ËÚÃøQùÄÞÜmzÚómã#Aͽ¦—ŸÁš¨áf®[Iª?ÝK¦Ìžj•²re‚ߓ☙z°—FZ6»u+ò8OêV¤¢ž8¥«åPÏb®²Ý¹"Z¹›ZwØ©öð>žöÍmB¸RÉb›\-3cÂtˆ;iã¼»–ÈAÞ֨ݹn_¦INV’¤”YóòÖ•ÁS¸Sº”+É¡7ì—2•IÙrØ86±Ö>öV³-¯?ƒßÌFxÿN ²Å\h¾ŠEÕ<«]Dš‡øÊŸ§šÿvå*†å–Îå¨KMÝåt´ÄIeie‘µDëJ»Ð2Úî2·p)nÖy×p“«Ai¸ºÎÛøÈ#¿²Âi¼hÖþog¬jh}æàn,›’?±™Wþy{÷h‡6#•°®Ý£ª1Î)8ú™µøO:¹$•ZŒög±é¹,»,ÌGWTÑ-S>åJÔ”šåût]«#*k°?¼Ä“‰4æÞuc±xÁÉRjü¯i¸ìÊY™Uw¢ÚœÃ(·Ÿ[“¢ßm£öLK°Î-·ÅR ÁŠüÍ2c½Ô{ÄŒ´~:z¹§¹"#*¾ê#*Ïå’_–#ÑŒC„ƒ‹šk6§–ºÙ„ÂÛ”QP|¤Í™s³«†{Ûa¤Íà#4ƒwD>ÙW€;±uüYI˵0ϯ«ËÖ´'#*]l]uøâŽUîeÁ8%Æ.Mó›6áæS“ì‰<:À)a?äi±%GË”©é{6Ê/8Äp ¾ï4~!¦®!#4rßä«ï`êÐ\Ç1Šùyñ]ûbÝ„ °M®’ùŽÉl/nUí´kÅ´ù·4¿nÖŒ¬œœŸØÒ¨o&ã4©ŠÆ‚ÑyùIQÅE˾’±·*4#*Ræ‡ù(.¾Å[IzAïÛ¬“µÆBÄ›¢ÉkÔÓñ|ñán>RÛ8gÝ›W<|`k]A¦þƯñ$ôžˆ¯Â¤2ì•NiŠ>"Ü¥çB7»,ÜC´À€GNé‹3xÐÔ‹Ì¢¦YT¶¶CXk„¼êG#4[Þ¹bœmçEã¢7†#ªvÙéÄÁåÚZÔë‘Z¾–žÝÏò³tØHzʃ«oFJAêœp²î¶ýÓð&MŠTáÒ#*[O¼8g£8YKS¯…ÅO¬ÔoÚ°Ÿàj&¡åÇѪ×þÄ]]NN·Øµ¶;L3¹âAk'Ãà¡d&è3vê>)4_$…kQ#*FöW]˜‹õ+*pÐÙíém4o—ç^S?²‡ÊË~ðÏÛ›z-þÚí÷%‡¸4Üðw#4Ç#*3†Í9Ô#*Q„SÙb&Þ˜ÅwúMíçÓÖIìŸG¶yâû1IÂXPçY7ôÜ»äžÀ,Üm»ý‹° ”W¯®*t+ïØ…Ö`×_‹5S`È`¸bv@,a?mÿ¼×úûá~ë'rx‰noèÝØ:7–!Žå=ô<“k&²YþÒÂPOô$¶ V<˜óA[îBÅ8ž#* ^Ø\ôm³Uø®:ìŽQ¸*}ðU1´\ÿQ}~ø×{ñßKðÿ=yòUÿóKÃgYóÈ°#4›)DØ[{,ËÕIÊ XwPÆÛ!_jVöMÞ6Õ¶ÓAND6 oÉÞ»VéàÅžl§ÓeU€ÉêÐMÀÌÂÂ<-®S…P©]s³<,lY³™6a¢“4ƒ¿£Iô·Ž®¯½{¬3ؽûJ(¯°HëŽj΃%Ó„9/¾*1ÐÎCà®29ô]€Ëz &]¥Ó˜ê:åö)‡ýÒׯb¡pÕ!îÇîœ|½Ž"ïâXß–¢œWh4t?Û;9LB¡ÍçsÒl:öÁŒL)F½ÎãGØÍ»Çû;Ü%î×É_p¤ reÀÇjVφa1ïDòšjZ#4“#4íû‹³<h±‚!Ϊ`ˆ¿#*ÿ÷á¿?nÝÏÊÜwþ?ÝÈÛ<ÝxòÿíKÁÿ„mC«Îå®v⪖^vñ”ê¢Ý[Øïvý>>K»s=–vÿh¥ÝßÓ[i÷w÷Uºûç©T£7¸Ž¹ÏYéîb®Jw«•îþánJw?““Òîos?Ú]Àùhw1×£»éx4̯¹ð¿Ðí¨þ·DZòy%#)óÏ8ýŸîÿO67¾žÿÿûïÿÖÅ5XZ-sòÓS^[R¦++ÑqÊ@±eìÂxÇ#4ëU róULGO\gži¨‡-+º5ˆ~Ù~ÞÚ9:|¾ÿ¢õl#4¼‚®Âe¸ÍþcïÍiŠõ:½ÑÙŠ¼”CO÷[{/ÏÞ´ŽOŽ^œl¿$‹ÏÞ`ÂÖœø£=¾ìÄAç#4fëƒÖª³†&ŸÆý5°¿oÿj_\6þ*V/·wNŽZgG-”-3Õj‘›úV+܇õ1„½8|E!èZ¿ŸÓôÇÓ]#43Âh?L'&xNLèÑ(˜`„Ç1á(Àد÷øÍ~íÙ½=Å_öà³7îÑçöþkøjóGkçÍ‹_ö‰dçî!ë0ôåé›Ó\Ø+HSù„¯§ßÂ7åI#)üP½ÃŸ÷OŽ_îžÁå~§utÚzÝúyïätÿè°õ#4=Ùû?¯öOö¸A˜—ϸüÓÑáæ]$çÿ9|MAÿpëp¤Ý+ØïÁ|çîlwúáÀZ;ǯhÈfÿó´õô[JÇ?‰Hû¦[ì=†ßÆmIÔkÓ÷Mo”Ñ7þàaµÇ#4¢_L»?ºjSýâ0ôb Ää7…O®¦7çJ¿8íø†ÓodèGLPÈhø.¸\ùÍá%a°¼nSž³ü“[òô®¹%ðƒ[òø/œŒ~Ù0Ä!Wü}E_ä’ëÆ?Ãøƒ’¬‘“PÐK;)"ëgÒg!ÎâÑAZ,~Xàú{3ûþÀ‰©q¢&(N¢cEã# ú¹Ž‰â#+©a†o߆ôÔñ]ƒàÀ„G¨ÄûöKˆbéÌàŸá¿\ÎKÿr’ú»«p5£6¶y)£ïL9ƒ‹-Y5ÅÌò죻Šµ{Ú£!\Þ¶ûF›-g¶šµÈJSqþˆRÛüÓ*æu¬š‚žeq!¸>3TôrÎ0 9³ÆÖ#TnâÏG[MV{…”_¢›gúùp?Ôê³C‚L½%ªx(mNÃx8±ÈL²ÇtÈTy»ÌMÉ#*,±è$C’ÈŠÄÑ+’»PËšç¸, o²ÛNH ‚TûÝ0Z´úp=aimIåû‹uÂhã, I¸ö.jzÕÐܧ_¡GaS4g,–{ð å²Ñ½eS2;rÅ#4øv%Ç–ôçg+qW¸QV .mÕ+*²žMºI®vŽÀ~±¶†ÛÀŒºdFåzyVAz-Œä®SsÎq¸~mü;êuä{O¾S©‰7ge³WZÑv¨«‚Ã}1nߤï†ãëpË)ëv5T«¦ªwž»#4鬬ùOËÜ/ßƤZ‰M7!'¡kÕ‰µ¤•¢ë}„Z‚LZ=ND'Öýsbjñ®EI®ÒLOçg³6QYÎÍͲV›§ÓnóÍz”¼‘Ê1”ËhžQlN ³Ê\Q_=ÓÆ&;ª9ø3ª|¦hbÿ†æ"þ£á?—0:3=Ëêz>Eøí®biáÐk|Ai‚P_–í¾Š.¨YI4$ÜËî2¼ÆÊ¿ùp)ÔD:hWÝ5u¨#§‡Uð/)ãàüéXì«LÙŠŽ[øjÀ çÝ#)y127šéP²¹$‡Ú—âvâS)iù¦wýn+gº‚gãñ?^ð]Εë;]_®óO|‡Ú¤Ðrý®Á%4“"M`9€kOÂrÒJLȼär¢µZx3ìÂDçTX%ó›„ MÙTëgä˜ÄJ+µ;“þ]#)l"Š¶*‹ŒWéÖI)ÁÍ4›ˆ–—Ó’váRwÝ}M¡>ÄÁ|ÍÄ躎Lž%4š˜£šrS&X¡“æ–¶:6¥0}•¹©gZu~`!ypyš®W†×¶_Œ~biå0;§êw)¾…t<öºSJX¡EÓ’2,Òé¬AUÙKRªæÇs]èE5“’JG,GBÇ4ñIÜ\ÃU~~aO•¬V,Y‰¤?ºÒ¾Y†?vÉ!Zæßq´pk*_Zo·±Þ¿‘Ò\Yqç Ý?”u͘ëwôø„[‘l[G64q-²d]‡hMøˆoJ#*Ü»ŒèŠÕâi¤ótÅÊQ:ÁÈ°µv`¡¸"¦¢¨6ÙîKo…ñ¦2““T™ãM‡×í#)%—;£1‚7¼â(Ä+«Y²¹²ª¨G~Íð¹€FFœ³èºa©¬ÍdsÑõ‡šÜ¤ÅÞ@,SN¿nÓ¯KúÄÔzÎfgíi<}£k:)'&«Ý”V ck¨rÅù¥Þ´%Õ™‘UFm|v©˜#*N,ûã\˜(±¤Sf›6'ÛZ±Î?æJÌ° 8{hÎj8†‹ž™Þ læ¹ÌXPï?ðs#*:¥žm0—öŒ£LnÍ”J]7¥ÂðÑÖ„@äD#4¦žúŠç`èq¡/ÛqøU²°³/îo(^È@.Œ€Ø°u˜ó™‰(áÈÑOL‚qËÕfkþþȵ4-UU½%'¦}´dL/cEÉ~ºHØjk¬[ìoLÎÞƒÚýâüÄjãô´®Ý–NÇ%bÄŒ §d¸åT䄈œ@yjáŒ#*¬CÞLÍ-2µù‰©„¸¤Øònò…ƒüG¤mvgÇ/º,*y³ {¤<¸¶î¨^ÑgÝØüÚ¾´[¦‡ép‡ðq#/붇ìaFéäec|mGûžeçÙ³½vmé†Ù‰Ã7{G¿„¦&XþÞ…`‡mZŒy:N·ÈP%r–XgW©}Àægd|.ðØÛ¯Þ,!¬d6í 15lnä[–ß½†±Y}êúXöFäTO›ñÅ‘e…t%判ÔïÖ1·u%NRÙmAö`’lÜ!°…‘T™1’Œl¥v9rˆkò–%&Þ@—´ºˆfÂ¥ÞžÌëøuLKŸsêÍ6“òa|MÖ`6qBZdÊ|Y•¢–‚1}J’gohÿô}’¬¬æ›Tv=ÔÙ…•0LîFr8ÅáE/…á0ÓaWó·a¶è±_F_ùéÛ胘ŠÑ#4`ÿ|r„Ú÷™ÜLìow]€ýÄ¿+@€ºpvÓqï–|$ðf- l~«°àßYìðz´mb`âQãU×Y)2eg¿flÆÈCÕ™ÍDR 1JLëlYµØ_µí ³¶¦ô‹œ!e˜W¯ñ‰í”Òª¤ä÷úêNK»c\WPk#4`Ÿöü7=JøA8ù%©Œ$Ü!ùžråPoIõpnúÕ¢L—¶8š¡L}d¨Š‘"®¤`ïwdÁg«ç¶€¤Q¬nìªT¸UÏÏÙt›p.q‘›p‘ųPéà¹í‰÷¥z'\«ÕJºû±DÃÑ(V+4^º‡ÆAw·3‘= ߣc\»åjÎÞ¼ÔMå©3õÀFø'Q¾_Íž!Š„2´MÇ,‡,°’ðÜåõâݵ½ŸåÒ4?åJ-ô#4Wg;}¦{díCdÌ®fõ+`Í$,#*°¦ÉÍ@.îpÒº2ÀQHþklÓóqŠ&½îIáZ{=œdÔ×@±¹\-í±}Å.D¸¶fjÚWÛ"j),,µèŠ¥²r™B`î…^;/Y…ÙÄ/Ë9–‰b«Ý&¶8…TÜӛфœ0¹ó2qÓ…Eõ”O™<ýÏ+té³é'ô;Ê‘?¿!ç¸=¾³Ž”šŸ* £Ì®P1²·øĪɻ`¾†Lò“ë(Ù½Z„¾$ËåÜ–Ù5™l‚æÇ6‰Ù ¥MB—¹pÈË;Cq»ƒ—+Þ0ð,lÄ\°µU¬NÒÂKCñL3ÞÛ#4Úíš"WÚÄjÉpÆDMÛVBK¼©àº‹/k¾IK®£r§™ lšg3ÚBUxñµRv@†®õÌkyS³Û$úPû$±t™@¨ZàÝ)á¯h¾•m5#4|¢!úsÍ\¶NÉÒÓÓ;;TšÑæ\s”<ëM#4W##45çC³$._'¼Œà•Ä @‘³2¡ÅÞµk‰m¿I@Et¹ÓÕ\@£ÂÔ‡Ë÷SƦT á*x4ïlÜ‹¯@ŠÂ}t¶ãu†RPšRÚÃqyE/kI¥“ò‰+a¶ib#i4žôøH#ÆæN¸¤É{Drp“.UÍïF²ҀùÉŠqCчJ¿O;¨øò]Hv®ú¯XeÆp¥Bæ*ìürß+†¯”Ã+jôT“¸[øpBùcÓLù<8²h? œ„+«ÙJ¸êÊ¡8—ŸS¡O7—„- øU×S™$ãäžç×ú‚Þ™Ñ)Ë]1ïI\èݪîœßm¿½æ¥]“ëÇhÁ—•Ä«ƒn2n©‹<ŠÑŠ¨,4¿sex1þ´qÝW‘:?‹æðë¶K¦ÐÔ/*aTúÅ}/ÇJ|—n<‹˜ê ¥‚‘»ÏÑÒ!î“ß¡H£‡ú翅祻࿈{Ž(ýš”¸7š`Rr=вbûYr]ï£v®õ‘ Åa½t½¶øÈ-ˆË¡ 'Uœ}ß'öfáô§¹#4•¤n5SF©¨»hD¦|ºl›´9#4Ÿ!Å.‘UÛ¦©£ÙµÍ{D©©N#)iUÁß"%g(*ËÆÎsm^æǺÊ1ì8çnb^ZµCyÅKà!}ÚªFDœïä:¿·-Z‚‡÷5¿[B‰ÞÁûaÅI`˜Ye‚È ûÞ"jÞ ì¶`ç8Ù>yÓåÝ7Å0ú#=gßåJýòúH¡„«fáÄ`’O½0úÏ8ý>ÿo@W”Ö×¼R$x»M›–Þ<,}ØÑä·LçüÜDÅWÊÙ¬°]—¿hïйª@´s?ÍE)¢c˳?&ïBéaÔxk¹ÉÜÒ`ö¬µsôM€NŒÜM&üuê—¦h@MÃâƒ~¨êuY]¯{ë#ËVÚIi•`“Bï¦&¼šm0ÌDaöQìoÕ0t6+úÂYð¦ánªéÝ–§‘fE 9Ò€©¾ÉòRŽ°í±Ûy1ÅF.ë,^¾s¡ýa›ñ™¹¨ƒ&¡Æqtߎm2X#4I¶jZQŽóö µ0K–\/Ÿ*+_çÚSº‘Álo ÊYDÖfÀC™%˜f¾™¬‰—xp-(14¤™aØžâäÑóYÍ#)+ÈOúOôBÿ5JD0¦/¡Q辦j®‰ôÑ)Í¿£ôÍ[Ÿglåµ ×fÉ-Л#*N\£Æ¤¤îÀ&‹ò¸·?H]á+ÈI \½‘ª¢¹Ü¸ - ù`©dÙNöÖpÖÀ#4mÚšûï*ª¯¯º¦âzÄKXˆÀ¿à–M¿a7‰ªµZqFºBHå"'dà^#4"+a_NÛã.þ˜GÖÝ7Íxk–÷‰#esŸ0§ÊE)PÛ0//¡•6—Oÿb36¶ Uµò®£†NuP+jN#k°ø €Ûs̨<tQŽœK¤a¿PÚ^‡œqúv¿FÒƒË4n ‹Êá#4N rÀô®ÑçiЇkÐ7Áƒ‡oI™Y«ùý©wàûÿÄí3Pþ¶[bû+Š¼Üb^83f¹ò¾rC¨ü…áƒ6®f\ãUWü²VãqBptþQ}^¹|}çù‹Öóýƒ½Ó¸á;Ùq0O)ãW©– ËvÛT~‹Ô~©#Í&õÁ«‹½D‹`Î/›×Ž_ãSë¹Ü:>ÙCËœ2çÜ´â”ËÞ*xdÉ¿Bäfÿö »Ü(‚ñ9ïûç¤)e›ÙR;nÅçÉ5Î÷IÑL¾Þ#)F»™œ—‘ðG¥Ó&„ÄNÊüYh®K’P@i$Whg\¸*ažc¢ÉNE·@V3úÇÉÅzð:Æ#4_7c¡)‡CÿHïœï+&eþi*ë#4/%©i©Þ#4VV°òv°âÖ‚¾@tÎœuGÐ1™Ä„;ÇÇbŠÔŽDwIÂb2Uš‡v÷YŠ³FX¥æ€ô攨Œî)ò`wn;æ¯#4¿[=ä'ƒr|?—Ãu#4;a¾×ÒQ+(¿‹)(N;ø²c¬þ{öW§‡RbÅh"À¸¡Ý—hœG6²xámÞVÒ3ýµ·í8þWÞ,@ÜßlÄ$)àwQ‚rIk‘’I,†Pê|}uÓI:¾Á¥>!1Ÿ(ÑÃ-ñ!à<;ìt„!ƒÊõ\-lµöÏöZÀ*Œž%mK‰á–—ö] °æQY=Ðq mœ`jâ/_í´Zaôý1:Šºã#4åÝÛ>Rei}§S o¡K8D_FÎÃ^gÔBT¡ûª™§AÑéßµ5#*[?Ÿ˜try› 1:ô!jÃAÿ.ØÁŒQÐñ\]—`°ÒË`g'´ßþO€˜¯~â Á°R×t´IgÁ´½ä?T™¹è½‘°d"³oø…GD›CÕ@Rl– UÐÈ“jìêωúDz‡WÃÆfÓ>â'ë‹-]³”…5þù´‹òBïvÀ¢ËàÚi´•íÅÍõï¨þ=ÌžÃØ1rd,°mùHm†B.O£×ô°Ûôë#ÒÑÝ>>>ØÃÑå[…•Ÿ0¨¢@c_ß$0„³yÙHÙ3Z¿’iïà¹Íãgùqÿðù˳$†#\öKúeÿð𳑇‚,®c„žy¤a=*u_›fÿåñÁþ»û'¹–Øp·¥ò·WB> ÆItl·Ï©ÝM»³>«&§ªÎÎ'bËÁÙ;¶Î{ƒ‹›I-?,Qå”C” û'B ²åçlH‚[äÆ60ãV®YDˆ)¡1kÂeñ‡Ð©ÓK¥ñÀ5Õ|AÁaÔ4OÑ=>8Ð`-¹n÷צ×s;;Æ 4©AREk²†ý»ÙŒÊWÝÕ#4â°›ö?‡ã’¡£ªùÉ›±ì#*ŠpµêÀvv›ö1&÷*P]ŒlBŠ¾^îp?SKøñöÙÎO{?Cµ 7´ùÐuŽe™õ<‹Ï“üK™ú~Ûñ ¬CP!ÅDû°ÚxeÿÇ—Áëƒ`çáÎÛµ·kõÁϵŽ¿§~ö¶û z[§oìrú^‰#eóاÉ8Ëy^»ác?ªg)B"@²•Ä%®A;ðÄ‚vÊœ¤¬£˜Ðï:!RÒX´<g쨊<pT;ô9¾,ª¸‘×;†Ñª˜Ï|ÙXþüÙQÙta=kWíŒÞÙÒ8ä‰Fšl´ªTT6éå²`¨‰€˜37¨‰jv‘Ö™,.ph}Âekíê¥ 5ý¨9rÉS>aÆ°÷mµl2íö†õ?üú6[‹~¨AàGƒSò×Nôkí—áøúôj8‚Ѓ!E?`¢¹³5ÌMÈÂ|tÖ±z.–OÅš‰3y#)J§ ^ÛYk¦ÝÔùÀÕÒ}À1g€1ÈÇ+gtÖ˜(V<•½ŽßàÝ ÁfÖÛÙ:×%4þ<;—“R××VoЛˆOý’¸d“ÖËÓ˜Y¹Fû†žz0·ÚwÇ ‹x”žÍwÆ;[ȯ?yuØz¹Wâ¤Øó|ºÿ¢u¸ Á{—~D^ ±§]“BÌhqz°3R–5Ò¿;C¸ÚÍ&µÉpÔ²þŒÕ¢•>â.ä¢Ejì»;¦·ñögAA4T“/‚J%¤t†Ÿ°Ï]Ò`áã5ý–ˆ›iÒã—eœ+”˜eSj¶¶Â/Tš‡5áY\!|"¯Y{=2¹npÒfŒ5Á#)Q-Î.I4&mÁÚ/Åz7*Nq(2ÇBpQª!¨4€šwaSkCg6—We£W%îc{K~CGôQQÄ„#*ºÝï›4EBóªUåþI¦Û¦8#)eÆnš¹ÕéE±%–è/ÛA#‚ø”èW¨jõ‡k¥¡‘C"·äDƒ,2ê¢ôˆ‹2I¨N‡Gg-XuÚƒµ´MZAŸ¹ú}Â{ªH”_}ªß0ÕÓW;;{§§•Tmsód0„™’/Á©×ÞGÇÌETÝ:/Nöö½íßõ`¹JžÖ¾Óó~?QŸ|µ›SÃþÉÂU¼ã_GVL«ÙGq‘vGÕè¨äR—©bÜ£AÁgȨ=®#*Ïÿ™ŠÅ_áôP:¡×i:²hfb¦n\IJà_ÐÐ\=sŸ·Ç¨î Æ…x;Š²°/HÙtij.÷ßGüz!#Ch¬”5²Ã£¥ßoqG›m€¶Ë›‘«'Èo+(]åÑ@ft;ä7þš¡2µño#”7l¢Y9ˆ[TTBêG²Ö=†ÌhÂ%@’>$ý¶'J1™ìåtM¥Ã›ô¦Å5Ôåè!õ(V{½ì½®6Ñtmkm&Ä6›ÉLã¸c…s¯`¾~ïL˜ó’¥¦oÑè—‘Ö ïTQ(Rç:ÄÊ‘^Àñ:Ò‚XGàXüºFîØ-—€{îÍ…jÉ#4a¿C%g¹*a“ŠÐZØs'£—rÂ`e5XŠÁùG^ÜÇÃî´>JÇ»~ÜÃ,Nû8ËÞ·õ†ñÏáy&“:·ÉJ‚«„#*¨~#)äð£~ÞCVN!|Ø=›¶1Ö±ñžV‹Ê¦ˆ™–u˜ŒŒQ7®_ô§ìÞ"·!†ëÏÌÙ†û u lP[ã™sÄzÆs¨Â´¢ã,Æ=¿E›«SaõP2fuIiÕli jꆱhÏžìíÊYÁC»’˜~L–£íA@Õ1ÞPÅX1°s•çEöŸ<ÄL”ÑNOxŒØÑ꧃ nƒÅ>%½>i ÄXŸºbs¬‰®1hSà–h9çÎUV16ÊÕ«^öÈôTNºT½9„Y¯C}’U¶°ä¸§Øj®€r`¡ðÁïˆa#)qŒhÕã=\Ú¶ð`åu0á#4׶šO"4G½K¹ö“š¾ÍÉ••DŸ}«u¤l"ë ïºH©y‡ûÎN©;9âšLSÐWËÒLÝ$¤·kò®®Ö5ÅùûSú£È;óÏwéúž]f"#4²Ü0ð°Ï+ÚÇØÖÅüøƒíÝ¥ VhýÂÌ÷ÿñopþ¹€ÿ¯Ç›9ÿß>yôô«ÿ/Íÿ§¸ã -}ŽPÔÁ“³˜¤Î/&¥UPÑì]~/ÿMŠa4›†õÎh„ˆ´ý;CõúMÏFÕà#4ZÇ›J%œj` µåExصy¢FÉ—ÅȶN’S#*ºÀÅØØÑú τʸfn&sã¡)M#üšÍ|Á²cÀ'áŸßþø!øóûí“t¹…ñÛè—àoy”ÚºñÜÚ?ÜÁŸ”Ñ9òÜ’ŸBš½ƒ~øó{øk‚hg† øë6}®#*z¹D;·*ÀìîŸÒ¾?›À5ÂêR™Áµ:±Ó£ŽŸ®€¯¹î0þL±T+W”*Z·¦^Åí©RQ÷Ó3'¦·îïOàÅ–“öHj¿#*]ûáRšP#4ùÉÏ«rª|’Kòˆì%=(–‡¡€„ÌèÙîصüœ#49í`Ða[s£B,ƒËÀï±^Ĩ©eÌ ªYöÕQègôÿÕ=Ÿfÿà¾óóQÞÿ×·OŸ~õÿõEžÿq™pßM.8óŒ£.¹ð×òßüXûH…S›JæãÛ#)Å¢Sz#ǹ;Ì3%¥#*)o?{t6ä …ÒÊmžŠ²Bh¬Ff³Ñ—Uö2 ¡lR5ʪŠvv^»1fžE—`åŠpUB/¥ÚrR5…DlÒ©ï2>ÜV¨Èš¡©`Á0½³i.JH'ßâÈᚦ1‘—ß#4‘ê³µKS#4¶-f®èŸ:+þ·ð• y‚HÈ°€÷ÇW§-:Š_´ÎŽŽPßûùþë„»`nÊ—G»{ ö‘œH…J”š!ÿxðj/ôÎFbSÓQ(éC°¾.#4î%±RcLD·Ý²$XUL ùĚЙ|T&»Jû}~ß¹Ïë·uy€]—Ö®s—3FE¾ðð«ßîÿêóŸ7ÿÏÎÌ?ÿ¿Åÿòþ?}ûÝ×óÿKðÿ=Ìâì.+ãÄm'¹ð<ÄÞ8õ$6Äøó¸{»÷„ø|Â]ìùät>ǼZ®žAØ¿ vFýi†ÿ-cñãA°²³¼_f.¸8#*{Ýàø®µ?èMzí~ïÿ¥ì²ó¯.ê9>¨«ˆÒ½{܃.¿_‚ ÊA(Dù5‰L˜‡ä‰îžž±wR{,»ŸV#4’ û¶±ÙŒûñH<†~ŠDÒ»û§g¯ÎöN[û/D „ñéö²É”^o —xŽ‘:(c2|ò¥ožÉ-†K¼—[rÐ £;až$ù d¦Úï“oŒÄg˜tTÃüæì§#¾ýF|ÅÅhlNENŒ’7‘¢»pÔìA~©xZ&õCaeýÒrLšOêø(×6Ê£?HCN9T v™¾å›oS'‘ÆÇ7Q,ÛgB(2çQ!þÓ0gO.&£0g†Òè¤Fö}BœC¼:;Â{öxÓÖÁ´àñ#fyþ¦e~v Íd¶²=ñÑé_¼!Ž¢³+¿_Ý„NN'–§žB7;ݼ§Øì ;D“aR {cE<pç]7)ÐÇiŸ}ÌNƽÎubô~|x¡ß\vy)eö™Çovò¾5FwÆ:F¥:*¦êTwîè®+ϾÙô<›|Um…P‰WšÑkœXO®ˆD@Ô輋íÈÏQ~úô#*y¤îëÂñU¦´D¡éö»iØàÃ#íŸÈ(v‰0‰.þjl?nr[†çÿL´ÍµµÕVÚè¤÷®Ó†UŠ:ó*Z]§ÿCØϫT•fÜ *§`ÖûÔÖC]îVˆrJöžå÷Dˆã{!0÷@ìCø¯d²˜I´Àj0DPW2|‚‘¿ ¨LZ¥X¾VDÕèî^H«Þµæ‘»•; §¶™›eÜ•“Y½ßž:W<\QT¦ÏyÓM…ùlµÚ¥I¸Þ cäâ*˜¢8WÁ|ôbSc°ÍB5ð(tûcß•'#i{ëèøì?©Ÿ5—+,,CÚ—¸Ü[³‡:UŠHe\g2¨ *×Q>ï%ž¤bj6ùŒ§`µ&+š;~³÷úÌÊä8‰Z¡O{ÊpZ3Ø¡ç#44°9Û;9tLyÈ(ÆÜ´;Üœb5Ê«B.ªJéV„牮‚öƒQØیƅ¨lC¯õΧ“ÔW%ðø[;eñ݉eîŸj°ã²ÑE`Ð&÷b'ÖŒÑÉSÛ!$üÝB³ÑçöÓ›sRíÒÓƒ>×Ä{ùãÞîâSRç|ÿk¼hq‰ö3æ[PfËË$à-¹.)e+ ²æÔ±‹óÂæó.fËK""d_ï’&²Á¶]¡²é#4lµ‰©ñS®ŒÆÈÖãnm5‹¢•U䀆Y˺1T¸ƒvÎwÓ~ÀiáËí£Ó×ݽャ7¨ÉÛ:Û>y±wÆ”Ø v”錣ŠnÀrW4¨B%µb^0†«1×#4.™i¯µ¨Á4í“bÝt0Í°¶Ìý/XáÁZï¢ áÊví>¨ºµöcÝgÖÝ%ObWí=1:ZVðédÆkÒ#)rJ°ôpn…j‘RÌÈý^TŪṓ$+á#4¡ÿ !&}EñD…+¡Š‚¯¨šrz‹:ÑÎq6j½¬Û»4:¤åùHÿ,²Ì¤Þ¹ÃÌåP«0õ³>ª}A_a)Ú×[f")Š)À_`@DRÆø›¡£Ìš§2à?§'†"'c¢l³È¼$h››4Õ¥ÕAà„1Á%ŒÃ8§Ü&“ÔTÝSs‹Jš/Çnyãg“Ï×t8i?²á¦Ùæ"ŸKç%W´²¡²õuÆC¸÷[1½Zbfœå”ÛR*ƒ¾jµRÚÃÈP9EaôàÖ…€Z’‚ú`±t8MªRj;-±>0Š¦¡/\ øVèq¡€,h²àQ€">F§¥ä!q‚Dx˜’žðîWg¥n\3çÓÀôl–ì ¹5¨ ':ì눇Š3ÝN#4ÒˆTã‘d-ØÒ^Ž+Ó™Æ"{À†l½è8JX^·=\ƒ“«ñpzy”‹Æ³å¾Ë#4î$éßØq¢²Õ»Å9c`)˽|toxsé÷ì]ð'õˆ0H¹>¡ýšzEæU–eÕ´[Kÿ¶õ."²ÀÓ®8Y£x¥¬.6ž•ˆÍƒ¥‹ëà!,h!¸âÃ-+¯ÏÆpÖÊ}ôrÊ[ü"¨%ïæ¢7†Òk—N\®Å{ö ØÌVºmÚ¦å€/Máþþc«P&Ú%CŒ»óÞ q--Š¸G#)· {B ™q|ãKïêÁéQ`æë™áŸãƒ`ÿpÑߎßàÈÞáö{ÓŸ¶Oövƒ*¦IŠ!¸k|œ›Õ2—( ¥Š—2ôÿ £"¤$Ú¯‡áŠvasÛtÌåɘ´›´_a…ÏÝ€ØÅáˆð…ÍTsúµõ[¢Ü…‹L𨾂=ÇGÒÀ£4a¯÷³ø.BoLøjðÿ€_¼§)ÚƧ§ž.,¬'zºXo±wΕÕ#*¤b¡±DòGóˆËwe@è,©æê^¯3dKœšÏšv]ÈÑ’pZ3þµ9†p,¿NðŠ0˜Þ$a]êUœ¼2ª"jl=jFeê#*ãÇšÁ}ú.#*<ì«™ Y…âL¨„#à#4^Íntê&k^H¹9¨ÌJl#*EçvZ/GÎKÞ§QlI'F½-[ZëìVš~t9°)ÎiðÙî*ɪý~cöhã;|õfìBEïºiA#4m0ðïHŽûy'ýœã5˜ø(Rt–ŠsL<ävvíÞž¤‡hâ›-Uè…«Ò†¾£˜„ …n‹ÅS6â³j'‰=¡b²Vd"n"¯˜Â±e/ß<wçÙ{,™9æ7*v¤BQ¼µ‰ã†ï/€'°Ò¯qÃË(FÎÕõÕ–ÄÆeE{öYGl6ù¼ã…w…FË0^èXam)Wײq¢¤×jîbÔ]?¡ßuŒ»µÌE#4?ØDè'Þ7þÒœši³™=Æí~’æTý¤b˜cfKJëAM€ÎŠ=¡W¨»óaIÙã6Î;qX“mÙÖÔœ÷ÍØÆI¬…7á¼ø¶ç‹[BÜœ@•éUËodfÎç"-®Ž9 ÑÝŸ€5¾ÃµÃßFÊyŠ°¸ð”¦‡H®PW*o(¥G=ŠºM¾¨2ô¼™;bßvÎw¿‰ÛB~CZÍ)“ªž(.*6·.*ÚÊíË6”HÀëvLäþÈÀŠ/ÐîãƒÒfc𧴸ßZ6„ ç:úcº0O'Vö¨˜jSa ógæ§BPýõûv•®{E‡©þ1/¶tPPgqÝaÕ® ³}D¯ÙVg1 WåõÞ"`ÿ¿BàЫ¶©äëú› ö®7xüè÷ï&][¯›T‰`Ô,ÙL¨ËÞé$N*ÐNÈ1ÆÝ©0åuêŸþ„3=8<:ž½:Üå^±@½¬E½0ÎDÙÉYRÅ×g; „úi\¼W½}¹vcS©7óÂÆ Æ7§Û^» ¸ÌÎÁSÌÞ'a–á5†à(9ìTjÓÈ'l“Qß—%v^®ûIB˜Z[¥#槤pýb0\GÙg²Þî÷ÚˆAà\Vå&Þ£:¯©‘pôó«$f†Ÿ\)•Áj™ŽZ¹Én;+Ö¹žS+Äp+#4Í—§?ïH7äzè>M¾Io(^4RåÊzÖÏlÒ¤Åb½ð $¬c9#*¹ùµ²«ö8íšïGú#*sYØÞÊ…þ»vi1äCi÷‡àÇñð:5;«‰ –û‡àE:É]Ãwß” ädN$¼éỳ}Aß$jžï}ˆ#ãÉtDþ)XneAø^u^¡6 0¯NõöíÀÇÝ‘'A‚D膀_SgEÈ;kTW.i¥H¥™)Ê(ú‰Y„^K##'åÒ^ç1}”$OâÞ,WÞÎËt6J;¸p?Á½vJ—>æ?Ø·Nƒ½šÐ#E lDì¾6½¯GMÉŽjÄ.øÛfä®5,Q:«Jz–pt”;)‰“5¸/‹£€ò ¦Ãèóø ¥å;²Õ#4#eHoT#*ô#á°ˆËsÚ×?7I¿TŽf×?nù†XS¬ðÞéYL£\JV+½ŒW|mì.Ÿn{ÜÅdÃ$Ëcâú‘›×ªß_§Êã@,¬VÇVÂêzœ,¬¬¿v¿ÞˇŠ;i¹eçªîqŸ¹îVHÓ£pa_ˆ×}ÛŸ‡%í´ž’I‡è£%O2ø“¯„Šš€yJzšœÞD¬Ù<7¦¨ÔÊ`;é]ô:Éf|ú óþ,µ0³Ï4„¦3ÍFœq&©áÀ@Å-9Y?)LĶ´’ýÉMʇ'±ÙÍæy1í÷ݦuÓá{›Õc£¥äo‹ö„"è"ïf!çƒQÂ]QŠÛgjlÞ˜/_vØhÑ"‚gI@î_Ñ8RÅ#4#4“»@áp¬W¼¿‰\™=ô41†ý®9¥pl«¼¼ìì/v_Áälïå1‚¯j£¸~µ³ 3£æo‹ï˦ŒÄšÙú â l®1¼ù BÔU;lŒ”;Þ#*Lp´,ÁQátp#*<4¶®©à‡¸ÂÑovŽ^ñzìˆf;½6”›è/áÁ®ò›×C¦A“Y<è!TñÂ~Í.]†Ãt@iY¦\49Y“T>HºfÍûÑÊ#*Š—yCYðíÑöD¨ËŸÓðŸS»Ê÷W*{MfŽdשüpÎAΦ‘¥*AG›ô¹Êäï?v–ñ>³ôgàÉÁô¦öà:rpúÎe0hä¡Ó'Ö$j•\Ô5{#)Pç^Yökr/õHÞ‡Pp‹^É Îá–—;#*q6ÓÛ„TÇl÷Æï?Ä]%&JoKиþ#4ºÃ”ìû½ìâŽúS4Õ+×£¦Œ˜ã‚9Nq”jçžÿÍ–’ƒB4ü#)œ#4P.yìD›~²rð”6‡S9y{`Í+b0ã¼5_)¶é=šTFW,iÜÓ&)#*5'áFånbˆohø#4!&¸ô=ØRU/·¤‘P%r"c¿På? ×$l'™SÛ¿Ö±Ô¼tCN'{¨Øà,º®Èv#)þÊÇ#4ü"&mÒ¾¬Epîn;«ÞNIÓg²Ô« Äç~$ð;£ÈÛ[%iÑJ$©UÊZ¸¾NÃŽb‡l’p§´;|\Ñ_ë÷nKà{°ŠWi”„bÅl„Üçw“Ýe˜n#)Sµ#†Š5Oá1#4»LlKr7Ã9uºº#*?nH聯‘Ω«ÜðsTNÖWPøÕœÀ&úu›fi ¬¿à³4ß¡§.[qMÎ\•ÚÓÉ°²>f¡PeDŸaEJ•ƒõ¼7hsç)V¡ëHÃÆÝ®Â[²s¢}ËŒŒ#*àâö•dɉƒ½Ó:~t[8ëhôŽ‚5TµÑ¡·7…¢ù¶û¨®#*\ NVDµBã7W1Ulˆw¡z÷5dm½¾¢`|Åÿ`ü¯bæýÎøOž|—Çÿz²ùô+þçÿáƒo˜«£{C¯¦‚â³6s SÀ: ÇXfÄÂøBPõLú|zAF07íYBúd/|ž^öÍ`ã½ï!šn^ ij4¼”‘Y#4:/$Ó~)^(W³#*"´Õc1R7í÷n’]Œsz)Oß+Á”AÙŒ‡#*q½&v.Xƒ·oC‰4Díó—›Ó[V¹†÷V×RK\’ØÚ*èª#4Õ5©ŠÉ€MBä«ãD´…†/Æp눚’î’±b$ÖOL]’-”è•Âí•Ìk6óÃ|æu›/Rgq>êw»OÞ´Óvëƒ|üæ&?(©µªN¡ó5PÅ¿ÁÅ|Cn_·òDÌåZfÌú¦Ñp3–^%sJO¢0ð•ô9ué,k:E|ˆ7 i-ÒÚÒ®4Š~˜`Š{ƒ²7™ƒÛ¶6Û´‰ó¥TVÚ_×#4¡ßÆÿýks-Z‰TzÞ\¼ô47½Áy˼Œ~ÒoÕêJ3Ñ´—£ñ“æZR«ëBÄ!¯ùD{rÝÆ|›MÇ$æ÷ ÜëÈó«‡l(N¥¦ƒ.¹!6kÒcò‹n&&T ùùºiÃh-¬³µ„`^…AO-0ó"•»wí.¾’h3éåÚ#)©Œm#)õŒ.¿-awX7ypA…!ä.ꄶ!æYDž\#*\Éò¶?×ÄQ[ÃøðTO)ÝŠ›–Ùô¼ÂäB¥¾Ø$d¯mµM¶©áÙ‚ž'P¯'ñg#* ÆésY¬z„“g8짲tK:IéóµÔ ¼šÂ É:àȤb•Ô)¶–/ȺLò©˜M*_-?•¥¦ XùLF9?ïäÇÀô†d2Žªpu–·ƒ¢¤ôodwm•ËìÖLBEøUÕð5–˜ñê“MÄã9ñ‡¼õ’40¸iÝ£è8†pÔ³¾FÃQm#²ó‘&4v¼’Žs…‘~YZf §\²²"ÚÕ96Œaj–>&3Hn™ùje¼nÁ¢C»ŽÍƾU8‹¼hÏaX~ɦ7H¸¸X‹}ÜVÍþº¼t9žö®{úà “C¾s«Œ#)=PÁ¡‚X„#*¡#î_Ï}‰7lŽ ßËÒ!„¿ÍIHy²˜ÂþsîÜÞýïòñÿðdóÛþó“Ç_ï_þsοùpˆÛãPÝK&1/0Žíl–”g]®áA‡nÄ–jçõëÐîI—E¹ÓÍâËNÇ€™9«FÑ5XÇlF{äp ¶ e5œŸü ³ÁßÖ?#*êwæzÄ0¾ Xzo¾Ê(ù‹G2çõ†ƒ¿†$\ß_Íè•Áyk€À] dôè»#)—õ@o•N;"P)O\zj“>³Ér„½é"]„rT q?vï`%Ÿô¦x?«J´s0àüIÿðs‹ñÁNº8Þßá~rZ‘:ž• 9EüÕoV³z6‹&B@WÐR™”Pi爼ÜÞùñÕáîÁR,˜&ðƒ4JФôK«+p:#4›^+½ü®™Eœ"蟺ÐÏÍkà_{=`H]¬bf—÷8JäÃòNƒÈn¿O‘°°K¢¤+ö_Û™Fž~‡ÓÉ:爫‡”Y¡ïJ:ÃD*%¼ëø6±Î»ê#*W´¾swùN”¯°ùU=SÒ1¹–!Õø*¥\“¯ª¶íËtý¼¥¤é\Ñ-a0¥ê-êãׇLA†\³Fèýš÷ˆ£û\†S»B¡ÂaR¥ï†ãk¦-þP0¯deÕš¸9àm$tV²ûPu¯µ{³Š.ó#47ÈH2jçãI%v©áßt6B=§°´Õ»M«ê·XìT;Tm×åæׯÜ5†0¿Ï³®3‡iU§Ã9ì2g›?ÿ¦f-2´j¬tq£gûÈÎ*€^|¸f›D>ÏNŒoå…ÀZt/(?²8žš{yeî%Ï}èˆb+2?Ä"92ȼ`|ªôI‘žbpÑ% Ùr}[ü¯zÿƒÑËþ#*7Àù÷¿Í§Oóïß~½ÿ}1øÿW¨~›}©Ò3нÿ9Ç@@à#þûÞ‚€ë"SRÝýþ‡ÙMßhê%+›õÛÉÊ«³çëÿ³òóåï¿Ù=Ú9{s¼ŒPù+8}sz¶÷2XÁfA?ô‡vÿj˜Mž’1íöÈ|¸{¶›=<Ã98žÜ@ÎzwÒ]zLÆ–»Qÿ†"ʳå¥ï¯Ó»g;Ï$–ü˜QÎîFé÷1âYâölûøøàû‡ò‘Ëö"ìC#O)2Ÿq‡@“»Áù]ðKû¢ŠÄiïr@½™Ïþü/Ÿéðèl/Ÿîì§ýÓ#)þ¿¼Ø;Ü;Ù>ÛÛ#*žïìÅÁ¾<ÚÝþ¦ªü=«Ò“'üÇ…j\Þïrï}ÿúök=[ÌO¼aóédÀHá;_«›ŽúÃ;”p¶`S@ ,Oj±ÉªÀhB2sFÕP”ɽ´Ø§m5 Ö\q¢uúqª‹V×jîB¼z‹FƘÅ)óÁ%ØÜrÛìöÆòCæˆ^‰¯½q‚8•‚—MìÍî)i§!5ó¤Ó; p¸ƒò©áÎp0a×»áËvçè”®H”ÁåY<ª¢b-¥zXRÚÙbåšÔ„°‚¬Ö~ðû‰¡±õ4M®ŸñÛ2㪤úus-Ä^è„m¬1ˆÓHZMU¹GðŒ5Ê‚®¬º›üƒB“!¾j*ÃÆ:a>–-/V+f½wÕº`ô³©Esú¬cÇP»žv ©ÍEG46£Ñ´OªPm¬\‰ç0îA»+´"ЛñB9ׯÇÃmèï^‡4ñ2|}¸š=4•{HU{ÈæöË‹#)ÊK™9§#4›qç#4˜vÑp9úîÉy#),QÔžßm`Ù–¤"EZg#y~?YŒox[òþæÏy!Lt?‰}ûÃ]Ë’w´¢ÃÛv¿×Í%&{#4‹ûœ£?†œ`ƒM³§Î[Á‰<ngò~ýÉcí™Qævñ¢gyéŧæ×ØHôݳ›C˜Ï5XhJSÔSzéÄ?ÔªÙRT¤²ëéØ.un@Û½™˜†BÑíGÉ”Äq„^ÌLz^zøâ´úØク½ÿÇþqëåÞçßþˆø_¶"GW§†…nó£oÚþܯÒùÂãFS¶=›¼Žo°él’¼#*cnU6›öÞ8„ž”Dðëƒ!×êLf¹µ%á\„Ûyz5›ƒ'J¡>õé¨-Péª6Ciš¸ù^+íê¤|Î$´kìmMø)Ø<E›Ù¯M–U¥M‰–²çÔÄOhn!ŸçøùíÆÇïˆô9´‚è{àþ« ÷É«rPµù™¢|Eš‡7¶6§«²Ü²,F¿|V÷@Z›Lÿ{ÜÆI€m5ÚTOeŽÀ_«xçDteÅ#*#ñvŸùÐî¨2Ná…¼ÇSŠçÎ$ïS¤à¯‡ïð0Gwj9×$Ù¸sŸk’ÈU÷ê9•sNßÅÓx¡¶…mW™>†Pq˜·Et骦pµGÕbчá1OZö²÷ÈÉ$€ÿêxIjOjH|TÒ‰ïÆ=ØÐH)ù?DþwÑOg€ÿïGßmü÷Õÿ÷—"ÿ+7 ‘ŸøîS¡Ã¸¤^—݃yêm½ö¶\Ã’òvœ÷z’÷ƒ „”Kàãv˜ ïG¨^&¾¢——€Û¥ÏÒòÒ»n‚÷°LZdëJººr(Ìff«RW®ÙÌ]³¤"³™rG5›-“3Ø+ºé&F_Õɬ[3à9õü`ïuͦ“‘ hÇKmuávAQï`${í6áü[fÈÁ!ÖËÓ7§ìy’iͬò0\+²tDúÃV%Ð’PÕã0ã8Pá^÷ý"ÀÞÀ=ûV›®B4ù[{×E§G¹ÜõãM{é$AȉϿÚ=Ø©9¿¿°ƒ—HJP´,s².\y«s….Xí#4'JQýWæL,ÇL(4îÃ):NÜT™^Ž¿4k0…&Î<áíAéøÏpšñõW§{øÆùóöÉi#„yŠŒ^M¥ÊÎfeIöÎí#µ)ªŽVŠ²ñÉx"úKc«2=^yûö«Þ66ÖÿRo®½}{ÎÛ·t椳ôÏ+±G#4ý·4æ‰aìêéëÓÝ¿áýOPßZÏÉÜsþ?~ô8¯ÿùôÑæ×óÿK·ÿ#×ßÕGÿEgù¢ã°ß‡¤}n5ÂK85&ã6îâ½ÒæŠí«‡{ù—':#*Ü`§³ùIþÙ¾mÏO!¦ü^"n÷|ÊÍ´PjÛöÌEžŽì«MrߣÎòÒh˜e½s¸ÚŒ‡|¢ú‡ÜºøtcÝ°õv¦[Z½œzÕ±!(DŽ"0;B´“¬V‘Þ°ióµØ%s<jŸÛÝ®._uTmA¨E»µ…d€…œ…ûÐIÅïX n®…q¡þqÛFf%<¼"ÒjuÔžs+mqQ¸j*ß|¬_ƒµÕ±AÍ#Ø”‡s¬Ë-z¦‰#42ÊÈCƒtýÕÝ"#)H™FÞ=ßQ#)ù†´E¦ñ¦°;¡žöôÑËãýƒ½“Ö󣓳“íäãðUU2ÔdêI”aêÂíó#)ˆ€›vÞK›Ÿo„%Ê!•gtéT5sŽÁéÚ}Q«#4aµ=`ŸãKùipY9Jè;U‘*UÉKÐ*[—”ë&¥Ã!æ˜Ñ%H axQèÄÚ@ìÁkú@À:Ê—³YgÄÁ²j§cn¡"âÛì«ÞØÂÿeÓA§ó{ëm<Ú|ú]AÿëÉæWþïK±ÿ1£Fý[,ƒ²N§T}¸Ó)1#4;¹äîì„7«ˆ—ÕAˆ,ñŒt?– œA«cãØN§n£¦ Ã:üTÂr•aNg›ÔÑо…vþö¾¼¯+Yûoô)ÚJH«¡%/IˆÙæ#*p&s…Ò?¡4h³ZÂb‚ïgk;[wKàÄÉÜ{ã™uŸ>ûR§Nª§\#¡ÝŒÙQèçXíÚ†G»hw´ËÉÕc˜qˆetÄÙý'íŽj[´È®È±)škQä\?Aëgt¹7ê6áTâhÏgîª òkQ¬ M‘¶(r‰æÙÝ'àÁå1O«<3µ´Îw3Wm¼ùñ/ïÿÄýÎÄÈ}fàýï'Ï62úßO7¿èÿßÞÿ'·£aýêË}Œ¿¥žð:[]YoɱB.ñÊ\Øl‚”?¶g{¡¿¹E»·ä!ÑH¿ÂÉM4#ôG£›à}7†£3Tx¢Û}¬"]ò, ‚DsKk~71qÌJ¢Ö¤Ô+ˆrï &=7>òx%<»‡/Qž¢Ú—}]2KtÚž„Ì‹ä©ÎϹEãƒ\‚úKÒãú^½?I”œÉS§(ÍL»-Ì|ÇÅy®‘ܘ)†ÂºëšH}õ-¿q:gcc40ŒiB*?ÝV½³îwXrÄè£#4³d.X驪RŽ%Ýí[ãÐ/•"Âç:s/µîÝÙ3„OècuhÏ‚ô!!Ϙ“Ë#4v–'IuŸåo0+þrc#Pvk:jGÆxé:¼A¯ýâ€ôíãÑn‚í#*ʅѵʒÀs¯x8<fV›b#ЗM®†0„ÀZx˜Œe{úú3ñãö–¿“| øÕ‹aÒŽ¢#*D¨*z%4iôúí$i\¶!χé•oà??(ÇÅ¢‘M‘¼K#)À-,‘íÁ.Ašâ$õ=o¹U!QÖÆêM…èRi„3s]›q¹—K]” ëÁ)Íë,u¢¤{’n˜¿ßñn‡SèQ`°_'øHþµ¡‹)NHîÕSó{m¢:^-(ìGSæž~œµöÈÌ#)§^+Þ)J×=*"!¬W,0!&„%SŠ'.à#*Ø8ª±¡æɪçÏKoQ·5l&k´öq‹xqÕ½"xy5‰ –_Y¦=üÐgr‹§âÔ»ÒÁÍL ñj27ez%ÞäβàØ’0ýIˆÑ½š˜%w¼Âcx"íσCSp`‘×.«7£"d2ÃöhQYÜ#ô’-;Ó:QxñŒ1 ‰h)£É8_T™ð\ˆIg'V.›UJÒ‡…ÆWFãvÓž”¯…I2•Û-y/›ek•É¶ä“0 TåÈ÷×L²Ö=CÚÔ|ü‹£¹+˜È#)¤1¬j˜à\5nÚ**¬˜ð¬¹åy3(¸ÏËÛžÒb\s×íaô°+êf —8ý®.èÝnÏxBÞ^Ÿ=fþàøºI2½ ”%ÈÐÚîø£Þácå#4O‹–úzjM‹Jþ.©ÉQ/$%ñ¨F4ìxÀj´=´ŒÚ¶½W<GlëdÛ+á:æ-ü#4ÕGJ÷0`Ýt¶©äsÏcB}&;/~&.º6Ž†üf¤ã¸ekþ;ýxI+g¹aCíá4ñ†ãVïhÔ6FØ̾¦t…eÝRýùeë#)bu|ÔÉ°U#)ó‹l¨#*Ö+b‚b¦0¯4f ºÉ£ðªø©âI#QTGúXÞ°×BÞOëãV¡¿»¬ öŸã±ÓÊu¸²rý!P~/$÷£±EŒ¦ƒ±uýAÀ,ŠÃŠ®R`b&ä¦ÙUg´xp_ŽÊåôÛ«îŒ÷!(û–#4U§6«‡âÆB”˜à§°”,èˆ[ÉØ\á!‡?DÒàÜgÍÝ£:›;U®.{ËlG¢…µŒÜé«LP)°m‹Ú‘ ŽÐ¦º"\ó•M‹_©jÙ(;•‹û]ÌÖvÍ–‡i Aâù“C¯5D^Z#>kÖ4u¿êzQq¿¡4]ú°k¡É—%Þgr“ÁbÕÊ<¥GÍÄC±Bì‘ VAvTÍ|TféMdwùvªß˜µàå*Ú|ŠÎ½3D;#4v€šŒ æXxÃ<¬h{%qÒCÂÏ.®Ïñôv…ãë.7'3Tâ#B¤ÔØY”§ô:ç¯ØewMìÂÜEš«‡Aëqz{è%Ø%˜ƒ#)¯Õ\¶áœ#)lžÉÔ[“êrØ`í¾c#)¹WÈ6êWîRݛԕØ؃ÒyÜo¹‹Y¤ƒÒKÑÌGH͆=Ðü¡z-M6ÂɦMà$D»P¡m”Â7ÃÉF–t#Ñ7ð$ŠžÒ;íá²ã i"fM`“#·–Qª¾Ì´A‰±"F×Ɉ£íï(™Šû5>ä[äÄn‚Äõ(ÒP–‡^‹C1¶öÞ¬ì˜C‘cP±ÁÆLÕj“Ø…Ö/,ðî 6[½õÔ6^š+êÙÃô£jNcHzѸèÝz}àvÄWÍØyI›g%{’?(eû3Hw4¤£ÑMRBÞ«hKWÔlh.Qw‡cË>Gf˜¡ HŒ¤ÁHHÓlü¡1Üø e¬³‡xMÔ±YöLµÔõyôNÌ°bóMNlVì~^ìÁÌX©ÍÞ+#*†^2m^ñZ˜#“¦Ü3(_gø`²ü{ÎL–4‰“¾q÷RgD‹¦;#)Â,z6sD\)šeMœl£œïò)7Jæ4’Û#*ly;°e¯ÙÕ²ÛH›È’ç´®¿¸%†SÙÅ/¸~T»ƒÑäiÍÜI`C°îŠ¥áü8·ÊLâlC€Ø£_8e¹K"P¯Ñoæ#*P„bÅ…ÂÈdáË=dž\j{ØEÉ>'>ê¨ÛŒä†ÒqBN…à—PsÅ0ÉC–•„P4Ƀ"çÇ"Õ—ó`"‹2“L63åõ¹ØŽe¾Ê‡œt*‰ŽAxéÎâ¦rmuM/Q!=òY ‰ŽT@«å/:aÑ´aÐ+°'-‘ùÏ€¼l‘@(íJzÍ#4˜ºï§m‹7•ÉͽåK<ã-U¬|çrýÀ4XÂ8NzÀUDZ%)5‚MEÇ+FLN“I×ÆqÉîW‡ [ûº/,åähç©Ç<¥2ç„Søßÿ]þÚ?÷ãÿ®?~œ¶ÿzòìé—û¿/ø¿ŸŠÿkiùäjöÔ°7DŸºá“þÛÌÇþÝýû¹4p~“úÊíæïÃõs:r¬ßOÕÊÉâüþ¡(¿Ÿã×Ü\ˆñ»á÷Ä÷u‡è3aûÚNcûÎé‘L‡ü6dßOÂõM·}Ncú~Ú#4È ùþÇ°|?’¯ÝWBò}ŽïçAñµ«öÙP|aø>Á×áýŸ‰àk—’Eðµ¿æ!øÚß#ø¦s"ßtàC|èZ^ÎÓµÌoåçÐÄœ‡ßûEGó¯§ÿÙo='À¶ôGŸõxÏùoã1œùRö¿ëë›_Îüä“çÇÂéÙÉÑák Ì|÷ÆBÖÓŸª{1lb'§/骑\µ“ØLg1転²ªø‰c1§åû*™ ÖËö%Gž®#}C˜)„¶ ÛS% )=ÕÔ·zm½EÉJˆû“.ûŽ¹R:æuÓÕ]™Rã Y•Trª.ù›TNãýÓ½ý“R2©ñûYüöh¯Z·µLöDövHF)˜›8å@#!‡q©dU:äç¤ûïvThºÀ®TZÝËvBŠB©¶DNjV#4°îÜ–J·†Í8¶nÝ…ô‡ˆ¾lW¿Ÿþw›£æŸÿ´þí·ßfðŸž}±ÿûKÐÿ”zûQ`x9›}º8§ó=þÀ|Œã?ÈXw¡#°.Jïcý©Bÿ£¼w¸ëÿCw0n'¶ÿwXùûßÍ/þþÊø/xºÈÓƒÖó]@;b¼%›£\ò+ã¦ð‚ã¦a5VÜðâ_ˆÊa¼#4ŠwmpÒìž(q}ä¯u†ti%i£°kÜœƒº‹‹«) ÍêܼB#*0¬“Lcl,ð”¤%Т4ò,—°%'qTãdõÂ/mÇ9µ_z±õKÍ;ŸÔWJ_Ý-oòÜí@WÝu;þ¹Cîòotï "ðW,¥î¸ÏïXL}Gòê»Ñ¸qÙo¨œ*+/‚ódåëàΧÂÎ?¬Ê—ýݣû—ûgowŽïvߜܽ9{{p÷êèðìîmõôtçuõlçåAõn쿼;©¾Þ†øŸw{÷^ýœ)ÁÞ²²ÿúð褺»sZ½ƒ··ïÎöö«#4hF_ÜÁêyRQAÊ1yÚçë4—Œ{i5B(â£èÜðÎÆv™‘ö³=.5ÂTÈ7Ñ0J¥)4Èÿˆ¢i#`žíפ„qôØy³*»Ù8Íш"Ù£žN€<>ÁájÕZè.ívZÍã2›\^‹“ãMe®—Ì·P=>‚P²@[ñéøO9¾u4à1£ä"Êväý+Ξ<øßÌå×Öþá.>R°¹þÚ’G”W8¾Âƒ ¥{6|…‡¾¥}yð®*ˆ¹Žâ¥I™YvŸÃaŒ^1Ž #*þl¨Èé’ÆegÂôÄ…óy[Ъo©ArH4š‘ßOnš¾Ar¥“]a“(µJ$¡LÝT°[iˆ]"I4Ò6Pf2äÝ"ôO-¯œ[\¹ë9>Lÿc0%lé?Õþ{ýéãÇ›ûï'_ô?þ*ò¿E€G¬-Šef(ae¡C§Ü¥Æ!j…”[¿1h%!PèêÏÕÝøøèúϱa…DEMÈ%—¯q·ŒP‰ö¬Ý¤B“Ê„åÕé6ç'•T(I¥F7`&iÓFòÂô*i{ÉèêEtmJŠ÷ °7Qg¶Œý‰»%k¢ðE¯íµ“†ô@œ™LæÆ…ØLŠ$¶dKÖ#_esš·œdßâÆÛONì¼%NaØkÍ‹î±Åö üzwWãß@&4Uz¬3.ºÅݱ<’XU ΤîOŒéövÎvNŽŽÎööO>Є•’½>|çñ赆Í)2zèìk仺ž›ÊåÅå°£¸vg-&‚ßi£ç—ÜN\øX€:PD§.ºéNtˆ²½±³û#ðθ))òÕ9m9Ú¥†·nºkï§ýù‘F-žÚÇ{¯DJ8LÿÓæ¸g”¹Qa!/³Œfس'ÀG|ÁG‹¹UèY°ÑBøq§¥€‘¡óY º$nOæf¾£Úi‰ÞÕÍ°ÐUª$¾xJF7Ì{šx m"ðé—û‡øˆœ5¾ZK)2uñ`q«+üp"?}c4É/Q4íA…vŽ‘u»F¨œ•9Ôþ¨×žh4#)²ÎY/,}¸‚å& ˆƒUáós´ W¬’R6†¯Ft¸Åô©#ZÅ„ ¨z‡HåÀÞW”«³Êt„ú·e£õe%Z>hÓ¬%ýA. Ⱥƒ\‰”Lÿ9i°º×üáƃPøfž-£©luœ~Q>#4ˆ<ŒÃØnŸg5c¦šW'ÀvºX±A;†óOŠ*S£º“)-äN£ÛCy&*¸÷ºjJY˜üµ—¼\¨È}†'aÂ#)§½Nmƒ^Þª9zET…“"¨z@p¦Öˆ'ÂÜœ¼"Ña¢O¸}C'Öiу-«âíT^v‘Þ²C6a¥,zp@ò.ÚÞe÷¦ŽNÐZ¨X.s2(û¸=k`ß›ðèë7Go«EA¼ô®ÉF}D–2"PB§ø#4H½hbñÑ‹D¹‚ˆy-§t~eˆ&"[Á9quÛ¸šür?B}#*ÐõcpͼnÂÖ(n«ñʯhNßghM‡H°ûÃD“ÈÌeÜÙm+ÔÐû׬dǘö岿ª<#4MÐ×OÓA#4åf.'Z¢ÜRwzQûç_ŸÿZªýò±¾œôCØðC+³@œcé†e»;Ö•ŽTy™®²‰Ìõ•ßpþ뵚›þýßƳ§ÿ/OŸ~ûåü÷×ÔÿoŒÃÖ§ßõáÔ]๢æc¥ô¿‡”ýùe!=µ B{Êõéàâ¶1e§´¥"[puÝ{»çÝlVŠA•7Òxä6: ¢Ágs&¬KÑÖB¶ïýܦ¸š’{JÝê¢e_¥Ú£njõ$‚GzO£tî+;ÙþánÊFÀQÌÄwGõ^â(k#)ŸM#)´mÀžc€¥;¦ÚXÀ(Ô¶´Ö꣆¿÷¦º³W=‘ë–V—³—4ñ‡îä*æS&&}ƒ¼Á›Žê¥7{'ØÜtY¢[º—.xÜF–7ž20ÛíÂxúõ{/xièôe+áY7ƾÐÒïÙQW_Hÿ˜éúÿHþó¯ûèÿ·³þ¿‘ÿýuè¿+ò#$C%÷˃„v¯‚h§ÐFv#4Åäü^ÜÃû7›\_J 9rŸ [ÖSå¤içô´úöåÁ~_Nª§GïNv«äy\²@•{AgI06©ÍYFÐGÛñfŽ§M¼¿k'I,¨˜¶Wͦ¥hʽ·ÁÐzÑB”Åœ§2žÑ½:UH°–ü#4Vˆol${u…7sìcUyöW+ÿH}/,Á”C¼ª”CE 7ÝhmÕmjñÁgAå?ûhy¤Ê€ªÑíû$ßï-4!TµSa-?»ªä@ü…‘¦Ï)Þ>Gþ›¥o¡›©ª‰tô¶´5`èsÊÕ˜_ªT#4\Û 3Öù§ŒÒ>tù"An›£©¨³è=ŽcU‡GÔgØ_ÿÊ‚ªØ‘_ÿʬ%(Y⨢ò”ßKôMž“¥gÜ•#r‰¼õ×fó¶ûçè7ú¨µ[÷ñV]<¦Ã¿ ³’ò<F7•cZ¼¬·]©>Љë¥ÂœÈÃf°VåéB:\Tßbä†û§Ê¸ÝiZ··Äu†Ùu[#*Y§©Å[Bî?#=´¾ig϶“f¢ú‰©˜å²½™0¢ Ó#*†^ -1#){#)#*÷•óv=ÔøµÚ#!ÊG¡ÔLd ¸1ÞúÓp*|ÔOí¤y+óÁ³†f€™>äCÇ¥À”^3êë;} *{Õ—ï^èN‰b¤ÒË{uz¯×]¥ÝS}“?ˆvr,òRGßpj®ú•~‹#)†%×I-=%¿2âHyõQŸ˜gœðÚëÞBâc2ܺˆ?‘.d]É›.±ÐõQ£ùPÞpл¥.‚É»ï}ZŹÂ# ¢ ¿ç$&k¾)•µŸêH;Z?Ü7]áý¾™¨fœš€Ãfjú#*›ÙÉ7lºSïh×™xÃæç]þä˜õ{ÀäÀÆýÁ“ã~‚½ƒ¤e#)Y·ÕÐ÷y«ÿY=88ú‡ïè)½Ýe½$â'øI++÷ˆI†‰ÄÀVSÒÌ$†£a©"‘òÞ†ÅÀ›¥Æf¿ÅÜÜ#)oÉ¢¼ÃØÕ)„'´ÞmPøyc«®ñ#á¸ú%©¨ë8ò©×8,ÊÑáÿ,í.Î]}¥®}?†GYƦUšLœQÈ)æšN&f.§ïæ`Z7Iˆ~ë[¶šèøjƒ> ,_0`€‰7ô/ñG„DÈñoʃ1Þ")‚þpRUÄÕzê»"ËTSl±?U•T_³x‰*l[%'"îy×Cîm#)^E Û\†b˪ˆYó¡|8©Ó…j>w׸»ÑÙdñÄVl'ö½öÄN†ì1ª!L-¤<¹e¥ìNÜ?ŽßV- *Qê"#*²®3<º²ŸAÞ)éKEuÈK€.cɤ^Y’þÒ;·\¸¾\äÊbtÒöÙ…@÷øÿXßÜÌè¡Hè‹üç/&ÿÉhýçcƒ„„ó…BàìíUI…ì+Rp÷â·§»ñOÕ“ÂW¬ÁN¾#4«?œy1ñʨÄUjõzìL$(|…Û]Ntø€Šñ+KDDð#)7Ãn+ð~õ„–}ÿƒG*0…·;û‡¿£ZÜüßY#4ÖGoæø#)¼D3ô€¿{++ðrõ.,qTüöƒ§Ÿo~ÐÔùQIgxQä}Ùr#*CK‡K¢ÉP‡J¹œDX€ÞYð+ùq—OÈ#)M”S‘窾7ÿ¢OøDÄeøSÜVÇ,E1¸Â_Ÿ„I˜„"#)x½\³‰a_sÓøïtYŽe Â>× -‹ÔÔ#@Í_¿¡”6]È^‹èDçS}²¤*¢ä•Ê!û#)µ‚$Æéà$Ö3UR›ýwYöÖå~(²>§h»:~NbáȤSÂö,ÐÙØ•PÙ#){é‡p#4—Cúëܬ°…ˆy0i,[Zw,öméÓF¹2#*~aÉ=hÿü3;—áϳ™¯=XšrßkûòZÝbSÜÙ’·Çe°VÂô¹ªÜl]UýöѦÅÐ#*äq`–og8Œ'?„#4:•<~áŃú«¬Úu¤C:Žú¨õºZÃRàO;盛p¨eþç8æGòn¤^üzf øƒÀ²È)K‡çøO–œôAU|6‘tÍ×÷×j·zäKUßîìžù:µÆ·×IóƳÓ1Q6C\·¥ÜÙ¾-^wúIU°ƒQíÁâ[·\šR²–ZI!ü‹|ë9ÏôVJð§ë*ÍcïÈ3¥~7{©á„{:kS'–ôÀÎB:ºEÆi´L‰™Œ[Ʊ2Šú8µ‡»€rW|°sòº¿:Ùyý¶zx†³õ+QôõžOÝdÒª\mž#* †Ò°Ó‰'·yß™=(M˜Xv€jJ~â\{³óS5¦¾Ú?¨šÙ†«t:I¥UuQ£üý3“PÀ„÷}Ó"[QSóÒ%þ³Ûè’(ì7RDPUBU£&ÉT¶@€J/÷_½=ƒ‰7’I§›ùþàéΰÆäÅX0úÕY“j3¯å½‡+>zõê´Š•;;ž=ñÖs§åF«ëf~ÖF8«0S°>{’u¥a–áÙU™e’ÀËÀ¤Æ×bõpoçÐYŒ…ä#4ãÒ²KšÝnÜï×ê^œêúìÉæ“ïCüýöÙSü}V}ò„~¿¶ÁïOãï·ßÓ¯÷ñ‡LnÝ®ÎíÙ÷Ov1öÓ'O9—§Ïv%WÎý{ɽJ¹cn˜ÊÛ)/hC×Þžt»uoÕ”Øã²7Ui_4[°õYuùîû=ªyõq•~¿{ú=ý~ÿt—êòÝ÷»Oøý»LË$;«£v7w©£v¿ýî©d󄳡äð^ÝÄßïè×ng–Ó6S#45δ[‡7&ãÚð "Ç2œËq{DîÖ‘óo`.çË(÷ôµèƲ_œM"ב#*]I%òÇ~#)ó”@_|T5”73$AÖA÷ì¬×®ö Z¢µ”2†D#F…ÜÓëN&=8ÚdõrÎy˜Ïéí郲ºè^ú9ÈÍå#*ë$’ÓIYY{îq$'¥s(ÉÞ>ç•æXjcO›K–—µÆS†¶¦xl1‘p«OKÞ Éî-Z¥H”" »Úôr+že[í¯LÀ"Ÿ³=¬žåÂJ¿pxiu5#*Ôï‹Lî?‡ÿã8ùü*`‹å›7à9%ÿ[òEÿ÷¯cÿNÆfû¢Ñ¼ž¯FoóÔÁl…®N3ì ‚&òYø„&ùô`E¯²Å\Õ²4â. }qÕiæ"a±må¢Ó'#*:ÔiÚ×O¯îøþ«£“3û(éR@ÅŠøßDŠ'”eLÿcÿðñ¦°ê˜qŽZ/¾É Ôª¾*Þ{-“힉aT}]Xð5yÙR À»‚ÈÀ_÷u°M¾¦°É;Øi;Œ„"yxÔ€Ô*w.DµÕ4£5M:^¬ñÖ×ðpµ6D×yuþÄZÅRéD£æ¬Ã×ö|ÆAÎ`c¯ñ³ê¿¹Ø×þZ–‘©óºËö”#)EÍ€·;‡û¯Mp!ˆöšŠé¢f§¦\#4uZ/Á#4F7ù1çç—ñÅ‹Êx˜Di|^£b6Ȳ6#4šîàd¥rÏNÅðW¥@ëN9'>tf‚K¾xfYS‰°¶qqrP<nÛ`<ãâùÅþ`Òî_TVÎ/~âHçÉJéÅñó~ã_Ãñöyk%8¯Ð{w ïE‚½ *Ií©ÎÜ5Ý„iÝ&÷[Q§iŽ›üŽ¶½á%ù€‰Ây52ƒM`~”«IB4¸h¡P¿1i^E¦1¤ä#c…@ŽFׄ⧌%ü&¹rõÐfbÜGéõšÊ£‚ø:¢”CÞÇSò§êÉéþÑaTº†?v”_ñû'p¾~A~G‰ÉF( ›èPᶄl<Ÿ„ØÕ<+ÙØCv#)<wØ–K2cwßE<:KŒbBÔô´ðàDŠTâóHf$åQØÛÓŸvãÝ£·Çû@šUE- ¢DQ½Ñé#*“’´Ã'þ„ë݈¥ªm•×ƒ‚Ö“š7ý%w+²tÊRÉKn–z‹œucÙ!wN|7#æI@ÓàÛéõ.·Zm@= þª“¨†âOX~Ïž Šm¿¿AXòÛýgO&NH·ñxfß=£×ýIcТ^n·1”òź”€]„¨ –ØA4Ĉ®_*•Ê‹Ê‹ó#4ÿú+¡r{iBò»¬aÿ±}[rßüXýg|p´»s€Òñ7°Õ†þéÑ«3àïªççÿ~xöäñ&*wŸ3:ßU#*ç篘¢ûFÂutªçš€ŸµBëS ÁF\¨1xß°k(µs+WLûX9»ú!å2§¤8ß_“>Äay²äd…—^ƒiQ½¸¡‹~ý(#4Y@Ô¯rf©RÓ’ë°HOY±¤§à½.¬ êÛgO΀w<Ûÿ©ê»šZ&?9îQsÇÍéyXõÏÏýU—¸ªmêˆÑƒs#4Ä•)PZR×qþ}Úß2Íš•¬ìCÿx<lM›X¶o»IµGJyÀ³CÂÂÄïn kŠG3_øD¨@líó×Sñ» ]˜œ”EÐÿÖ¥{•×?Íuàù4Êz›‘‘·²ü´)a¼Ûþ–°‡òÛ£ôÿÊ!æBq<µõM¼uQYã|<•¢©Âk;H€D¬Ó¢*#*™¬²ÙŒ\o¦Fi·ê3¼9;V«ÖåËÒð_sæ “î¸cM˜ÝÌdß'–šÊ·1f»U¢7«‚•ëö-l®„Ò×1l–œ.Ã&¹ŠÈY9Õä¹nÈ+ÌÌÜÛL,HÍý93¾Ù¹T]]èukú9Ù:óRUÚxôiLÚ›$W–*‰ðƒÐ-]ZTŠ3H燂7$(÷t’³e(ª„žÕÓÏŠ£ÄçæhZp˜cÍ-o¿?&I±C&C’8x#*ýmÚG-èøì×+³ÛÌôè„FvÁ Ær…fØdY.7M\¤$›æá¡Ö À`ÜLh«œ‹^êDŘ°öˆ*ÐqÌ#*;êu›ÌFJèß³<â+cªòr‹ˆÃ²“O ³ b±ø·vójè#*;¬GOðˆ^€ïŽ#4è‡Þ+.'Eo9)P\âÅ——ñgy™ƒT²åeyR0‹åeø»¼üýJ*(x¹Äý#½…)É5G¯ùðF²8ÔW·†H×~’ß]?TM2ªFV;[mÄ°Á9Íx¯X„ƒš¤dô^['Ýoz®Œ†£Ò:D Ò@¦'h"Âѳ ±æ/ëÈíå ²¤'NºbÂGy‰!!iì`ŒÚÓ-Z¬¦4¢æ²°~0×A™ìTïKŽv%MTUª}·U·²Ä#}}n¾8xvžÒØLžOòò„ìDªÑ-#4ª…V–Aú,K}W+T<p™—æ¬ÓÀg8©ˆÌ°QÂswL¼Ò~8H#áÓ4©cÈTW2Ï#4×è5qiA0Gòéækð<uÑ„ôwPê†=s¸„èJZ\jb/’a¬!*ù±µŒü$4æÝ ‹•yi‰3ʨ€;!ªñecýËËöØ@”ò»8ÆN&Aþ°IIìZè.]s¾#ºÛëìT¥Ü<‰Gl9E&ëgf`·Ø—=Qöm…ÆsÈ1´ƒ9uÉËx:Š*°ŠA¶h¯„Ñp GeØ„Z]˜þ[npØdŸÞ”£ç6'•ñáX—š3§ê$bÓ’ûWž\”§YAÆCTŠ¥¨ËÖı˜ÔLf¦‚°KëJÍ#*§âΓ+r-™°Úä¡Þi-1ÛXá9™mA$7PUÃ#)ñ‡Ñ4"‚_Õ@~U°©pdªsTQÜ5škÒÍJáG*ìœÆݦ‚œ>Ž‹µmþMˆu¥¡›ÚSMÒïYãÚ9zsù½o*¯Z¦zÀµò¹1F«:Ci.7Aq€¢]Ñ4/ÂÑM¢f_BÞ¨ÓWùì‹ça™*+„ÿÎɃ?!3Ã:O•«e¤S±O9¢¨1I‹ÀX†¼ßäuœnDï“ÆM[+춚›pþ¹R6ˆb”ॠ¼¨Û;/oµƒ±TX/1‘®ø¶`XÐÑø6ù¦kú3‚ÍÿÈÁVØKß–…:ídrÉæÁ9¤Îó÷éÜëɾ]‰!cÁ´a¢”ÄYK)#÷äøY‡ôUTÊ‚H#*¶£‡qê¶Õb;„ÛѬ‘êaŽ`ü1ŽTšOVÏH&ˆ6Ÿ+én%Ìð'iÖó`ÑÜ›™½Øè×^#)_‰ ²(Ê&(¡ìÕpÊô«Ý\1»=@Ô?;ÝI!BÔ¢zÕò£óß9™—õEšË£œ”H?›%Ý~#4$“î²úÜKËœKƒ·g~nqÎù¿=ËÉßf(Ÿ‰àØLZ–X›#*`3ü1ú4cELûp:hU<Z#{®lCYi¶› ã„f’y(8:¾mÞi:x/Œå_tk]÷{C®˜kÖ’†y°#*Àaóbc¨›Éô )Ð(:•èUTð]‚ð(«.ŸSè:oÈy™{jÜ2u:ûÍAô#4‚HÿPWŽddæ yŒ¹½ž‹A9„:O3Ÿu¦["pêh¨†÷•¬ióoEeµ+B#2Ÿ2Å "vn]CzÝI¶ARº‚bH2 ”r£d«åŸ2¦_ú3Àœšñýˆ=…•êyèw”ÿkßÕâ¸g=˜#)$¤ÛÁkúÌÈÿ¸mÜ?ùSÝÎ÷Ê‘3€B..%õA‘Ö#)F:^<eHþ<àH*ö<|ý]a|H§ùAá¾9¦Êp#)VöŽÌÖLLí#*ÊÿKöߊgjþ™þ?YœñÿÑ¿èþåü¿ÝÏ稄: ‘#S_i.4µH'úÕ§3¿UcGä÷-¡z°÷Cî7o/!~ÇÀzjÀqBõ¡Ña謗“ÒéLeê”]N™LÿÂC³ir쎻V"|ãð«‘É^‡Igã'ëýr0M¡ÿjÜ4L°46UÍÎ6î£ëé³î½¤„ûÉ™õ}bt¿Òº©Òù0_nF¥%7ÛÐ|éjÖõáÝ÷Ô¹+7ïyú]Ââ³móp[’3`úâ8$˜#4xÆ׃Ý÷Ý[ ôïN«å¢³à›0•õƒ¢Ü¡ÚB×±òþæ×¼°¾ê‡™š0°äÊ(;ͳ¤]{%ãm%Àû1}ìÖ‚8s²¿J“mwY9ša›šÑ2ky©@¶B5æ¤"6}‚a?l;–;J&O–»ú×䧿¢xø{è»Ý]ŸÝÎY:"Áˆwwm©©y»RaÝó íqõÜÒ¦±zjz#*ÏŒÄ#?××CvºæÎF5br3Ôè‰X¿¯ÀŽ7„4ûŒ[Óþ…r#)Ḩšf²ÇäT)ß›€3Òª–~Núö-¨r³¬â×d{ÏpÝzÃŽÕ Þ*ÀtO™n`Тbz¹ª…Dæ×™D² ”‡Yˆ‚—ø…ÿSüßûÉÓ?#)z1ÿ÷øÙ·ÿßO¾àÿÿðâ¸3EÑ@+ÞPÜɃÚ%x_¢¸³~¯’4f*"é°ç7Bå#4Ú´•rDr›4˜¼áЂìeûôQíÝW$†äêâÇMñ`Aˆ»ŠKÇ_cÅüO¸™u=˜Û˜G¡ëëŽåÚåÝàŽÓ$ííØEAú4ã'ŽluáíÑnüv‘Ê°Š•+^¨\]ùõBõç³ø6Uˆò~Ü”€wûø>íÊëßÏžâ{“S{Zað‚Ê.Dá»Ø÷³)Ók;äüËØ•k×°¤-›+ùq”£?lòäú=huJÀ£8°º°Üä6çBš›ZŠ¨k·”àŽuaÆ&ðIdtv!;§?Æ;gxé"#*À=ëD¦Â¥àSjEÜ1[$«¸“®HÎöcíÜX±ƒ¯Ù€½6JZ#Ü‘þh8Ä,SüÀ,XõY+-Ò_k\Ãyj‚ˆkœ‰¹ó¾ûuT%ѼPW%U³@ò$¬a¶~/]iQ˜þ"â²Rßýd‰›§ƒî{´¨Âõ£L³Ê]_É‹ÝR-ËžÝöû-`ÇKð9¯/G¤xË-¦CýPh4<'‡ÊdÜ)ë¬kìäÚž»vÏÆÅÎ6ª')¬3õÂ1²K#*#)¡²Ê©sõr°¨8˜3Ô¢Æý:.‰!‚¿·Ä¤õÕ…þ˜ ø©)nÓëüF"q‚ûW#4Ù-\ÖØñãƇ¸Õ%t ¥Œ§ÝV)µR/ó–#*dÓ1È*£â-f«#4ÌÆP_”Z4š<7•Éú¦ÙŒZµòRª7jZ#4\ÛÒ•1c+TÐX…‹çÔ'ââ%ÿ—Ù#4ÛšßvzZÈAàGÚ=$På5cA5©oR‰«rc@uàH*‰9‡Ùe»½bEJ¥çÕq{ÙBcrLNnûªi}‡COÝÞ὞:N¸ê¢BrÇ9È‹nöües¯’¦¸.±•!u×yÃB5×[†ºÆ)¨RÙ}mCi5ƒ$–4ó|¦ÿý,>xw¼ŒBöÊ“D<Ÿ§}œs¾?¿=¶¨ärI¹{4Mq7ž»Aë\L;¼ÖΆV›‚´ ‰FµG¡…#*‹?Q›5iD>…O/¹’ºÒ •ÉcqjYh‚cTÆù“Ê;PÊ5RÕhNðLΊ$¢ü¬k¡r¡…¿i´"¼“¯x²Œ›öö¬våqS¯Cg"CôÊr‹8«e&¼-ítÃA #×E³³Â3üh”™ª™x3Ž'?îê’xEÈwŒ‰n1—°Hp–“:ªIººQwá€Lç½ÛwúnÚÍë;©'~´˜¤Þ:hA%#Î…H|‹ªÉÓ%1u±¬1’íòi÷)O`’©[9gÿÊ÷XBj*]e¼¾l|4Þ¬ÛçW:·q”»ýÅWƒ¼ÈÑ#*Æ*·Éºê}?yúPdO4ÌðèvÕuRã–Ä[<pØÞeÔVÊ”Dzï‚‚…‹wÉ™ôØ,od.¸˜ð¼œèuWâô¡µþ(ºìvs†Íd¨é ×RßÁJÆ#*†ãÏû`šH™îÐE:ĵoÏóÆXßN¿ï[lQÆ›õºž:šû±ôGf¨Š,Œ`<JG¦4[• º¤Ktàä^˜$›ïûØ3—@ÁÐ@¸¡ˆhw§<¹Ð)-ÄúÂ|…7Rè#mÏfÂN6K¶Iº\BV_“" aƒT¬èLpšfNMw½tuzp;ÇbüPÕºŠËÈí;B6´TGÞ÷¥Ù3K!] ª™ìRzˆëØÔ<ÅL;Y®S&Ž°*;nÚ#KWA}ßߤ=Ojo¶½¥¥ë(w¯8Ð[Y=î65¯ÝØä*Z`@QÉ(iœ#ÿn·1Eð|3cøáecq;ìy“û¨UˆOkû¾Zn¥Ô6¨TKƒ¢•ýUÊnc«žb}XT“¹N1¬Ó,ù©NïÇ?{*òl_#*‡i.ÆR–!pVŒr<PÌsÂåB×1_šbh—.gð±x ‡A‡—R ,®ãð‡ükì¢ÛKH34Œ/4 Ï÷,óþQòI«O+ÓSºa@Ê“Í#6“ÁÄÊ6GÈ„ƒHiH³°Jè©À?4>ƒ„Ø+;adÚƒ&ú&wÞ¨:PþËù–€¨T«ãÞGˆ“(5, *ßNÇJâiqù&J=\^¾d’`42BÒ} û;ôÇ~€MÃ<eK?%:#4Ou⃋QôžÆ"äÕñ_¢ëR1gçA+"#*ÅÔþ¢}Ћu§ã±nÐJ-#*ªŠãíDz”©#4}–ƒ€åè„fýÌž*3å.fø ó–ÎR½êäe÷øX “¶EI}1èI[ò¨wœÍ)ùŽ‘™þàJsúðJ¿Ûß5'ÊùëJŽª¸?<êAu甎¬Ö«é.õ}_+²eÚ•CÜR$ÅHLÿ| ‡ÀšÿçÙörò|üåk"¤ÉKÀÒóä (öž5ŸY±ÄŸ?Ú;ÚEÏ@¥íçðGéºGÅÊzqû|ðü½šÇð²œ@Àšò|#*SúËPYÅ4fàïïÞÕ–p€+i¹#)Ï+õÚk!J>ñC¯{‘Äî8ÿlx0™þ*°º:\¤AÏõ'<˜à—±ã51!ˆ®Î.Ë2cµèèç'£h™¨õ~þY”õµ²§>ÇÊ?#4±Œ^7¼µåµº-ïv8E°]xÙmÔŒÄlæuºãdBÆ‚ˆÒYxÙß¾½Ëî‰aÄïÍÖ(îaò–¦ âzÂ6½{tRõà÷û{ˆ#€¯ßíûSƒ]Ã/wŽ÷«>ÿîâo2iEÍÕÕ#*ijß$j=/xׯ“…1A‡ž¶áÉûû„Q‰UÓ=ÚÇÒùú ¹\|ÚYðºÃó±Ò#*b)̤è#)‹h‘Là,J߉fMrüjT| lSF&ýäõ´dZ’®³Ì#*cÛKêOp" YÝÆÞh˜¡ùûTPn5n·/’‰®~ïdñìXÇ¢Ï?(Ç%‡ï¼G#°¯^éˆÈ{Ððxf¹©ì@ø»÷¡Í%¡ƒ$M‚Þ×_A»_žîÁš·›“ÞíÿÓÆìÓë—3“àì¦|ºGG·á½5RlÏiË~â¹± ?ßO”«ž²Örè¯"Ïö#*iÿD©kaéýúCÛ^@pèS˜]¼Ÿ@¦éÏŒ®‚Ÿ•Ç-š{”ŽÎý”Èe¡oŒËbH°•#)+¡jŠ6Ut=‚d'>9::“Ò$ãüx/÷}Ä‘[\,åÀ@êTsz¯gkÄŸ³%!ïDµ%!)-i•J9&ñ“OzT–Yãns‡T¨ÛŠux6ä•Œ'AÜ8ídgãa¯7i7¯ÖæZ¥ÉYrÅG·DÁ©ñ«€·HF~ËÉš¿Iøžî#½¤:EbJ€¢d`¾åjÅ£ý%ðy°@üuú'ã÷ýk:À¾ÇãG™V?ëß¹‚¦ È0ÊÞòI™{%¿`kÅp1u°Ìù¨*ˆ•øÑ ºÀ~Šñ#v½êJ6è‘]Ç«oº‰M<ßh#*ڨΌè„Vdh~s”mÕßúj‡‚j+z@$…1YlðÈ¡Ø®]ÝûINñpPó_ÿ"Ô¤)üýl÷ÍÌïêÎI„ƒ_f»Œê‹\uòdñ€Qç¹còÇ‚úòe+`é"S÷·;?V#¾o{'èj]²PÖÊè,~sÄn1N#‹ÚsKM5T§v¦¯Îî A]ÕõPO½¯Àk <ZG*)<ztؽk#8Ekôph§Îdéä-ÉO˜39c(P½z4f|:ÅXé¦Ôüi·)„žPÃO Ö¶$½#*éÁð)D¿€Óž´yªÕ˜Hæ'Æ…W\k™±4µÀqT ê!ŸÏ"Qøª¼<"(ÉEÝ9ò«5Ìò€àGØlÃÆ9ñÞÁÈ{›8î@§=ÞåtÌyÑ°EŸÈí8’:P·J¹|Aâ=²ô(*oxÜÖ—'ò%Ýñ“«nâöv7‘ìÑÏ“/§(Žž–àì4&Ël?p&A¨&©úÐ$x{´›Š§=‰5nªX'»éX½q»×n$j{R¯_IÒ‰Xʮ҈Ì]’ð-»@ñT`r6JGΙpØŽ8¸<”#)s›ÁÔÆû¦+ù’|DxàBcr=͹!dºo—cCl— bÛ§søù¼ç{ÄÎNæ{æåïÆ»|>ÇX,‰É€Ê_N9TèáÙÎÁfíÆÝ6¿ú)eŸ@GþœÚý¥Ây<ûž#*¤#¯H¡)Ïßa~k)ˆ‡Œ%ç¨ÇöD–>*$@‰zm5j–ŽŸW$'øÑ#)Æ°¢šm1wÎŽ-žÀ‚0›$°#*ÔØ”f¨[SŸ€Þ-l9æÅæ¸ìÔñB€ ‚-[–‹éµþ$ó‹ÑSBØr±š=,²æûu£’4¢øl[¬î@–n»í^«4â^¹&k¤›91–—SkMuá»:¤Ç“zôZnÐÔ·ö¶¾„!Ÿná•G‘²DcN½{ÎáÂj[åÌÍÇRiYCî×U?öWe¼9IÈQr´(÷Öœ.0S.7¡Â¨6™õð4©~ÔS’oÜÍ>†dö!¾¸Uâèk}ƒÄºÚ9gf#JœG¸T‘sΪʾ&[ŸBÞTwö€uh‚½˜æúêèd·#4ôxçŒ9—¬57þÏ"”noögoq&ot}YfQ£ ÷·bIAâfç²Ô˜àf7‰!>G×0²þzeÃÿ×f+ÀÃØ ê!Õ—çBÔLaº…»”i&¯÷×GΤá¯À“¶?Çׇ¨ßqWýŠó帻w¯Û<€Ú83ÓÝÐÉ'„|2À³²îíÜåÉY¯NvÞVÿqtò£Y:Ó…ñiÝê4¦†ïcù½Úuý×'Õê¡t“¥U¹0Zq¡rþ–~ÓŠŸÛ¯þ›v£ã.v{–V¦sÖHíuÝ0Ós÷9[ëÞþ@z„'þ_™#4Òæžî„"Ô8°ëBÚˬîU=ÀâÅåd‹þ[Ós‹:"rÂ_ëðayÁ©N<ØrÄc?¾Žw_í¿Žµ¤Ìn·; ¬ø™5š×ËvÔ#*ct(W.7I ï•ËÌ7ˆ žw#*µ_Bhžøªˆ©«Ò>€³wFùƒŒ†ÃŒUÃæpŒÐcšA!múÄ pqÔJQ1ü`ñ³:ܤH¬¥òã¯âW'‡ï*Ù˜cJ-XF×h6§|5¾$È«\)Ž±W)SæëLc6JŠ‡»¿>o§ªaD”ê™®q†7Ôñ¥Évç»×xùo© eŽƒIÖõ¶=Tœsv°òF+;\‹G#5sÆÃy#"ãQjbÌ«ôh9Ãå—ÿÑËevzí¯êÑãá;ÉÞ’Û[¿ü{]ç¶Xå“+wµÊT$¥€icUÙtŽIYY¹%2S”šaĉÍÙÌqóTXÊ÷êB©àŸáÈ”uF™Ëo¹ü™ÎÌ©ÂdNÌÏ`ŽÅåäÜp)EÒÄ€°}@´eäu^ d›·++¿êíö)Š»’¯Q#ÊDüPhý—¾¥7¨AM±"°œ—û1'@¥E™;vs%kÁu¾½õJË@Õ÷(#)7î,èH¾å É#4Ö²&Ý&¹À±â(yzèyÓ])*Ø°R·ÀÆÈÈ=²rJ\êêÃÚsÍò˜ÔÚæVÝ¢Ei…;ÅP)a#*Ù««øtæXNPÊá/ßæB¸öüh“Ä´,Ä´A'€È§»Ìx<‹±Ðç—,íÌFûm².$¡…‹xÎr\/§käøî‘oéD¸ã§ÍñÝJú«]ö8áãù ÕUµ|ŸëÔ#*òGº®=RtÍk×½9ìõàìã©ÈxÉÍÅ$’¹¯5~Sý‘[¨3×Ú¸\Ȭ‹Y5zNâå6v/#Ô¡Ø%¡·ÌyÂwà3QtÚoÀl5ààEP‚¿Óÿ'Ï|v€{ðŸ67?Kûÿ„°/öÿÿ÷íÿ]cóû¼{2œ`ËžF¾¥™zÛlÊ5A2¼„ác¼ ”ñfVâØA5ŒfÔšM;Ž{£Š*éMºkßQI#4Ÿ*MÊjSÔ_#)‚ßl:÷JLír|]á»;@³íY»9E²ÜlÒ,ç4ùA g ½ÊöäHuF•îþp ~Øòz²8=ÙEg—¾¼*Gše(Ù‹fΊSÓ×)Ì[Fý"£‰Ñ‹§[®ñëYÓ¥*—›åž”h;2-H ñªã¹.OuÌŒóR_}H¹'…—ååæüq’ó±áϺ²¼ëñtì°æhä°'=v—3jê„ÀY¡Ž£=ŽB; ;ø¾âÿ*üŸNó€ÿ¹oÿÿöÛõ§iüŸÇ7¾ìÿµýŸapç¬@ÆÙ÷"´m§ô#)öA€ßV‘Âÿ´srZC#)î:!@Ô|qíÛ”ìDð¤oBø||Ì`ÎÏÊ<®G#ébñ¬Êe«Ú¨y¶ý@ŸXa{ÕãÕa,æ?¡œ‰]ŽÂívS:vÊμÂ?ï×é™àxIoG'üí)£ŸÎúczãŸÎúwüöX½ÂTù-fi¦²J3ÜNØ"‡ƒäÆ@#4pV¿ú„îoѵ¦ …#ó°…ê!ø^y{´—ùŽa¡ÿîø¸zBqù»úuzúžù†i?ÖlÈïîïŸíìÿ×ÎÙþÑ¡Ç5«kwÊM7C¹LØ6![Ð~.…ØÂö¿h)éMU½ÅÝÖ¬ä$4Žgmæ¨>eë wšº’Qb Yè†Ôxmª›úuKCb*3£N¾í_À8FF¯ÈxIÖ8?OõŽ¹Õ«9ÖVñ«]èù£wgVÌc~$£¤Œâ+a†?æÛ(j‚‚FT$j\üdçÊÁêà×b®‘á¤?Š„:jìbõ·'à´!珞²ð³lâ0#4ÛÅÑ“e·k+mÜŸ;’66T2ÅIßi’Å}¼#4a¡|9;í ©…$׎Ö#L›t”OŸœèxw8ÉÁáRRWü¹ø^)@Ú½4ˬ€~æ"…uµ×e‘“„QjþלÖ\·o©5jäØžÛàG5ˆVךÌ3Ç™LÑ¿iE‚Zaì/¦–d”"â£\fI8ÆM$mN$W<¼¦`¹Œj2Tj’ `ý!M…íîaM¥ˆ÷6U[¬Z#*UX#L#*èÈÄ€…X7Nø‘bI#ð9ÝŠ%Z+©OÚÖô#N¬ü~¼f¨DˆêÛ·†„×®¥¨FЈF纸+@Bmµ„|¸34u JϸV#*ΩžuC:Éæ‰äI®´Õ •„™êýQöÙ\àœé5ú†7Ûš²=”(j…\ßÓÀeÐô”‚ôC© Úú´W$æÊŒ»³ŠÞAÎN¨Y=ÞŠ´å£6+~e„(s6¸µ}Ò§añÉÛ“«'VˆŠ©_ìØ*\ÂÞ¤s°Ò;©%¤<ØÓ»)rèâZûrÿpoÿDW\Ò½G÷@&:«®ÚÑ‘¹-åøÄAÎ8n©Ñ æßÍ~á>I:)2âvö@g·9ýqÿ8~[Õ{ž¼;„0ÛÜDð²fm–5v%lö[qsîîzý¡æ'Wí^Ø|‹©ÃÄ÷¡bLZ°æ Š¼´ÇÀʾ”L/䶺r¼\•Í-¿i?rðªvy\½D;!’êQ ^CZ›°å¡´¿õPuàE™®[ÚÆ%É0”Ê9ep¢AEhs–7x$W6#*µj‡aR3‰˜P|&†Y °†…Ï%ÿ¹üþ?€ÿ¼¾ùìñzVþóô‹üç¯çÿc¾Gú^Fòó›®…`Âkéy®AÿE#4Ê{ ’sÓ)÷û§J1ȱú"Çn¾y#*imÇ–bÑ…ˆ8cÙwð6‚æé£>ía$ú\e„,dÝN¼W}ùŽ>ÿƒ4sá£[H„žÇ)/º;õ1/â¼¼Ø}ÊC2³cÎËb’›s^nZ×Få‡wññ0Ñ]¯tóÑèè~·&NÞé ©õTHä;ßýU)ÌRSÉd€>XJ{Dµ§•Ô!³#*å!wܶõƒÆEˆ~ž¬ zP¿ñ¯áxû¼µœWè½;÷b#)&t(^ ÛLrVY6ׇ<7…¸¥š€šð¦)Ž;iO*¡$P%šw9Ò4ŠLýJ¼µ)ÖÌgÚÈÔ‰…¾fi°B*¯ûèki›Ý]G”ŒÕ•èP›Z•b•®k>u‹_ñ{÷ݪ!µ˜wƒ}äÞ…uò.È °C²sõÏ»9söÿFÒÿìÿO62÷?O7¾Üÿüåîð<’Ýô+| R‘ŒóQë„õ°k>~Á$ ØÔxwNõÙwçômž8_¼sš>%CˆuD†ƒ£sÓ‘à-Þ…T †ø¥áOÂNjgÒÿM”«¶/`}Vuº#)ÿ\yG#)¯î‰ßÚv1¿cÑ‘jÄgnSµÅ‡nL@§î¼ãözŽ;‚M¥YòW¿ÿ¿ë3o÷ù|¶™¦ÿOŸ>[ÿBÿ¿œÿþðóŸLøŇÀš¯â¡«Äo¿¶1÷D¨Î'÷å,çœ#*UÚÏx@üŸv8\tðûM'Ä…‡¿ßvL\xümgÅLÄÏ}`ÌwjÌDÊ=:æfEçÇÜ/ÙCdz†>à$ùúðœ$_qÂbßöÿ—#*9:¢r½Aµ}Zɺ5-ä¼Êyø‰#*ÛOn` Ä1tânûÁóõß\¹kr4€ŒfL=¥)¨B{Vû³A[®¼¶äÆ›¾Šå~ô4â8ooê+PDÛ¨‹¥"½öôÒ5]FÈ7Ýd¯¤@„„ý ¡kál^º¾¼&dŸG‘¿îÏ?©ëޣú¼½Ý?<:I…3·ûæ úSõ#)?<à8¯ˆÿï<Ó»¤;œwºZ2†Õ‡q2»á?UmÖáÿZjzÿ©üßæfFÿóé“o¿øükê~g\GËêSw¥)ëb¶}›-"Ëý;8tM§?Ñ:3ÉdH†°lLS%C&þ’&òGìPè¦Òʱ#)¨´gmŸ¿æš mª|žc@*¦´~£Y.(paa·¨šyoq¼#*zödÒ°(ï=8ÚG¾ïs²ÿÄO›÷«ÙänµÃP. `¶a‰À;½A©8º^“ÍbðƒÙyÖáùcá#,`tUÌYcp9䤈 †`!M]Rº¨¥ÑB:¥"Åårì‚ ¤%ST^Ý39¦k¿1'×ÂÇö’Y¼´Ä¶–¥Bb¹ÃìK‡"€¡iÞ¶¼–ºÕ˜µ8¡0!´bI™ÉGuƒJË×ùËoÈæ²1ihH>:à‰˜ïÉÎÉ?ÎOãã|1ÃøŸbÿñ‡0#)‹÷ÿMø_ÆþóÙÓ/òÿ¿ˆü'çÉ|zù$/Åóü!»Žá<ñêdçõÛêáYä{ò?¡xDÏ*´#*‡’ìWßÎbÓäq|rôúdç÷vgÿÐäQ=ÜÃ$–¤©yTGìk"«É·ƒ´uÐ-KÈW»÷ÚB¾²m!_¡-ä«]Njl!UÙy¶yb§$ÓÌgÈnq„ÎBÇÎ\G®NÚ¼ÒVð³Ì+v wŽ1¦«y1–ÊKRÞd#´>‹Í<P–ÇÙâÇ«ÐÅÐtNŠÎÑ“àùbY#4…éH‹Crc>,že—s_̽l¼4W¡ŽÈi‡Û)^Bq#*Ö:™Ç<t€ÉЬG§i´!}û§dˆ”¥Ý"H%ПSÅf¦v¤.(¿ŽÅèE¡ÂñXÞF³îë[JÁÐþ’JER'6…P,UÿLªåùÅè¯uÕ3߯Ûyd«GÕ²º8uéGÀ<Úá¹5ïš~‚9wµËº î+^/ ÎŽÖÐ+µ452cÑ/[þ„ʯç-ØÜež^¸þ¢>r…ßnu2ÖÜvŽeÎ!/§_ô ï¦Be™OB÷ßkâF°OÃé¤Ì)BMÒRÃBÝâ:n³(CM2b$—rc:–y%¼ùÝ’á/º#4ÈôZªù—ÕsêªZ4¯ÎËvù‚°™ƒ9ý0‡¤Åi¿Ó ,M?l|#r×—#*ßñ\àjåƃÛæ•ã+>rq»{ã#>È/}‘_œóèÌAyŸè+3A,¤/VâxPƒå•ï1Þ'ÐÔWÀA•?´½A»®g¨zžªåÜ £#*e²€´G3F«Gø“ëæÅÙ|<á.'x¾õô!ÖC1Ë%*c8&ÂçÖŽànPC*jAw`aW)kGè´ˆ4®—\àr0L»úΤ“F¥SÞ¶ÂkÄÏåØç“=!8®¬ŠYÀ.~–s3Ðœè±S̹ۡÄÄ*¤nè$×¢QÉëÝÝxïdÿ§êIK«j_ñø¿ì»7ÈéC¼ã£ÓýŸå,®þ|æD<?]=’¤b!Mbìq;R¹Ñœmº›ÏY¼tº&mq´9#ˆ*è™60î–#)|;ûB;Ë{bªir7ÅW#4‚9Ý,'“jP6mkGFsˆÝu/͵üê¥ù'k…ª1%/G’’œ`ù–¯bèÜ<”%>[?¹ŽSæ‰{lž‹ÍÏÃ<þms‡µdïYµY=g•þv'!#4~/oÎThgUF#4šyqL¼<ÜÊ®jÀËõÑ¥Wf§ÑíAeÖ¥¹±ã£--¶¹ãç•p=šµ8@øªëå‘ øG³‚q»h¶ÀýׇG'Õ½¨6†ÕÕ\®ø!>5Ç“Z£üïò—¿?¯ÔWÎ+Cùò5ÿž|?w/úÝ=쟞mq‡GðT/0’1#*rä&(Aί·!Ì3žH-¦°€oòóu{<h÷Ô[£uÓuÕ[?¹#4ó3™é@z>Èã°×b–8(È d«!Æ¿l6W ?OòºÊ¤N ݘd"²#*|L÷Æq÷r0·õª×X¶Ùü…ütOÑЉùd‚KÑìZœ+”4¡ÒºƒF/–UUw©EZ@òÒµˆ¥ ZLßB«m‹ïY…ÓãÝj|t|æ’ô_ʵƒ“é?ÿ]G|Éãù±NꢣèÔ`2¼ÆKfàƒÇ!=£i¸Ôƒ¹-w#)(NÀÈǼsB#4tlmùFp#)6>cDì¥ÂÕÔÅ©ÉÃ%HΦ=Ò‘¦üIDµf¨j…ÜšOœš‡bó;‰&ˆé(¦ŸÃæf‹qätXB±ŒèR5»³³•[تô–ö ©ê4ö}nÈÔ™d‡:²Av”‹ÒAÀ¿k4Lº3µopI®º@¾ñ&<¦~CûÜŠèFÐ’”KÉ7Z³ÏYv–ï¢E2o¿ojÏx4i´ZTñEÇŠõOŸ1r¢àQƒ³˜l©ë•lÇ‹¼ÃÀëöd"@äÌFN“n_,R-Œ¹ûå<›Ÿ,è¦Ãb"æõˆ#*aG?âÍÙ¨•„»÷úöj–ÄÕ#*Ø<µíù©©Ñiu'¨¥€Z79U?‡ª§Ut‚w1¼öJËIà/ûžxÿà)çàÀš}ÅžÏ?½ÉÈ«`ªh4—EŠV¸ÏÌÅ]$ggJ G\!N·f¹x/dddM ƒ‚‚ß9|b]²¯FßVT Ôù!ÿÉt·Ð.!Ç`2Û”žUÙÚÂ?å-k=äœéï\¨C¯‘xm³s–® ©ÝµCetL[‡Œ†Éìç.0rm›EÅÉЮp4:RB…éæDÞtuŒ˜îÓ÷R@ŒËce«,À*Ò9Àî½;#‰ÿîÑ^5*‹ç¾yH¦cˆ…Yv†ÃÒdâ/‚P¬/9rÄS@9N¨RèúÕ[.±|õ#*ãdÛã !·°Á9QRHD@Ò#)Éq.Hd#)EÏÉ’yù™Òs_þ‘*ý7¡Bè¶*KZPr<¬:7F%_¥3ú†ð49É'—*‰R<Áˆt“Ïr@‚ýPF „”õÆM¡ÆŠžsûz²ª‡?¥ñ´×ŽRy‡@×aÍ£æGwPiú!¹×ãÄÛqŒ5Žƒä£H7åãÌ4I¢éèrG™ävv~&¥#äQIUTR”ö“ã]• nÁñ/â6%寉\ðÑù8Ö.Ÿûª<GžÁ$ib`‘$iÅ°HàYE9#²“¨iØš†M«¼6MK OÁ|iä"r,ÕJÁêt•^”ò§8ÆC2Ž}î5K¬š÷¹%’Ù©ëyüH6SÅ%üî¬IÈ–q•i{EQ7‚tr¯¤xžâ<kQü¦a}t‰<›DÖ¢&@w?ÝæHX2lPn1@óh_z#*†ðã#y·_³Ô/Ê™>Óz?Óq^옣»T7Jwöïä8ÜN¹Ô=ý·ÜD©}P\VÝ©,›3@M_ô:ÒËò¹fíyÆ1va”e_Uùš}bt'ü]aÔ¸DË:qÎþ,Rõn‰ñ*…8TøŽ{®§lYúD bµûKÉ‘Ä¿ñNiý‘ÎÏ#4vø)è'þ;³>ñÏû¤?ŠðyÞTî4K|k¯Í#Èæí1K´È#*‘úiUŠf£×ó „jƒ)ðûW0^-X<çT°°ãÃÝþD3ë@0KùY?:®¾=þþ‡ó&Mþi€›C¦3ªÚ¶wkùàã#ËÐIKUÔh¸#vÞöÛ‰„Žt+¹*¹Ò”zÛ÷dj™!D‰0™å!ŸòúÓ„ð½éˆâщ#)6Ý)g’/#*NåøNîS|ÁéVkr²ÍOß”%õÑ/Ä…ÀÿŒþߤ=ûóíÿ7Ÿ|ûmÖþÿÉýÿ¿„þß0 ˜€Ú`ÐáÁðáZíOW„§‹îÅtÐuÜ(ýós„DAUžm8“A”༆!XÅíÚ/çµóz}%8¯ûh÷ö–7wÉÈY%ôF•Y0iá0Z¦Pô5³ -A>â.YÒ—ð“æJMÕé@§64d›öh¡ž”|¬¹rd…_åØ,Æ#*u|êV.Žóñ;¸Òj_LUR°åÁ΂»Çr‚L抓ÊN—k<jŒa£HaUbÄUã"³ÓÝR~Ñ°›*—ZúÜéÚ×ûuN¥šîfªÉ3Q;Ú¹rg؃6F:ÓÃŽJ¶(¹‚»uÆ]&’g°Ý’“°É @õüŒZ„Q=B—?~ÐýM&·°ASNœ‰Cg%Ï›‘StìCNïNøDt,¯Ô{5èu‘™]Ý–xºþú&ìOf"t›ÉMÎ;^)w襨;¸ë%#4G_k”ÎkjæŸ×ƒ¿Zë2ÿ¨Ã%NLh@ÊdÔ‡ÐðU&Úeo˜$ä×(õüüoƒöù~«R0´äìâtHipb cÆ.ÔG®)Lf“xyVý(øIƒUœžì¾Ú?¨BÍéæQ+EšQF2lÆ1 ¶–ªrÊÄ™£¸Õ•Ž½²RX¢HýÆu›Ý‚¡›àýÃ=®”~¹·^NÖ©šNàÔÎê÷ÅU|}ptzºs²_½·Vn–šI¥ë÷#)„I›©>>9z{|FÇ?³ê\I!sB*Œ›€d:eZHŽ#47;nLg.°Š¢ã|ËÞø NzÕþÖÐüÅ".+éª#)s*éìs6€¥Ì#)%æÿ…€"¸Bmá'áBMÔåTü$¸ÂÔ|!ás(,ÔŽA†—Çp|À Ä[¬ŽÐÁéÎÉì”YlóÜ}×Úx ‚Y“v{ÀO©íX µ\!–Ï/ÀLŽþÚ[?ˆÒíA<ù!cŒÜwÞ÷§½Iˆ;ÎÊ.\9J>õâÜQÛ{…F¨6YËC#*ÍÁÓqëx:7gØåpÊåú˜µ\Kë²4~9v#)ù$I[f[S[ÍÓ s«Å¢+ÃS¤X‹Ûñœ#*]_“ìx¤6Â'žI±=í?‰72µ˜ŽpFö¢3ÅhíB]9ÁNAídý–‘f›–‚òAÁÓ…XC´hÅÚýÍ-KV-¡suÛÝkÚHÚE(¥ãYÓžM+V.AÈ®C¨œiŸWŒÃß.ÙøÛ–»sÉd^³ qçdÕ(yÝ@°«nÓIˆÄ¨Â Ρ~ÝÌÅ™¢ä([ÃK• Ò¿F¹ßš£Å¹ü/²¼Œµ€—b˜"|¹äÐÁ,Tj^£sM¬n_EëÖjêV–\ÎÉ&s¦‹–±˜)]z–ìL¥äî 3Ì܉è±Ä¯9XÔöI6¼¼l£o‹Î°°h,)êA‰JejsŠ%9úÑ…žÞã~:‹Í~#)•P‰øÞœDꋵ ¨ûb¾AG±›5½¨:mî1¾ÎÆ„Lv¶h³Õ9:¸ó.FäêIjôz¥¦£IõQt+‡$<¢®¦4ÞÀ#I*Lù;Š#)ùq~õ5ß?<~wvêo¹]Ú¾<=›÷ñc*SáRMŸâLm•ŸÔM<gÂúÔ‘¨E=ðRíù¢UŸz¿Ø”µØÉ™õV!¿“ÐGDez(Û;¿¿slAˆåjFæºúed%f š‰nÏs®ˆ•Åþ–‚°ú&>S€©ó/¦þjÃÓ#*´Òæ¸1¸l—6BdhTŠ`u#ÐnÝ;Û¹DÞüG/¼*©oüS&©›Züo»Tnjð:Vøï1}L4CÆoñJ±ÒP vb{5l¤‰:AS]HDÇ'CˆHW&ANqRRq猿5T=ÎÐ>u‘#)EÙ?ª4R7Âl›Gw8M’üâ¶#)—Ê¢%}ï0èâèªLU’GÅ9ÚÛKi2u›f\Fé±Hïû¼ÛŠN)k» L#õJ#4e#3¡1Á#$üSšMîVµAìÁE5%¥¶^þ¾Î±ÍÌ1§xkúŒ›$ÏM×ÖžhžÅ‘Tõ0„.¥Ur-ŒubþqæéäÁÿª#*×ze7Ý´‚„+†Ú’Ï<Ï,‹ïŽŒúýn’@Ó¨#*`éœa%š³µbÏÂfêfJsŸÆTÏ{Wx¤zNœqš‚h;=A€QžæÉ]»6# xyG¸z°jÒj+&\Ü+HK®Ì SfŠ;J̈WëÝœÜÅõüžgÉ’8ÈOzŒÖ׿9õÏÕ‡&æ±ûÐz#)=±(')Ñxx…Ž› qE“Œd³qO¸€I§l©9ÇWDv|Šõ’4ã4‰{#*ëê°yq5=´Cˆõ¶˜ûÐ!fws‚,²¥(ˆÍ ¬ó‚Û7ÜÕÛÜ×2í¼["fÉÈá VåÊ›=Q+ôUJ•ŠÎcº¬H×e«àsv¶{F&¯çq¤Z’aà\²ºðܤɛ†{Ì‘¨Îc,xS²hóþ‘E’eý»R]Æ⺊ñ΢TSoâcÍPf}€vëVWçYÓ/.?älú÷³ñù\<,Ï…Œú.$w}¦¦È|€'¡±|›ÂÍ„ØJþ’#ɼ;¢-ä'kç×(\À¨Õù¤2ýÃŒZxoI³ö'$¤³µ©æ½Å´nº£Ä½²€Ñ÷~Ú?fðw|°süˆj6#4á=.OŽïà¼"#å«NƒGi•_·Šou–¿÷JU`ï•[ƒß_<|Ú\Ð|(q“ÛÏOŸ¯x£†Çˆ©f³ž½….»çv’™3 .^/¨‡¡˜&2Q#4¶MôÉ…È-#` eF“NæÓUñ͉ÔýÑDI\Õ!'õ•åß¹—e‘[7Nà‡nDGILଯà&kѵ¶vŠ¯b#=@/¬¶XxF‹AêÜnyC0y3‰p^Äö»sˆØì²sèÆ^ÌWà[&#y–&RQ8)ÜŒTåbãjU½êËAÈV•P*‡æ†&’«mËTg™ý¶ÂMtn:i®E2/ywUÎw•Ovå Ós£?î†#4¤ƒ7Tª»³žÆ‹27ËaNþ¨ñŸ¿Z>‹²WqîÍì"²ì¹3jÔÇÙ±´G™²ÑN;•óO'ÐñnG› ÕpÊÔsH}Šò ¶l"7Qͺ¡#*íÛZÍ›‡z}˜'ó•$Z¸t#*WÂVp† }Ísj*¡¿r—@«‘9)fãIº“±HœôëÖB®+cô•kîñÔ1¿›#)ŸSšéš‘6z©M¢t+2Ì•ÊHߥäõ¨¾ZQ)œ+.›9ßÀyªÛòtñ¢¤Õ_#4´SÛ‰wÙ«ÞM~a^wẛnrÕÙÍ_éÝŽ4V¼Ôrq“ÜõC| šÉ˜«½¼U”(×Â^E•9{T0,¹–ÜêÜ_´ZÀ÷–}}Êé’\jµùðþ°(o$&“"<<˜î¨a0‘#409]ň*i1#*ŒðmÞ(ÙÄ##4äz¦%/²x²‡/ÇňüMŒ*d¬Är“OÕƒ¿©F5òËÇ8H…Œÿ—Vó?áÿëéÓ´þï“g_ôÿ2øß®s—Æ8lýO.fÄ¿qãÙjŠÏ=Ü Ñ†7kd¬ý{¸-RîŠW1ˆ¢òFʶ·È†:í–c,G§La[“ûý¡8pjî"¦1>£`¹í)¤N„•6ñËCAÛC8ĺƒGz7#)ŸŒ~·gH¬Tû‡».¨èžƒ¦‡ïY ½=¸©ã;è›{ø&?g¡8…{+=tïMug¯z‚D<ƶë›~‰[1ªxÄWíÚºùå"r7¥#ÞìP#9°L×Xæ½N!ZMퟡ7lÀm圀–~ÏŒ£úÁ¥ÿkÒâÐØ]zÀpýúìqÆþãÛõÇ_èÿ_Ãþcž'Èðˆ#)’-A¤âwáCkw‹a¾™HZÖÄb¥î I,½kéÎ1uIa=±))+1u'±¹f¡œÞ•¨¸Ž¡¤J‚{\=9¨þ|æ+ùGÒò&~ÕàB*¶mQ8ϵ9›Í3Råú3UÛ…å,‘¦Î’éÅhke)L#*»è@«Â:zSWÌ•PN",Ô.¯¨?Š”˜Î`BoHøôÝËãã^y0„ñœñ ’xeüé7FºìÝÙþÁi|öÏãêÛc-äÜž'æ´^^ùYüQìA퀋µèºè}$Râ5´²d‰jÜÒ7â40Ž_´¨\ š"iËš’ãùYëw×ØfcÚ÷°6s$ñ—19ä†áQö$BSZ8)ìB|ìMÛZÊ(k¶2”µKñ¶u50О7ä„iq`yµV,·‹¸ºpçö΋Ë7óbè}ýËOŠ#ls΃oˆ‘ª².¾\†EAÃ"ÌPê*äÉ°"[;šLG0I±;¡¼PÒ˱¬X)ÛáËs3v¡Žù¹dò” tÎAË}R¢°ÿÏêÁÁÑ?Œõ9JògHØšªÕÃÏĨô[f-â#) «Šè°Ø¦”¢Ö³£OÍ_ˆFD=ÎÃÏäëÌ·»w.ìœ(cTM¬/ÕüüÆãjµoÚ=M']9 ÍNÕzN`hÚ´›äÁÔvºÒVú,ØL*‰yÁRbëð4ôËoyƒÁûõ¶/3'dr^ô—“ºäÔ¹DšR‚_;¼ÎtJÄøÉ¢$?•…{Ç`—#éhe#4Óê¨ì`#*ïIº7´eø7ÐÿÃqOëAsŠH•êÍÍüu9ù¸VM¨Ø5Ž¤>µgD¦?úËèÎM…î®4ï`éÚ¶;w¸œê#—¼¹hÀÓl^ÙJ÷Z±ØU"8ͼ۫.HƒØ®Ð×vNª*Ùî=5§#)È¿h¦‹NïÙ\dT¬Ž–FeÁûQämæ6+—Êb«ZݱuMCNŽOvßìíŸP»"5‡tu’î„n?Úhg™d*VêŸâÉÜ_ÍÜêÑtbnAò+!ð!ò£ {* àÅñœWÆœËj+á[9ô„f—è”+r¶š«voù§£v³Û¹õ½I{<#)¦‚)Š$—`‘xØ\T®îÜyënÉÔn"ÞÔ£:zt“Ôëy˜ÂK(^·Éæ¨é*ýÙç¿&,Ä6^°þ™þžl<y¼žöÿóíú³/ç¿¿ˆÿ^LádÜh¶/Íë¼!Ùþ;Aæòy¾²bdŠEÑ~àQÇ#ÞÝÙ}SO÷ÿ«mÐ!Àr^ðñÑ1©ãøe¿#)‹wÊžf{Ý~wm<]/\ãÆE2ì¡û3æ#)ñf¸Õ·b±·N€õ§Ní#*›Þš„ÂNLê•P—yï&ì8σټê`îbè$2ÈK¢õöXs¿Ÿ'm|¿Dš5n’èW”÷·üGP<Åí÷ò‚\è–ÿÍ7üÈáßDðLé–wGO|‡Á3#4ÿ…Ÿ8ü¿èN$+~áäðŒ2Ï<ÿ·~DËvB¾t‚kÞù¤¾Rz±õÕÝòV oÝм»ngÀ?w¸Ý!Ï~lüU¶îbµÎŽæî¦}„H5#*•Se%8¯|M·ŒÓ¼»sZ½CûÛw°-ÃpX³~£i׫ø‹ hÇõó+EŠÒ™RUWQâv\_©•ïâsEâá éÚ·ÿrž¬` ü¤ªEɽ”5<üo¼r>`£a§ÒMàØ“ãµµÊÊ‹¯ïÖÎWà÷|eíî܇ž=?¯ÜÕ~l଴rîß°")ë½£³ƒƒTÏ঻ÕJþ‹þj#¼ :øÅËÌwG¥bT^{ä—‚çÛÅpìõßçw¿Ôê¿Â6^/4¯`–$M˜€ëþÖ:L2ë[˜ þÖw¡ò{˜ŽþÖ|èÀÏ0¥ð³ú0{6‡Ðrˆ²ýâÖãï?ß½ü®_8:Žü#¿°¿G®»ÎüÂéÙ l¾~a÷Í<4ýÂdxÓ‘=ªA¢¾‡;<:Fà…‘ú8.‹ëµÙÏu4оj϶a;;åW¨ç¾`àûi£·±]›¾ë ‚ÂÁʃ›WñvIu!ôêjàßá‡ÁÆöyk5¨UÛ”'”µ¾][-×a0Zœc§7lL °óŠ³¤T›jå¼Bq¬´VÚà…N½‘JýËÄÔ+NêÍüÔ›nêas²½¾BU¬o«Zb»7u»¡›`d^Kµ_Šççõ;h9Ïß^%ø¾¼µ¼u÷üyt·½ÝAàÿðz÷|ùî9„cð~X=_…?Ñ]¹|WÞ¾+CÈJt·¸[†¿ÛwQt÷Í7wßÀø?ü¿Dw[Ûw¢»¯¾º«—΃ó_Ï?"$Åóíóí—ó•óÕo¢G_ý.¯—!ð¿Ï+u?$L&cMÛ+ëN¤&µ"6y9Ù^NyŽ0GpD¦‰®ßÔtד+Ô3)¨bÐßhⱸ݊`ª¸¼E“–HÐ(x›ú…äº;á³Ü=À~Õ+õIòõÅÞ™|TúŒ"Í7G@ßó§ðfMTIŽpƒYñÖ¼e »«^þ>îmoã¯÷<ò¶á?xŽ"ï’ìo¼; ù7ð€”:„‡Ô3Âä¶OŠ#4íÁ´ªim`ÁQÓÃö5Ö¡6G3iLkÚl#Æ[Rºiôâ#*”Å›ôwH(ç"\hDë«A‹Î 7µ ¡!<E0‰I³™ŸæB§ÙÄãpÄeRO¶ —©›QcùBD@ºªBWíв#4-Û¡+*tÅ]S¡kvè/*ô;þã`¬i#Š.ëã¢Âáƒl¢œþÎN§ã蔊Qœ¼¾±ò¢Ý™3ûÆÎìÉÄàÜð#)ïd÷(RQab?r[ñ‹Š9s«ø‹ë¹ÓÏÝ,ž;ßœOÛö§m÷““åv*K•gãùs»¶U†ííKb#4,”ZfM£³ºgwK™TT™Ø*Çá<ýv4¹õPPCÒUI‡bTÞPOŠ°)Pw)ŠŽŽEëï*Uòd:˜ h}Dþ‹ºüÃöÝçhÅ(•ÿ™<»ÚœQg»¤s|ƒÉ ™—9[1?ÐEŠ±vÊØžúͪ¢ÑªdÔ•£$•×=cÒhó€Œò9jfbs0A :*Œƒˆ€ýÛcêôÚÆV·Ø؇ڻº±UתC7zI[h¼jàj阼̗$«('ª*ͦk~yÃ1#*„ ”Jë<=8Oœ§Œ¨2ÁÖÙ¼þûÁyý·ÊÄä!½Ÿ×ùJÉm8b'J=VMR ªÌ"à£,!äM(å›Ä`YQÖí(\EÕXPµôÔ4øÍk3ÀÅ—Ó—A&K3Ãjõ‡,Ø03ã¬iëN¹éµ½þg¬í‡¬[iKGºŸ$üþÕŽÊÔ2yÙpþê·Êɉf‰ÙnÎ]<î°säÈ^ê8(‡› ·ÌZ Ï#¨¯ª ú¦ž.<\›ôxåõ,Äy}CüÕÍf};â§ú笪éMøðxn?Ñ×ti›!¥¹Ù¼§¼ ¤ ª÷Ǻü¼žh*Z,Ëô…Å[¶h¨Õa¯fM"4Ž³ª#)#0“L©ûï¶JK¦#*(‚† Æ7#*[ .UÅ"t%Fo¢‘b%¥ÉF8Ù$¡Ò†#)!¬î±íGÇÄFM6åxå#*xPÞ‹8‘NŒY’˜€0?ü$-}r“ÃW»¡ÔXwoÍ-ØÆ<BÉíðZCq¡xÝöej(åƀ礴ÖtïÞ7jõU(|£îŒ‘ôôʯ“ð¢@[D¼‘àåѹ•³6ªÐ¥¢œ¢Š4c[ížgh"‘Ù¤MÎMk»â¹Éæ#*ˆÄI"š@9:ßö÷õ ‰'f.ãÀ¢¶nesë–‰óùj¦?/Ú„¹s‘Û‰ö7bs$îx85KÄt T–=O#¼ˆÚ3”çNPØ6ª8XËÐKtoôÄNLfCôžéo0á²åš¯ëõwmŒãô,œÓ§gX$3wÚb=oWu- {«OFLCúí `ÝE?R2(Ù}±1§TÙa3¶#wúæ36j“(yd:‡ë³tIÈu“+„êô—…üÏ›ý¸!u¹'3?X–Î=U }È!4úª}ših˜Á™ÃÚX{å‚e`-+;cÃÐRq¸S%¥$¢A¼¬œ4$,ЦÃM‘ª¯ÊÍ€|ápjE#õ9È93Y™†N¦ä02›ñ|†–"ÔÌt@úÖˆÜ[£Ì¥Œ`îé0;î}}›3ïm+¦b_ï¡`ýFõja¦ì#4ZåÒTè™x‚>¢#›DЧ9óó_4?™6¨)ªV’PŒåÎKjÅW6ßü¯Õ#*;3Ú¤%‡Õº»÷;_6êH`TYÓð:‰pˆkú[ÍMV¯ë™#)m×cƒpÃü`6Yÿ²GÚ#*N©‰×r§é˜˜¾¥úÀ´e#Â8µòFÝZ¿«{>©¸4.qIÕ'Ê0xõVܨÚ3 ~Õlr<qAGæeÆOè€8þi'Þ9y}Çf)-Ý4bê–ši9ZèµÎViê3âØ‹æHv{Ô¹£I9™à)Ëj££2²ŸT£´9p#)/%NN†£á¨äD¥ÚAŸÛVôÒŽ!ƒÌœÂ/O›'êËfÝ¡¼yìÎ\= n±÷ ‘oìûÑä¹6ž›ƒV#iG>®æ‚§÷s¬S‹gÛôòÖNÞʧê,—7ÂÈ9¼ÑÜ©l×v~euó̈Í`‹žåþòX3êîå@¼ÁMãó£ê¨Â궹‡˜Z=xˆðI°–<9[M†TÌ´1i‹,Iç#$Ȳׂµ¬YìEEQ,~³NŸ–µ<›.I‚G°ï1â¶Í•‹öID•§ýb&ò1¾W~Ð%"”Dð¯Ò#4,w¬96HË<³—윀&ÀˆôDhK&#aÀ„¿Av¢ öi^ýŠÇæbõAbî#%¢\RYãƒË“PzÖëŒrYg;³ãÙ‹aôîáR¦Ýb–w–¾ÁàJ[µÌ©™GŠzóùjF°«x&¨T*Z•©š.ÿéO(zÑY„CÔk#:Ι#*é»ßÔ6¯´™íz«#4ªÉb‘àÓuŒèÛhºx¹\ã¾EtY·”.Y bè1Rjã“<nÂZ’ Î{:ßk%ÿŒþ1¬cQ É襔ž—^lUV‚mR‡b ú˜ŠJHJ\þšZö#“¥MØX̘g}³½a)„C8žÔñgc‹ömÚŠR´gÞþSóQuLëNÚ¬˜‰üù `A]Ù“äD;u¥™e…-,Š6DÊ/\ ±aÀP[}ì}Å#åSC`%"í¹ÏŒ•×¶ï#*ð{šK¯ô0`T‚OAe,ÏÛ¾uíƒÐÊ…ßÖNƒeú,Šž«œÍÝÝ“ F‰ŠIÞ#*o0…Ã(æ#;죈´x,ľqKÆ´Ñ ómJ/‹ý-k–Cœ(zÂœ.Ä{Œ,?wNåª=ku/Ö«µ¥aÄÍz¸ñÌša™´à›•nB™”Ö#4VaÈ”¿i—°nãÄ=7Ã#*%÷R ¶»º¾[«Ýº[ˆ^’ð)TÕâˆáw¶±Ž²ùW·Ï¬EUkÖ‰ÿíÛÿßÞ³ö¶qc»_£_1WÙ‘ê‘jgû#)ŒN4u“ ͱÓ[@kdi«Ö«£G,,òß—çEÎp$¥›{[#*`k†<$_‡äy8eþ}Zš&ã™Eìw;ÖÊ©f ›2 ‹6”ixEépQö_@r7Î…éTL´Û±ªl&C4Í"6X·u:ÁiRîBÖΖp•ƒ\´Ë,’Âu"(»»#‡.úzm™Fn.‹UÞеe²1ž¡S]ƒ”§JvJFjFˆ(ŸË³Ë„V<, ú5ɘn J3@7buÊI(÷r<=Ö°PeÁ1JFª¥›ÝN¬S5'¬ƒÆR(ó1¸ê†·/âv¹¶å›ÉûîBq#*§$¥ëFó#)Bå(S.įe± Ab7¸ž®yGÁÌš&Q=fV˜®—ÑQ÷BÎ!uïÝ(5¦tŠóÙ"Ý°óÞÔšÍPVù÷Ù(Îb¶xx\ˆï“)ÔÖ¦wj .“MÏüàÍe£ø ôéö:ß´½*“@ô Ã6-Z³«_r²6´È2Ô>Íœ6&ª´â=V²#4ˆ¤@E¼â0…a´öÜ=6úuÍ|»oÃÑæ'µvÁ‚a.>Y@K#4Ï#)Q‡®#4°˜‚ÉÃÁJàзofµñã^;¡¼Ñ#)(I²)±þÔ \/ò¥3ºùPÂÈjäà&f¾¡2KÖDÜÿz&]0#*+½.ﺬe‘a0Ú,Újbsgj6G7.VØ*I¼CmnóMÚò1¬?ºg@k×3z¿ú:Kva'oÑ2a‰™ŒFã¡iX¥¥Ä¹Z—-8–`#)‚g³ë–üÕxè<ñü'sG˜E1ÀwbKÉjd=$¥‚j6m;uÁ],é‚®ù®C×Ãב,EþÌçÖp-68›`J%·&(v4mîè/ ´“Él+³Ýžö¾µT¯·\£ä$lj¸#)2Âæ Eê󟬛ÚS{3¥ÅÔ\sªRu¨¶=‡l‚60h¦^Wøñ›Z7IîÊ3Œ0á^a?ƒ¶nþ³_¡åŠ”ê!Õ°s‰W%6Ή`¢g&iÏ=eÄÙð”Ø´7'VÜaÜá'{®Ý-HÕvèQ`{7å^ŠÅ‰*+¨è¡c6pB\òÀðžeó´b¤[ ¶#)¬%k3°)xÈ`€sÊ2÷Û$èqÕ–ÜQ£»X]WÌ;à‘˜Á|ŽQ ¼m#í0'UgââÝ–‹hë×h¯…þö•ðòÒPÒzª]ÄÝ]hP)•Âª¼~#ZïgD aÝXÁ#4Ž(T,Ï)-=1ЫôQŸŽáá®Ý¯±1Åv€Û Ó*1A§"–ô¾j·^.B¸ˆ•ù<ÍdŒæM½®f<ž´1nSëc€¼^dìB7Œ¢±îR¶Í¥Áö#*#”Lþ¡¸èûå<ñ‡#*-”k$Ü®6Šø¡aò"ºî›L‡ÖêSðë2gnÊ`cvçHý/ÆÌ:’PW¿X*VˬRØ ‚DÓãS2‘µF`Û¢Mxà´äÙÙ”iIw&rXÁ¬™?K#4‰xüîì{3¤ÈŠ&H™•¶#4¤Í ~_¯Ö¹×Š)5Ô†4ñÔÎÄ]*,¸…[õÚ©ÊÑÞSx7Ÿ¦<ü´=E×óå¾f\¹k/íGÎÞ1ù{ªäÞé8]ËîAd¨Zµ¿d„cTôS9Dlöx•Çn3ʪ7v)Å”p:ÌÚ:~DÐ}¡BÂa#)ÜŸºK²‡*HüÄn~Oc¹aÆïE¨ºkw0Œh•"¨4)øà‘¬Á¥‹-„†;~ ?y¢i$UÖRfŸ§éï‚”.°'o)>0a. BERÁ³¼obÀÚiùØp®4guŽ «MÌã›´ÈÙãÜÔ¸WîC^ÑÕ'2R•B#bìºã'F¦„%E•H<ÔqŒJÆDVbûôp{L´OSàÈïˆó>8ð´*›GçÒÖ©'oiP¥‰Ïiìö¹‡Ð%äD×·vPxH®>é8’#)ð՜éð$ËZ6I xÒeV-åë7+D䈴ý[:t™Áˆú‹(·‡Æ©f•GZ#4ÏÁGË,õèå8×ÄzÞø#4ÝÚÈ] •O=¿ÔVsÓú$^²1îT†Óm;³ÿB±^Û‘êf:ïNQ?b;sÑb5¸ò5ÍÄü»»kÂ*ה⚧Q|ßG….n”%q¦LÇj€üQ¯„½o’|Ž*æ¤b¶@ݹ|{w‘MeD`EÈ;ç¹Ó9p芖øBœÌS{äijcY¿Â†qnU±*ï$Û”œâ9<ýÛ_äñí?›×ŸÞ#)èvû/¾<ùâ«ŠýÏì?ÿUìòˆ9/¡†ì¿<1\¹áÏ4Jv`Ä<(M“ ,Ûl¸7“Ûöô#*Zs Ö˜å>¨ý|JaVŠbqcx'güÒžùšeëzt§®Þ}G’NÕ”Œ·jJµg*Ö+ÃZ[š:=€)㳧“RÖ4úDå¼¾ru¥Ä]®s6púrhp›i<·p§¦ÀUar:ý˜½Á£™A¶Í#4iç˜3ÓâBd:…èQY åy©=—tŸ‚Yì§g/_<~sþìñÙë7gß?ÿ9%ZùÞ|1>#*¹ØúkÀö)•-¦OKxú6PÑOV/c'å0ýռiÕ£¢YžÞ¸M„©”3^ J|àGZc2<I›È°E'Åw²í=7å÷[èÔ¤ŒïGœß4Ã<°ÓÓ¼T”“±ÃÏßî¦Àðäwù cOå`Âñ¤Ýð¶ôú®çÞ ãøEøÆT¨ùÏ© ¹_.‰oa¼à“ËîûÂpçA›(ò L‘«Ùp=üý rR%T4D“íÚ¹‹,ðê-A¢1Ê@—æNƒßŽú¼1DŠ'ðt†lÞk§Kʼ4YºÀ]S%B*kÈ’N#)ÿ%Ãî”~“˜POéÂ&„ßœ°ÛƧ¦ôiJÔŸf=Ó'ªbÑ”®JLßåx—\ˆŸÊÛ‡MQO|ÀMéÛ(×~@¡ð¹ØÄÇ&¢/?N’ýw6§m> f¹qUCZÚxíi‰ä5«¥–׺–l~#;úíHé7º#j]ãÌ:îz„¬âR]ÁUÃÈú½mœÜÚ¦@«½²â¦æ–Ä@”¨i=Ãçº'u©x•bK ûcÈ1|Ž&7JÅöê8[åRØÁ_Ú¥*˜-¦â´ú⇳—o_œgç¯Þ¾yr–†—r‡ÃPkî„—ûÔ`Ëõ[¾[f!îjVdÃÜ°EÞò‹bKºnYôÀ<ð¹IÓ‘àâñ›§g©ÍW»3eƒ¯V¸ˆ1’ñHÕ—Ïl+³XNJnçÙPÌŽ#)(–—µZç覛ØÖQƒ¶•¦‚7Ów:×øæOø&ßüyß„â›?ýw:9Ãz«@§³æŒ½ÅÀ{Ð6ë5gífh?>°ü%Ö!!*A—¤:uáppÁ¬Ò*Åê_e²¦(<Qðí`—xõúâù«—çi±96Îв̋NßÑG.ýx1Ìš¨n§Ø]žujíýkDÀ„±J8#*c2õèÜÊôÿëç/˜þ¯Y‹Mm–f›yyp“Oú›˜‰2{p™,¥¥k;µbãÅ«'Šp8z¯D§Cï§=ïÓZ–#˜~Mv“Añ&xü6ïò 9jHË«MIÄϞ͋bDÒìèä€}µ·îÑd†šÍ®0‚óîæ}+ËÒ.×Ý/7µo¿±<jPP¹Á#¼ÒB/é•1}XÑíRƒ¬R«îîH¥i°3Zݹ`´t²[AZO^½x#*R‹çOž½x|¾¥ ßNAiQùSžžK;ò€Š:8+tXá¥#ÁïûuZ0\’sÕlïìdj´1÷ä„*ìN ßÿœ=q8é¹Tµ} ÿ„qá½Ã¶q#Þ½›Œãý˜Êµ]Kuöß^“müG¹ÿËqxj „8a^ÔÂ5¿ùŸN'zÄßÌ>ýa3b¦ÀDR÷Âaðš‚£è›G ýð(#*Ó‚_‰î£3ƒÙKC¾Gæ›`aXk}4#*nü~Â#)Gä‡Å…¯&ü9e\ø9•HØQè7Ÿ{è™õ|[“î"»¬ñL%ÚWP$o˜pí¢ïmà /Q!Œ`iXQ²,"Áè„K´…Ñn²Wô 2R\•2Íåò#*õUJyðûßQO^ú´Ø2Œ5TÝ,j›£×jvx$_xÍ#5ÄwŒq&¯CÒ?35ƒ»‹m·ÈÛq벪Åþ§Ç?>ÿîñ… Ÿ½z{ñúÃ.©ÆìI&xa¤20”×¼«ñPª¡áÜj´È¸¡ÔÑJyzy”|»ã‰W#*yÛè}±ŽŠ´ä£Ëá¸c€»OÈ'+£[äï@‚¶I`NÄ~[!™øU&†™ãa…A#)N—ÛÄØ/oˆ¡§[Ð{•@'…8G6-qI”ÄoçftÁ‚X^NI"y}ÈÃó$]=ô«xÔƒ$â~ß/¦Úeû#4ÊÍ÷(U—é7&¥€fpLÅùÙÅÅó—OÏ©¾{þ¦<¡köÙÕ0-‹©EÅ#*ÖিΣ«<ǹÍÔ%ꯖ³‰!$tÅM…Çh‹h¨7gœjYìÌ‹jÉ×r–Z¼RÌ&©Ïò³Ò¯l¯ÖŒP0‰·ôFÖwPV«9Š¦S¥$ÛF[#4°J6"42F)òl>[,Áò@«n`×TM„<Þΰ´lÔì‹IÔ¹–m^xúýýïQš>˜åtXl:&»·Ç4™,g ±±½°òÞÒs´÷N7ä¬|nßÆeeÝ$µ§óÞoΈÿûHîû#*HKc‰õlöc¾c‹½õjÈ[›…“ÇiÔ^ïe°áß`D¯Aº7+‘¯ö–oË5œÚŽÙêÔ5Ò•!Æ8÷ŽaGV2U!UÖîûÓÑÎ+ÌRá\Å#4H>f˜|üŸÌ9P¾›-x^3à{ÎhíÏgÚ•»§éï/r$û—”Ÿ³¼¸4m‡!K™Á²>᲌EÂíY#*˜™¯Pª#*ãÔÊ€í¾½}Oº’·ï{ñàý0¾°ef>qF„¨_W#8›MYì¡ûí«‹gt-ÈÜÉbuew¹=kˆ·‡¥OÆ.ïsè¿ùt0ÊY[µt‡X&KùŽÑÒ#Á<f"sn¢°u‘)*9ÉK>ûìö}›û8+N[!”iôd¾=º4lè#4”Â2c4TP3ÐÀX r»àbµIÅòˆ§ÖĹˆ•#c²`Çå1èÎåËùJ{Âe»Y³›;¾¬´¸ÉÇãP¦]G±ioÞ²£ßRïÊûƒî|éNnNa¦„Ÿ¦Ð“ºByq…î3ðœYL(vœ:°¡5 M¿5í!ìÁGUR<Ä‚V 9s-û«/Éhló]Ë©;Aï«•kÿ` r,.Ùóòo]݃?çÆ~«§×v=rrЦ.òbnZ&WþaY>"¨Á´Äðí$HéhOTb½Äç§i 4#)m¶¢ŸíÌX2h"ñB6AK¤=FvÛ.+°‰ˆ•;ÇJ:ÀÉðª^†7”t’Ah›HÂ!®EQœm&sFÞ’À“Øô¤‚°÷÷œ”MBdÐ=6[E!ºô‰ð†+f½µé-«¸wãÛ¡æw'ñ^–Õd_ŽíJ¤Œ¤jL¹çÂ6–üM*>qk¸úV’Üb¾+RßCeF2èñsâúx›''G9¶Î»¢äÒ²Ú$â²²²ÿïu˜g»àçÒøÄpqéVÆâ3Øãÿvxþ?Èßww´ü÷ñƒã¯¿(ûÿ<9>9Èÿ©å¿=Qmè}V¸z#)¤NúÅ>2Øþj‚ý×Íîw¼,zH/6PGGY®-á-¾¤µãÉÏ?Ûõöc&2coî-“•^êhöòñ‹³”sPx #4xj&hômñYÛEÚ¼c†K̾Ç}#*}æ¾ãÎ#)|ŽÏbwiO¾°3„~ëíWŠ 9ý&¬”%Ù\1CüúõëÇϲó‹4î<7»=de#4üŽa5Å€±pIäÀó‹#4U!߸ ÿ'˜ŒD’¼ŠB$!þyÆÇo~8{#A• ç!Ü›ª#4Ù_Ë1ÕØÅi¿Ô1ÓȦ_€WpH}ýúù“¸š¿#4Í#E˜ÿùÝüz5v…! +Ê|Ü7[öY\Íq‰9ÚtË@º~¼“{¡~ï1ýÂ~º¤DAÄxÖf¨xáÛà›=ö|X=ÿ4ë?ê>/>3a¤ÿïã㓯OÊëÿW†%8¬ÿæõÿ0ôþÇ?ìLûË“/ÿÈñÿà'_Uøÿ/¿þò0þÿ#4úŸ‹M¾§ávÎó%êuZ]ÏóA1šÃ!)‚~»‡‰Ý$/áëÍj:Í‹„Õ?YY”•Dù>¥aJíNfÃÕ8_ôbe7‰®\¨ä†}ë*ßu^v€°ÉõQ½®„‰ã7?ÚÖÍ#)ØwêdbáÇ@B˜üõ£,ulÝÌ»d3±ðãG)M½T‘1f|Ì›t7‘ø[A „b—wÃÕ›.³“Ã8¶!ßþø‡Ôo36á—æ°%â°ý,(,£< кƒÙ|êÝa^ŒÖy0#*HG™çÈP‚oõ¦ýa¿A¯sÀÖ]öñ½q¸‹ÿ…>(I½ºŽŠEˆ&ey(å4×ÂpðJš¡ÔE–…Ò:ù›ô¸=§û’ìóÑÚ&äèBÎí•£#)ñîhÈ=^à0òƒh74²d™»3Ÿê ½¤CT' #)%¸}‚B#)w¬u‰2\ã–"Q„Ü%3#){à¬n‚¯Óµé"¬Ÿxïc”ü7 .ò`94èËðPDè¾~þúŒD™S.À$È‹¢>›™âgó|êݬòåënó&«éh#)j™mt=À&I^ã„im²TL£ÎQ›®2æ]ºFð%ªˆ˜XüïMïÒ&ˆE -¶Âse²×‚¦Z:Q¤R¨Ô"I!§R¸ÉNU¬øŠÉyá~äºHê^±ó Üürf–¦_X!Ò3Â0?£äÖˆE:HP"jêÌðNŒÂµ›ÑÕ&jb¿Å‡«#*Y—Á‹§fì7ÛÛlÑWWRªÞÉeÃtÍ®• ¹ââ~¡‹ƒ1mà=€qm®-<j‹~Ó˜ÉÝ"xÅG%[žhL6€´B,Uïd7ÇÔÂ|¬Å¬_#)×ÏθDx·š=Ä)\êö^º,FùZ#*s”î#4L=Ú—t#)˜íEiX‰úEù´X¢¶ªÊ½£æä7©;^Üäºe`,Mú%•hφQö7qÂm·?!…T©¼ì¤üꊗËtgÖ´>í#)Üäƒ[<¦Ú•!œg©Ü#)‹%ÜLùAuåa;¦,õVá¹EÄáÒ’x\CnùW“Côj@„5ÑPs›…zU–„Ïú ÑPÔ”Ó@1Ž:·¡ÅH¸Ã~’Æ>dQ×}¸WÜ4¬ÔU*òEª?d`ƒ.!#*¬Û|CÚà<·šo²ÌĦOžàq()Õ€•róGÞäI=”¡}mÌ%ÈJe™e)¿51[ÚµÂx nCISº÷çóñÌV¡x4_ÏÆÃŒøBµB'Êœ9‹Á9 «ÍPÖš<|9°-Ömùx˜ê6ÅþŽÙ¯Ög·–ÛAC”ã¡#*"Ždîy§¦º:`‡?ËN·¥õW·‚L>7UnMù”œyæI ˜º#41æË|°üHPFX~ÓÉ‹ZlbAÀžg„#4ISŸ¸(}·*@~MZ¯—(#4áôʃR¦†ÝšçÅrÓr¹%Ž«oÛ‚Å ® ±_u–żü¢),XôÕxXW´ˆÇí]4ååMa^Ñ{ÍêæößåÙÉ®©§Ì°—ïƒ]ùæÓ!æ#4®Á¼ÎBû@7é»…÷Vr@b™Ž&?ö”MûѺ_´ãD”4v#*Pê*Ÿ!̈pYÎæ!<L0ဠX<u—OP<eĤX-ƒdX-±xmÜã&7¨mt hÜ“ÕsÜ7«à#*ȶºžaƒêgÎWw"XS@½AŽKº²õîB(I‡ÏXÖÛò¿"üžVÅÁ%ŠzØ`˜ß“’hœIÑp–“¨~~gŠ‹úÓ#*êD·VfÖ4I‡Å+Ë°/“™a¥j¤ÄŒ,Øj#*Ì#4øɶ9î@¯XÉ>¦\¸n¯Cµ¶^êî®RpKñ¬ˆ©l–ÿóÙˆÁ#)ïT•›‘=iÐä”MÔ® 1¤…’ÂÖÀ:ôá6ÎÜ7YR6ØCSÛMáW$#;¢Ð{o¶#ï"†‰Z*ã ÄEÜ&*:é~M@cRÁ¦ê]Ù¬2v .MìÅâ%`gÞZ¦SŽP±Ð)û×àÀŒÂ½7%ªÚÒ!ÎæÆJÉ~mµÑ÷*çŽ]’súÆô9rú”©?ðý^CžY8Ÿí'IHÒõ;Ë¡êI"«ú#*Âõå@&ŸŠŽ¼g¶6çiÔÜÃü׋,Ø›àdþ1ý_ãÖó¸ÃÜl°áDk˜D௣?Èñ,Æ#)â` óù\#4$%—¶“9Ø”ç×Kq/"q¤Œ““e~º-‚D'¼Ó‡^4zñjØoÊTuþ…œMÝP‹lBÍÁæY®~A”Ø#·ùtøx…›˜$¶ÝÍ÷mT5\ùXàDõSköˆÇSá]µžÁ‚0)¿é’ì|O^ºZRgµÖ#Ü ’f‘Ãi³#Ñ"|2Ü2¶b”2´²Å^–|¯U“ˆg…[§ß*4](¤BÀ¦c’qÇ£TAŠžSƒèˆúT¡x¥„cUj”z¦$…~cêÒ‹YþŠm)aýààɯ B$=I|)ÃëÝÝOu<ôÅÈÎÔX6#)ÇÃZéÜ, UëŠÖ—~tXèïéÙQ~'ëjÇËï`fÍÜt纟7WŠÕš#*ÔÌR£ÎM·”¾Ý<,WFú µ>q#)„ݸ0~º$CRäÖåH¯>f€š¾å)h>÷§pG€Ê<X`ZX#*dvÞgÎY6šbmÎwdǺ6¾ófT* x¬W&ÙÀ¬âUÈ5¬ ·ä |±ll6]•"ìˆzþJy„$'S²%÷ TyLaµÕ%žŒ/x` ÄiÙcJe¡P“'`±ÔFø6h͆8#¸ƒ¦òÖ˸;/#4åÎŽ$¼¡ëhª¯ª#**·u×ñW.´SaõNy[,ÕÅÓÃ{¤ùÒ€=))Ñ™ÓÚ·>ÂÊZV\¡ŒåóÑ¥3Ò4J©Ši”#4Ñ~ÑÚ¸9$Ë»Î*dŸÜg—G¥£mçÓÀ;M~]Í–9j£‰AN¶ÇéJ$ØvðôöÙãŸÎ2Ï`çškO°NâÖgÿZIŠšzI´C´Z•Z˜¬Â±½¥2k#)ܯS††2¥íNùNЊîK«IÓ™*õ#à”»ºóstÇnè¿UaHÃY´©å´ŽBÜX€O7p{¨]¹Àãéªz1žf)Õ]1Âá#)È#*’c4½žµâÏ"Ô9'ç[¤$g1|5‹Çs€Š#÷.~ÖßT³Æ½c(kñæ2³›wë_l³•°@…¢^ªÞ°›HÿÅ“çÀì,ãÓò¦0±S+ï)k!`pÝ(ð/ùÀ°—c]~~ çòÏé½M{€,Ê-èïælúäèâøöÒîô½•@ìÄšL0KÞ0ÿÖ<}㳩“ÒÏAôóðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžÃsxÏá9<‡çðžOôü~._k#)¨#) -#<== diff --git a/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fccache.c-Fix-define-for-HAVE_POSIX_FADVISE.patch b/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fccache.c-Fix-define-for-HAVE_POSIX_FADVISE.patch deleted file mode 100644 index d9bce212f6..0000000000 --- a/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fccache.c-Fix-define-for-HAVE_POSIX_FADVISE.patch +++ /dev/null @@ -1,33 +0,0 @@ -From ab9522177a8396a51812fdbebb6387df451a8499 Mon Sep 17 00:00:00 2001 -From: Robert Yang <liezhi.yang@windriver.com> -Date: Mon, 24 Dec 2018 11:03:58 +0800 -Subject: [PATCH] src/fccache.c: Fix define for HAVE_POSIX_FADVISE - -Otherwise, there would be build errors in the following 2 cases: -* define HAVE_POSIX_FADVISE -Or: -* undef HAVE_POSIX_FADVISE - -Upstream-Status: Backport [https://gitlab.freedesktop.org/fontconfig/fontconfig/commit/586e35450e9ca7c1dc647ceb9d75ac8ed08c5c16] - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> ---- - fccache.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/fccache.c b/src/fccache.c -index 6f3c68a..85cc4b4 100644 ---- a/src/fccache.c -+++ b/src/fccache.c -@@ -700,7 +700,7 @@ FcDirCacheMapFd (FcConfig *config, int fd, struct stat *fd_stat, struct stat *di - { - #if defined(HAVE_MMAP) || defined(__CYGWIN__) - cache = mmap (0, fd_stat->st_size, PROT_READ, MAP_SHARED, fd, 0); --#if (HAVE_POSIX_FADVISE) && defined(POSIX_FADV_WILLNEED) -+#if defined(HAVE_POSIX_FADVISE) && defined(POSIX_FADV_WILLNEED) - posix_fadvise (fd, 0, fd_stat->st_size, POSIX_FADV_WILLNEED); - #endif - if (cache == MAP_FAILED) --- -2.7.4 - diff --git a/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fcxml.c-avoid-double-free-of-filename.patch b/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fcxml.c-avoid-double-free-of-filename.patch deleted file mode 100644 index 3ca9fde967..0000000000 --- a/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fcxml.c-avoid-double-free-of-filename.patch +++ /dev/null @@ -1,28 +0,0 @@ -From a163c81ac430cdc292add200f3e6a0c048be4d7e Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Wed, 11 Oct 2017 17:40:09 +0300 -Subject: [PATCH] src/fcxml.c: avoid double free() of filename - -It's also freed after bail1, so no need to do it here. - -Upstream-Status: Submitted [https://bugs.freedesktop.org/show_bug.cgi?id=103221] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - src/fcxml.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/fcxml.c b/src/fcxml.c -index 19ce96a..edb6054 100644 ---- a/src/fcxml.c -+++ b/src/fcxml.c -@@ -3398,7 +3398,6 @@ FcConfigParseAndLoad (FcConfig *config, - - fd = FcOpen ((char *) filename, O_RDONLY); - if (fd == -1) { -- FcStrFree (filename); - goto bail1; - } - --- -2.14.1 - diff --git a/meta/recipes-graphics/fontconfig/fontconfig/revert-static-pkgconfig.patch b/meta/recipes-graphics/fontconfig/fontconfig/revert-static-pkgconfig.patch index fca1e65946..30d6423037 100644 --- a/meta/recipes-graphics/fontconfig/fontconfig/revert-static-pkgconfig.patch +++ b/meta/recipes-graphics/fontconfig/fontconfig/revert-static-pkgconfig.patch @@ -8,13 +8,13 @@ gently refuses and rightly so. Upstream-Status: Inappropriate [OE-Specific] Signed-off-by: Khem Raj <raj.khem@gmail.com> -Index: fontconfig-2.11.93/fontconfig.pc.in -=================================================================== ---- fontconfig-2.11.93.orig/fontconfig.pc.in -+++ fontconfig-2.11.93/fontconfig.pc.in +diff --git a/fontconfig.pc.in b/fontconfig.pc.in +index 61b35fb..5bc9bab 100644 +--- a/fontconfig.pc.in ++++ b/fontconfig.pc.in @@ -15,4 +15,4 @@ Requires: @PKGCONFIG_REQUIRES@ Requires.private: @PKGCONFIG_REQUIRES_PRIVATELY@ Libs: -L${libdir} -lfontconfig - Libs.private: @EXPAT_LIBS@ @FREETYPE_LIBS@ @ICONV_LIBS@ @LIBXML2_LIBS@ --Cflags: -I${includedir} @EXPAT_CFLAGS@ @FREETYPE_CFLAGS@ @ICONV_CFLAGS@ @LIBXML2_CFLAGS@ + Libs.private: @ICONV_LIBS@ @PKG_EXPAT_LIBS@ +-Cflags: -I${includedir} @ICONV_CFLAGS@ @PKG_EXPAT_CFLAGS@ +Cflags: -I${includedir} diff --git a/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb b/meta/recipes-graphics/fontconfig/fontconfig_2.15.0.bb index 8fa739de24..b737447e47 100644 --- a/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb +++ b/meta/recipes-graphics/fontconfig/fontconfig_2.15.0.bb @@ -11,54 +11,52 @@ rasterize fonts." HOMEPAGE = "http://www.fontconfig.org" BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=fontconfig" -LICENSE = "MIT-style & MIT & PD" -LIC_FILES_CHKSUM = "file://COPYING;md5=7a0449e9bc5370402a94c00204beca3d \ - file://src/fcfreetype.c;endline=45;md5=5d9513e3196a1fbfdfa94051c09dfc84 \ - file://src/fccache.c;beginline=1367;endline=1382;md5=0326cfeb4a7333dd4dd25fbbc4b9f27f" +LICENSE = "MIT & MIT & PD" +LIC_FILES_CHKSUM = "file://COPYING;md5=00252fd272bf2e722925613ad74cb6c7 \ + file://src/fcfreetype.c;endline=45;md5=ef8702fbf3dc506715be8a9d69cb0252 \ + " SECTION = "libs" -DEPENDS = "expat freetype zlib gperf-native" +DEPENDS = "expat freetype zlib gperf-native util-linux" SRC_URI = "http://fontconfig.org/release/fontconfig-${PV}.tar.gz \ file://revert-static-pkgconfig.patch \ - file://0001-src-fcxml.c-avoid-double-free-of-filename.patch \ - file://0001-src-fccache.c-Fix-define-for-HAVE_POSIX_FADVISE.patch \ " -SRC_URI[md5sum] = "00e748c67fad11e7057a71ed385e8bdb" -SRC_URI[sha256sum] = "064b9ebf060c9e77011733ac9dc0e2ce92870b574cca2405e11f5353a683c334" +SRC_URI[sha256sum] = "f5f359d6332861bd497570848fcb42520964a9e83d5e3abe397b6b6db9bcaaf4" UPSTREAM_CHECK_REGEX = "fontconfig-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)" -do_configure_prepend() { +do_configure:prepend() { # work around https://bugs.freedesktop.org/show_bug.cgi?id=101280 rm -f ${S}/src/fcobjshash.h ${S}/src/fcobjshash.gperf } -do_install_append_class-target() { +do_install:append:class-target() { # duplicate fc-cache for postinstall script mkdir -p ${D}${libexecdir} ln ${D}${bindir}/fc-cache ${D}${libexecdir}/${MLPREFIX}fc-cache } -do_install_append_class-nativesdk() { +do_install:append:class-nativesdk() { # duplicate fc-cache for postinstall script mkdir -p ${D}${libexecdir} ln ${D}${bindir}/fc-cache ${D}${libexecdir}/${MLPREFIX}fc-cache } PACKAGES =+ "fontconfig-utils" -FILES_${PN} =+ "${datadir}/xml/*" -FILES_fontconfig-utils = "${bindir}/* ${libexecdir}/*" +FILES:${PN} =+ "${datadir}/xml/*" +FILES:${PN}-dev += "${datadir}/gettext/*" +FILES:fontconfig-utils = "${bindir}/* ${libexecdir}/*" # Work around past breakage in debian.bbclass -RPROVIDES_fontconfig-utils = "libfontconfig-utils" -RREPLACES_fontconfig-utils = "libfontconfig-utils" -RCONFLICTS_fontconfig-utils = "libfontconfig-utils" -DEBIAN_NOAUTONAME_fontconfig-utils = "1" +RPROVIDES:fontconfig-utils = "libfontconfig-utils" +RREPLACES:fontconfig-utils = "libfontconfig-utils" +RCONFLICTS:fontconfig-utils = "libfontconfig-utils" +DEBIAN_NOAUTONAME:fontconfig-utils = "1" -inherit autotools pkgconfig relative_symlinks +inherit autotools pkgconfig relative_symlinks gettext FONTCONFIG_CACHE_DIR ?= "${localstatedir}/cache/fontconfig" diff --git a/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch b/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch deleted file mode 100644 index 20838813dc..0000000000 --- a/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch +++ /dev/null @@ -1,14 +0,0 @@ -Freetype think that it knows best about where libtool is, and explicitly the -libtool autoconf macros telling it where to find the libtool script. Of course -we prefix the script with the target triplet, so it's wrong. Fix this by -removing the forced assignment, so the configure script's knowledge of where it -put libtool is used. - -Upstream-Status: Pending -Signed-off-by: Ross Burton <ross.burton@intel.com> - ---- freetype-2.6/builds/unix/unix-cc.in.orig 2016-01-07 19:21:45.244943479 +0000 -+++ freetype-2.6/builds/unix/unix-cc.in 2016-01-07 19:21:50.213112131 +0000 -@@ -19,1 +18,1 @@ --LIBTOOL := $(FT_LIBTOOL_DIR)/libtool -+LIBTOOL := $(FT_LIBTOOL_DIR)/@LIBTOOL@ diff --git a/meta/recipes-graphics/freetype/freetype_2.9.1.bb b/meta/recipes-graphics/freetype/freetype_2.13.2.bb index 1e6f66ee9f..4e7a0ad160 100644 --- a/meta/recipes-graphics/freetype/freetype_2.9.1.bb +++ b/meta/recipes-graphics/freetype/freetype_2.13.2.bb @@ -7,21 +7,17 @@ HOMEPAGE = "http://www.freetype.org/" BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=freetype" SECTION = "libs" -LICENSE = "FreeType | GPLv2+" -LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=4af6221506f202774ef74f64932878a1 \ +LICENSE = "(FTL | GPL-2.0-or-later) & MIT" +LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=843b6efc16f6b1652ec97f89d5a516c0 \ file://docs/FTL.TXT;md5=9f37b4e6afa3fef9dba8932b16bd3f97 \ - file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec" + file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec \ + " -SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \ - file://use-right-libtool.patch \ - " +SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BP}.tar.xz" +SRC_URI[sha256sum] = "12991c4e55c506dd7f9b765933e62fd2be2e06d421505d7950a132e4f1bb484d" -UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/freetype/files/freetype2/" UPSTREAM_CHECK_REGEX = "freetype-(?P<pver>\d+(\.\d+)+)" -SRC_URI[md5sum] = "60ef7d8160cd4bf8cb118ee9d65367ca" -SRC_URI[sha256sum] = "db8d87ea720ea9d5edc5388fc7a0497bb11ba9fe972245e0f7f4c7e8b1e1e84d" - inherit autotools pkgconfig multilib_header # Adapt autotools to work with the minimal autoconf usage in freetype @@ -29,7 +25,7 @@ AUTOTOOLS_SCRIPT_PATH = "${S}/builds/unix" CONFIGURE_SCRIPT = "${S}/configure" EXTRA_AUTORECONF += "--exclude=autoheader --exclude=automake" -PACKAGECONFIG ??= "zlib" +PACKAGECONFIG ??= "zlib pixmap" PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2" # harfbuzz results in a circular dependency so enabling is non-trivial @@ -42,7 +38,7 @@ EXTRA_OECONF = "CC_BUILD='${BUILD_CC}'" TARGET_CPPFLAGS += "-D_FILE_OFFSET_BITS=64" -do_install_append() { +do_install:append() { oe_multilib_header freetype2/freetype/config/ftconfig.h } diff --git a/meta/recipes-graphics/glew/glew/0001-Fix-build-race-in-Makefile.patch b/meta/recipes-graphics/glew/glew/0001-Fix-build-race-in-Makefile.patch new file mode 100644 index 0000000000..2418646689 --- /dev/null +++ b/meta/recipes-graphics/glew/glew/0001-Fix-build-race-in-Makefile.patch @@ -0,0 +1,56 @@ +Upstream-Status: Backport [767e0316450911f1158bd4f7fd8dcd066bae5c55] +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From 0ce0a85597db48a2fca619bd95e34af091e54ae8 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Thu, 22 Jul 2021 16:31:11 +0100 +Subject: [PATCH] Fix build race in Makefile + +The current rule for the binaries is: + +glew.bin: glew.lib bin bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN) + +In parallel builds, all of those targets happen at the same time. This +means that 'bin' can happen *after* 'bin/$(GLEWINFO.BIN)', which is a +problem as the 'bin' target's responsibility is to create the directory +that the other target writes into. + +Solve this by not having a separate 'create directory' target which is +fundamentally racy, and simply mkdir in each target which writes into it. +--- + Makefile | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index d0e4614..04af44c 100644 +--- a/Makefile ++++ b/Makefile +@@ -171,21 +171,20 @@ VISUALINFO.BIN.OBJ := $(VISUALINFO.BIN.OBJ:.c=.o) + # Don't build glewinfo or visualinfo for NaCL, yet. + + ifneq ($(filter nacl%,$(SYSTEM)),) +-glew.bin: glew.lib bin ++glew.bin: glew.lib + else +-glew.bin: glew.lib bin bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN) ++glew.bin: glew.lib bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN) + endif + +-bin: +- mkdir bin +- + bin/$(GLEWINFO.BIN): $(GLEWINFO.BIN.OBJ) $(LIB.SHARED.DIR)/$(LIB.SHARED) ++ @mkdir -p $(dir $@) + $(CC) $(CFLAGS) -o $@ $(GLEWINFO.BIN.OBJ) $(BIN.LIBS) + ifneq ($(STRIP),) + $(STRIP) -x $@ + endif + + bin/$(VISUALINFO.BIN): $(VISUALINFO.BIN.OBJ) $(LIB.SHARED.DIR)/$(LIB.SHARED) ++ @mkdir -p $(dir $@) + $(CC) $(CFLAGS) -o $@ $(VISUALINFO.BIN.OBJ) $(BIN.LIBS) + ifneq ($(STRIP),) + $(STRIP) -x $@ +-- +2.25.1 + diff --git a/meta/recipes-graphics/glew/glew/0001-Fixed-compilation-with-current-mesa-versions.patch b/meta/recipes-graphics/glew/glew/0001-Fixed-compilation-with-current-mesa-versions.patch deleted file mode 100644 index 64f3e2fd9b..0000000000 --- a/meta/recipes-graphics/glew/glew/0001-Fixed-compilation-with-current-mesa-versions.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 7f65a36866f4e24dd1446fe1c9d21424f28bcabd Mon Sep 17 00:00:00 2001 -From: Deve <deveee@gmail.com> -Date: Wed, 14 Nov 2018 21:07:29 +0100 -Subject: [PATCH] Fixed compilation with current mesa versions. - -As you can see in -https://cgit.freedesktop.org/mesa/mesa/tree/include/GL/glext.h -now the file uses __gl_glext_h_ instead of __glext_h_ -It's precisely caused by commit f7d42ee7d319256608ad60778f6787c140badada - -Backoprt notes: - -* The original patch adjusts auto/src/glew_head.h only -* include/GL/glew.h is not part of git repo and gets created on tarball - creation - -=> patch include/GL/glew.h either to cause the desired fix - -Upstream-Status: Backport [1] - -[1] https://github.com/nigels-com/glew/commit/7f65a36866f4e24dd1446fe1c9d21424f28bcabd - -Signed-off-by: Andreas Müller <schnitzeltony@gmail.com> ---- - auto/src/glew_head.h | 3 ++- - include/GL/glew.h | 3 ++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/auto/src/glew_head.h b/auto/src/glew_head.h -index c19cefb..8f313d9 100644 ---- a/auto/src/glew_head.h -+++ b/auto/src/glew_head.h -@@ -14,7 +14,7 @@ - #if defined(__REGAL_H__) - #error Regal.h included before glew.h - #endif --#if defined(__glext_h_) || defined(__GLEXT_H_) -+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_) - #error glext.h included before glew.h - #endif - #if defined(__gl_ATI_h_) -@@ -30,6 +30,7 @@ - #define __X_GL_H - #define __glext_h_ - #define __GLEXT_H_ -+#define __gl_glext_h_ - #define __gl_ATI_h_ - - #if defined(_WIN32) -diff --git a/include/GL/glew.h b/include/GL/glew.h -index b5b6987..a9f9e4b 100644 ---- a/include/GL/glew.h -+++ b/include/GL/glew.h -@@ -93,7 +93,7 @@ - #if defined(__REGAL_H__) - #error Regal.h included before glew.h - #endif --#if defined(__glext_h_) || defined(__GLEXT_H_) -+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_) - #error glext.h included before glew.h - #endif - #if defined(__gl_ATI_h_) -@@ -109,6 +109,7 @@ - #define __X_GL_H - #define __glext_h_ - #define __GLEXT_H_ -+#define __gl_glext_h_ - #define __gl_ATI_h_ - - #if defined(_WIN32) --- -2.20.1 - diff --git a/meta/recipes-graphics/glew/glew/no-strip.patch b/meta/recipes-graphics/glew/glew/no-strip.patch index e411f11cb5..5708d93082 100644 --- a/meta/recipes-graphics/glew/glew/no-strip.patch +++ b/meta/recipes-graphics/glew/glew/no-strip.patch @@ -1,7 +1,7 @@ Don't forcibly strip the binaries. Signed-off-by: Ross Burton <ross.burton@intel.com> -Upstream-Status: Pending +Upstream-Status: Backport [d7693eea09ac76c67f5f3aa538bb911ce2291e2c] diff --git a/Makefile b/Makefile index 6a9803c..170c0ce 100644 diff --git a/meta/recipes-graphics/glew/glew/notempdir.patch b/meta/recipes-graphics/glew/glew/notempdir.patch new file mode 100644 index 0000000000..68b46b6641 --- /dev/null +++ b/meta/recipes-graphics/glew/glew/notempdir.patch @@ -0,0 +1,21 @@ +We don't use the dist-* targets and hence DIST_DIR isn't used. The current code +creates a new temp directory in /tmp/ for every invocation of make. Lets +not do that. + +https://github.com/nigels-com/glew/issues/334 + +Upstream-Status: Pending [a revised version would be needed for upstream] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: glew-2.2.0/Makefile +=================================================================== +--- glew-2.2.0.orig/Makefile ++++ glew-2.2.0/Makefile +@@ -56,7 +56,6 @@ DIST_SRC_ZIP ?= $(shell pwd)/$(DIST_NAME + DIST_SRC_TGZ ?= $(shell pwd)/$(DIST_NAME).tgz + DIST_WIN32 ?= $(shell pwd)/$(DIST_NAME)-win32.zip + +-DIST_DIR := $(shell mktemp -d /tmp/glew.XXXXXX)/$(DIST_NAME) + + # To disable stripping of linked binaries either: + # - use STRIP= on gmake command-line diff --git a/meta/recipes-graphics/glew/glew_2.1.0.bb b/meta/recipes-graphics/glew/glew_2.2.0.bb index 18e6909aa7..d7a26a3438 100644 --- a/meta/recipes-graphics/glew/glew_2.1.0.bb +++ b/meta/recipes-graphics/glew/glew_2.2.0.bb @@ -6,24 +6,25 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ac251558de685c6b9478d89be3149c2" SRC_URI = "${SOURCEFORGE_MIRROR}/project/glew/glew/${PV}/glew-${PV}.tgz \ - file://no-strip.patch \ - file://0001-Fixed-compilation-with-current-mesa-versions.patch" + file://0001-Fix-build-race-in-Makefile.patch \ + file://notempdir.patch \ + file://no-strip.patch" -SRC_URI[md5sum] = "b2ab12331033ddfaa50dc39345343980" -SRC_URI[sha256sum] = "04de91e7e6763039bc11940095cd9c7f880baba82196a7765f727ac05a993c95" +SRC_URI[md5sum] = "3579164bccaef09e36c0af7f4fd5c7c7" +SRC_URI[sha256sum] = "d4fc82893cfb00109578d0a1a2337fb8ca335b3ceccf97b97e5cc7f08e4353e1" UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/glew/files/glew" UPSTREAM_CHECK_REGEX = "/glew/(?P<pver>(\d+[\.\-_]*)+)/" -inherit lib_package pkgconfig distro_features_check +inherit lib_package pkgconfig features_check REQUIRED_DISTRO_FEATURES = "opengl" PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'opengl', 'egl-gles2', d)}" # The opengl and egl-XXX options are exclusive, enable only one. -PACKAGECONFIG[opengl] = "SYSTEM='linux',,virtual/libx11 virtual/libgl libglu libxext libxi libxmu" -PACKAGECONFIG[egl-gles2] = "SYSTEM='linux-egl' GLEW_NO_GLU='-DGLEW_NO_GLU' LDFLAGS.GL='-lEGL -lGLESv2',,virtual/egl virtual/libgles2" +PACKAGECONFIG[opengl] = "SYSTEM='linux',,virtual/libx11 virtual/libgl libglu libxext libxi libxmu,,,egl-gles2" +PACKAGECONFIG[egl-gles2] = "SYSTEM='linux-egl' GLEW_NO_GLU='-DGLEW_NO_GLU' LDFLAGS.GL='-lEGL -lGLESv2',,virtual/egl virtual/libgles2,,,opengl" CFLAGS += "-D_GNU_SOURCE" # Override SYSTEM (via PACKAGECONFIG_CONFARGS) to avoid calling config.guess, diff --git a/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch b/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch new file mode 100644 index 0000000000..e6bb6ec8e3 --- /dev/null +++ b/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch @@ -0,0 +1,46 @@ +From fc33f1cf032a15c07044ef932bc991c346d62d62 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sun, 7 Feb 2021 01:30:39 +0000 +Subject: [PATCH] generate glslang pkg-config + +Based on https://src.fedoraproject.org/rpms/glslang/blob/main/f/0001-pkg-config-compatibility.patch + +Upstream-Status: Pending + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + glslang/CMakeLists.txt | 2 ++ + glslang/glslang.pc.cmake.in | 11 +++++++++++ + 2 files changed, 13 insertions(+) + create mode 100644 glslang/glslang.pc.cmake.in + +diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt +index e4690f09..8e660bc5 100644 +--- a/glslang/CMakeLists.txt ++++ b/glslang/CMakeLists.txt +@@ -233,6 +233,8 @@ if(GLSLANG_ENABLE_INSTALL) + install(TARGETS MachineIndependent EXPORT glslang-targets) + install(TARGETS GenericCodeGen EXPORT glslang-targets) + endif() ++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY) ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + + set(PUBLIC_HEADERS + Public/ResourceLimits.h +diff --git a/glslang/glslang.pc.cmake.in b/glslang/glslang.pc.cmake.in +new file mode 100644 +index 00000000..43104e68 +--- /dev/null ++++ b/glslang/glslang.pc.cmake.in +@@ -0,0 +1,11 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=@CMAKE_INSTALL_PREFIX@ ++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ ++includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ ++ ++Name: @PROJECT_NAME@ ++Description: OpenGL and OpenGL ES shader front end and validator ++Requires: ++Version: @GLSLANG_VERSION@ ++Libs: -L${libdir} -lglslang -lHLSL -lSPVRemapper ++Cflags: -I${includedir} diff --git a/meta/recipes-graphics/glslang/glslang_1.3.283.0.bb b/meta/recipes-graphics/glslang/glslang_1.3.283.0.bb new file mode 100644 index 0000000000..b58bd1e956 --- /dev/null +++ b/meta/recipes-graphics/glslang/glslang_1.3.283.0.bb @@ -0,0 +1,37 @@ +SUMMARY = "OpenGL / OpenGL ES Reference Compiler" +DESCRIPTION = "Glslang is the official reference compiler front end for the \ +OpenGL ES and OpenGL shading languages. It implements a strict interpretation \ +of the specifications for these languages. It is open and free for anyone to use, \ +either from a command line or programmatically." +SECTION = "graphics" +HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler" +LICENSE = "BSD-3-Clause & BSD-2-Clause & MIT & Apache-2.0 & GPL-3-with-bison-exception" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2a2b5acd7bc4844964cfda45fe807dc3" + +SRCREV = "e8dd0b6903b34f1879520b444634c75ea2deedf5" +SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https;branch=main \ + file://0001-generate-glslang-pkg-config.patch \ + " +PE = "1" +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools +# vulkan-validation-layers, vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" +S = "${WORKDIR}/git" + +inherit cmake python3native + +DEPENDS = "spirv-tools" + +EXTRA_OECMAKE = " \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=ON \ + -DENABLE_PCH=OFF \ + -DENABLE_CTEST=OFF \ + -DBUILD_EXTERNAL=OFF \ + -DALLOW_EXTERNAL_SPIRV_TOOLS=ON \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/graphene/files/float-div.patch b/meta/recipes-graphics/graphene/files/float-div.patch new file mode 100644 index 0000000000..bf74101b1c --- /dev/null +++ b/meta/recipes-graphics/graphene/files/float-div.patch @@ -0,0 +1,28 @@ +From c19d1f4a7e44e071df3a2612ae2eb20c84e831a6 Mon Sep 17 00:00:00 2001 +From: Emmanuele Bassi <ebassi@gnome.org> +Date: Thu, 10 Aug 2023 12:44:49 +0100 +Subject: [PATCH] build: Allow host builds when cross-compiling + +Environments that set up execution wrappers when cross-compiling should +be allowed to run code. We only fall back on external properties if we +really can't run any native code on the host machine. + +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 48f22d7..7dcb9e6 100644 +--- a/meson.build ++++ b/meson.build +@@ -270,7 +270,7 @@ int main() { + return 0; + } + ''' +-if meson.is_cross_build() ++if not meson.can_run_host_binaries() + ieee754_float_div = meson.get_external_property('ieee754_float_div', cc.get_id() in ['gcc', 'clang']) + message('Cross-building, assuming IEEE 754 division:', ieee754_float_div) + else diff --git a/meta/recipes-graphics/graphene/graphene_1.10.8.bb b/meta/recipes-graphics/graphene/graphene_1.10.8.bb new file mode 100644 index 0000000000..e2e82b32aa --- /dev/null +++ b/meta/recipes-graphics/graphene/graphene_1.10.8.bb @@ -0,0 +1,29 @@ +SUMMARY = "A thin layer of graphic data types" +HOMEPAGE = "http://ebassi.github.io/graphene/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a7d871d9e23c450c421a85bb2819f648" + + +inherit gnomebase gobject-introspection gtk-doc + +SRC_URI += "file://float-div.patch" + +SRC_URI[archive.sha256sum] = "a37bb0e78a419dcbeaa9c7027bcff52f5ec2367c25ec859da31dfde2928f279a" + +# Disable neon support by default on ARM-32 platforms because of the +# following upstream bug: https://github.com/ebassi/graphene/issues/215 +PACKAGECONFIG ?= "gobject-types ${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'neon', '', d)}" + +PACKAGECONFIG[gobject-types] = "-Dgobject_types=true,-Dgobject_types=false,glib-2.0" +PACKAGECONFIG[neon] = "-Darm_neon=true,-Darm_neon=false," + +GIR_MESON_ENABLE_FLAG = 'enabled' +GIR_MESON_DISABLE_FLAG = 'disabled' + +GTKDOC_MESON_OPTION = "gtk_doc" + +EXTRA_OEMESON = "-Dinstalled_tests=false" + +FILES:${PN} += "${libdir}/graphene-1.0" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz_2.3.1.bb b/meta/recipes-graphics/harfbuzz/harfbuzz_2.3.1.bb deleted file mode 100644 index 4b292d8ea9..0000000000 --- a/meta/recipes-graphics/harfbuzz/harfbuzz_2.3.1.bb +++ /dev/null @@ -1,40 +0,0 @@ -SUMMARY = "Text shaping library" -DESCRIPTION = "HarfBuzz is an OpenType text shaping engine." -HOMEPAGE = "http://www.freedesktop.org/wiki/Software/HarfBuzz" -BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz" -SECTION = "libs" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=e021dd6dda6ff1e6b1044002fc662b9b \ - file://src/hb-ucdn/COPYING;md5=994ba0f1295f15b4bda4999a5bbeddef \ -" - -DEPENDS = "glib-2.0 cairo fontconfig freetype" - -SRC_URI = "http://www.freedesktop.org/software/harfbuzz/release/${BP}.tar.bz2" -SRC_URI[md5sum] = "531de9df7c8a5405dd9c6a873fcee8c2" -SRC_URI[sha256sum] = "f205699d5b91374008d6f8e36c59e419ae2d9a7bb8c5d9f34041b9a5abcae468" - -inherit autotools pkgconfig lib_package gtk-doc - -PACKAGECONFIG ??= "icu" -PACKAGECONFIG[icu] = "--with-icu,--without-icu,icu" - -EXTRA_OECONF = " \ - --with-cairo \ - --with-fontconfig \ - --with-freetype \ - --with-glib \ - --without-graphite2 \ -" - -PACKAGES =+ "${PN}-icu ${PN}-icu-dev" - -LEAD_SONAME = "libharfbuzz.so" - -FILES_${PN}-icu = "${libdir}/libharfbuzz-icu.so.*" -FILES_${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \ - ${libdir}/libharfbuzz-icu.so \ - ${libdir}/pkgconfig/harfbuzz-icu.pc \ -" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz_8.5.0.bb b/meta/recipes-graphics/harfbuzz/harfbuzz_8.5.0.bb new file mode 100644 index 0000000000..97efc56c64 --- /dev/null +++ b/meta/recipes-graphics/harfbuzz/harfbuzz_8.5.0.bb @@ -0,0 +1,48 @@ +SUMMARY = "Text shaping library" +DESCRIPTION = "HarfBuzz is an OpenType text shaping engine." +HOMEPAGE = "http://www.freedesktop.org/wiki/Software/HarfBuzz" +BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz" +SECTION = "libs" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=b98429b8e8e3c2a67cfef01e99e4893d \ + file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc \ + " + +SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BPN}-${PV}.tar.xz" +SRC_URI[sha256sum] = "77e4f7f98f3d86bf8788b53e6832fb96279956e1c3961988ea3d4b7ca41ddc27" + +DEPENDS += "glib-2.0-native" + +inherit meson pkgconfig lib_package gtk-doc gobject-introspection github-releases + +GIR_MESON_ENABLE_FLAG = 'enabled' +GIR_MESON_DISABLE_FLAG = 'disabled' +GTKDOC_MESON_ENABLE_FLAG = 'enabled' +GTKDOC_MESON_DISABLE_FLAG = 'disabled' + +PACKAGECONFIG ??= "cairo freetype glib icu" +PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo" +PACKAGECONFIG[chafa] = "-Dchafa=enabled,-Dchafa=disabled,chafa" +PACKAGECONFIG[freetype] = "-Dfreetype=enabled,-Dfreetype=disabled,freetype" +PACKAGECONFIG[glib] = "-Dglib=enabled,-Dglib=disabled,glib-2.0" +PACKAGECONFIG[graphite] = "-Dgraphite2=enabled,-Dgraphite2=disabled,graphite2" +PACKAGECONFIG[icu] = "-Dicu=enabled,-Dicu=disabled,icu" + +PACKAGES =+ "${PN}-icu ${PN}-icu-dev ${PN}-subset" + +LEAD_SONAME = "libharfbuzz.so" + +do_install:append() { + # If no tools are installed due to PACKAGECONFIG then this directory might + # still be installed, so remove it to stop packaging warnings. + [ ! -d ${D}${bindir} ] || rmdir --ignore-fail-on-non-empty ${D}${bindir} +} + +FILES:${PN}-icu = "${libdir}/libharfbuzz-icu.so.*" +FILES:${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \ + ${libdir}/libharfbuzz-icu.so \ + ${libdir}/pkgconfig/harfbuzz-icu.pc \ +" +FILES:${PN}-subset = "${libdir}/libharfbuzz-subset.so.*" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb b/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb new file mode 100644 index 0000000000..90cd09ea70 --- /dev/null +++ b/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb @@ -0,0 +1,51 @@ +SUMMARY = "IGT GPU Tools" +DESCRIPTION = "IGT GPU Tools is a collection of tools for development and testing of the DRM drivers" +HOMEPAGE = "https://gitlab.freedesktop.org/drm/igt-gpu-tools" +BUGTRACKER = "https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues" + +LIC_FILES_CHKSUM = "file://COPYING;md5=67bfee4df38fa6ecbe3a675c552d4c08" + +LICENSE = "MIT" + +inherit meson pkgconfig + +SRCREV = "31ec677ca24e7ed86e35f367f40a29d3d9f51c06" +PV = "1.28" + +SRC_URI = "git://gitlab.freedesktop.org/drm/igt-gpu-tools.git;protocol=https;branch=master" + +S = "${WORKDIR}/git" + +DEPENDS += "libdrm libpciaccess cairo udev glib-2.0 procps libunwind kmod openssl elfutils alsa-lib json-c bison-native" +RDEPENDS:${PN} += "bash perl" +RDEPENDS:${PN}-tests += "bash" + +PACKAGE_BEFORE_PN = "${PN}-benchmarks ${PN}-tests" + +PACKAGECONFIG[chamelium] = "-Dchamelium=enabled,-Dchamelium=disabled,gsl xmlrpc-c" + +EXTRA_OEMESON = "-Ddocs=disabled -Drunner=enabled -Dsrcdir=${TARGET_DBGSRC_DIR}/git/ -Dversion_hash=${PV}" +COMPATIBLE_HOST = "(x86_64.*|i.86.*|arm.*|aarch64).*-linux" +COMPATIBLE_HOST:libc-musl:class-target = "null" +SECURITY_LDFLAGS = "${SECURITY_X_LDFLAGS}" + +gputools_sysroot_preprocess() { + rm -f ${SYSROOT_DESTDIR}${libdir}/pkgconfig/intel-gen4asm.pc +} +SYSROOT_PREPROCESS_FUNCS += "gputools_sysroot_preprocess" + +do_install:append() { + install -d ${D}/usr/share/${BPN}/scripts + install ${S}/scripts/run-tests.sh ${D}/usr/share/${BPN}/scripts + install -d ${D}/usr/share/${BPN}/runner + install -D ${B}/runner/igt_runner ${D}/usr/share/${BPN}/runner + install -D ${B}/runner/igt_resume ${D}/usr/share/${BPN}/runner +} + +FILES:${PN}-benchmarks += "${libexecdir}/${BPN}/benchmarks" +FILES:${PN}-tests += "\ + ${libexecdir}/${BPN}/*\ + ${datadir}/${BPN}/1080p-right.png\ + ${datadir}/${BPN}/1080p-left.png\ + ${datadir}/${BPN}/pass.png\ + ${datadir}/${BPN}/test-list.txt" diff --git a/meta/recipes-graphics/images/core-image-clutter.bb b/meta/recipes-graphics/images/core-image-clutter.bb deleted file mode 100644 index b0f25cf1b1..0000000000 --- a/meta/recipes-graphics/images/core-image-clutter.bb +++ /dev/null @@ -1,13 +0,0 @@ -DESCRIPTION = "An image with support for the Open GL-based toolkit Clutter, \ -which enables development of rich and animated graphical user interfaces." - -IMAGE_FEATURES += "splash package-management x11-base x11-sato ssh-server-dropbear" - -LICENSE = "MIT" - -IMAGE_INSTALL = "\ - ${CORE_IMAGE_BASE_INSTALL} \ - packagegroup-core-clutter-core \ - " - -inherit core-image diff --git a/meta/recipes-graphics/images/core-image-weston-sdk.bb b/meta/recipes-graphics/images/core-image-weston-sdk.bb new file mode 100644 index 0000000000..09e87b5b65 --- /dev/null +++ b/meta/recipes-graphics/images/core-image-weston-sdk.bb @@ -0,0 +1,15 @@ +require core-image-weston.bb + +DESCRIPTION = "Image with Weston support that includes everything within \ +core-image-weston plus meta-toolchain, development headers and libraries to \ +form a standalone SDK." +HOMEPAGE = "https://www.yoctoproject.org/" + +IMAGE_FEATURES += "dev-pkgs tools-sdk \ + tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks ssh-server-openssh" + +IMAGE_INSTALL += "kernel-devsrc" + +# Compiling stuff, specifically SystemTap probes, can require lots of memory +# See https://bugzilla.yoctoproject.org/show_bug.cgi?id=14673 +QB_MEM = "-m 768" diff --git a/meta/recipes-graphics/images/core-image-weston.bb b/meta/recipes-graphics/images/core-image-weston.bb index e36655ffc5..62305cc1ce 100644 --- a/meta/recipes-graphics/images/core-image-weston.bb +++ b/meta/recipes-graphics/images/core-image-weston.bb @@ -1,12 +1,12 @@ SUMMARY = "A very basic Wayland image with a terminal" -IMAGE_FEATURES += "splash package-management ssh-server-dropbear hwcodecs" +IMAGE_FEATURES += "splash package-management ssh-server-dropbear hwcodecs weston" LICENSE = "MIT" -inherit core-image distro_features_check +inherit core-image -REQUIRED_DISTRO_FEATURES = "wayland" - -CORE_IMAGE_BASE_INSTALL += "weston weston-init weston-examples gtk+3-demo clutter-1.0-examples" +CORE_IMAGE_BASE_INSTALL += "gtk+3-demo" CORE_IMAGE_BASE_INSTALL += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'weston-xwayland matchbox-terminal', '', d)}" + +QB_MEM = "-m 512" diff --git a/meta/recipes-graphics/images/core-image-x11.bb b/meta/recipes-graphics/images/core-image-x11.bb index 8455bb8cae..52407759f9 100644 --- a/meta/recipes-graphics/images/core-image-x11.bb +++ b/meta/recipes-graphics/images/core-image-x11.bb @@ -4,6 +4,8 @@ IMAGE_FEATURES += "splash package-management x11-base" LICENSE = "MIT" -inherit core-image distro_features_check +inherit core-image features_check REQUIRED_DISTRO_FEATURES = "x11" + +QB_MEM = '${@bb.utils.contains("DISTRO_FEATURES", "opengl", "-m 512", "-m 256", d)}' diff --git a/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch b/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch deleted file mode 100644 index 82fffe1e68..0000000000 --- a/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 5cf847b5bef8dc3f9f89bd09dd5af4e6603f393c Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Mon, 27 Aug 2018 16:10:55 +0800 -Subject: [PATCH] libjpeg-turbo: fix package_qa error - -Fix package qa errors like below: -libjpeg.so.62.3.0 contains probably-redundant RPATH /usr/lib [useless-rpaths] -usr/bin/cjpeg contains probably-redundant RPATH /usr/lib - -Upstream-Status: Inappropriate[oe-specific] - -Signed-off-by: Changqing Li <changqing.li@windriver.com> -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - CMakeLists.txt | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 2bc3458..ea3041e 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -189,10 +189,6 @@ endif() - report_option(ENABLE_SHARED "Shared libraries") - report_option(ENABLE_STATIC "Static libraries") - --if(ENABLE_SHARED) -- set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}) --endif() -- - if(WITH_12BIT) - set(WITH_ARITH_DEC 0) - set(WITH_ARITH_ENC 0) diff --git a/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.2.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.2.bb deleted file mode 100644 index e1df754b76..0000000000 --- a/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.2.bb +++ /dev/null @@ -1,57 +0,0 @@ -SUMMARY = "Hardware accelerated JPEG compression/decompression library" -DESCRIPTION = "libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression" -HOMEPAGE = "http://libjpeg-turbo.org/" - -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://cdjpeg.h;endline=13;md5=8184bcc7c4ac7b9edc6a7bc00f231d0b \ - file://jpeglib.h;endline=16;md5=7ea97dc83b0f59052ee837e61ef0e08f \ - file://djpeg.c;endline=11;md5=c59e19811c006cb38f82d6477134d314 \ -" -DEPENDS_append_x86-64_class-target = " nasm-native" -DEPENDS_append_x86_class-target = " nasm-native" - -SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \ - file://0001-libjpeg-turbo-fix-package_qa-error.patch \ - " - -SRC_URI[md5sum] = "79f76fbfb0c6109631332762d10e16d2" -SRC_URI[sha256sum] = "acb8599fe5399af114287ee5907aea4456f8f2c1cc96d26c28aebfdf5ee82fed" -UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/" -UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/" - -PE= "1" - -# Drop-in replacement for jpeg -PROVIDES = "jpeg" -RPROVIDES_${PN} += "jpeg" -RREPLACES_${PN} += "jpeg" -RCONFLICTS_${PN} += "jpeg" - -inherit cmake pkgconfig - -# Add nasm-native dependency consistently for all build arches is hard -EXTRA_OECMAKE_append_class-native = " -DWITH_SIMD=False" -EXTRA_OECMAKE_append_class-nativesdk = " -DWITH_SIMD=False" - -# Work around missing x32 ABI support -EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "-DWITH_SIMD=False", "", d)}" - -# Work around missing non-floating point ABI support in MIPS -EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "-DWITH_SIMD=False", "", d)}" - -# Provide a workaround if Altivec unit is not present in PPC -EXTRA_OECMAKE_append_class-target_powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" -EXTRA_OECMAKE_append_class-target_powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" - -DEBUG_OPTIMIZATION_append_armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}" -DEBUG_OPTIMIZATION_append_armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}" - -PACKAGES =+ "jpeg-tools libturbojpeg" - -DESCRIPTION_jpeg-tools = "The jpeg-tools package includes client programs to access libjpeg functionality. These tools allow for the compression, decompression, transformation and display of JPEG files and benchmarking of the libjpeg library." -FILES_jpeg-tools = "${bindir}/*" - -DESCRIPTION_libturbojpeg = "A SIMD-accelerated JPEG codec which provides only TurboJPEG APIs" -FILES_libturbojpeg = "${libdir}/libturbojpeg.so.*" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/jpeg/libjpeg-turbo_3.0.1.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_3.0.1.bb new file mode 100644 index 0000000000..132d4b375a --- /dev/null +++ b/meta/recipes-graphics/jpeg/libjpeg-turbo_3.0.1.bb @@ -0,0 +1,58 @@ +SUMMARY = "Hardware accelerated JPEG compression/decompression library" +DESCRIPTION = "libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression" +HOMEPAGE = "http://libjpeg-turbo.org/" + +LICENSE = "IJG & BSD-3-Clause & Zlib" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=2a8e0d8226a102f07ab63ed7fd6ce155" + +DEPENDS:append:x86-64:class-target = " nasm-native" +DEPENDS:append:x86:class-target = " nasm-native" + +SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz" + +SRC_URI[sha256sum] = "22429507714ae147b3acacd299e82099fce5d9f456882fc28e252e4579ba2a75" +UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/" +UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/" + +PE = "1" + +# Drop-in replacement for jpeg +PROVIDES = "jpeg" +RPROVIDES:${PN} += "jpeg" +RREPLACES:${PN} += "jpeg" +RCONFLICTS:${PN} += "jpeg" + +inherit cmake pkgconfig + +export NASMENV = "--reproducible --debug-prefix-map=${WORKDIR}=${TARGET_DBGSRC_DIR}" + +# Add nasm-native dependency consistently for all build arches is hard +EXTRA_OECMAKE:append:class-native = " -DWITH_SIMD=False" +EXTRA_OECMAKE:append:class-nativesdk = " -DWITH_SIMD=False" + +# Work around missing x32 ABI support +EXTRA_OECMAKE:append:class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "-DWITH_SIMD=False", "", d)}" + +# Work around missing non-floating point ABI support in MIPS +EXTRA_OECMAKE:append:class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "-DWITH_SIMD=False", "", d)}" + +EXTRA_OECMAKE:append:class-target:arm = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "", "-DWITH_SIMD=False", d)}" +EXTRA_OECMAKE:append:class-target:armeb = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "", "-DWITH_SIMD=False", d)}" + +# Provide a workaround if Altivec unit is not present in PPC +EXTRA_OECMAKE:append:class-target:powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" +EXTRA_OECMAKE:append:class-target:powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" +EXTRA_OECMAKE:append:class-target:powerpc64le = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}" + +DEBUG_OPTIMIZATION:append:armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}" +DEBUG_OPTIMIZATION:append:armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}" + +PACKAGES =+ "jpeg-tools libturbojpeg" + +DESCRIPTION:jpeg-tools = "The jpeg-tools package includes client programs to access libjpeg functionality. These tools allow for the compression, decompression, transformation and display of JPEG files and benchmarking of the libjpeg library." +FILES:jpeg-tools = "${bindir}/*" + +DESCRIPTION:libturbojpeg = "A SIMD-accelerated JPEG codec which provides only TurboJPEG APIs" +FILES:libturbojpeg = "${libdir}/libturbojpeg.so.*" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/kmscube/kmscube/0001-cube-gears-Change-header-file-to-GLES3-gl3.h.patch b/meta/recipes-graphics/kmscube/kmscube/0001-cube-gears-Change-header-file-to-GLES3-gl3.h.patch new file mode 100644 index 0000000000..f8608d4676 --- /dev/null +++ b/meta/recipes-graphics/kmscube/kmscube/0001-cube-gears-Change-header-file-to-GLES3-gl3.h.patch @@ -0,0 +1,31 @@ +From 5f54f067da7ee24a61d6cb41e0636383729e2bad Mon Sep 17 00:00:00 2001 +From: Fabio Estevam <festevam@gmail.com> +Date: Mon, 8 Jan 2024 15:00:01 -0300 +Subject: [PATCH] cube-gears: Change header file to <GLES3/gl3.h> + +Since commit 96d63eb59e34 ("kmscube: Add gears mode"), kmscube fails +to build on platforms without <GL/gl.h>. + +Fix it by changing the header file to <GLES3/gl3.h>. + +Reported-by: Martin Jansa <martin.jansa@gmail.com> +Suggested-by: Martin Jansa <martin.jansa@gmail.com> +Signed-off-by: Fabio Estevam <festevam@gmail.com> +Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/kmscube/-/merge_requests/51] +--- + cube-gears.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cube-gears.c b/cube-gears.c +index d5b7a5f..cb538ec 100644 +--- a/cube-gears.c ++++ b/cube-gears.c +@@ -31,7 +31,7 @@ + #include <sys/time.h> + #include <math.h> + +-#include <GL/gl.h> ++#include <GLES3/gl3.h> + + #include "common.h" + #include "esUtil.h" diff --git a/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch b/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch deleted file mode 100644 index 611e541598..0000000000 --- a/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 761bf993ca55095f46380c0238583791c1797295 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Daniel=20D=C3=ADaz?= <daniel.diaz@linaro.org> -Date: Tue, 11 Jul 2017 14:50:37 -0500 -Subject: [PATCH kmscube] Detect gst_bo_map/_unmap and use it (or avoid it) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Those functions are not available on libMali, thus breaking -builds and creating havoc. - -Removing the specific parts of the code that deal with -gbm_bo_map() and gbm_bo_unmap() renders the kmscube utility -a little less useful, but still valuable. - -Signed-off-by: Daniel DÃaz <daniel.diaz@linaro.org> -Cc: Rob Clark <robdclark@gmail.com> -Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> - -Upstream-Status: Submitted [https://lists.freedesktop.org/archives/mesa-dev/2017-July/163020.html] ---- - Makefile.am | 5 ++++- - configure.ac | 3 +++ - gst-decoder.c | 7 ++++++- - kmscube.c | 4 ++++ - 4 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index a36087d..ab4adbf 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -43,7 +43,6 @@ kmscube_SOURCES = \ - common.c \ - common.h \ - cube-smooth.c \ -- cube-tex.c \ - drm-atomic.c \ - drm-common.c \ - drm-common.h \ -@@ -59,3 +58,7 @@ kmscube_LDADD += $(GST_LIBS) - kmscube_CFLAGS += $(GST_CFLAGS) - kmscube_SOURCES += cube-video.c gst-decoder.c - endif -+ -+if ENABLE_GBM_MAP -+kmscube_SOURCES += cube-tex.c -+endif -diff --git a/configure.ac b/configure.ac -index 8397f7b..c7f1f4d 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -49,5 +49,8 @@ if test "x$HAVE_GST" = "xyes"; then - fi - AM_CONDITIONAL(ENABLE_GST, [test "x$HAVE_GST" = "xyes"]) - -+AC_CHECK_LIB([gbm], [gbm_bo_map], [HAVE_GBM_BO_MAP=yes], []) -+AM_CONDITIONAL(ENABLE_GBM_MAP, [test "x$HAVE_GBM_BO_MAP" = "xyes"]) -+ - AC_CONFIG_FILES([Makefile]) - AC_OUTPUT -diff --git a/gst-decoder.c b/gst-decoder.c -index 2d6d581..b84980e 100644 ---- a/gst-decoder.c -+++ b/gst-decoder.c -@@ -332,6 +332,7 @@ set_last_frame(struct decoder *dec, EGLImage frame, GstSample *samp) - dec->last_samp = samp; - } - -+#if HAVE_GBM_BO_MAP - // TODO this could probably be a helper re-used by cube-tex: - static int - buf_to_fd(const struct gbm *gbm, int size, void *ptr) -@@ -357,6 +358,7 @@ buf_to_fd(const struct gbm *gbm, int size, void *ptr) - - return fd; - } -+#endif - - static EGLImage - buffer_to_image(struct decoder *dec, GstBuffer *buf) -@@ -410,12 +412,15 @@ buffer_to_image(struct decoder *dec, GstBuffer *buf) - - if (is_dmabuf_mem) { - dmabuf_fd = dup(gst_dmabuf_memory_get_fd(mem)); -- } else { -+ } -+#if HAVE_GBM_BO_MAP -+ else { - GstMapInfo map_info; - gst_buffer_map(buf, &map_info, GST_MAP_READ); - dmabuf_fd = buf_to_fd(dec->gbm, map_info.size, map_info.data); - gst_buffer_unmap(buf, &map_info); - } -+#endif - - if (dmabuf_fd < 0) { - GST_ERROR("could not obtain DMABUF FD"); -diff --git a/kmscube.c b/kmscube.c -index 3a2c4dd..276dc55 100644 ---- a/kmscube.c -+++ b/kmscube.c -@@ -148,7 +148,11 @@ int main(int argc, char *argv[]) - else if (mode == VIDEO) - egl = init_cube_video(gbm, video, samples); - else -+#if HAVE_GBM_BO_MAP - egl = init_cube_tex(gbm, mode, samples); -+#else -+ printf("gbm_bo_map() support missing\n"); -+#endif - - if (!egl) { - printf("failed to initialize EGL\n"); --- -2.7.4 - diff --git a/meta/recipes-graphics/kmscube/kmscube_git.bb b/meta/recipes-graphics/kmscube/kmscube_git.bb index b2dd6b30b0..19bbcd195d 100644 --- a/meta/recipes-graphics/kmscube/kmscube_git.bb +++ b/meta/recipes-graphics/kmscube/kmscube_git.bb @@ -1,21 +1,33 @@ -DESCRIPTION = "Demo application to showcase 3D graphics using kms and gbm" +SUMMARY = "Demo application to showcase 3D graphics using kms and gbm" +DESCRIPTION = "kmscube is a little demonstration program for how to drive bare metal graphics \ +without a compositor like X11, wayland or similar, using DRM/KMS (kernel mode \ +setting), GBM (graphics buffer manager) and EGL for rendering content using \ +OpenGL or OpenGL ES." HOMEPAGE = "https://cgit.freedesktop.org/mesa/kmscube/" LICENSE = "MIT" SECTION = "graphics" -DEPENDS = "virtual/libgles2 virtual/egl libdrm" +DEPENDS = "virtual/libgles3 virtual/libgles2 virtual/egl libdrm virtual/libgbm" LIC_FILES_CHKSUM = "file://kmscube.c;beginline=1;endline=23;md5=8b309d4ee67b7315ff7381270dd631fb" -SRCREV = "d8da3dcfdfe33ee525cf562e928a5266ac69843c" -SRC_URI = "git://anongit.freedesktop.org/mesa/kmscube;branch=master;protocol=git \ - file://detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch" +SRCREV = "6ab022fdfcfedd28f4b5dbd8d3299414a367746f" +SRC_URI = "git://gitlab.freedesktop.org/mesa/kmscube;branch=master;protocol=https \ + file://0001-cube-gears-Change-header-file-to-GLES3-gl3.h.patch \ + " + UPSTREAM_CHECK_COMMITS = "1" S = "${WORKDIR}/git" -inherit meson pkgconfig distro_features_check +BASEPV = "0.0.1" +PV = "${BASEPV}+git" + +inherit meson pkgconfig features_check REQUIRED_DISTRO_FEATURES = "opengl" PACKAGECONFIG ??= "" PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,gstreamer1.0 gstreamer1.0-plugins-base" + +CFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}" + diff --git a/meta/recipes-graphics/libepoxy/libepoxy_1.5.10.bb b/meta/recipes-graphics/libepoxy/libepoxy_1.5.10.bb new file mode 100644 index 0000000000..384afa6907 --- /dev/null +++ b/meta/recipes-graphics/libepoxy/libepoxy_1.5.10.bb @@ -0,0 +1,30 @@ +SUMMARY = "OpenGL function pointer management library" +DESCRIPTION = "It hides the complexity of dlopen(), dlsym(), \ +glXGetProcAddress(), eglGetProcAddress(), etc. from the app developer, with \ +very little knowledge needed on their part. They get to read GL specs and \ +write code using undecorated function names like glCompileShader()." +HOMEPAGE = "https://github.com/anholt/libepoxy/" +SECTION = "libs" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=58ef4c80d401e07bd9ee8b6b58cf464b" + +SRC_URI = "git://github.com/anholt/libepoxy;branch=master;protocol=https" +SRCREV = "c84bc9459357a40e46e2fec0408d04fbdde2c973" +S = "${WORKDIR}/git" + +inherit meson pkgconfig features_check github-releases + +REQUIRED_DISTRO_FEATURES = "opengl" + +PACKAGECONFIG[egl] = "-Degl=yes, -Degl=no, virtual/egl" +PACKAGECONFIG[x11] = "-Dglx=yes, -Dglx=no -Dx11=false, virtual/libx11 virtual/libgl" +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} egl" + +EXTRA_OEMESON += "-Dtests=false" + +PACKAGECONFIG:class-native = "egl x11" +PACKAGECONFIG:class-nativesdk = "egl x11" + +BBCLASSEXTEND = "native nativesdk" + diff --git a/meta/recipes-graphics/libepoxy/libepoxy_1.5.3.bb b/meta/recipes-graphics/libepoxy/libepoxy_1.5.3.bb deleted file mode 100644 index dd706a9606..0000000000 --- a/meta/recipes-graphics/libepoxy/libepoxy_1.5.3.bb +++ /dev/null @@ -1,38 +0,0 @@ -SUMMARY = "OpenGL function pointer management library" -HOMEPAGE = "https://github.com/anholt/libepoxy/" -SECTION = "libs" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=58ef4c80d401e07bd9ee8b6b58cf464b" - -SRC_URI = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz \ - " -SRC_URI[md5sum] = "e2845de8d2782b2d31c01ae8d7cd4cbb" -SRC_URI[sha256sum] = "002958c5528321edd53440235d3c44e71b5b1e09b9177e8daf677450b6c4433d" -UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases" - -inherit meson pkgconfig distro_features_check - -REQUIRED_DISTRO_FEATURES = "opengl" -REQUIRED_DISTRO_FEATURES_class-native = "" -REQUIRED_DISTRO_FEATURES_class-nativesdk = "" - -PACKAGECONFIG[egl] = "-Degl=yes, -Degl=no, virtual/egl" -PACKAGECONFIG[x11] = "-Dglx=yes, -Dglx=no, virtual/libx11 virtual/libgl" -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} egl" - -EXTRA_OEMESON += "-Dtests=false" - -PACKAGECONFIG_class-native = "egl" -PACKAGECONFIG_class-nativesdk = "egl" - -BBCLASSEXTEND = "native nativesdk" - -# This will ensure that dlopen will attempt only GL libraries provided by host -do_install_append_class-native() { - chrpath --delete ${D}${libdir}/*.so -} - -do_install_append_class-nativesdk() { - chrpath --delete ${D}${libdir}/*.so -} diff --git a/meta/recipes-graphics/libfakekey/libfakekey_git.bb b/meta/recipes-graphics/libfakekey/libfakekey_git.bb index 4b803dbae5..5f902d3a67 100644 --- a/meta/recipes-graphics/libfakekey/libfakekey_git.bb +++ b/meta/recipes-graphics/libfakekey/libfakekey_git.bb @@ -4,20 +4,20 @@ key-presses." HOMEPAGE = "http://matchbox-project.org/" BUGTRACKER = "http://bugzilla.yoctoproject.org/" -LICENSE = "LGPLv2+" +LICENSE = "LGPL-2.0-or-later" LIC_FILES_CHKSUM = "file://src/libfakekey.c;endline=30;md5=602b5ccd48f64407510867f3373b448c" DEPENDS = "libxtst" SECTION = "x11/wm" SRCREV = "7ad885912efb2131e80914e964d5e635b0d07b40" -PV = "0.3+git${SRCPV}" +PV = "0.3+git" -SRC_URI = "git://git.yoctoproject.org/${BPN}" +SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master;protocol=https" S = "${WORKDIR}/git" -inherit autotools pkgconfig gettext distro_features_check +inherit autotools pkgconfig gettext features_check # The libxtst requires x11 in DISTRO_FEATURES REQUIRED_DISTRO_FEATURES = "x11" diff --git a/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb b/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb index ce45e48147..bf3f5c005d 100644 --- a/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb +++ b/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb @@ -1,9 +1,13 @@ SUMMARY = "Matchbox window manager core library" +DESCRIPTION = "Matchbox is an Open Source base environment for the X Window \ +System running on non-desktop embedded platforms such as handhelds, set-top \ +boxes, kiosks and anything else for which screen space, input mechanisms or \ +system resources are limited." SECTION = "x11/libs" HOMEPAGE = "http://matchbox-project.org/" BUGTRACKER = "http://bugzilla.yoctoproject.com/" -LICENSE = "LGPLv2+ & MIT" +LICENSE = "LGPL-2.0-or-later & MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34 \ file://COPYING.MIT;md5=f45ed9332b4f50a35adf2065adde4ca7 \ file://libmb/mbexp.c;endline=20;md5=28c0aef3b23e308464f5dae6a11b0d2f \ @@ -13,11 +17,11 @@ DEPENDS = "virtual/libx11 libxext" #SRCREV for 1.12 SRCREV = "e846ee434f8e23d9db38af13c523f791495e0e87" -SRC_URI = "git://git.yoctoproject.org/${BPN}" +SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master;protocol=https" S = "${WORKDIR}/git" -inherit autotools pkgconfig distro_features_check +inherit autotools pkgconfig features_check # depends on virtual/libx11 REQUIRED_DISTRO_FEATURES = "x11" diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch deleted file mode 100644 index ec8c0fd4fb..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 44e4bb4cfb81024c8f5fd2e179e8a32c42756a2f Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sun, 23 Jul 2017 16:52:43 -0700 -Subject: [PATCH] build: Pass --tag=CC explictly when using libtool - -Do not depend solely on libtool heuristics which fail -in OE case when building with external compiler and -hardening flags - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - Makefile.in | 4 ++-- - build-scripts/makedep.sh | 8 ++++---- - 2 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/Makefile.in b/Makefile.in -index ab51035..743ce30 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -72,10 +72,10 @@ depend: - include $(depend) - - $(objects)/$(TARGET): $(OBJECTS) -- $(LIBTOOL) --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) -+ $(LIBTOOL) --tag=CC --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) - - $(objects)/$(SDLMAIN_TARGET): $(SDLMAIN_OBJECTS) -- $(LIBTOOL) --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) $(SDLMAIN_LDFLAGS) -+ $(LIBTOOL) --tag=CC --mode=link $(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) $(SDLMAIN_LDFLAGS) - - - install: all install-bin install-hdrs install-lib install-data install-man -diff --git a/build-scripts/makedep.sh b/build-scripts/makedep.sh -index 3b3863b..dba28f2 100755 ---- a/build-scripts/makedep.sh -+++ b/build-scripts/makedep.sh -@@ -51,19 +51,19 @@ do echo "Generating dependencies for $src" - case $ext in - c) cat >>${output}.new <<__EOF__ - -- \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ -+ \$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ - - __EOF__ - ;; - cc) cat >>${output}.new <<__EOF__ - -- \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ -+ \$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ - - __EOF__ - ;; - m) cat >>${output}.new <<__EOF__ - -- \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ -+ \$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ - - __EOF__ - ;; -@@ -75,7 +75,7 @@ __EOF__ - ;; - S) cat >>${output}.new <<__EOF__ - -- \$(LIBTOOL) --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ -+ \$(LIBTOOL) --tag=CC --mode=compile \$(CC) \$(CFLAGS) \$(EXTRA_CFLAGS) -c $src -o \$@ - - __EOF__ - ;; --- -2.13.3 - diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch deleted file mode 100644 index c41c2de0f3..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch +++ /dev/null @@ -1,114 +0,0 @@ -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560182231 25200 -# Mon Jun 10 08:57:11 2019 -0700 -# Branch SDL-1.2 -# Node ID a8afedbcaea0e84921dc770195c4699bda3ccdc5 -# Parent faf9abbcfb5fe0d0ca23c4bf0394aa226ceccf02 -CVE-2019-7572: Fix a buffer overwrite in IMA_ADPCM_decode -If data chunk was longer than expected based on a WAV format -definition, IMA_ADPCM_decode() tried to write past the output -buffer. This patch fixes it. - -Based on patch from -<https://bugzilla.libsdl.org/show_bug.cgi?id=4496>. - -CVE-2019-7572 -https://bugzilla.libsdl.org/show_bug.cgi?id=4495 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560041863 25200 -# Sat Jun 08 17:57:43 2019 -0700 -# Branch SDL-1.2 -# Node ID e52413f5258600878f9a10d2f92605a729aa8976 -# Parent 4e73be7b47877ae11d2279bd916910d469d18f8e -CVE-2019-7572: Fix a buffer overread in IMA_ADPCM_nibble -If an IMA ADPCM block contained an initial index out of step table -range (loaded in IMA_ADPCM_decode()), IMA_ADPCM_nibble() blindly used -this bogus value and that lead to a buffer overread. - -This patch fixes it by moving clamping the index value at the -beginning of IMA_ADPCM_nibble() function instead of the end after -an update. - -CVE-2019-7572 -https://bugzilla.libsdl.org/show_bug.cgi?id=4495 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -CVE: CVE-2019-7572 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r faf9abbcfb5f -r a8afedbcaea0 src/audio/SDL_wave.c ---- a/src/audio/SDL_wave.c Mon Jun 10 08:54:29 2019 -0700 -+++ b/src/audio/SDL_wave.c Mon Jun 10 08:57:11 2019 -0700 -@@ -346,7 +346,7 @@ - static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) - { - struct IMA_ADPCM_decodestate *state; -- Uint8 *freeable, *encoded, *encoded_end, *decoded; -+ Uint8 *freeable, *encoded, *encoded_end, *decoded, *decoded_end; - Sint32 encoded_len, samplesleft; - unsigned int c, channels; - -@@ -373,6 +373,7 @@ - return(-1); - } - decoded = *audio_buf; -+ decoded_end = decoded + *audio_len; - - /* Get ready... Go! */ - while ( encoded_len >= IMA_ADPCM_state.wavefmt.blockalign ) { -@@ -392,6 +393,7 @@ - } - - /* Store the initial sample we start with */ -+ if (decoded + 2 > decoded_end) goto invalid_size; - decoded[0] = (Uint8)(state[c].sample&0xFF); - decoded[1] = (Uint8)(state[c].sample>>8); - decoded += 2; -@@ -402,6 +404,8 @@ - while ( samplesleft > 0 ) { - for ( c=0; c<channels; ++c ) { - if (encoded + 4 > encoded_end) goto invalid_size; -+ if (decoded + 4 * 4 * channels > decoded_end) -+ goto invalid_size; - Fill_IMA_ADPCM_block(decoded, encoded, - c, channels, &state[c]); - encoded += 4; - -diff -r 4e73be7b4787 -r e52413f52586 src/audio/SDL_wave.c ---- a/src/audio/SDL_wave.c Sat Jun 01 18:27:46 2019 +0100 -+++ b/src/audio/SDL_wave.c Sat Jun 08 17:57:43 2019 -0700 -@@ -264,6 +264,14 @@ - }; - Sint32 delta, step; - -+ /* Clamp index value. The inital value can be invalid. */ -+ if ( state->index > 88 ) { -+ state->index = 88; -+ } else -+ if ( state->index < 0 ) { -+ state->index = 0; -+ } -+ - /* Compute difference and new sample value */ - step = step_table[state->index]; - delta = step >> 3; -@@ -275,12 +283,6 @@ - - /* Update index value */ - state->index += index_table[nybble]; -- if ( state->index > 88 ) { -- state->index = 88; -- } else -- if ( state->index < 0 ) { -- state->index = 0; -- } - - /* Clamp output sample */ - if ( state->sample > max_audioval ) { diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch deleted file mode 100644 index 9fd53da29b..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch +++ /dev/null @@ -1,68 +0,0 @@ -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560181859 25200 -# Mon Jun 10 08:50:59 2019 -0700 -# Branch SDL-1.2 -# Node ID a6e3d2f5183e1cc300ad993e10e9ce077e13bd9c -# Parent 388987dff7bf8f1e214e69c2e4f1aa31e06396b5 -CVE-2019-7574: Fix a buffer overread in IMA_ADPCM_decode -If data chunk was shorter than expected based on a WAV format -definition, IMA_ADPCM_decode() tried to read past the data chunk -buffer. This patch fixes it. - -CVE-2019-7574 -https://bugzilla.libsdl.org/show_bug.cgi?id=4496 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -CVE: CVE-2019-7574 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r 388987dff7bf -r a6e3d2f5183e src/audio/SDL_wave.c ---- a/src/audio/SDL_wave.c Sat Jun 08 18:02:09 2019 -0700 -+++ b/src/audio/SDL_wave.c Mon Jun 10 08:50:59 2019 -0700 -@@ -331,7 +331,7 @@ - static int IMA_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) - { - struct IMA_ADPCM_decodestate *state; -- Uint8 *freeable, *encoded, *decoded; -+ Uint8 *freeable, *encoded, *encoded_end, *decoded; - Sint32 encoded_len, samplesleft; - unsigned int c, channels; - -@@ -347,6 +347,7 @@ - /* Allocate the proper sized output buffer */ - encoded_len = *audio_len; - encoded = *audio_buf; -+ encoded_end = encoded + encoded_len; - freeable = *audio_buf; - *audio_len = (encoded_len/IMA_ADPCM_state.wavefmt.blockalign) * - IMA_ADPCM_state.wSamplesPerBlock* -@@ -362,6 +363,7 @@ - while ( encoded_len >= IMA_ADPCM_state.wavefmt.blockalign ) { - /* Grab the initial information for this block */ - for ( c=0; c<channels; ++c ) { -+ if (encoded + 4 > encoded_end) goto invalid_size; - /* Fill the state information for this block */ - state[c].sample = ((encoded[1]<<8)|encoded[0]); - encoded += 2; -@@ -384,6 +386,7 @@ - samplesleft = (IMA_ADPCM_state.wSamplesPerBlock-1)*channels; - while ( samplesleft > 0 ) { - for ( c=0; c<channels; ++c ) { -+ if (encoded + 4 > encoded_end) goto invalid_size; - Fill_IMA_ADPCM_block(decoded, encoded, - c, channels, &state[c]); - encoded += 4; -@@ -395,6 +398,10 @@ - } - SDL_free(freeable); - return(0); -+invalid_size: -+ SDL_SetError("Unexpected chunk length for an IMA ADPCM decoder"); -+ SDL_free(freeable); -+ return(-1); - } - - SDL_AudioSpec * SDL_LoadWAV_RW (SDL_RWops *src, int freesrc, diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch deleted file mode 100644 index a3e8416d0e..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch +++ /dev/null @@ -1,81 +0,0 @@ -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560183905 25200 -# Mon Jun 10 09:25:05 2019 -0700 -# Branch SDL-1.2 -# Node ID a936f9bd3e381d67d8ddee8b9243f85799ea4798 -# Parent fcbecae427951bac1684baaba2ade68221315140 -CVE-2019-7575: Fix a buffer overwrite in MS_ADPCM_decode -If a WAV format defines shorter audio stream and decoded MS ADPCM data chunk -is longer, decoding continued past the output audio buffer. - -This fix is based on a patch from -<https://bugzilla.libsdl.org/show_bug.cgi?id=4492>. - -https://bugzilla.libsdl.org/show_bug.cgi?id=4493 -CVE-2019-7575 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -CVE: CVE-2019-7575 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r fcbecae42795 -r a936f9bd3e38 src/audio/SDL_wave.c ---- a/src/audio/SDL_wave.c Mon Jun 10 09:06:23 2019 -0700 -+++ b/src/audio/SDL_wave.c Mon Jun 10 09:25:05 2019 -0700 -@@ -122,7 +122,7 @@ - static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) - { - struct MS_ADPCM_decodestate *state[2]; -- Uint8 *freeable, *encoded, *encoded_end, *decoded; -+ Uint8 *freeable, *encoded, *encoded_end, *decoded, *decoded_end; - Sint32 encoded_len, samplesleft; - Sint8 nybble, stereo; - Sint16 *coeff[2]; -@@ -142,6 +142,7 @@ - return(-1); - } - decoded = *audio_buf; -+ decoded_end = decoded + *audio_len; - - /* Get ready... Go! */ - stereo = (MS_ADPCM_state.wavefmt.channels == 2); -@@ -149,7 +150,7 @@ - state[1] = &MS_ADPCM_state.state[stereo]; - while ( encoded_len >= MS_ADPCM_state.wavefmt.blockalign ) { - /* Grab the initial information for this block */ -- if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto too_short; -+ if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto invalid_size; - state[0]->hPredictor = *encoded++; - if ( stereo ) { - state[1]->hPredictor = *encoded++; -@@ -179,6 +180,7 @@ - coeff[1] = MS_ADPCM_state.aCoeff[state[1]->hPredictor]; - - /* Store the two initial samples we start with */ -+ if (decoded + 4 + (stereo ? 4 : 0) > decoded_end) goto invalid_size; - decoded[0] = state[0]->iSamp2&0xFF; - decoded[1] = state[0]->iSamp2>>8; - decoded += 2; -@@ -200,7 +202,8 @@ - samplesleft = (MS_ADPCM_state.wSamplesPerBlock-2)* - MS_ADPCM_state.wavefmt.channels; - while ( samplesleft > 0 ) { -- if (encoded + 1 > encoded_end) goto too_short; -+ if (encoded + 1 > encoded_end) goto invalid_size; -+ if (decoded + 4 > decoded_end) goto invalid_size; - - nybble = (*encoded)>>4; - new_sample = MS_ADPCM_nibble(state[0],nybble,coeff[0]); -@@ -223,8 +226,8 @@ - } - SDL_free(freeable); - return(0); --too_short: -- SDL_SetError("Too short chunk for a MS ADPCM decoder"); -+invalid_size: -+ SDL_SetError("Unexpected chunk length for a MS ADPCM decoder"); - SDL_free(freeable); - return(-1); - invalid_predictor: diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch deleted file mode 100644 index d9a505217b..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch +++ /dev/null @@ -1,80 +0,0 @@ -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560182783 25200 -# Mon Jun 10 09:06:23 2019 -0700 -# Branch SDL-1.2 -# Node ID fcbecae427951bac1684baaba2ade68221315140 -# Parent a8afedbcaea0e84921dc770195c4699bda3ccdc5 -CVE-2019-7573, CVE-2019-7576: Fix buffer overreads in InitMS_ADPCM -If MS ADPCM format chunk was too short, InitMS_ADPCM() parsing it -could read past the end of chunk data. This patch fixes it. - -CVE-2019-7573 -https://bugzilla.libsdl.org/show_bug.cgi?id=4491 -CVE-2019-7576 -https://bugzilla.libsdl.org/show_bug.cgi?id=4490 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -CVE: CVE-2019-7573 -CVE: CVE-2019-7576 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r a8afedbcaea0 -r fcbecae42795 src/audio/SDL_wave.c ---- a/src/audio/SDL_wave.c Mon Jun 10 08:57:11 2019 -0700 -+++ b/src/audio/SDL_wave.c Mon Jun 10 09:06:23 2019 -0700 -@@ -44,12 +44,13 @@ - struct MS_ADPCM_decodestate state[2]; - } MS_ADPCM_state; - --static int InitMS_ADPCM(WaveFMT *format) -+static int InitMS_ADPCM(WaveFMT *format, int length) - { -- Uint8 *rogue_feel; -+ Uint8 *rogue_feel, *rogue_feel_end; - int i; - - /* Set the rogue pointer to the MS_ADPCM specific data */ -+ if (length < sizeof(*format)) goto too_short; - MS_ADPCM_state.wavefmt.encoding = SDL_SwapLE16(format->encoding); - MS_ADPCM_state.wavefmt.channels = SDL_SwapLE16(format->channels); - MS_ADPCM_state.wavefmt.frequency = SDL_SwapLE32(format->frequency); -@@ -58,9 +59,11 @@ - MS_ADPCM_state.wavefmt.bitspersample = - SDL_SwapLE16(format->bitspersample); - rogue_feel = (Uint8 *)format+sizeof(*format); -+ rogue_feel_end = (Uint8 *)format + length; - if ( sizeof(*format) == 16 ) { - rogue_feel += sizeof(Uint16); - } -+ if (rogue_feel + 4 > rogue_feel_end) goto too_short; - MS_ADPCM_state.wSamplesPerBlock = ((rogue_feel[1]<<8)|rogue_feel[0]); - rogue_feel += sizeof(Uint16); - MS_ADPCM_state.wNumCoef = ((rogue_feel[1]<<8)|rogue_feel[0]); -@@ -70,12 +73,16 @@ - return(-1); - } - for ( i=0; i<MS_ADPCM_state.wNumCoef; ++i ) { -+ if (rogue_feel + 4 > rogue_feel_end) goto too_short; - MS_ADPCM_state.aCoeff[i][0] = ((rogue_feel[1]<<8)|rogue_feel[0]); - rogue_feel += sizeof(Uint16); - MS_ADPCM_state.aCoeff[i][1] = ((rogue_feel[1]<<8)|rogue_feel[0]); - rogue_feel += sizeof(Uint16); - } - return(0); -+too_short: -+ SDL_SetError("Unexpected length of a chunk with a MS ADPCM format"); -+ return(-1); - } - - static Sint32 MS_ADPCM_nibble(struct MS_ADPCM_decodestate *state, -@@ -495,7 +502,7 @@ - break; - case MS_ADPCM_CODE: - /* Try to understand this */ -- if ( InitMS_ADPCM(format) < 0 ) { -+ if ( InitMS_ADPCM(format, lenread) < 0 ) { - was_error = 1; - goto done; - } diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch deleted file mode 100644 index 92e40aec5e..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch +++ /dev/null @@ -1,123 +0,0 @@ -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560182051 25200 -# Mon Jun 10 08:54:11 2019 -0700 -# Branch SDL-1.2 -# Node ID 416136310b88cbeeff8773e573e90ac1e22b3526 -# Parent a6e3d2f5183e1cc300ad993e10e9ce077e13bd9c -CVE-2019-7577: Fix a buffer overread in MS_ADPCM_decode -If RIFF/WAV data chunk length is shorter then expected for an audio -format defined in preceeding RIFF/WAV format headers, a buffer -overread can happen. - -This patch fixes it by checking a MS ADPCM data to be decoded are not -past the initialized buffer. - -CVE-2019-7577 -Reproducer: https://bugzilla.libsdl.org/show_bug.cgi?id=4492 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560182069 25200 -# Mon Jun 10 08:54:29 2019 -0700 -# Branch SDL-1.2 -# Node ID faf9abbcfb5fe0d0ca23c4bf0394aa226ceccf02 -# Parent 416136310b88cbeeff8773e573e90ac1e22b3526 -CVE-2019-7577: Fix a buffer overread in MS_ADPCM_nibble and MS_ADPCM_decode -If a chunk of RIFF/WAV file with MS ADPCM encoding contains an invalid -predictor (a valid predictor's value is between 0 and 6 inclusive), -a buffer overread can happen when the predictor is used as an index -into an array of MS ADPCM coefficients. - -The overead happens when indexing MS_ADPCM_state.aCoeff[] array in -MS_ADPCM_decode() and later when dereferencing a coef pointer in -MS_ADPCM_nibble(). - -This patch fixes it by checking the MS ADPCM predictor values fit -into the valid range. - -CVE-2019-7577 -Reproducer: https://bugzilla.libsdl.org/show_bug.cgi?id=4492 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -CVE: CVE-2019-7577 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r a6e3d2f5183e -r 416136310b88 src/audio/SDL_wave.c ---- a/src/audio/SDL_wave.c Mon Jun 10 08:50:59 2019 -0700 -+++ b/src/audio/SDL_wave.c Mon Jun 10 08:54:11 2019 -0700 -@@ -115,7 +115,7 @@ - static int MS_ADPCM_decode(Uint8 **audio_buf, Uint32 *audio_len) - { - struct MS_ADPCM_decodestate *state[2]; -- Uint8 *freeable, *encoded, *decoded; -+ Uint8 *freeable, *encoded, *encoded_end, *decoded; - Sint32 encoded_len, samplesleft; - Sint8 nybble, stereo; - Sint16 *coeff[2]; -@@ -124,6 +124,7 @@ - /* Allocate the proper sized output buffer */ - encoded_len = *audio_len; - encoded = *audio_buf; -+ encoded_end = encoded + encoded_len; - freeable = *audio_buf; - *audio_len = (encoded_len/MS_ADPCM_state.wavefmt.blockalign) * - MS_ADPCM_state.wSamplesPerBlock* -@@ -141,6 +142,7 @@ - state[1] = &MS_ADPCM_state.state[stereo]; - while ( encoded_len >= MS_ADPCM_state.wavefmt.blockalign ) { - /* Grab the initial information for this block */ -+ if (encoded + 7 + (stereo ? 7 : 0) > encoded_end) goto too_short; - state[0]->hPredictor = *encoded++; - if ( stereo ) { - state[1]->hPredictor = *encoded++; -@@ -188,6 +190,8 @@ - samplesleft = (MS_ADPCM_state.wSamplesPerBlock-2)* - MS_ADPCM_state.wavefmt.channels; - while ( samplesleft > 0 ) { -+ if (encoded + 1 > encoded_end) goto too_short; -+ - nybble = (*encoded)>>4; - new_sample = MS_ADPCM_nibble(state[0],nybble,coeff[0]); - decoded[0] = new_sample&0xFF; -@@ -209,6 +213,10 @@ - } - SDL_free(freeable); - return(0); -+too_short: -+ SDL_SetError("Too short chunk for a MS ADPCM decoder"); -+ SDL_free(freeable); -+ return(-1); - } - - struct IMA_ADPCM_decodestate { - - -diff -r 416136310b88 -r faf9abbcfb5f src/audio/SDL_wave.c ---- a/src/audio/SDL_wave.c Mon Jun 10 08:54:11 2019 -0700 -+++ b/src/audio/SDL_wave.c Mon Jun 10 08:54:29 2019 -0700 -@@ -147,6 +147,9 @@ - if ( stereo ) { - state[1]->hPredictor = *encoded++; - } -+ if (state[0]->hPredictor >= 7 || state[1]->hPredictor >= 7) { -+ goto invalid_predictor; -+ } - state[0]->iDelta = ((encoded[1]<<8)|encoded[0]); - encoded += sizeof(Sint16); - if ( stereo ) { -@@ -217,6 +220,10 @@ - SDL_SetError("Too short chunk for a MS ADPCM decoder"); - SDL_free(freeable); - return(-1); -+invalid_predictor: -+ SDL_SetError("Invalid predictor value for a MS ADPCM decoder"); -+ SDL_free(freeable); -+ return(-1); - } - - struct IMA_ADPCM_decodestate { diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch deleted file mode 100644 index 7028890333..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch +++ /dev/null @@ -1,64 +0,0 @@ -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560042129 25200 -# Sat Jun 08 18:02:09 2019 -0700 -# Branch SDL-1.2 -# Node ID 388987dff7bf8f1e214e69c2e4f1aa31e06396b5 -# Parent e52413f5258600878f9a10d2f92605a729aa8976 -CVE-2019-7578: Fix a buffer overread in InitIMA_ADPCM -If IMA ADPCM format chunk was too short, InitIMA_ADPCM() parsing it -could read past the end of chunk data. This patch fixes it. - -CVE-2019-7578 -https://bugzilla.libsdl.org/show_bug.cgi?id=4494 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -CVE: CVE-2019-7578 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r e52413f52586 -r 388987dff7bf src/audio/SDL_wave.c ---- a/src/audio/SDL_wave.c Sat Jun 08 17:57:43 2019 -0700 -+++ b/src/audio/SDL_wave.c Sat Jun 08 18:02:09 2019 -0700 -@@ -222,11 +222,12 @@ - struct IMA_ADPCM_decodestate state[2]; - } IMA_ADPCM_state; - --static int InitIMA_ADPCM(WaveFMT *format) -+static int InitIMA_ADPCM(WaveFMT *format, int length) - { -- Uint8 *rogue_feel; -+ Uint8 *rogue_feel, *rogue_feel_end; - - /* Set the rogue pointer to the IMA_ADPCM specific data */ -+ if (length < sizeof(*format)) goto too_short; - IMA_ADPCM_state.wavefmt.encoding = SDL_SwapLE16(format->encoding); - IMA_ADPCM_state.wavefmt.channels = SDL_SwapLE16(format->channels); - IMA_ADPCM_state.wavefmt.frequency = SDL_SwapLE32(format->frequency); -@@ -235,11 +236,16 @@ - IMA_ADPCM_state.wavefmt.bitspersample = - SDL_SwapLE16(format->bitspersample); - rogue_feel = (Uint8 *)format+sizeof(*format); -+ rogue_feel_end = (Uint8 *)format + length; - if ( sizeof(*format) == 16 ) { - rogue_feel += sizeof(Uint16); - } -+ if (rogue_feel + 2 > rogue_feel_end) goto too_short; - IMA_ADPCM_state.wSamplesPerBlock = ((rogue_feel[1]<<8)|rogue_feel[0]); - return(0); -+too_short: -+ SDL_SetError("Unexpected length of a chunk with an IMA ADPCM format"); -+ return(-1); - } - - static Sint32 IMA_ADPCM_nibble(struct IMA_ADPCM_decodestate *state,Uint8 nybble) -@@ -471,7 +477,7 @@ - break; - case IMA_ADPCM_CODE: - /* Try to understand this */ -- if ( InitIMA_ADPCM(format) < 0 ) { -+ if ( InitIMA_ADPCM(format, lenread) < 0 ) { - was_error = 1; - goto done; - } diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch deleted file mode 100644 index 78af1b061d..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch +++ /dev/null @@ -1,63 +0,0 @@ -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1560259692 25200 -# Tue Jun 11 06:28:12 2019 -0700 -# Branch SDL-1.2 -# Node ID f1f5878be5dbf63c1161a8ee52b8a86ece30e552 -# Parent a936f9bd3e381d67d8ddee8b9243f85799ea4798 -CVE-2019-7635: Reject BMP images with pixel colors out the palette -If a 1-, 4-, or 8-bit per pixel BMP image declares less used colors -than the palette offers an SDL_Surface with a palette of the indicated -number of used colors is created. If some of the image's pixel -refer to a color number higher then the maximal used colors, a subsequent -bliting operation on the surface will look up a color past a blit map -(that is based on the palette) memory. I.e. passing such SDL_Surface -to e.g. an SDL_DisplayFormat() function will result in a buffer overread in -a blit function. - -This patch fixes it by validing each pixel's color to be less than the -maximal color number in the palette. A validation failure raises an -error from a SDL_LoadBMP_RW() function. - -CVE-2019-7635 -https://bugzilla.libsdl.org/show_bug.cgi?id=4498 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -CVE: CVE-2019-7635 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r a936f9bd3e38 -r f1f5878be5db src/video/SDL_bmp.c ---- a/src/video/SDL_bmp.c Mon Jun 10 09:25:05 2019 -0700 -+++ b/src/video/SDL_bmp.c Tue Jun 11 06:28:12 2019 -0700 -@@ -308,6 +308,12 @@ - } - *(bits+i) = (pixel>>shift); - pixel <<= ExpandBMP; -+ if ( bits[i] >= biClrUsed ) { -+ SDL_SetError( -+ "A BMP image contains a pixel with a color out of the palette"); -+ was_error = SDL_TRUE; -+ goto done; -+ } - } } - break; - -@@ -318,6 +324,16 @@ - was_error = SDL_TRUE; - goto done; - } -+ if ( 8 == biBitCount && palette && biClrUsed < (1 << biBitCount ) ) { -+ for ( i=0; i<surface->w; ++i ) { -+ if ( bits[i] >= biClrUsed ) { -+ SDL_SetError( -+ "A BMP image contains a pixel with a color out of the palette"); -+ was_error = SDL_TRUE; -+ goto done; -+ } -+ } -+ } - #if SDL_BYTEORDER == SDL_BIG_ENDIAN - /* Byte-swap the pixels if needed. Note that the 24bpp - case has already been taken care of above. */ diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch deleted file mode 100644 index c95338e61a..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch +++ /dev/null @@ -1,192 +0,0 @@ -# HG changeset patch -# User Petr PÃsaÅ™ <ppisar@redhat.com> -# Date 1552788984 25200 -# Sat Mar 16 19:16:24 2019 -0700 -# Branch SDL-1.2 -# Node ID 9b0e5c555c0f5ce6d2c3c19da6cc2c7fb5048bf2 -# Parent 4646533663ae1d80c2cc6b2d6dbfb37c62491c1e -CVE-2019-7637: Fix in integer overflow in SDL_CalculatePitch -If a too large width is passed to SDL_SetVideoMode() the width travels -to SDL_CalculatePitch() where the width (e.g. 65535) is multiplied by -BytesPerPixel (e.g. 4) and the result is stored into Uint16 pitch -variable. During this arithmetics an integer overflow can happen (e.g. -the value is clamped as 65532). As a result SDL_Surface with a pitch -smaller than width * BytesPerPixel is created, too small pixel buffer -is allocated and when the SDL_Surface is processed in SDL_FillRect() -a buffer overflow occurs. - -This can be reproduced with "./graywin -width 21312312313123213213213" -command. - -This patch fixes is by using a very careful arithmetics in -SDL_CalculatePitch(). If an overflow is detected, an error is reported -back as a special 0 value. We assume that 0-width surfaces do not -occur in the wild. Since SDL_CalculatePitch() is a private function, -we can change the semantics. - -CVE-2019-7637 -https://bugzilla.libsdl.org/show_bug.cgi?id=4497 - -Signed-off-by: Petr PÃsaÅ™ <ppisar@redhat.com> - -CVE: CVE-2019-7637 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r 4646533663ae -r 9b0e5c555c0f src/video/SDL_pixels.c ---- a/src/video/SDL_pixels.c Sat Mar 16 18:35:33 2019 -0700 -+++ b/src/video/SDL_pixels.c Sat Mar 16 19:16:24 2019 -0700 -@@ -286,26 +286,53 @@ - } - } - /* -- * Calculate the pad-aligned scanline width of a surface -+ * Calculate the pad-aligned scanline width of a surface. Return 0 in case of -+ * an error. - */ - Uint16 SDL_CalculatePitch(SDL_Surface *surface) - { -- Uint16 pitch; -+ unsigned int pitch = 0; - - /* Surface should be 4-byte aligned for speed */ -- pitch = surface->w*surface->format->BytesPerPixel; -+ /* The code tries to prevent from an Uint16 overflow. */; -+ for (Uint8 byte = surface->format->BytesPerPixel; byte; byte--) { -+ pitch += (unsigned int)surface->w; -+ if (pitch < surface->w) { -+ SDL_SetError("A scanline is too wide"); -+ return(0); -+ } -+ } - switch (surface->format->BitsPerPixel) { - case 1: -- pitch = (pitch+7)/8; -+ if (pitch % 8) { -+ pitch = pitch / 8 + 1; -+ } else { -+ pitch = pitch / 8; -+ } - break; - case 4: -- pitch = (pitch+1)/2; -+ if (pitch % 2) { -+ pitch = pitch / 2 + 1; -+ } else { -+ pitch = pitch / 2; -+ } - break; - default: - break; - } -- pitch = (pitch + 3) & ~3; /* 4-byte aligning */ -- return(pitch); -+ /* 4-byte aligning */ -+ if (pitch & 3) { -+ if (pitch + 3 < pitch) { -+ SDL_SetError("A scanline is too wide"); -+ return(0); -+ } -+ pitch = (pitch + 3) & ~3; -+ } -+ if (pitch > 0xFFFF) { -+ SDL_SetError("A scanline is too wide"); -+ return(0); -+ } -+ return((Uint16)pitch); - } - /* - * Match an RGB value to a particular palette index -diff -r 4646533663ae -r 9b0e5c555c0f src/video/gapi/SDL_gapivideo.c ---- a/src/video/gapi/SDL_gapivideo.c Sat Mar 16 18:35:33 2019 -0700 -+++ b/src/video/gapi/SDL_gapivideo.c Sat Mar 16 19:16:24 2019 -0700 -@@ -733,6 +733,9 @@ - video->w = gapi->w = width; - video->h = gapi->h = height; - video->pitch = SDL_CalculatePitch(video); -+ if (!current->pitch) { -+ return(NULL); -+ } - - /* Small fix for WinCE/Win32 - when activating window - SDL_VideoSurface is equal to zero, so activating code -diff -r 4646533663ae -r 9b0e5c555c0f src/video/nanox/SDL_nxvideo.c ---- a/src/video/nanox/SDL_nxvideo.c Sat Mar 16 18:35:33 2019 -0700 -+++ b/src/video/nanox/SDL_nxvideo.c Sat Mar 16 19:16:24 2019 -0700 -@@ -378,6 +378,10 @@ - current -> w = width ; - current -> h = height ; - current -> pitch = SDL_CalculatePitch (current) ; -+ if (!current->pitch) { -+ current = NULL; -+ goto done; -+ } - NX_ResizeImage (this, current, flags) ; - } - -diff -r 4646533663ae -r 9b0e5c555c0f src/video/ps2gs/SDL_gsvideo.c ---- a/src/video/ps2gs/SDL_gsvideo.c Sat Mar 16 18:35:33 2019 -0700 -+++ b/src/video/ps2gs/SDL_gsvideo.c Sat Mar 16 19:16:24 2019 -0700 -@@ -479,6 +479,9 @@ - current->w = width; - current->h = height; - current->pitch = SDL_CalculatePitch(current); -+ if (!current->pitch) { -+ return(NULL); -+ } - - /* Memory map the DMA area for block memory transfer */ - if ( ! mapped_mem ) { -diff -r 4646533663ae -r 9b0e5c555c0f src/video/ps3/SDL_ps3video.c ---- a/src/video/ps3/SDL_ps3video.c Sat Mar 16 18:35:33 2019 -0700 -+++ b/src/video/ps3/SDL_ps3video.c Sat Mar 16 19:16:24 2019 -0700 -@@ -339,6 +339,9 @@ - current->w = width; - current->h = height; - current->pitch = SDL_CalculatePitch(current); -+ if (!current->pitch) { -+ return(NULL); -+ } - - /* Alloc aligned mem for current->pixels */ - s_pixels = memalign(16, current->h * current->pitch); -diff -r 4646533663ae -r 9b0e5c555c0f src/video/windib/SDL_dibvideo.c ---- a/src/video/windib/SDL_dibvideo.c Sat Mar 16 18:35:33 2019 -0700 -+++ b/src/video/windib/SDL_dibvideo.c Sat Mar 16 19:16:24 2019 -0700 -@@ -675,6 +675,9 @@ - video->w = width; - video->h = height; - video->pitch = SDL_CalculatePitch(video); -+ if (!current->pitch) { -+ return(NULL); -+ } - - /* Small fix for WinCE/Win32 - when activating window - SDL_VideoSurface is equal to zero, so activating code -diff -r 4646533663ae -r 9b0e5c555c0f src/video/windx5/SDL_dx5video.c ---- a/src/video/windx5/SDL_dx5video.c Sat Mar 16 18:35:33 2019 -0700 -+++ b/src/video/windx5/SDL_dx5video.c Sat Mar 16 19:16:24 2019 -0700 -@@ -1127,6 +1127,9 @@ - video->w = width; - video->h = height; - video->pitch = SDL_CalculatePitch(video); -+ if (!current->pitch) { -+ return(NULL); -+ } - - #ifndef NO_CHANGEDISPLAYSETTINGS - /* Set fullscreen mode if appropriate. -diff -r 4646533663ae -r 9b0e5c555c0f src/video/x11/SDL_x11video.c ---- a/src/video/x11/SDL_x11video.c Sat Mar 16 18:35:33 2019 -0700 -+++ b/src/video/x11/SDL_x11video.c Sat Mar 16 19:16:24 2019 -0700 -@@ -1225,6 +1225,10 @@ - current->w = width; - current->h = height; - current->pitch = SDL_CalculatePitch(current); -+ if (!current->pitch) { -+ current = NULL; -+ goto done; -+ } - if (X11_ResizeImage(this, current, flags) < 0) { - current = NULL; - goto done; diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch deleted file mode 100644 index dab9aaeb2b..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch +++ /dev/null @@ -1,38 +0,0 @@ -# HG changeset patch -# User Sam Lantinga <slouken@libsdl.org> -# Date 1550504903 28800 -# Mon Feb 18 07:48:23 2019 -0800 -# Branch SDL-1.2 -# Node ID 19d8c3b9c25143f71a34ff40ce1df91b4b3e3b78 -# Parent 8586f153eedec4c4e07066d6248ebdf67f10a229 -Fixed bug 4500 - Heap-Buffer Overflow in Map1toN pertaining to SDL_pixels.c - -Petr Pisar - -The reproducer has these data in BITMAPINFOHEADER: - -biSize = 40 -biBitCount = 8 -biClrUsed = 131075 - -SDL_LoadBMP_RW() function passes biBitCount as a color depth to SDL_CreateRGBSurface(), thus 256-color pallete is allocated. But then biClrUsed colors are read from a file and stored into the palette. SDL_LoadBMP_RW should report an error if biClrUsed is greater than 2^biBitCount. - -CVE: CVE-2019-7638 -CVE: CVE-2019-7636 -Upstream-Status: Backport -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - -diff -r 8586f153eede -r 19d8c3b9c251 src/video/SDL_bmp.c ---- a/src/video/SDL_bmp.c Sun Jan 13 15:27:50 2019 +0100 -+++ b/src/video/SDL_bmp.c Mon Feb 18 07:48:23 2019 -0800 -@@ -233,6 +233,10 @@ - if ( palette ) { - if ( biClrUsed == 0 ) { - biClrUsed = 1 << biBitCount; -+ } else if ( biClrUsed > (1 << biBitCount) ) { -+ SDL_SetError("BMP file has an invalid number of colors"); -+ was_error = SDL_TRUE; -+ goto done; - } - if ( biSize == 12 ) { - for ( i = 0; i < (int)biClrUsed; ++i ) { diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch deleted file mode 100644 index f98b927522..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch +++ /dev/null @@ -1,19 +0,0 @@ -libX11-1.5.99.901 has changed prototype of _XData32 - -Upstream-Status: Backport -<http://bugzilla.libsdl.org/show_bug.cgi?id=1769> - -Signed-off-by: Saul Wold <sgw@linux.intel.com> - -diff -r b6b2829cd7ef src/video/x11/SDL_x11sym.h ---- a/src/video/x11/SDL_x11sym.h Wed Feb 27 15:20:31 2013 -0800 -+++ b/src/video/x11/SDL_x11sym.h Wed Mar 27 16:07:23 2013 +0100 -@@ -165,7 +165,7 @@ - */ - #ifdef LONG64 - SDL_X11_MODULE(IO_32BIT) --SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return) -+SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return) - SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),) - #endif - diff --git a/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch b/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch deleted file mode 100644 index 913baa92a0..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch +++ /dev/null @@ -1,187 +0,0 @@ -Rather than code which doesn't even work properly when cross compiling, -lets just use pkg-config instead. Its a little simpler. - -RP 2014/6/20 - -Upstream-Status: Pending - -Index: SDL-1.2.15/sdl.m4 -=================================================================== ---- SDL-1.2.15.orig/sdl.m4 -+++ SDL-1.2.15/sdl.m4 -@@ -12,174 +12,8 @@ dnl Test for SDL, and define SDL_CFLAGS - dnl - AC_DEFUN([AM_PATH_SDL], - [dnl --dnl Get the cflags and libraries from the sdl-config script --dnl --AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], -- sdl_prefix="$withval", sdl_prefix="") --AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], -- sdl_exec_prefix="$withval", sdl_exec_prefix="") --AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], -- , enable_sdltest=yes) -- -- if test x$sdl_exec_prefix != x ; then -- sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" -- if test x${SDL_CONFIG+set} != xset ; then -- SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config -- fi -- fi -- if test x$sdl_prefix != x ; then -- sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" -- if test x${SDL_CONFIG+set} != xset ; then -- SDL_CONFIG=$sdl_prefix/bin/sdl-config -- fi -- fi -- -- as_save_PATH="$PATH" -- if test "x$prefix" != xNONE; then -- PATH="$prefix/bin:$prefix/usr/bin:$PATH" -- fi -- AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) -- PATH="$as_save_PATH" - min_sdl_version=ifelse([$1], ,0.11.0,$1) -- AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) -- no_sdl="" -- if test "$SDL_CONFIG" = "no" ; then -- no_sdl=yes -- else -- SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` -- SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` -- -- sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ -- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` -- sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ -- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` -- sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ -- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` -- if test "x$enable_sdltest" = "xyes" ; then -- ac_save_CFLAGS="$CFLAGS" -- ac_save_CXXFLAGS="$CXXFLAGS" -- ac_save_LIBS="$LIBS" -- CFLAGS="$CFLAGS $SDL_CFLAGS" -- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" -- LIBS="$LIBS $SDL_LIBS" --dnl --dnl Now check if the installed SDL is sufficiently new. (Also sanity --dnl checks the results of sdl-config to some extent --dnl -- rm -f conf.sdltest -- AC_TRY_RUN([ --#include <stdio.h> --#include <stdlib.h> --#include <string.h> --#include "SDL.h" -- --char* --my_strdup (char *str) --{ -- char *new_str; -- -- if (str) -- { -- new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); -- strcpy (new_str, str); -- } -- else -- new_str = NULL; -- -- return new_str; --} -- --int main (int argc, char *argv[]) --{ -- int major, minor, micro; -- char *tmp_version; -- -- /* This hangs on some systems (?) -- system ("touch conf.sdltest"); -- */ -- { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } -- -- /* HP/UX 9 (%@#!) writes to sscanf strings */ -- tmp_version = my_strdup("$min_sdl_version"); -- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { -- printf("%s, bad version string\n", "$min_sdl_version"); -- exit(1); -- } -- -- if (($sdl_major_version > major) || -- (($sdl_major_version == major) && ($sdl_minor_version > minor)) || -- (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) -- { -- return 0; -- } -- else -- { -- printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); -- printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); -- printf("*** best to upgrade to the required version.\n"); -- printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); -- printf("*** to point to the correct copy of sdl-config, and remove the file\n"); -- printf("*** config.cache before re-running configure\n"); -- return 1; -- } --} -- --],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) -- CFLAGS="$ac_save_CFLAGS" -- CXXFLAGS="$ac_save_CXXFLAGS" -- LIBS="$ac_save_LIBS" -- fi -- fi -- if test "x$no_sdl" = x ; then -- AC_MSG_RESULT(yes) -- ifelse([$2], , :, [$2]) -- else -- AC_MSG_RESULT(no) -- if test "$SDL_CONFIG" = "no" ; then -- echo "*** The sdl-config script installed by SDL could not be found" -- echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" -- echo "*** your path, or set the SDL_CONFIG environment variable to the" -- echo "*** full path to sdl-config." -- else -- if test -f conf.sdltest ; then -- : -- else -- echo "*** Could not run SDL test program, checking why..." -- CFLAGS="$CFLAGS $SDL_CFLAGS" -- CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" -- LIBS="$LIBS $SDL_LIBS" -- AC_TRY_LINK([ --#include <stdio.h> --#include "SDL.h" -- --int main(int argc, char *argv[]) --{ return 0; } --#undef main --#define main K_and_R_C_main --], [ return 0; ], -- [ echo "*** The test program compiled, but did not run. This usually means" -- echo "*** that the run-time linker is not finding SDL or finding the wrong" -- echo "*** version of SDL. If it is not finding SDL, you'll need to set your" -- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" -- echo "*** to the installed location Also, make sure you have run ldconfig if that" -- echo "*** is required on your system" -- echo "***" -- echo "*** If you have an old version installed, it is best to remove it, although" -- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], -- [ echo "*** The test program failed to compile or link. See the file config.log for the" -- echo "*** exact error that occured. This usually means SDL was incorrectly installed" -- echo "*** or that you have moved SDL since it was installed. In the latter case, you" -- echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) -- CFLAGS="$ac_save_CFLAGS" -- CXXFLAGS="$ac_save_CXXFLAGS" -- LIBS="$ac_save_LIBS" -- fi -- fi -- SDL_CFLAGS="" -- SDL_LIBS="" -- ifelse([$3], , :, [$3]) -- fi -+ PKG_CHECK_MODULES([SDL], [sdl >= $min_sdl_version]) - AC_SUBST(SDL_CFLAGS) - AC_SUBST(SDL_LIBS) -- rm -f conf.sdltest - ]) diff --git a/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb b/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb deleted file mode 100644 index 7a01908322..0000000000 --- a/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb +++ /dev/null @@ -1,83 +0,0 @@ -SUMMARY = "Simple DirectMedia Layer" -DESCRIPTION = "Simple DirectMedia Layer is a cross-platform multimedia \ -library designed to provide low level access to audio, keyboard, mouse, \ -joystick, 3D hardware via OpenGL, and 2D video framebuffer." -HOMEPAGE = "http://www.libsdl.org" -BUGTRACKER = "http://bugzilla.libsdl.org/" - -SECTION = "libs" - -LICENSE = "LGPLv2.1" -LIC_FILES_CHKSUM = "file://COPYING;md5=27818cd7fd83877a8e3ef82b82798ef4" - -PROVIDES = "virtual/libsdl" - -PR = "r3" - -SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \ - file://libsdl-1.2.15-xdata32.patch \ - file://pkgconfig.patch \ - file://0001-build-Pass-tag-CC-explictly-when-using-libtool.patch \ - file://CVE-2019-7577.patch \ - file://CVE-2019-7574.patch \ - file://CVE-2019-7572.patch \ - file://CVE-2019-7578.patch \ - file://CVE-2019-7575.patch \ - file://CVE-2019-7635.patch \ - file://CVE-2019-7637.patch \ - file://CVE-2019-7638.patch \ - file://CVE-2019-7576.patch \ - " - -UPSTREAM_CHECK_REGEX = "SDL-(?P<pver>\d+(\.\d+)+)\.tar" - -S = "${WORKDIR}/SDL-${PV}" - -SRC_URI[md5sum] = "9d96df8417572a2afb781a7c4c811a85" -SRC_URI[sha256sum] = "d6d316a793e5e348155f0dd93b979798933fb98aa1edebcc108829d6474aad00" - -BINCONFIG = "${bindir}/sdl-config" - -inherit autotools lib_package binconfig-disabled pkgconfig - -CVE_PRODUCT = "simple_directmedia_layer sdl" - -EXTRA_OECONF = "--disable-static --enable-cdrom --enable-threads --enable-timers \ - --enable-file --disable-oss --disable-esd --disable-arts \ - --disable-diskaudio --disable-nas \ - --disable-mintaudio --disable-nasm --disable-video-dga \ - --disable-video-fbcon --disable-video-ps2gs --disable-video-ps3 \ - --disable-xbios --disable-gem --disable-video-dummy \ - --enable-input-events --enable-pthreads \ - --disable-video-svga \ - --disable-video-picogui --disable-video-qtopia --enable-sdl-dlopen \ - --disable-rpath" - -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio x11', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'opengl', '', d)}" -PACKAGECONFIG_class-native = "x11" -PACKAGECONFIG_class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" - -PACKAGECONFIG[alsa] = "--enable-alsa --disable-alsatest,--disable-alsa,alsa-lib" -PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio" -PACKAGECONFIG[tslib] = "--enable-input-tslib, --disable-input-tslib, tslib" -PACKAGECONFIG[directfb] = "--enable-video-directfb, --disable-video-directfb, directfb" -PACKAGECONFIG[opengl] = "--enable-video-opengl, --disable-video-opengl, virtual/libgl libglu" -PACKAGECONFIG[x11] = "--enable-video-x11 --disable-x11-shared, --disable-video-x11, virtual/libx11 libxext libxrandr libxrender" - -# The following two options should only enabled with mingw support -PACKAGECONFIG[stdio-redirect] = "--enable-stdio-redirect,--disable-stdio-redirect" -PACKAGECONFIG[directx] = "--enable-directx,--disable-directx" - -EXTRA_AUTORECONF += "--include=acinclude --exclude=autoheader" - -do_configure_prepend() { - # Remove old libtool macros. - MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4" - for i in ${MACROS}; do - rm -f ${S}/acinclude/$i - done - export SYSROOT=$PKG_CONFIG_SYSROOT_DIR -} - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch b/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch deleted file mode 100644 index 29076bf6cb..0000000000 --- a/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch +++ /dev/null @@ -1,47 +0,0 @@ -Many source files include e.g. wayland-protocols.h which should be found in the -sysroot but SDL wants to build its own headers from the XML definitions. - -However the rules to generate those headers are only dependencies of the -top-level libSDL2.la object so can be built in parallel with the rest of the -objects, which can lead to interesting errors if the header is parsed by the -compiler whilst it's being written by another process: - -| gen/wayland-client-protocol.h:3: error: unterminated #ifndef -| #ifndef WAYLAND_CLIENT_PROTOCOL_H - -Solve this by adding more dependencies so the generated files are built before -the primary objects. - -Upstream-Status: Pending -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/configure.in b/data/poky-tmp/master/work/corei7-64-poky-linux/libsdl2/2.0.8-r0/SDL2-2.0.8/configure.in -index 1c7e79338..ba07a4a4e 100644 ---- a/configure.in -+++ b/data/poky-tmp/master/work/corei7-64-poky-linux/libsdl2/2.0.8-r0/SDL2-2.0.8/configure.in -@@ -4011,7 +4011,7 @@ DEPENDS=`echo $SOURCES | tr ' ' '\n'` - for EXT in asm cc m c S; do - OBJECTS=`echo "$OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.'$EXT',$(objects)/\1.lo,g'` - DEPENDS=`echo "$DEPENDS" | sed "s,^\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.$EXT\\$,\\\\ --\\$(objects)/\\2.lo: \\1/\\2.$EXT\\\\ -+\\$(objects)/\\2.lo: \\1/\\2.$EXT \\$(GEN_OBJECTS)\\\\ - \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"` - done - -@@ -4028,14 +4028,14 @@ SDLMAIN_OBJECTS=`echo $SDLMAIN_SOURCES` - SDLMAIN_DEPENDS=`echo $SDLMAIN_SOURCES` - SDLMAIN_OBJECTS=`echo "$SDLMAIN_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'` - SDLMAIN_DEPENDS=`echo "$SDLMAIN_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\ --\\$(objects)/\\2.lo: \\1/\\2.c\\\\ -+\\$(objects)/\\2.lo: \\1/\\2.c \\$(GEN_OBJECTS)\\\\ - \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"` - - SDLTEST_OBJECTS=`echo $SDLTEST_SOURCES` - SDLTEST_DEPENDS=`echo $SDLTEST_SOURCES` - SDLTEST_OBJECTS=`echo "$SDLTEST_OBJECTS" | sed 's,[[^ ]]*/\([[^ ]]*\)\.c,$(objects)/\1.lo,g'` - SDLTEST_DEPENDS=`echo "$SDLTEST_DEPENDS" | sed "s,\\([[^ ]]*\\)/\\([[^ ]]*\\)\\.c,\\\\ --\\$(objects)/\\2.lo: \\1/\\2.c\\\\ -+\\$(objects)/\\2.lo: \\1/\\2.c\\\\ \\$(GEN_OBJECTS)\\\\ - \\$(RUN_CMD_CC)\\$(LIBTOOL) --tag=CC --mode=compile \\$(CC) \\$(CFLAGS) \\$(EXTRA_CFLAGS) $DEPENDENCY_TRACKING_OPTIONS -c \\$< -o \\$@,g"` - - # Set runtime shared library paths as needed diff --git a/meta/recipes-graphics/libsdl2/libsdl2_2.0.9.bb b/meta/recipes-graphics/libsdl2/libsdl2_2.0.9.bb deleted file mode 100644 index bac91d3736..0000000000 --- a/meta/recipes-graphics/libsdl2/libsdl2_2.0.9.bb +++ /dev/null @@ -1,72 +0,0 @@ -SUMMARY = "Simple DirectMedia Layer" -DESCRIPTION = "Simple DirectMedia Layer is a cross-platform multimedia \ -library designed to provide low level access to audio, keyboard, mouse, \ -joystick, 3D hardware via OpenGL, and 2D video framebuffer." -HOMEPAGE = "http://www.libsdl.org" -BUGTRACKER = "http://bugzilla.libsdl.org/" - -SECTION = "libs" - -LICENSE = "Zlib" -LIC_FILES_CHKSUM = "file://COPYING.txt;md5=02ee26814dd044bd7838ae24e05b880f" - -PROVIDES = "virtual/libsdl2" - -SRC_URI = "http://www.libsdl.org/release/SDL2-${PV}.tar.gz \ - file://more-gen-depends.patch \ -" - -S = "${WORKDIR}/SDL2-${PV}" - -SRC_URI[md5sum] = "f2ecfba915c54f7200f504d8b48a5dfe" -SRC_URI[sha256sum] = "255186dc676ecd0c1dbf10ec8a2cc5d6869b5079d8a38194c2aecdff54b324b1" - -inherit autotools lib_package binconfig pkgconfig - -CVE_PRODUCT = "simple_directmedia_layer sdl" - -EXTRA_OECONF = "--disable-oss --disable-esd --disable-arts \ - --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \ - --disable-video-dummy \ - --enable-pthreads \ - --enable-sdl-dlopen \ - --disable-rpath \ - --disable-sndio \ - " - -# opengl packageconfig factored out to make it easy for distros -# and BSP layers to pick either (desktop) opengl, gles2, or no GL -PACKAGECONFIG_GL ?= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}" - -PACKAGECONFIG_class-native = "x11" -PACKAGECONFIG_class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" -PACKAGECONFIG ??= " \ - ${PACKAGECONFIG_GL} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio x11', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland gles2', '', d)} \ -" -PACKAGECONFIG[alsa] = "--enable-alsa --disable-alsatest,--disable-alsa,alsa-lib," -PACKAGECONFIG[directfb] = "--enable-video-directfb,--disable-video-directfb,directfb" -PACKAGECONFIG[gles2] = "--enable-video-opengles,--disable-video-opengles,virtual/libgles2" -PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" -PACKAGECONFIG[kmsdrm] = "--enable-video-kmsdrm,--disable-video-kmsdrm,libdrm virtual/libgbm" -PACKAGECONFIG[opengl] = "--enable-video-opengl,--disable-video-opengl,virtual/libgl" -PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio" -PACKAGECONFIG[tslib] = "--enable-input-tslib,--disable-input-tslib,tslib" -PACKAGECONFIG[wayland] = "--enable-video-wayland,--disable-video-wayland,wayland-native wayland wayland-protocols libxkbcommon" -PACKAGECONFIG[x11] = "--enable-video-x11,--disable-video-x11,virtual/libx11 libxext libxrandr libxrender" - -EXTRA_AUTORECONF += "--include=acinclude --exclude=autoheader" - -do_configure_prepend() { - # Remove old libtool macros. - MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4" - for i in ${MACROS}; do - rm -f ${S}/acinclude/$i - done - export SYSROOT=$PKG_CONFIG_SYSROOT_DIR -} - -FILES_${PN}-dev += "${libdir}/cmake" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/libsdl2/libsdl2_2.30.2.bb b/meta/recipes-graphics/libsdl2/libsdl2_2.30.2.bb new file mode 100644 index 0000000000..f9dacb288c --- /dev/null +++ b/meta/recipes-graphics/libsdl2/libsdl2_2.30.2.bb @@ -0,0 +1,85 @@ +SUMMARY = "Simple DirectMedia Layer" +DESCRIPTION = "Simple DirectMedia Layer is a cross-platform multimedia \ +library designed to provide low level access to audio, keyboard, mouse, \ +joystick, 3D hardware via OpenGL, and 2D video framebuffer." +HOMEPAGE = "http://www.libsdl.org" +BUGTRACKER = "http://bugzilla.libsdl.org/" + +SECTION = "libs" + +LICENSE = "Zlib & BSD-2-Clause" +LIC_FILES_CHKSUM = "\ + file://LICENSE.txt;md5=25231a5b96ccdd8f39eb53c07717be64 \ + file://src/hidapi/LICENSE.txt;md5=7c3949a631240cb6c31c50f3eb696077 \ + file://src/hidapi/LICENSE-bsd.txt;md5=b5fa085ce0926bb50d0621620a82361f \ + file://src/video/yuv2rgb/LICENSE;md5=79f8f3418d91531e05f0fc94ca67e071 \ +" + +# arm-neon adds MIT license +LICENSE:append = " ${@bb.utils.contains('PACKAGECONFIG', 'arm-neon', '& MIT', '', d)}" +LIC_FILES_CHKSUM:append = " ${@bb.utils.contains('PACKAGECONFIG', 'arm-neon', 'file://src/video/arm/pixman-arm-neon-asm.h;md5=9a9cc1e51abbf1da58f4d9528ec9d49b;beginline=1;endline=24', '', d)}" + +PROVIDES = "virtual/libsdl2" + +SRC_URI = "http://www.libsdl.org/release/SDL2-${PV}.tar.gz" + +S = "${WORKDIR}/SDL2-${PV}" + +SRC_URI[sha256sum] = "891d66ac8cae51361d3229e3336ebec1c407a8a2a063b61df14f5fdf3ab5ac31" + +inherit cmake lib_package binconfig-disabled pkgconfig upstream-version-is-even + +BINCONFIG = "${bindir}/sdl2-config" + +CVE_PRODUCT = "simple_directmedia_layer sdl" + +EXTRA_OECMAKE = "-DSDL_OSS=OFF -DSDL_ESD=OFF -DSDL_ARTS=OFF \ + -DSDL_DISKAUDIO=OFF -DSDL_NAS=OFF -DSDL_ESD_SHARED=OFF \ + -DSDL_DUMMYVIDEO=OFF \ + -DSDL_RPI=OFF \ + -DSDL_PTHREADS=ON \ + -DSDL_RPATH=OFF \ + -DSDL_SNDIO=OFF \ + -DSDL_X11_XCURSOR=OFF \ + -DSDL_X11_XDBE=OFF \ + -DSDL_X11_XFIXES=OFF \ + -DSDL_X11_XINPUT=OFF \ + -DSDL_X11_XRANDR=OFF \ + -DSDL_X11_XSCRNSAVER=OFF \ + -DSDL_X11_XSHAPE=OFF \ +" + +# opengl packageconfig factored out to make it easy for distros +# and BSP layers to pick either (desktop) opengl, gles2, or no GL +PACKAGECONFIG_GL ?= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}" + +PACKAGECONFIG:class-native = "x11 ${PACKAGECONFIG_GL}" +PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} ${PACKAGECONFIG_GL}" +PACKAGECONFIG ??= " \ + ${PACKAGECONFIG_GL} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio pipewire x11 vulkan', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland gles2', '', d)} \ + ${@bb.utils.contains("TUNE_FEATURES", "neon","arm-neon","",d)} \ +" +PACKAGECONFIG[alsa] = "-DSDL_ALSA=ON,-DSDL_ALSA=OFF,alsa-lib," +PACKAGECONFIG[arm-neon] = "-DSDL_ARMNEON=ON,-DSDL_ARMNEON=OFF" +PACKAGECONFIG[directfb] = "-DSDL_DIRECTFB=ON,-DSDL_DIRECTFB=OFF,directfb,directfb" +PACKAGECONFIG[gles2] = "-DSDL_OPENGLES=ON,-DSDL_OPENGLES=OFF,virtual/libgles2" +PACKAGECONFIG[jack] = "-DSDL_JACK=ON,-DSDL_JACK=OFF,jack" +PACKAGECONFIG[kmsdrm] = "-DSDL_KMSDRM=ON,-DSDL_KMSDRM=OFF,libdrm virtual/libgbm" +# The hidraw support doesn't catch Xbox, PS4 and Nintendo controllers, +# so we'll just use libusb when it's available. +PACKAGECONFIG[libusb] = ",,libusb1" +PACKAGECONFIG[libdecor] = "-DSDL_WAYLAND_LIBDECOR=ON,-DSDL_WAYLAND_LIBDECOR=OFF,libdecor,libdecor" +PACKAGECONFIG[opengl] = "-DSDL_OPENGL=ON,-DSDL_OPENGL=OFF,virtual/egl" +PACKAGECONFIG[pipewire] = "-DSDL_PIPEWIRE_SHARED=ON,-DSDL_PIPEWIRE_SHARED=OFF,pipewire" +PACKAGECONFIG[pulseaudio] = "-DSDL_PULSEAUDIO=ON,-DSDL_PULSEAUDIO=OFF,pulseaudio" +PACKAGECONFIG[vulkan] = "-DSDL_VULKAN=ON,-DSDL_VULKAN=OFF" +PACKAGECONFIG[wayland] = "-DSDL_WAYLAND=ON,-DSDL_WAYLAND=OFF,wayland-native wayland wayland-protocols libxkbcommon" +PACKAGECONFIG[x11] = "-DSDL_X11=ON,-DSDL_X11=OFF,virtual/libx11 libxext libxrandr libxrender" + +CFLAGS:append:class-native = " -DNO_SHARED_MEMORY" + +FILES:${PN} += "${datadir}/licenses/SDL2/LICENSE.txt" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/libva/libva-initial_2.20.0.bb b/meta/recipes-graphics/libva/libva-initial_2.20.0.bb new file mode 100644 index 0000000000..453096822f --- /dev/null +++ b/meta/recipes-graphics/libva/libva-initial_2.20.0.bb @@ -0,0 +1,8 @@ +require libva.inc + +PACKAGECONFIG ?= "" + +do_install:append () { + rm -f ${D}${libdir}/*.so* +} + diff --git a/meta/recipes-graphics/libva/libva-utils/0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch b/meta/recipes-graphics/libva/libva-utils/0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch deleted file mode 100644 index 01fb71913b..0000000000 --- a/meta/recipes-graphics/libva/libva-utils/0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 8fc14e4bc81885b80c3072e549c2e6f59533d7ef Mon Sep 17 00:00:00 2001 -From: Anuj Mittal <anuj.mittal@intel.com> -Date: Fri, 8 Feb 2019 11:45:55 +0800 -Subject: [PATCH] Build sfcsample only when X11 backend is enabled - -See: https://github.com/intel/libva-utils/pull/149, and -https://github.com/intel/libva-utils/issues/150 - -Upstream-Status: Submitted - -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - Makefile.am | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/Makefile.am b/Makefile.am -index d28175a..e294e25 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -24,10 +24,11 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} - - AUTOMAKE_OPTIONS = foreign - --SUBDIRS = common decode encode vainfo videoprocess vendor/intel vendor/intel/sfcsample -+SUBDIRS = common decode encode vainfo videoprocess vendor/intel - - if USE_X11 - SUBDIRS += putsurface -+SUBDIRS += vendor/intel/sfcsample - else - if USE_WAYLAND - SUBDIRS += putsurface --- -2.17.1 - diff --git a/meta/recipes-graphics/libva/libva-utils_2.4.0.bb b/meta/recipes-graphics/libva/libva-utils_2.20.1.bb index 7b764314bf..3bce9a1e32 100644 --- a/meta/recipes-graphics/libva/libva-utils_2.4.0.bb +++ b/meta/recipes-graphics/libva/libva-utils_2.20.1.bb @@ -14,22 +14,19 @@ SECTION = "x11" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e" -SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BP}.tar.bz2 \ - file://0001-Build-sfcsample-only-when-X11-backend-is-enabled.patch \ - " +SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.20-branch;protocol=https" +SRCREV = "2ad888bb463dc9bfb3deb512ec9faf78f1d3bfa8" +S = "${WORKDIR}/git" -SRC_URI[md5sum] = "f5374c4c32ce136e50aea0267887aed5" -SRC_URI[sha256sum] = "5b7d1954b40fcb2c0544be20125c71a0852049715ab85a3e8aba60434a40c6b3" - -UPSTREAM_CHECK_URI = "https://github.com/intel/libva-utils/releases" +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$" DEPENDS = "libva" -inherit autotools pkgconfig distro_features_check +inherit meson pkgconfig features_check # depends on libva which requires opengl REQUIRED_DISTRO_FEATURES = "opengl" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" -PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxext libxfixes" -PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland" +PACKAGECONFIG[x11] = "-Dx11=true, -Dx11=false,virtual/libx11 libxext libxfixes" +PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false,wayland-native wayland" diff --git a/meta/recipes-graphics/libva/libva.inc b/meta/recipes-graphics/libva/libva.inc new file mode 100644 index 0000000000..486291bced --- /dev/null +++ b/meta/recipes-graphics/libva/libva.inc @@ -0,0 +1,37 @@ +SUMMARY = "Video Acceleration (VA) API for Linux" +DESCRIPTION = "Video Acceleration API (VA API) is a library (libVA) \ +and API specification which enables and provides access to graphics \ +hardware (GPU) acceleration for video processing on Linux and UNIX \ +based operating systems. Accelerated processing includes video \ +decoding, video encoding, subpicture blending and rendering. The \ +specification was originally designed by Intel for its GMA (Graphics \ +Media Accelerator) series of GPU hardware, the API is however not \ +limited to GPUs or Intel specific hardware, as other hardware and \ +manufacturers can also freely use this API for hardware accelerated \ +video decoding." + +HOMEPAGE = "https://01.org/linuxmedia/vaapi" +BUGTRACKER = "https://github.com/intel/libva/issues" + +SECTION = "x11" +LICENSE = "MIT" + +SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/libva-${PV}.tar.bz2" +LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f" +SRC_URI[sha256sum] = "f72bdb4f48dfe71ad01f1cbefe069672a2c949a6abd51cf3c4d4784210badc49" + +S = "${WORKDIR}/libva-${PV}" + +GITHUB_BASE_URI = "https://github.com/intel/libva/releases" + +DEPENDS = "libdrm" + +inherit meson pkgconfig github-releases + +PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,virtual/libx11 libxext libxfixes" +PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/mesa" + +PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland" + +BBCLASSEXTEND = "native nativesdk" + diff --git a/meta/recipes-graphics/libva/libva_2.20.0.bb b/meta/recipes-graphics/libva/libva_2.20.0.bb new file mode 100644 index 0000000000..63dc5af8f2 --- /dev/null +++ b/meta/recipes-graphics/libva/libva_2.20.0.bb @@ -0,0 +1,15 @@ +require libva.inc + +PACKAGECONFIG ??= " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)} \ +" + +PACKAGES =+ "${PN}-x11 ${PN}-glx ${PN}-wayland" + +RDEPENDS:${PN}-x11 =+ "${PN}" +RDEPENDS:${PN}-glx =+ "${PN}-x11" + +FILES:${PN}-x11 =+ "${libdir}/libva-x11*${SOLIBS}" +FILES:${PN}-glx =+ "${libdir}/libva-glx*${SOLIBS}" +FILES:${PN}-wayland =+ "${libdir}/libva-wayland*${SOLIBS}" diff --git a/meta/recipes-graphics/libva/libva_2.4.0.bb b/meta/recipes-graphics/libva/libva_2.4.0.bb deleted file mode 100644 index ffa1ab8f7b..0000000000 --- a/meta/recipes-graphics/libva/libva_2.4.0.bb +++ /dev/null @@ -1,46 +0,0 @@ -SUMMARY = "Video Acceleration (VA) API for Linux" -DESCRIPTION = "Video Acceleration API (VA API) is a library (libVA) \ -and API specification which enables and provides access to graphics \ -hardware (GPU) acceleration for video processing on Linux and UNIX \ -based operating systems. Accelerated processing includes video \ -decoding, video encoding, subpicture blending and rendering. The \ -specification was originally designed by Intel for its GMA (Graphics \ -Media Accelerator) series of GPU hardware, the API is however not \ -limited to GPUs or Intel specific hardware, as other hardware and \ -manufacturers can also freely use this API for hardware accelerated \ -video decoding." - -HOMEPAGE = "https://01.org/linuxmedia/vaapi" -BUGTRACKER = "https://github.com/intel/libva/issues" - -SECTION = "x11" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f" - -SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BP}.tar.bz2" - -SRC_URI[md5sum] = "cfc69c2a5f526dd1858e098fb8eebfa6" -SRC_URI[sha256sum] = "99263056c21593a26f2ece812aee6fe60142b49e6cd46cb33c8dddf18fc19391" - -UPSTREAM_CHECK_URI = "https://github.com/intel/libva/releases" - -DEPENDS = "libdrm virtual/mesa" - -inherit autotools pkgconfig distro_features_check - -REQUIRED_DISTRO_FEATURES = "opengl" - -EXTRA_OECONF = "ac_cv_prog_WAYLAND_SCANNER=wayland-scanner" - -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" -PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxext libxfixes" -PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland" - -PACKAGES =+ "${PN}-x11 ${PN}-glx ${PN}-wayland" - -RDEPENDS_${PN}-x11 =+ "${PN}" -RDEPENDS_${PN}-glx =+ "${PN}-x11" - -FILES_${PN}-x11 =+ "${libdir}/libva-x11*${SOLIBS}" -FILES_${PN}-glx =+ "${libdir}/libva-glx*${SOLIBS}" -FILES_${PN}-wayland =+ "${libdir}/libva-wayland*${SOLIBS}" diff --git a/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb b/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb index cbaf054365..8a4cfef631 100644 --- a/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb +++ b/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb @@ -1,21 +1,23 @@ SUMMARY = "Custom Matchbox session files" +DESCRIPTION = "Very simple session manager for matchbox tools" HOMEPAGE = "http://www.matchbox-project.org/" BUGTRACKER = "http://bugzilla.yoctoproject.org/" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://matchbox-session;endline=20;md5=180f1c169a15d059a56c30094f6fb5ea" SECTION = "x11" -RCONFLICTS_${PN} = "matchbox-common" +RCONFLICTS:${PN} = "matchbox-common" SRC_URI = "file://matchbox-session" -S = "${WORKDIR}" -PR = "r4" +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" + inherit update-alternatives -ALTERNATIVE_${PN} = "x-session-manager" +ALTERNATIVE:${PN} = "x-session-manager" ALTERNATIVE_TARGET[x-session-manager] = "${bindir}/matchbox-session" ALTERNATIVE_PRIORITY = "100" diff --git a/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb b/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.3.bb index 815a75f36d..c8b6f07ed0 100644 --- a/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb +++ b/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.3.bb @@ -2,26 +2,25 @@ SUMMARY = "Matchbox lightweight window manager" HOMEPAGE = "http://matchbox-project.org" BUGTRACKER = "http://bugzilla.yoctoproject.org/" -LICENSE = "GPLv2+" -LIC_FILES_CHKSUM = "file://src/wm.h;endline=21;md5=a7e844465edbcf79c282369f93caa835 \ - file://src/main.c;endline=21;md5=3e5d9f832b527b0d72dbe8e3c4c60b95 \ - file://src/wm.c;endline=21;md5=8dc9d24477d87ef5dfbc2e4927146aab" +LICENSE = "GPL-2.0-or-later" +LIC_FILES_CHKSUM = "file://src/wm.h;endline=21;md5=ce20617ac10f26045cc57b8d977ab552 \ + file://src/main.c;endline=21;md5=508f280276140250ce483e0a44f7a9ec \ + file://src/wm.c;endline=21;md5=f54584fb0d48cfc2e6876e0f0e272e6c" SECTION = "x11/wm" DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification expat gconf libxcursor libxfixes" -# SRCREV tagged 1.2.2 -SRCREV = "27da947e7fbdf9659f7e5bd1e92af92af6c03970" -SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager \ +SRCREV = "ce8c1053270d960a7235ab5c3435f707541810a4" +SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager;branch=master;protocol=https \ file://kbdconfig" S = "${WORKDIR}/git" -inherit autotools pkgconfig distro_features_check +inherit autotools pkgconfig features_check # depends on virtual/libx11 REQUIRED_DISTRO_FEATURES = "x11" -FILES_${PN} = "${bindir}/* \ +FILES:${PN} = "${bindir}/* \ ${datadir}/matchbox \ ${sysconfdir}/matchbox \ ${datadir}/themes/blondie/matchbox \ @@ -34,6 +33,6 @@ EXTRA_OECONF = " --enable-startup-notification \ --with-expat-lib=${STAGING_LIBDIR} \ --with-expat-includes=${STAGING_INCDIR}" -do_install_prepend() { - install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig +do_install:prepend() { + install ${UNPACKDIR}/kbdconfig ${S}/data/kbdconfig } diff --git a/meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch b/meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch new file mode 100644 index 0000000000..aeae864cd4 --- /dev/null +++ b/meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch @@ -0,0 +1,111 @@ +From 1ce739649b4d66339a03fc0ec9ee7a2f7c141780 Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA <mtasaka@fedoraproject.org> +Date: Fri, 24 Jan 2020 13:33:00 +0900 +Subject: Support gcc10 compilation + +gcc10 now defaults to -fno-common, and with gcc10 menu-cache compilation fails like + +/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:167: multiple definition of `DirDirs'; main.o:menu-cache-gen/menu-tags.h:167: first defined here +/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:164: multiple definition of `AppDirs'; main.o:menu-cache-gen/menu-tags.h:164: first defined here +/bin/ld: menu-merge.o:menu-cache-gen/menu-tags.h:52: multiple definition of `menuTag_Layout'; main.o:menu-cache-gen/menu-tags.h:52: first defined here +.... + +This patch fixes compilation with gcc10: properly declaring variables in header with "extern", and also removing some unneeded variables in header files. + +Upstream-Status: Submitted [https://github.com/lxde/menu-cache/pull/19] +Signed-off-by: Adrian Bunk <bunk@stusta.de> +--- + menu-cache-gen/menu-tags.h | 55 ++++++++++++-------------------------- + 1 file changed, 17 insertions(+), 38 deletions(-) + +diff --git a/menu-cache-gen/menu-tags.h b/menu-cache-gen/menu-tags.h +index f3fd7d3..f71c0bc 100644 +--- a/menu-cache-gen/menu-tags.h ++++ b/menu-cache-gen/menu-tags.h +@@ -22,38 +22,17 @@ + #include <libfm/fm-extra.h> + #include <menu-cache.h> + +-FmXmlFileTag menuTag_Menu; +-FmXmlFileTag menuTag_AppDir; +-FmXmlFileTag menuTag_DefaultAppDirs; +-FmXmlFileTag menuTag_DirectoryDir; +-FmXmlFileTag menuTag_DefaultDirectoryDirs; +-FmXmlFileTag menuTag_Include; +-FmXmlFileTag menuTag_Exclude; +-FmXmlFileTag menuTag_Filename; +-FmXmlFileTag menuTag_Or; +-FmXmlFileTag menuTag_And; +-FmXmlFileTag menuTag_Not; +-FmXmlFileTag menuTag_Category; +-FmXmlFileTag menuTag_MergeFile; +-FmXmlFileTag menuTag_MergeDir; +-FmXmlFileTag menuTag_DefaultMergeDirs; +-FmXmlFileTag menuTag_Directory; +-FmXmlFileTag menuTag_Name; +-FmXmlFileTag menuTag_Deleted; +-FmXmlFileTag menuTag_NotDeleted; +-FmXmlFileTag menuTag_OnlyUnallocated; +-FmXmlFileTag menuTag_NotOnlyUnallocated; +-FmXmlFileTag menuTag_All; +-FmXmlFileTag menuTag_LegacyDir; +-FmXmlFileTag menuTag_KDELegacyDirs; +-FmXmlFileTag menuTag_Move; +-FmXmlFileTag menuTag_Old; +-FmXmlFileTag menuTag_New; +-FmXmlFileTag menuTag_Layout; +-FmXmlFileTag menuTag_DefaultLayout; +-FmXmlFileTag menuTag_Menuname; +-FmXmlFileTag menuTag_Separator; +-FmXmlFileTag menuTag_Merge; ++extern FmXmlFileTag menuTag_AppDir; ++extern FmXmlFileTag menuTag_DirectoryDir; ++extern FmXmlFileTag menuTag_Include; ++extern FmXmlFileTag menuTag_Exclude; ++extern FmXmlFileTag menuTag_Filename; ++extern FmXmlFileTag menuTag_Or; ++extern FmXmlFileTag menuTag_And; ++extern FmXmlFileTag menuTag_Not; ++extern FmXmlFileTag menuTag_Category; ++extern FmXmlFileTag menuTag_All; ++extern FmXmlFileTag menuTag_LegacyDir; + + typedef enum { + MERGE_NONE, /* starting value */ +@@ -152,19 +131,19 @@ typedef struct { + } MenuRule; + + /* requested language(s) */ +-char **languages; ++extern char **languages; + + /* list of menu files to monitor */ +-GSList *MenuFiles; ++extern GSList *MenuFiles; + + /* list of menu dirs to monitor */ +-GSList *MenuDirs; ++extern GSList *MenuDirs; + + /* list of available app dirs */ +-GSList *AppDirs; ++extern GSList *AppDirs; + + /* list of available dir dirs */ +-GSList *DirDirs; ++extern GSList *DirDirs; + + /* parse and merge menu files */ + MenuMenu *get_merged_menu(const char *file, FmXmlFile **xmlfile, GError **error); +@@ -177,7 +156,7 @@ gboolean save_menu_cache(MenuMenu *layout, const char *menuname, const char *fil + void _free_layout_items(GList *data); + + /* verbosity level */ +-gint verbose; ++extern gint verbose; + + #define DBG if (verbose) g_debug + #define VDBG if (verbose > 1) g_debug +-- +2.17.1 + diff --git a/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb b/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb index ddbbd94066..8875a939e0 100644 --- a/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb +++ b/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb @@ -2,13 +2,15 @@ SUMMARY = "Library for caching application menus" DESCRIPTION = "A library creating and utilizing caches to speed up freedesktop.org application menus" HOMEPAGE = "http://lxde.sourceforge.net/" -LICENSE = "LGPLv2.1+" +LICENSE = "LGPL-2.1-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=0964c689fcf4c21c6797ea87408416b6" SECTION = "x11/libs" DEPENDS = "glib-2.0 libfm-extra" -SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/menu-cache-${PV}.tar.xz" +SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/menu-cache-${PV}.tar.xz \ + file://0001-Support-gcc10-compilation.patch \ +" SRC_URI[md5sum] = "99999a0bca48b980105208760c8fd893" SRC_URI[sha256sum] = "ed02eb459dcb398f69b9fa5bf4dd813020405afc84331115469cdf7be9273ec7" diff --git a/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch b/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch new file mode 100644 index 0000000000..1711e22585 --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch @@ -0,0 +1,53 @@ +From 051f41beda540f0ae77b341db01a6de83c9e938a Mon Sep 17 00:00:00 2001 +From: Markus Volk <f_l_k@t-online.de> +Date: Fri, 8 Mar 2024 15:53:11 +0100 +Subject: [PATCH] Revert "meson: do not pull in clc for clover" + +This reverts commit 815a6647eb1383e9dc704ffcc266d85f3b13338a. +Upstream-Status: Inappropriate [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27783/diffs?commit_id=a976f2c9f0c07f9e06cc9affd9124b45bc60c2bd] + +Once the merge request above was added, it will only be possible to provide opencl spir-v with gallium-rusticl=true. This is not yet supported in the mesa recipe. +For now reverting this commit allows to still use clover with opencl-spirv, which would otherwise be broken starting from mesa 24.0.2. + +After it was merged, this patch needs to be removed and rusticl support will be required + +Signed-off-by: Markus Volk <f_l_k@t-online.de> +--- + meson.build | 3 ++- + src/compiler/meson.build | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index 2db6185..741b5d1 100644 +--- a/meson.build ++++ b/meson.build +@@ -813,6 +813,7 @@ if _opencl != 'disabled' + error('The Clover OpenCL state tracker requires rtti') + endif + ++ with_clc = true + with_gallium_opencl = true + with_opencl_icd = _opencl == 'icd' + else +@@ -837,7 +838,7 @@ if with_gallium_rusticl + endif + + dep_clc = null_dep +-if with_gallium_opencl or with_clc ++if with_clc + dep_clc = dependency('libclc') + endif + +diff --git a/src/compiler/meson.build b/src/compiler/meson.build +index 8d73544..1dae56d 100644 +--- a/src/compiler/meson.build ++++ b/src/compiler/meson.build +@@ -79,7 +79,7 @@ subdir('nir') + + subdir('spirv') + +-if with_clc ++if with_opencl_spirv + subdir('clc') + endif + if with_gallium diff --git a/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch b/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch deleted file mode 100644 index d065e2285c..0000000000 --- a/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch +++ /dev/null @@ -1,44 +0,0 @@ -From e53837ad7b01364f34a533b95f4817c1795789de Mon Sep 17 00:00:00 2001 -From: Fabio Berton <fabio.berton@ossystems.com.br> -Date: Wed, 20 Feb 2019 16:17:00 -0300 -Subject: [PATCH 1/4] Simplify wayland-scanner lookup -Organization: O.S. Systems Software LTDA. - -Don't use pkg-config to lookup the path of a binary that's in the path. - -Alternatively we'd have to prefix the path returned by pkg-config with -PKG_CONFIG_SYSROOT_DIR. - -Upstream-Status: Pending -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> -Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br> ---- - configure.ac | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 1ef68fe68e6..1816a4cd475 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1854,16 +1854,11 @@ for plat in $platforms; do - fi - WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols` - -- PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], -- WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, -- WAYLAND_SCANNER='') - PKG_CHECK_EXISTS([wayland-scanner >= 1.15], - AC_SUBST(SCANNER_ARG, 'private-code'), - AC_SUBST(SCANNER_ARG, 'code')) - -- if test "x$WAYLAND_SCANNER" = x; then -- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) -- fi -+ AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) - - if test "x$WAYLAND_SCANNER" = "x:"; then - AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform]) --- -2.21.0 - diff --git a/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch b/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch new file mode 100644 index 0000000000..ab16152090 --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch @@ -0,0 +1,58 @@ +From 4bd15a419e892da843489c374c58c5b29c40b5d6 Mon Sep 17 00:00:00 2001 +From: Romain Naour <romain.naour@smile.fr> +Date: Tue, 6 Feb 2024 09:47:09 +0100 +Subject: [PATCH 1/2] drisw: fix build without dri3 + +commit 1887368df41 ("glx/sw: check for modifier support in the kopper path") +added dri3_priv.h header and dri3_check_multibuffer() function in drisw that +can be build without dri3. + + i686-buildroot-linux-gnu/bin/ld: src/glx/libglx.a.p/drisw_glx.c.o: in function `driswCreateScreenDriver': + drisw_glx.c:(.text.driswCreateScreenDriver+0x3a0): undefined reference to `dri3_check_multibuffer' + collect2: error: ld returned 1 exit status + +Add HAVE_DRI3 guard around dri3_priv.h header and the zink code using +dri3_check_multibuffer(). + +Fixes: 1887368df41 ("glx/sw: check for modifier support in the kopper path") + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27478] +Signed-off-by: Romain Naour <romain.naour@smile.fr> +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/glx/drisw_glx.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c +index 3d3f752..4b19e2d 100644 +--- a/src/glx/drisw_glx.c ++++ b/src/glx/drisw_glx.c +@@ -32,7 +32,9 @@ + #include <dlfcn.h> + #include "dri_common.h" + #include "drisw_priv.h" ++#ifdef HAVE_DRI3 + #include "dri3_priv.h" ++#endif + #include <X11/extensions/shmproto.h> + #include <assert.h> + #include <vulkan/vulkan_core.h> +@@ -995,6 +997,7 @@ driswCreateScreenDriver(int screen, struct glx_display *priv, + goto handle_error; + } + ++#ifdef HAVE_DRI3 + if (pdpyp->zink) { + bool err; + psc->has_multibuffer = dri3_check_multibuffer(priv->dpy, &err); +@@ -1005,6 +1008,7 @@ driswCreateScreenDriver(int screen, struct glx_display *priv, + goto handle_error; + } + } ++#endif + + glx_config_destroy_list(psc->base.configs); + psc->base.configs = configs; +-- +2.44.0 + diff --git a/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch b/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch new file mode 100644 index 0000000000..baa98a0d46 --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch @@ -0,0 +1,24 @@ +From 02cc21800fe29f566add525e63f619c0536d6e7b Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 13 Jan 2020 15:23:47 -0800 +Subject: [PATCH] meson misdetects 64bit atomics on mips/clang + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/util/u_atomic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/util/u_atomic.c b/src/util/u_atomic.c +index 5a5eab4..e499516 100644 +--- a/src/util/u_atomic.c ++++ b/src/util/u_atomic.c +@@ -21,7 +21,7 @@ + * IN THE SOFTWARE. + */ + +-#if defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD) ++#if !defined(__clang__) && defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD) + + #include <stdint.h> + #include <pthread.h> diff --git a/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch b/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch new file mode 100644 index 0000000000..7be7d81eeb --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch @@ -0,0 +1,42 @@ +From e8ec6b1cc5e401ba719095722d8b317d755ae613 Mon Sep 17 00:00:00 2001 +From: Alistair Francis <alistair@alistair23.me> +Date: Thu, 14 Nov 2019 13:04:49 -0800 +Subject: [PATCH] meson.build: check for all linux host_os combinations + +Make sure that we are also looking for our host_os combinations like +linux-musl etc. when assuming support for DRM/KMS. + +Also delete a duplicate line. + +Upstream-Status: Pending + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br> +Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> +Signed-off-by: Alistair Francis <alistair@alistair23.me> +--- + meson.build | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/meson.build b/meson.build +index 133fd9a..817861e 100644 +--- a/meson.build ++++ b/meson.build +@@ -128,7 +128,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2 + # Only build shared_glapi if at least one OpenGL API is enabled + with_shared_glapi = with_shared_glapi and with_any_opengl + +-system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'gnu/kfreebsd', 'dragonfly', 'linux', 'sunos', 'android', 'managarm'].contains(host_machine.system()) ++system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'gnu/kfreebsd', 'dragonfly', 'linux', 'sunos', 'android', 'managarm'].contains(host_machine.system()) or host_machine.system().startswith('linux') + + gallium_drivers = get_option('gallium-drivers') + if gallium_drivers.contains('auto') +@@ -997,7 +997,7 @@ if cc.has_function('fmemopen') + endif + + # TODO: this is very incomplete +-if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku', 'android', 'managarm'].contains(host_machine.system()) ++if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku', 'android', 'managarm'].contains(host_machine.system()) or host_machine.system().startswith('linux') + pre_args += '-D_GNU_SOURCE' + elif host_machine.system() == 'sunos' + pre_args += '-D__EXTENSIONS__' diff --git a/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch b/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch new file mode 100644 index 0000000000..036a0b4945 --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch @@ -0,0 +1,42 @@ +From 62495ebb977866c52d5bed8499a547c49f0d9bc1 Mon Sep 17 00:00:00 2001 +From: Romain Naour <romain.naour@smile.fr> +Date: Tue, 6 Feb 2024 09:47:10 +0100 +Subject: [PATCH 2/2] glxext: don't try zink if not enabled in mesa + +Commit 7d9ea77b459 ("glx: add automatic zink fallback loading between hw and sw drivers") +added an automatic zink fallback even when the zink gallium is not +enabled at build time. + +It leads to unexpected error log while loading drisw driver and +zink is not installed on the rootfs: + + MESA-LOADER: failed to open zink: /usr/lib/dri/zink_dri.so + +Fixes: 7d9ea77b459 ("glx: add automatic zink fallback loading between hw and sw drivers") + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27478] +Signed-off-by: Romain Naour <romain.naour@smile.fr> +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/glx/glxext.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/glx/glxext.c b/src/glx/glxext.c +index 05c825a..7a06aa9 100644 +--- a/src/glx/glxext.c ++++ b/src/glx/glxext.c +@@ -908,9 +908,11 @@ __glXInitialize(Display * dpy) + #endif /* HAVE_DRI3 */ + if (!debug_get_bool_option("LIBGL_DRI2_DISABLE", false)) + dpyPriv->dri2Display = dri2CreateDisplay(dpy); ++#if defined(HAVE_ZINK) + if (!dpyPriv->dri3Display && !dpyPriv->dri2Display) + try_zink = !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false) && + !getenv("GALLIUM_DRIVER"); ++#endif /* HAVE_ZINK */ + } + #endif /* GLX_USE_DRM */ + if (glx_direct) +-- +2.44.0 + diff --git a/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch b/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch deleted file mode 100644 index aaeb0f11ba..0000000000 --- a/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch +++ /dev/null @@ -1,35 +0,0 @@ -From f212b6bed4bf265aec069c21cdc4b7c2d9cb32df Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 16 Aug 2017 18:58:20 -0700 -Subject: [PATCH 2/4] winsys/svga/drm: Include sys/types.h -Organization: O.S. Systems Software LTDA. - -vmw_screen.h uses dev_t which is defines in sys/types.h -this header is required to be included for getting dev_t -definition. This issue happens on musl C library, it is hidden -on glibc since sys/types.h is included through another -system headers - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Backport [7dfdfbf8c37e52e7b9b09f7d1d434edad3ebc864] -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> -Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br> ---- - src/gallium/winsys/svga/drm/vmw_screen.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/gallium/winsys/svga/drm/vmw_screen.h b/src/gallium/winsys/svga/drm/vmw_screen.h -index a87c087d9c5..cb34fec48e7 100644 ---- a/src/gallium/winsys/svga/drm/vmw_screen.h -+++ b/src/gallium/winsys/svga/drm/vmw_screen.h -@@ -41,6 +41,7 @@ - #include "svga_winsys.h" - #include "pipebuffer/pb_buffer_fenced.h" - #include <os/os_thread.h> -+#include <sys/types.h> - - #define VMW_GMR_POOL_SIZE (16*1024*1024) - #define VMW_QUERY_POOL_SIZE (8192) --- -2.21.0 - diff --git a/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch b/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch deleted file mode 100644 index 96edc2172b..0000000000 --- a/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch +++ /dev/null @@ -1,45 +0,0 @@ -From ce7b9ff6517fda089f296b2af2c1c49604872514 Mon Sep 17 00:00:00 2001 -From: Otavio Salvador <otavio@ossystems.com.br> -Date: Tue, 5 Jun 2018 11:11:10 -0300 -Subject: [PATCH 3/4] Properly get LLVM version when using LLVM Git releases -Organization: O.S. Systems Software LTDA. - -$ llvm-config-host --version -5.0.0git-9a5c333388c - -We need to ignore everything after 5.0.0 which is what the cut cmd is -doing - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> -Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br> ---- - configure.ac | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 1816a4cd475..13fed9daf59 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1124,7 +1124,7 @@ strip_unwanted_llvm_flags() { - - llvm_set_environment_variables() { - if test "x$LLVM_CONFIG" != xno; then -- LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'` -+ LLVM_VERSION=`$LLVM_CONFIG --version | cut -c1-5` - LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"` - LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir` - LLVM_LIBDIR=`$LLVM_CONFIG --libdir` -@@ -2870,7 +2870,7 @@ detect_old_buggy_llvm() { - dnl ourselves. - dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823) - dnl We can't use $LLVM_VERSION because it has 'svn' stripped out, -- LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version` -+ LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version | cut -c1-5` - AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes]) - - if test "x$llvm_have_one_so" = xyes; then --- -2.21.0 - diff --git a/meta/recipes-graphics/mesa/files/0004-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch b/meta/recipes-graphics/mesa/files/0004-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch deleted file mode 100644 index 45bcd466a3..0000000000 --- a/meta/recipes-graphics/mesa/files/0004-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 5489e1d22e18740a1924628c5c97096d48dcfbf8 Mon Sep 17 00:00:00 2001 -From: Fabio Berton <fabio.berton@ossystems.com.br> -Date: Fri, 15 Feb 2019 10:57:06 -0200 -Subject: [PATCH 4/4] use PKG_CHECK_VAR for defining WAYLAND_PROTOCOLS_DATADIR -Organization: O.S. Systems Software LTDA. - -This allows to override the wayland-protocols pkgdatadir with the -WAYLAND_PROTOCOLS_DATADIR from environment. - -pkgconfig would return an absolute path in -/usr/share/wayland-protocols -for the pkgdatadir value, which is not suitable for cross-compiling. - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> -Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br> ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 13fed9daf59..6cff8afb7cf 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1852,7 +1852,7 @@ for plat in $platforms; do - if test "x$enable_egl" = xyes; then - PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl-backend >= $WAYLAND_EGL_BACKEND_REQUIRED]) - fi -- WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols` -+ PKG_CHECK_VAR([WAYLAND_PROTOCOLS_DATADIR], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], pkgdatadir) - - PKG_CHECK_EXISTS([wayland-scanner >= 1.15], - AC_SUBST(SCANNER_ARG, 'private-code'), --- -2.21.0 - diff --git a/meta/recipes-graphics/mesa/libglu_9.0.0.bb b/meta/recipes-graphics/mesa/libglu_9.0.3.bb index eeb898fd3d..8151727c52 100644 --- a/meta/recipes-graphics/mesa/libglu_9.0.0.bb +++ b/meta/recipes-graphics/mesa/libglu_9.0.3.bb @@ -10,21 +10,22 @@ LIC_FILES_CHKSUM = "file://include/GL/glu.h;endline=29;md5=6b79c570f644363b35645 # Epoch as this used to be part of mesa PE = "2" -PR = "0" -SRC_URI = "https://mesa.freedesktop.org/archive/glu/glu-${PV}.tar.bz2" +SRC_URI = "https://mesa.freedesktop.org/archive/glu/glu-${PV}.tar.xz \ + " -SRC_URI[md5sum] = "be9249132ff49275461cf92039083030" -SRC_URI[sha256sum] = "1f7ad0d379a722fcbd303aa5650c6d7d5544fde83196b42a73d1193568a4df12" +SRC_URI[sha256sum] = "bd43fe12f374b1192eb15fe20e45ff456b9bc26ab57f0eee919f96ca0f8a330f" S = "${WORKDIR}/glu-${PV}" DEPENDS = "virtual/libgl" -inherit autotools pkgconfig distro_features_check +inherit meson pkgconfig features_check + +EXTRA_OEMESON = "-Dgl_provider=gl" # Requires libGL.so which is provided by mesa when x11 in DISTRO_FEATURES REQUIRED_DISTRO_FEATURES = "x11 opengl" # Remove the mesa-glu dependency in mesa-glu-dev, as mesa-glu is empty -RDEPENDS_${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" diff --git a/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch b/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch deleted file mode 100644 index f6b59a11fe..0000000000 --- a/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch +++ /dev/null @@ -1,377 +0,0 @@ -From 779438770bedf3d53e6ad8f7cd6889b7f50daf3b Mon Sep 17 00:00:00 2001 -From: Martin Jansa <Martin.Jansa@gmail.com> -Date: Wed, 9 Jul 2014 14:23:41 +0200 -Subject: [PATCH] configure: Allow to disable demos which require GLEW or GLU - -* in some systems without X11 support we don't have GLEW, but - mesa-demos are still useful - -Upstream-Status: Pending - -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> - -Port to 8.3.0 -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> ---- - configure.ac | 49 ++++++++++++++++++++--------- - src/Makefile.am | 18 ++++++++--- - src/demos/Makefile.am | 73 ++++++++++++++++++++++++------------------- - src/egl/Makefile.am | 8 +++-- - src/egl/opengles1/Makefile.am | 10 ++++-- - src/egl/opengles2/Makefile.am | 29 ++++++++--------- - 6 files changed, 117 insertions(+), 70 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 0525b09..28834cd 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -93,25 +93,44 @@ AC_EGREP_HEADER([glutInitContextProfile], - [AC_DEFINE(HAVE_FREEGLUT)], - []) - --dnl Check for GLEW --PKG_CHECK_MODULES(GLEW, [glew >= 1.5.4]) --DEMO_CFLAGS="$DEMO_CFLAGS $GLEW_CFLAGS" --DEMO_LIBS="$DEMO_LIBS $GLEW_LIBS" -+AC_ARG_ENABLE([glew], -+ [AS_HELP_STRING([--enable-glew], -+ [build demos which require glew @<:@default=yes@:>@])], -+ [enable_glew="$enableval"], -+ [enable_glew=yes] -+) -+ -+if test "x$enable_glew" = xyes; then -+ dnl Check for GLEW -+ PKG_CHECK_MODULES(GLEW, [glew >= 1.5.4], [glew_enabled=yes], [glew_enabled=no]) -+ DEMO_CFLAGS="$DEMO_CFLAGS $GLEW_CFLAGS" -+ DEMO_LIBS="$DEMO_LIBS $GLEW_LIBS" -+fi - - # LIBS was set by AC_CHECK_LIB above - LIBS="" - --PKG_CHECK_MODULES(GLU, [glu], [], -- [AC_CHECK_HEADER([GL/glu.h], -- [], -- AC_MSG_ERROR([GLU not found])) -- AC_CHECK_LIB([GLU], -- [gluBeginCurve], -- [GLU_LIBS=-lGLU], -- AC_MSG_ERROR([GLU required])) ]) -+AC_ARG_ENABLE([glu], -+ [AS_HELP_STRING([--enable-glu], -+ [build demos which require glu @<:@default=yes@:>@])], -+ [enable_glu="$enableval"], -+ [enable_glu=yes] -+) - --DEMO_CFLAGS="$DEMO_CFLAGS $GLU_CFLAGS" --DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" -+if test "x$enable_glu" = xyes; then -+ PKG_CHECK_MODULES(GLU, [glu], [glu_enabled=yes], -+ [AC_CHECK_HEADER([GL/glu.h], -+ [], -+ AC_MSG_ERROR([GLU not found])) -+ AC_CHECK_LIB([GLU], -+ [gluBeginCurve], -+ [GLU_LIBS=-lGLU -+ glu_enabled=yes], -+ AC_MSG_ERROR([GLU required])) ]) -+ -+ DEMO_CFLAGS="$DEMO_CFLAGS $GLU_CFLAGS" -+ DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" -+fi - - AC_ARG_ENABLE([egl], - [AS_HELP_STRING([--enable-egl], -@@ -304,6 +323,8 @@ AC_SUBST([WAYLAND_CFLAGS]) - AC_SUBST([WAYLAND_LIBS]) - - -+AM_CONDITIONAL(HAVE_GLU, test "x$glu_enabled" = "xyes") -+AM_CONDITIONAL(HAVE_GLEW, test "x$glew_enabled" = "xyes") - AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes") - AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes") - AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes") -diff --git a/src/Makefile.am b/src/Makefile.am -index 1647d64..8b89dee 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -22,15 +22,19 @@ - # Authors: - # Eric Anholt <eric@anholt.net> - -+if HAVE_GLEW -+UTIL = util -+endif -+ - SUBDIRS = \ -- util \ -+ $(UTIL) \ - data \ - demos \ - egl \ - fp \ - fpglsl \ - glsl \ -- gs \ -+ gs \ - objviewer \ - osdemos \ - perf \ -@@ -40,8 +44,12 @@ SUBDIRS = \ - slang \ - tests \ - tools \ -- trivial \ -- vp \ -- vpglsl \ - wgl \ - xdemos -+ -+if HAVE_GLEW -+SUBDIRS += \ -+ vp \ -+ vpglsl \ -+ trivial -+endif -diff --git a/src/demos/Makefile.am b/src/demos/Makefile.am -index 41603fa..ab1e3ab 100644 ---- a/src/demos/Makefile.am -+++ b/src/demos/Makefile.am -@@ -30,91 +30,100 @@ AM_LDFLAGS = \ - $(DEMO_LIBS) \ - $(GLUT_LIBS) - -+bin_PROGRAMS = -+ - if HAVE_GLUT --bin_PROGRAMS = \ -+if HAVE_GLEW -+bin_PROGRAMS += \ - arbfplight \ - arbfslight \ - arbocclude \ - arbocclude2 \ -- bounce \ -- clearspd \ - copypix \ - cubemap \ - cuberender \ - dinoshade \ -- dissolve \ -- drawpix \ - engine \ - fbo_firecube \ - fbotexture \ -- fire \ - fogcoord \ - fplight \ - fslight \ -+ gloss \ -+ isosurf \ -+ multiarb \ -+ paltex \ -+ pointblast \ -+ projtex \ -+ shadowtex \ -+ spriteblast \ -+ stex3d \ -+ textures \ -+ vao_demo \ -+ winpos -+ -+copypix_LDADD = ../util/libutil.la -+cubemap_LDADD = ../util/libutil.la -+cuberender_LDADD = ../util/libutil.la -+engine_LDADD = ../util/libutil.la -+fbo_firecube_LDADD = ../util/libutil.la -+gloss_LDADD = ../util/libutil.la -+isosurf_LDADD = ../util/libutil.la -+multiarb_LDADD = ../util/libutil.la -+projtex_LDADD = ../util/libutil.la -+textures_LDADD = ../util/libutil.la -+winpos_LDADD = ../util/libutil.la -+endif -+ -+if HAVE_GLU -+bin_PROGRAMS += \ -+ bounce \ -+ clearspd \ -+ dissolve \ -+ drawpix \ -+ fire \ - gamma \ - gearbox \ - gears \ - geartrain \ - glinfo \ -- gloss \ - gltestperf \ - ipers \ -- isosurf \ - lodbias \ - morph3d \ -- multiarb \ -- paltex \ - pixeltest \ -- pointblast \ -- projtex \ - ray \ - readpix \ - reflect \ - renormal \ -- shadowtex \ - singlebuffer \ - spectex \ -- spriteblast \ -- stex3d \ - teapot \ - terrain \ - tessdemo \ - texcyl \ - texenv \ -- textures \ - trispd \ - tunnel2 \ -- tunnel \ -- vao_demo \ -- winpos --endif -+ tunnel - - tunnel_SOURCES = \ - tunnel.c \ - tunneldat.h - --copypix_LDADD = ../util/libutil.la --cubemap_LDADD = ../util/libutil.la --cuberender_LDADD = ../util/libutil.la --drawpix_LDADD = ../util/libutil.la - dissolve_LDADD = ../util/libutil.la --engine_LDADD = ../util/libutil.la --fbo_firecube_LDADD = ../util/libutil.la -+drawpix_LDADD = ../util/libutil.la - fire_LDADD = ../util/libutil.la --gloss_LDADD = ../util/libutil.la - ipers_LDADD = ../util/libutil.la --isosurf_LDADD = ../util/libutil.la - lodbias_LDADD = ../util/libutil.la --multiarb_LDADD = ../util/libutil.la --projtex_LDADD = ../util/libutil.la - readpix_LDADD = ../util/libutil.la - reflect_LDADD = ../util/libutil.la - teapot_LDADD = ../util/libutil.la - texcyl_LDADD = ../util/libutil.la --textures_LDADD = ../util/libutil.la - tunnel_LDADD = ../util/libutil.la - tunnel2_LDADD = ../util/libutil.la --winpos_LDADD = ../util/libutil.la -+endif -+endif - - EXTRA_DIST = \ - README -diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am -index d64a49e..4fe1ca8 100644 ---- a/src/egl/Makefile.am -+++ b/src/egl/Makefile.am -@@ -24,8 +24,12 @@ - - SUBDIRS = \ - eglut \ -- opengl \ -- openvg \ - opengles1 \ - opengles2 \ - oes_vg -+ -+if HAVE_GLU -+SUBDIRS += \ -+ opengl \ -+ openvg -+endif -diff --git a/src/egl/opengles1/Makefile.am b/src/egl/opengles1/Makefile.am -index fa397c2..21853e8 100644 ---- a/src/egl/opengles1/Makefile.am -+++ b/src/egl/opengles1/Makefile.am -@@ -36,9 +36,12 @@ AM_LDFLAGS = \ - $(EGL_LIBS) \ - -lm - -+noinst_PROGRAMS = -+ - if HAVE_EGL - if HAVE_GLESV1 --noinst_PROGRAMS = \ -+if HAVE_X11 -+bin_PROGRAMS = \ - bindtex \ - clear \ - drawtex_x11 \ -@@ -52,8 +55,6 @@ noinst_PROGRAMS = \ - torus_x11 \ - tri_x11 \ - two_win --endif --endif - - bindtex_LDADD = $(X11_LIBS) - es1_info_LDADD = $(X11_LIBS) -@@ -76,3 +77,6 @@ drawtex_x11_LDADD = ../eglut/libeglut_x11.la - gears_x11_LDADD = ../eglut/libeglut_x11.la - torus_x11_LDADD = ../eglut/libeglut_x11.la - tri_x11_LDADD = ../eglut/libeglut_x11.la -+endif -+endif -+endif -diff --git a/src/egl/opengles2/Makefile.am b/src/egl/opengles2/Makefile.am -index b80ba50..17f8d49 100644 ---- a/src/egl/opengles2/Makefile.am -+++ b/src/egl/opengles2/Makefile.am -@@ -33,27 +33,28 @@ AM_LDFLAGS = \ - $(EGL_LIBS) \ - -lm - -+bin_PROGRAMS = -+ - if HAVE_EGL - if HAVE_GLESV2 --bin_PROGRAMS = --if HAVE_X11 --bin_PROGRAMS += \ -- es2_info \ -- es2gears_x11 \ -- es2tri --endif - if HAVE_WAYLAND - bin_PROGRAMS += es2gears_wayland --endif --endif -+ -+es2gears_wayland_SOURCES = es2gears.c -+es2gears_wayland_LDADD = ../eglut/libeglut_wayland.la - endif - --es2_info_LDADD = $(X11_LIBS) --es2tri_LDADD = $(X11_LIBS) -+if HAVE_X11 -+bin_PROGRAMS += \ -+ es2tri \ -+ es2_info \ -+ es2gears_x11 - -+es2_info_LDADD = $(X11_LIBS) - es2gears_x11_SOURCES = es2gears.c -- - es2gears_x11_LDADD = ../eglut/libeglut_x11.la -+es2tri_LDADD = $(X11_LIBS) -+endif -+endif -+endif - --es2gears_wayland_SOURCES = es2gears.c --es2gears_wayland_LDADD = ../eglut/libeglut_wayland.la --- -2.1.4 - diff --git a/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch b/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch deleted file mode 100644 index 6b676cdd20..0000000000 --- a/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch +++ /dev/null @@ -1,45 +0,0 @@ -From c59e286fa4e818ca015dd40e4725636309970ea8 Mon Sep 17 00:00:00 2001 -From: Martin Jansa <Martin.Jansa@gmail.com> -Date: Thu, 10 Jul 2014 14:30:52 +0200 -Subject: [PATCH] Install few more test programs - -Upstream-Status: Pending - -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> - -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> ---- - src/egl/opengl/Makefile.am | 2 +- - src/egl/opengles1/Makefile.am | 10 ++++------ - src/egl/openvg/Makefile.am | 2 +- - 3 files changed, 6 insertions(+), 8 deletions(-) - -diff --git a/src/egl/opengl/Makefile.am b/src/egl/opengl/Makefile.am -index fe7faa9..3e48141 100644 ---- a/src/egl/opengl/Makefile.am -+++ b/src/egl/opengl/Makefile.am -@@ -50,7 +50,7 @@ endif - endif - - if HAVE_EGL --noinst_PROGRAMS = \ -+bin_PROGRAMS = \ - eglinfo \ - peglgears \ - $(EGL_DRM_DEMOS) \ -diff --git a/src/egl/openvg/Makefile.am b/src/egl/openvg/Makefile.am -index b0f1212..5fd1cf8 100644 ---- a/src/egl/openvg/Makefile.am -+++ b/src/egl/openvg/Makefile.am -@@ -49,7 +49,7 @@ endif - - if HAVE_EGL - if HAVE_VG --noinst_PROGRAMS = \ -+bin_PROGRAMS = \ - $(EGL_X11_DEMOS) - endif - endif --- -2.1.4 - diff --git a/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch b/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch deleted file mode 100644 index a6085754d2..0000000000 --- a/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 0b6f95f9b8ece22e9856c150e4be29fd86eaf546 Mon Sep 17 00:00:00 2001 -From: Martin Jansa <Martin.Jansa@gmail.com> -Date: Thu, 10 Jul 2014 14:29:27 +0200 -Subject: [PATCH 8/9] glsl, perf: Add few missing .glsl, .vert, .frag files to - EXTRA_DATA - -Upstream-Status: Pending - -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/fpglsl/Makefile.am | 2 ++ - src/glsl/Makefile.am | 10 ++++++++-- - src/perf/Makefile.am | 6 ++++++ - src/vpglsl/Makefile.am | 1 + - 4 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/src/fpglsl/Makefile.am b/src/fpglsl/Makefile.am -index 47c1039..fd43c91 100644 ---- a/src/fpglsl/Makefile.am -+++ b/src/fpglsl/Makefile.am -@@ -39,10 +39,12 @@ noinst_PROGRAMS = \ - endif - - EXTRA_DIST = \ -+ depth-read.glsl \ - dowhile2.glsl \ - dowhile.glsl \ - forbreak.glsl \ - for.glsl \ -+ infinite-loop.glsl \ - mov.glsl \ - mov-imm.glsl \ - simpleif.glsl \ -diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am -index 4faa8db..079a29d 100644 ---- a/src/glsl/Makefile.am -+++ b/src/glsl/Makefile.am -@@ -37,7 +37,7 @@ AM_LDFLAGS = \ - if HAVE_GLUT - bin_PROGRAMS = \ - array \ -- bezier \ -+ bezier \ - bitmap \ - brick \ - bump \ -@@ -123,12 +123,16 @@ EXTRA_DIST = \ - CH06-brick.vert \ - CH11-bumpmap.frag \ - CH11-bumpmap.vert \ -+ CH11-bumpmaptex.frag \ - CH11-toyball.frag \ - CH11-toyball.vert \ - CH18-mandel.frag \ - CH18-mandel.vert \ -- bezier.geom \ -+ bezier.geom \ - brick.shtest \ -+ blinking-teapot.frag \ -+ blinking-teapot.vert \ -+ convolution.frag \ - convolution.vert \ - cubemap.frag \ - mandelbrot.shtest \ -@@ -138,5 +142,7 @@ EXTRA_DIST = \ - reflect.vert \ - shadowtex.frag \ - simple.vert \ -+ simplex-noise.glsl \ - skinning.frag \ -+ skinning.vert \ - toyball.shtest -diff --git a/src/perf/Makefile.am b/src/perf/Makefile.am -index 5363c58..c5cca8d 100644 ---- a/src/perf/Makefile.am -+++ b/src/perf/Makefile.am -@@ -57,3 +57,9 @@ bin_PROGRAMS = \ - endif - - glslstateschange_LDADD = libperf.la ../util/libutil.la -+ -+EXTRA_DIST = \ -+ glslstateschange1.frag \ -+ glslstateschange1.vert \ -+ glslstateschange2.frag \ -+ glslstateschange2.vert -diff --git a/src/vpglsl/Makefile.am b/src/vpglsl/Makefile.am -index 4a85ed4..48b08f4 100644 ---- a/src/vpglsl/Makefile.am -+++ b/src/vpglsl/Makefile.am -@@ -44,6 +44,7 @@ EXTRA_DIST = \ - func2.glsl \ - ifelse.glsl \ - if.glsl \ -+ infinite-loop.glsl \ - mov.glsl \ - nestedifs.glsl \ - nestedswizzle.glsl \ --- -2.0.0 - diff --git a/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch b/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch deleted file mode 100644 index 1262dee237..0000000000 --- a/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch +++ /dev/null @@ -1,73 +0,0 @@ -From c8c3de5417d6b6c7d7579c528c0cab718f4bfdb6 Mon Sep 17 00:00:00 2001 -From: Martin Jansa <Martin.Jansa@gmail.com> -Date: Thu, 10 Jul 2014 14:48:12 +0200 -Subject: [PATCH 9/9] glsl, perf: Install .glsl, .vert, .frag files - -Upstream-Status: Pending -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/fpglsl/Makefile.am | 3 ++- - src/glsl/Makefile.am | 3 ++- - src/perf/Makefile.am | 3 ++- - src/vpglsl/Makefile.am | 3 ++- - 4 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/src/fpglsl/Makefile.am b/src/fpglsl/Makefile.am -index fd43c91..2bf51de 100644 ---- a/src/fpglsl/Makefile.am -+++ b/src/fpglsl/Makefile.am -@@ -38,7 +38,8 @@ noinst_PROGRAMS = \ - fp-tri - endif - --EXTRA_DIST = \ -+demosdatadir=$(datadir)/$(PACKAGE)/ -+dist_demosdata_DATA= \ - depth-read.glsl \ - dowhile2.glsl \ - dowhile.glsl \ -diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am -index 079a29d..f66ec29 100644 ---- a/src/glsl/Makefile.am -+++ b/src/glsl/Makefile.am -@@ -118,7 +118,8 @@ vert_or_frag_only_LDADD = ../util/libutil.la - vert_tex_LDADD = ../util/libutil.la - vsraytrace_LDADD = ../util/libutil.la - --EXTRA_DIST = \ -+demosdatadir=$(datadir)/$(PACKAGE)/ -+dist_demosdata_DATA= \ - CH06-brick.frag \ - CH06-brick.vert \ - CH11-bumpmap.frag \ -diff --git a/src/perf/Makefile.am b/src/perf/Makefile.am -index c5cca8d..140256d 100644 ---- a/src/perf/Makefile.am -+++ b/src/perf/Makefile.am -@@ -58,7 +58,8 @@ endif - - glslstateschange_LDADD = libperf.la ../util/libutil.la - --EXTRA_DIST = \ -+demosdatadir=$(datadir)/$(PACKAGE)/ -+dist_demosdata_DATA= \ - glslstateschange1.frag \ - glslstateschange1.vert \ - glslstateschange2.frag \ -diff --git a/src/vpglsl/Makefile.am b/src/vpglsl/Makefile.am -index 48b08f4..5526867 100644 ---- a/src/vpglsl/Makefile.am -+++ b/src/vpglsl/Makefile.am -@@ -38,7 +38,8 @@ noinst_PROGRAMS = \ - vp-tris - endif - --EXTRA_DIST = \ -+demosdatadir=$(datadir)/$(PACKAGE)/ -+dist_demosdata_DATA= \ - for.glsl \ - func.glsl \ - func2.glsl \ --- -2.0.0 - diff --git a/meta/recipes-graphics/mesa/mesa-demos/0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch b/meta/recipes-graphics/mesa/mesa-demos/0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch deleted file mode 100644 index c687647407..0000000000 --- a/meta/recipes-graphics/mesa/mesa-demos/0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 3aa84c47e88a4c38446ce1323abf6f2c77389104 Mon Sep 17 00:00:00 2001 -From: Prabhu <prabhu.sundararaj@freescale.com> -Date: Mon, 16 Nov 2015 17:09:32 -0600 -Subject: [PATCH] mesa-demos: OpenVG demos with single frame need eglSwapBuffer - -sp and text demos rendering single frame. to display the -single frame rendered needed a eglSwapBuffer to diplay to window. -Hence added eglutPostRedisplay to display the frame - -Upstream-Status: Pending - -Signed-off-by: Prabhu <prabhu.sundararaj@freescale.com> ---- - src/egl/openvg/sp.c | 1 + - src/egl/openvg/text.c | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/src/egl/openvg/sp.c b/src/egl/openvg/sp.c -index a20c0a3..468e91e 100644 ---- a/src/egl/openvg/sp.c -+++ b/src/egl/openvg/sp.c -@@ -500,6 +500,7 @@ draw(void) - } - - vgFlush(); -+ eglutPostRedisplay(); - } - - -diff --git a/src/egl/openvg/text.c b/src/egl/openvg/text.c -index f5c6de8..492581c 100644 ---- a/src/egl/openvg/text.c -+++ b/src/egl/openvg/text.c -@@ -360,6 +360,7 @@ display(void) - { - vgClear(0, 0, width, height); - glyph_string_draw(10.0, 10.0); -+ eglutPostRedisplay(); - } - - --- -2.5.1 - diff --git a/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch b/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch deleted file mode 100644 index e7be4dfbe1..0000000000 --- a/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 322af294390a7f4e1524c5a79312be6cbebce988 Mon Sep 17 00:00:00 2001 -From: Awais Belal <awais_belal@mentor.com> -Date: Wed, 11 Nov 2015 17:22:12 +0500 -Subject: [PATCH] only build GLX demos if needed - -There are platforms that default to EGL only configurations -in which case the GLX applications are not required -at all. Allow the user to control generation of these -demos as needed through a configure switch. - -Signed-off-by: Awais Belal <awais_belal@mentor.com> -Upstream-Status: Pending ---- - configure.ac | 9 +++++++++ - src/Makefile.am | 6 +++++- - 2 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index f8ec7e3..1a4d96d 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -132,6 +132,11 @@ if test "x$enable_glu" = xyes; then - DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" - fi - -+AC_ARG_ENABLE([glx-demos], -+ [AS_HELP_STRING([--enable-glx-demos], -+ [enable GLX demos @<:@default=auto@:>@])], -+ [glx_demos_enabled="$enableval"], -+ [glx_demos_enabled=yes]) - AC_ARG_ENABLE([egl], - [AS_HELP_STRING([--enable-egl], - [enable EGL library @<:@default=auto@:>@])], -@@ -325,6 +333,7 @@ AC_SUBST([WAYLAND_LIBS]) - - AM_CONDITIONAL(HAVE_GLU, test "x$glu_enabled" = "xyes") - AM_CONDITIONAL(HAVE_GLEW, test "x$glew_enabled" = "xyes") -+AM_CONDITIONAL(HAVE_GLX, test "x$glx_demos_enabled" = "xyes") - AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes") - AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes") - AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes") -diff --git a/src/Makefile.am b/src/Makefile.am -index 8b89dee..a4d7e8f 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -44,8 +44,12 @@ SUBDIRS = \ - slang \ - tests \ - tools \ -- wgl \ -+ wgl -+ -+if HAVE_GLX -+SUBDIRS += \ - xdemos -+endif - - if HAVE_GLEW - SUBDIRS += \ --- -1.9.1 - diff --git a/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb b/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb deleted file mode 100644 index bae3b18bea..0000000000 --- a/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb +++ /dev/null @@ -1,59 +0,0 @@ -SUMMARY = "Mesa demo applications" -DESCRIPTION = "This package includes the demonstration application, such as glxgears. \ -These applications can be used for Mesa validation and benchmarking." -HOMEPAGE = "http://mesa3d.org" -BUGTRACKER = "https://bugs.freedesktop.org" -SECTION = "x11" - -LICENSE = "MIT & PD" -LIC_FILES_CHKSUM = "file://src/xdemos/glxgears.c;beginline=1;endline=20;md5=914225785450eff644a86c871d3ae00e \ - file://src/xdemos/glxdemo.c;beginline=1;endline=8;md5=b01d5ab1aee94d35b7efaa2ef48e1a06" - -SRC_URI = "https://mesa.freedesktop.org/archive/demos/${PV}/${BPN}-${PV}.tar.bz2 \ - file://0001-mesa-demos-Add-missing-data-files.patch \ - file://0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch \ - file://0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch \ - file://0007-Install-few-more-test-programs.patch \ - file://0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch \ - file://0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch \ - file://0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch \ - file://0013-only-build-GLX-demos-if-needed.patch \ - " -SRC_URI[md5sum] = "628e75c23c17394f11a316c36f8e4164" -SRC_URI[sha256sum] = "c173154bbd0d5fb53d732471984def42fb1b14ac85fcb834138fb9518b3e0bef" - -inherit autotools pkgconfig distro_features_check -# depends on virtual/egl, virtual/libgl ... -REQUIRED_DISTRO_FEATURES = "opengl x11" - -PACKAGECONFIG ?= "drm osmesa freetype2 gbm egl gles1 gles2 \ - x11 glew glu glx" - -# The Wayland code doesn't work with Wayland 1.0, so disable it for now -#${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)}" - -EXTRA_OECONF = "--with-system-data-files" - -PACKAGECONFIG[drm] = "--enable-libdrm,--disable-libdrm,libdrm" -PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl" -PACKAGECONFIG[freetype2] = "--enable-freetype2,--disable-freetype2,freetype" -PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/libgl" -PACKAGECONFIG[gles1] = "--enable-gles1,--disable-gles1,virtual/libgles1" -PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2" -PACKAGECONFIG[glut] = "--with-glut=${STAGING_EXECPREFIXDIR},--without-glut,freeglut" -PACKAGECONFIG[osmesa] = "--enable-osmesa,--disable-osmesa," -PACKAGECONFIG[vg] = "--enable-vg,--disable-vg,virtual/libopenvg" -PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,virtual/libgl wayland" -PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11" -PACKAGECONFIG[glew] = "--enable-glew,--disable-glew,glew" -PACKAGECONFIG[glu] = "--enable-glu,--disable-glu,virtual/libgl" -PACKAGECONFIG[glx] = "--enable-glx-demos,--disable-glx-demos" - -do_install_append() { - # it can be completely empty when all PACKAGECONFIG options are disabled - rmdir --ignore-fail-on-non-empty ${D}${bindir} - - if [ -f ${D}${bindir}/clear ]; then - mv ${D}${bindir}/clear ${D}${bindir}/clear.mesa-demos - fi -} diff --git a/meta/recipes-graphics/mesa/mesa-demos_8.5.0.bb b/meta/recipes-graphics/mesa/mesa-demos_8.5.0.bb new file mode 100644 index 0000000000..12f41d75a5 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos_8.5.0.bb @@ -0,0 +1,43 @@ +SUMMARY = "Mesa demo applications" +DESCRIPTION = "This package includes the demonstration application, such as glxgears. \ +These applications can be used for Mesa validation and benchmarking." +HOMEPAGE = "http://mesa3d.org" +BUGTRACKER = "https://bugs.freedesktop.org" +SECTION = "x11" + +LICENSE = "MIT & PD" +LIC_FILES_CHKSUM = "file://src/xdemos/glxgears.c;beginline=1;endline=20;md5=914225785450eff644a86c871d3ae00e \ + file://src/xdemos/glxdemo.c;beginline=1;endline=8;md5=b01d5ab1aee94d35b7efaa2ef48e1a06" + +SRC_URI = "https://mesa.freedesktop.org/archive/demos/${PV}/${BPN}-${PV}.tar.bz2 \ + file://0001-mesa-demos-Add-missing-data-files.patch \ + file://0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch \ + " +SRC_URI[sha256sum] = "cea2df0a80f09a30f635c4eb1a672bf90c5ddee0b8e77f4d70041668ef71aac1" + +inherit meson pkgconfig features_check +# depends on virtual/egl, virtual/libgl ... +REQUIRED_DISTRO_FEATURES = "opengl x11" + +EXTRA_OEMESON = "-Dwith-system-data-files=true" + +PACKAGECONFIG ?= "drm egl gles1 gles2 \ + ${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)}" + +PACKAGECONFIG[drm] = "-Dlibdrm=enabled,-Dlibdrm=disabled,libdrm" +PACKAGECONFIG[egl] = "-Degl=enabled,-Degl=disabled,virtual/egl" +PACKAGECONFIG[gles1] = "-Dgles1=enabled,-Dgles1=disabled,virtual/libgles1" +PACKAGECONFIG[gles2] = "-Dgles2=enabled,-Dgles2=disabled,virtual/libgles2" +PACKAGECONFIG[glut] = "-Dwith-glut=${STAGING_EXECPREFIXDIR},,freeglut" +PACKAGECONFIG[osmesa] = "-Dosmesa=enabled,-Dosmesa=disabled," +PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,virtual/libgl wayland wayland-native wayland-protocols" +PACKAGECONFIG[x11] = "-Dx11=enabled,-Dx11=disabled,virtual/libx11 libglu" + +do_install:append() { + # it can be completely empty when all PACKAGECONFIG options are disabled + rmdir --ignore-fail-on-non-empty ${D}${bindir} + + if [ -f ${D}${bindir}/clear ]; then + mv ${D}${bindir}/clear ${D}${bindir}/clear.mesa-demos + fi +} diff --git a/meta/recipes-graphics/mesa/mesa-gl_19.0.8.bb b/meta/recipes-graphics/mesa/mesa-gl_19.0.8.bb deleted file mode 100644 index d4b1c1c454..0000000000 --- a/meta/recipes-graphics/mesa/mesa-gl_19.0.8.bb +++ /dev/null @@ -1,10 +0,0 @@ -require mesa_${PV}.bb - -SUMMARY += " (OpenGL only, no EGL/GLES)" - -PROVIDES = "virtual/libgl virtual/mesa" - -S = "${WORKDIR}/mesa-${PV}" - -PACKAGECONFIG ??= "opengl dri ${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" -PACKAGECONFIG_class-target = "opengl dri ${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" diff --git a/meta/recipes-graphics/mesa/mesa-gl_24.0.5.bb b/meta/recipes-graphics/mesa/mesa-gl_24.0.5.bb new file mode 100644 index 0000000000..ca160f1bfc --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-gl_24.0.5.bb @@ -0,0 +1,15 @@ +require mesa.inc + +SUMMARY += " (OpenGL only, no EGL/GLES)" + +PROVIDES = "virtual/libgl virtual/mesa" + +S = "${WORKDIR}/mesa-${PV}" + +TARGET_CFLAGS = "-I${STAGING_INCDIR}/drm" + +# At least one DRI rendering engine is required to build mesa. +# When no X11 is available, use osmesa for the rendering engine. +PACKAGECONFIG ??= "opengl gallium ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa', d)}" +PACKAGECONFIG:class-target = "opengl gallium ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa', d)}" + diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index ece74974b5..77e9c80fcb 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc @@ -10,155 +10,258 @@ HOMEPAGE = "http://mesa3d.org" BUGTRACKER = "https://bugs.freedesktop.org" SECTION = "x11" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://docs/license.html;md5=725f991a1cc322aa7a0cd3a2016621c4" +LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10" PE = "2" -DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native" +SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ + file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \ + file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \ + file://0001-drisw-fix-build-without-dri3.patch \ + file://0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch \ + file://0001-Revert-meson-do-not-pull-in-clc-for-clover.patch \ +" + +SRC_URI[sha256sum] = "38cc245ca8faa3c69da6d2687f8906377001f63365348a62cc6f7fafb1e8c018" + +UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)" + +#because we cannot rely on the fact that all apps will use pkgconfig, +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER +do_install:append() { + # sed can't find EGL/eglplatform.h as it doesn't get installed when glvnd enabled. + # So, check if EGL/eglplatform.h exists before running sed. + if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)} && [ -f ${D}${includedir}/EGL/eglplatform.h ]; then + sed -i -e 's/^#elif defined(__unix__) && defined(EGL_NO_X11)$/#elif defined(__unix__) \&\& defined(EGL_NO_X11) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h + fi +} + +DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native" +DEPENDS:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'mesa-native', '', d)}" EXTRANATIVEPATH += "chrpath-native" PROVIDES = " \ ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'glvnd', 'virtual/libglx', '', d)} \ + ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \ virtual/mesa \ " -inherit autotools pkgconfig python3native gettext distro_features_check +inherit meson pkgconfig python3native gettext features_check BBCLASSEXTEND = "native nativesdk" -ANY_OF_DISTRO_FEATURES_class-target = "opengl vulkan" - -PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)} \ - ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)} \ - surfaceless" - -export LLVM_CONFIG = "${STAGING_BINDIR_NATIVE}/llvm-config${MESA_LLVM_RELEASE}" -export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE}/llvm-config" -export YOCTO_ALTERNATE_MULTILIB_NAME = "${base_libdir}" -EXTRA_OECONF = "--enable-shared-glapi \ - --disable-opencl \ - --enable-glx-read-only-text \ - PYTHON2=python2 \ - --with-llvm-prefix=${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE} \ - --with-platforms='${PLATFORMS}' \ - --enable-autotools \ +ANY_OF_DISTRO_FEATURES = "opengl vulkan" + +PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)}" + +# set the MESA_BUILD_TYPE to either 'release' (default) or 'debug' +# by default the upstream mesa sources build a debug release +# here we assume the user will want a release build by default +MESA_BUILD_TYPE ?= "release" +def check_buildtype(d): + _buildtype = d.getVar('MESA_BUILD_TYPE') + if _buildtype not in ['release', 'debug']: + bb.fatal("unknown build type (%s), please set MESA_BUILD_TYPE to either 'release' or 'debug'" % _buildtype) + if _buildtype == 'debug': + return 'debugoptimized' + return 'plain' +MESON_BUILDTYPE = "${@check_buildtype(d)}" + +EXTRA_OEMESON = " \ + -Dshared-glapi=enabled \ + -Dglx-read-only-text=true \ + -Dplatforms='${@",".join("${PLATFORMS}".split())}' \ " -PACKAGECONFIG_class-target ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland vulkan', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm dri gallium', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11 dri3', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \ - " -PACKAGECONFIG_class-native ?= "gbm dri egl opengl" -PACKAGECONFIG_class-nativesdk ?= "gbm dri egl opengl" +EXTRA_OEMESON:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', '-Dintel-clc=system', '', d)}" +EXTRA_OEMESON:append:class-native = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', '-Dintel-clc=enabled', '', d)}" -# "gbm" requires "dri", "opengl" -PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm" +def strip_comma(s): + return s.strip(',') + +PACKAGECONFIG = " \ + gallium \ + video-codecs \ + ${@bb.utils.filter('DISTRO_FEATURES', 'x11 vulkan wayland', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'dri3', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'zink', '', d)} \ +" + +PACKAGECONFIG:append:class-native = "gallium-llvm r600" + +# "gbm" requires "opengl" +PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled" X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr" # "x11" requires "opengl" -PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}" -PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc" +PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}" PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols" -DRIDRIVERS_class-native = "swrast" -DRIDRIVERS_class-nativesdk = "swrast" -DRIDRIVERS_append_x86_class-target = ",radeon,r200,nouveau,i965,i915" -DRIDRIVERS_append_x86-64_class-target = ",radeon,r200,nouveau,i965,i915" -# "dri" requires "opengl" -PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, xorgproto libdrm" -PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, xorgproto libxshmfence" +PACKAGECONFIG[dri3] = "-Ddri3=enabled, -Ddri3=disabled, xorgproto libxshmfence" # Vulkan drivers need dri3 enabled -# radeon could be enabled as well but requires gallium-llvm with llvm >= 3.9 +# amd could be enabled as well but requires gallium-llvm with llvm >= 3.9 VULKAN_DRIVERS = "" -VULKAN_DRIVERS_append_x86_class-target = ",intel" -VULKAN_DRIVERS_append_x86-64_class-target = ",intel" -PACKAGECONFIG[vulkan] = "--with-vulkan-drivers=${VULKAN_DRIVERS}, --without-vulkan-drivers, python3-mako-native" - -PACKAGECONFIG[opengl] = "--enable-opengl, --disable-opengl" +VULKAN_DRIVERS:append:x86 = ",intel,amd" +VULKAN_DRIVERS:append:x86-64 = ",intel,amd" +# i686 is a 32 bit override for mesa-native +VULKAN_DRIVERS:append:i686 = ",intel,amd" +VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" +VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" +VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',swrast', '', d)}" +VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}" +PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers" + +# mesa development and testing tools support, per driver +TOOLS = "" +TOOLS_DEPS = "" +TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" +TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" +TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}" +TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" +TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination', '', d)}" + +# dependencies for tools. +TOOLS_DEPS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ' ncurses libxml2 ', '', d)}" + +# the fdperf tool requires libconfig (a part of meta-oe) so it needs special +# treatment in addition to the usual 'freedreno tools'. +PACKAGECONFIG[freedreno-fdperf] = ",,libconfig" + +PACKAGECONFIG[tools] = "-Dtools=${@strip_comma('${TOOLS}')}, -Dtools='', ${TOOLS_DEPS}" + +PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false" +PACKAGECONFIG[glvnd] = "-Dglvnd=true, -Dglvnd=false, libglvnd" # "gles" requires "opengl" -PACKAGECONFIG[gles] = "--enable-gles1 --enable-gles2, --disable-gles1 --disable-gles2" +PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2=disabled" + +# "egl" requires "opengl" +PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled" -# "egl" requires "dri", "opengl" -PACKAGECONFIG[egl] = "--enable-egl, --disable-egl" +# "opencl" requires libclc from meta-clang and spirv-tools from OE-Core +OPENCL_NATIVE = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', '-Dopencl-native=true', '', d)}" +PACKAGECONFIG[opencl] = "-Dgallium-opencl=icd -Dopencl-spirv=true ${OPENCL_NATIVE},-Dgallium-opencl=disabled -Dopencl-spirv=false,libclc spirv-tools python3-ply-native" +PACKAGECONFIG[broadcom] = "" PACKAGECONFIG[etnaviv] = "" -PACKAGECONFIG[imx] = "" +PACKAGECONFIG[freedreno] = "" +PACKAGECONFIG[kmsro] = "" +PACKAGECONFIG[vc4] = "" +PACKAGECONFIG[v3d] = "" +PACKAGECONFIG[zink] = "" GALLIUMDRIVERS = "swrast" -GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" -GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'imx', ',imx', '', d)}" +# gallium swrast was found to crash Xorg on startup in x32 qemu +GALLIUMDRIVERS:x86-x32 = "" +GALLIUMDRIVERS:append:x86 = ",i915,iris,crocus" +GALLIUMDRIVERS:append:x86-64 = ",i915,iris,crocus" +# i686 is a 32 bit override for mesa-native +GALLIUMDRIVERS:append:i686 = ",i915,iris,crocus" + +GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" +GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" +GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'kmsro', ',kmsro', '', d)}" +GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}" +GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}" +GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '', d)}" # radeonsi requires LLVM -GALLIUMDRIVERS_LLVM33 = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}" -GALLIUMDRIVERS_LLVM33_ENABLED = "${@oe.utils.version_less_or_equal('MESA_LLVM_RELEASE', '3.2', False, len('${GALLIUMDRIVERS_LLVM33}') > 0, d)}" -GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${@',${GALLIUMDRIVERS_LLVM33}' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}" +GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}" +GALLIUMDRIVERS_LLVM = ",r300,nouveau${GALLIUMDRIVERS_RADEONSI}" +GALLIUMDRIVERS_LLVM:append:x86 = ",svga" +GALLIUMDRIVERS_LLVM:append:x86-64 = ",svga" +# i686 is a 32 bit override for mesa-native +GALLIUMDRIVERS_LLVM:append:i686 = ",svga" PACKAGECONFIG[r600] = "" +PACKAGECONFIG[virgl] = "" -GALLIUMDRIVERS_append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}" -GALLIUMDRIVERS_append = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',r600', '', d)}" -GALLIUMDRIVERS_append = ",virgl" +GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${GALLIUMDRIVERS_LLVM}', '', d)}" +GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',r600', '', d)}" +GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}" -# keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers -PACKAGECONFIG[gallium] = "--with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers" -MESA_LLVM_RELEASE ?= "8.0.0" -PACKAGECONFIG[gallium-llvm] = "--enable-llvm --enable-llvm-shared-libs, --disable-llvm, llvm${MESA_LLVM_RELEASE} llvm-native \ - ${@'elfutils' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}" -export WANT_LLVM_RELEASE = "${MESA_LLVM_RELEASE}" -PACKAGECONFIG[xa] = "--enable-xa, --disable-xa" +PACKAGECONFIG[gallium] = "-Dgallium-drivers=${@strip_comma('${GALLIUMDRIVERS}')}, -Dgallium-drivers='', libdrm" +PACKAGECONFIG[gallium-llvm] = "-Dllvm=enabled -Dshared-llvm=enabled, -Dllvm=disabled, llvm llvm-native elfutils" +PACKAGECONFIG[xa] = "-Dgallium-xa=enabled, -Dgallium-xa=disabled" +PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial" +PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau" -OSMESA = "${@bb.utils.contains('PACKAGECONFIG', 'gallium', 'gallium-osmesa', 'osmesa', d)}" -PACKAGECONFIG[osmesa] = "--enable-${OSMESA},--disable-${OSMESA}" +PACKAGECONFIG[imagination] = "-Dimagination-srv=true,-Dimagination-srv=false" -PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind" +PACKAGECONFIG[lima] = "" +GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}" -EXTRA_OECONF_remove_libc-musl = "--enable-glx-tls" -EXTRA_OECONF_append_libc-musl = " --disable-glx-tls" -EXTRA_OECONF_append_libc-musl_x86 = " --disable-asm" +PACKAGECONFIG[panfrost] = "" +GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" + +PACKAGECONFIG[vulkan-beta] = "-Dvulkan-beta=true,-Dvulkan-beta=false" + +PACKAGECONFIG[osmesa] = "-Dosmesa=true,-Dosmesa=false" + +PACKAGECONFIG[perfetto] = "-Dperfetto=true,-Dperfetto=false,libperfetto" + +PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind" + +PACKAGECONFIG[lmsensors] = "-Dlmsensors=enabled,-Dlmsensors=disabled,lmsensors" + +VIDEO_CODECS ?= "${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'all', 'all_free', d)}" +PACKAGECONFIG[video-codecs] = "-Dvideo-codecs=${VIDEO_CODECS}, -Dvideo-codecs=''" # llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2) -FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer" +FULL_OPTIMIZATION:append = " -fno-omit-frame-pointer" -CFLAGS_append_armv5 = " -DMISSING_64BIT_ATOMICS" -EXTRA_OEMAKE += "WAYLAND_PROTOCOLS_DATADIR=${STAGING_DATADIR}/wayland-protocols" +CFLAGS:append:armv5 = " -DMISSING_64BIT_ATOMICS" +CFLAGS:append:armv6 = " -DMISSING_64BIT_ATOMICS" # Remove the mesa dependency on mesa-dev, as mesa is empty -RDEPENDS_${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" -# Add dependency so that GLES3 header don't need to be added manually -RDEPENDS_libgles2-mesa-dev += "libgles3-mesa-dev" +# Khronos documentation says that include/GLES2/gl2ext.h can be used for +# OpenGL ES 3 specification as well as for OpenGL ES 2. +# There can be applications including GLES2/gl2ext.h instead of GLES3/gl3ext.h +# meaning we should probably bring in GLES2/gl2ext.h if someone asks for +# development package of libgles3. +RDEPENDS:libgles3-mesa-dev += "libgles2-mesa-dev" + +RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'libclc spirv-tools', '', d)}" PACKAGES =+ "libegl-mesa libegl-mesa-dev \ libosmesa libosmesa-dev \ libgl-mesa libgl-mesa-dev \ + libglx-mesa libglx-mesa-dev \ libglapi libglapi-dev \ libgbm libgbm-dev \ libgles1-mesa libgles1-mesa-dev \ libgles2-mesa libgles2-mesa-dev \ libgles3-mesa libgles3-mesa-dev \ + libopencl-mesa libopencl-mesa-dev \ libxatracker libxatracker-dev \ mesa-megadriver mesa-vulkan-drivers \ + mesa-vdpau-drivers mesa-tools \ " -do_install_append () { +do_install:append () { # Drivers never need libtool .la files rm -f ${D}${libdir}/dri/*.la rm -f ${D}${libdir}/egl/*.la rm -f ${D}${libdir}/gallium-pipe/*.la rm -f ${D}${libdir}/gbm/*.la - # it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used - chrpath --delete ${D}${libdir}/dri/*_dri.so || true - # libwayland-egl has been moved to wayland 1.15+ rm -f ${D}${libdir}/libwayland-egl* rm -f ${D}${libdir}/pkgconfig/wayland-egl.pc - rmdir --ignore-fail-on-non-empty ${D}${libdir}/pkgconfig +} + +do_install:append:class-native () { + if ${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'true', 'false', d)}; then + install -d ${D}${bindir} + install -m0755 ${B}/src/intel/compiler/intel_clc ${D}${bindir} + fi } # For the packages that make up the OpenGL interfaces, inject variables so that @@ -166,84 +269,100 @@ do_install_append () { # RPROVIDEs/RCONFLICTs on the generic libgl name. python __anonymous() { pkgconfig = (d.getVar('PACKAGECONFIG') or "").split() + suffix = "" + if "-native" in d.getVar("PN"): + suffix = "-native" for p in (("egl", "libegl", "libegl1"), - ("dri", "libgl", "libgl1"), + ("opengl", "libgl", "libgl1"), + ("glvnd", "libglx",), ("gles", "libgles1", "libglesv1-cm1"), ("gles", "libgles2", "libglesv2-2"), - ("gles", "libgles3",)): + ("gles", "libgles3",), + ("opencl", "libopencl",)): if not p[0] in pkgconfig: continue - fullp = p[1] + "-mesa" - pkgs = " ".join(p[1:]) - d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1") - d.appendVar("RREPLACES_" + fullp, pkgs) - d.appendVar("RPROVIDES_" + fullp, pkgs) - d.appendVar("RCONFLICTS_" + fullp, pkgs) + mlprefix = d.getVar("MLPREFIX") + fullp = mlprefix + p[1] + "-mesa" + suffix + mlprefix = d.getVar("MLPREFIX") + pkgs = " " + " ".join(mlprefix + x + suffix for x in p[1:]) + d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1") + d.appendVar("RREPLACES:" + fullp, pkgs) + d.appendVar("RPROVIDES:" + fullp, pkgs) + d.appendVar("RCONFLICTS:" + fullp, pkgs) - d.appendVar("RRECOMMENDS_" + fullp, " mesa-megadriver") + d.appendVar("RRECOMMENDS:" + fullp, " ${MLPREFIX}mesa-megadriver" + suffix) # For -dev, the first element is both the Debian and original name - fullp += "-dev" - pkgs = p[1] + "-dev" - d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1") - d.appendVar("RREPLACES_" + fullp, pkgs) - d.appendVar("RPROVIDES_" + fullp, pkgs) - d.appendVar("RCONFLICTS_" + fullp, pkgs) + fullp = mlprefix + p[1] + "-mesa-dev" + suffix + pkgs = " " + mlprefix + p[1] + "-dev" + suffix + d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1") + d.appendVar("RREPLACES:" + fullp, pkgs) + d.appendVar("RPROVIDES:" + fullp, pkgs) + d.appendVar("RCONFLICTS:" + fullp, pkgs) } python mesa_populate_packages() { pkgs = ['mesa', 'mesa-dev', 'mesa-dbg'] for pkg in pkgs: - d.setVar("RPROVIDES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) - d.setVar("RCONFLICTS_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) - d.setVar("RREPLACES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + d.setVar("RPROVIDES:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + d.setVar("RCONFLICTS:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + d.setVar("RREPLACES:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) import re dri_drivers_root = oe.path.join(d.getVar('PKGD'), d.getVar('libdir'), "dri") if os.path.isdir(dri_drivers_root): - dri_pkgs = os.listdir(dri_drivers_root) + dri_pkgs = sorted(os.listdir(dri_drivers_root)) lib_name = d.expand("${MLPREFIX}mesa-megadriver") for p in dri_pkgs: m = re.match(r'^(.*)_dri\.so$', p) if m: pkg_name = " ${MLPREFIX}mesa-driver-%s" % legitimize_package_name(m.group(1)) - d.appendVar("RPROVIDES_%s" % lib_name, pkg_name) - d.appendVar("RCONFLICTS_%s" % lib_name, pkg_name) - d.appendVar("RREPLACES_%s" % lib_name, pkg_name) + d.appendVar("RPROVIDES:%s" % lib_name, pkg_name) + d.appendVar("RCONFLICTS:%s" % lib_name, pkg_name) + d.appendVar("RREPLACES:%s" % lib_name, pkg_name) pipe_drivers_root = os.path.join(d.getVar('libdir'), "gallium-pipe") do_split_packages(d, pipe_drivers_root, r'^pipe_(.*)\.so$', 'mesa-driver-pipe-%s', 'Mesa %s pipe driver', extra_depends='') } -PACKAGESPLITFUNCS_prepend = "mesa_populate_packages " +PACKAGESPLITFUNCS =+ "mesa_populate_packages" PACKAGES_DYNAMIC += "^mesa-driver-.*" - -FILES_mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d/00-mesa-defaults.conf" -FILES_mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${datadir}/vulkan" -FILES_libegl-mesa = "${libdir}/libEGL.so.*" -FILES_libgbm = "${libdir}/libgbm.so.*" -FILES_libgles1-mesa = "${libdir}/libGLESv1*.so.*" -FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*" -FILES_libgl-mesa = "${libdir}/libGL.so.*" -FILES_libglapi = "${libdir}/libglapi.so.*" -FILES_libosmesa = "${libdir}/libOSMesa.so.*" -FILES_libxatracker = "${libdir}/libxatracker.so.*" - -FILES_${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/vulkan" -FILES_libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc" -FILES_libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h" -FILES_libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc" -FILES_libglapi-dev = "${libdir}/libglapi.*" -FILES_libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc" -FILES_libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc" -FILES_libgles3-mesa-dev = "${includedir}/GLES3" -FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/GL/osmesa.h ${libdir}/pkgconfig/osmesa.pc" -FILES_libxatracker-dev = "${libdir}/libxatracker.so ${libdir}/libxatracker.la \ +PACKAGES_DYNAMIC:class-native = "^mesa-driver-.*-native" + +FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d" +FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan" +FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*" +FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d" +FILES:libgbm = "${libdir}/libgbm.so.*" +FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*" +FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*" +FILES:libgl-mesa = "${libdir}/libGL.so.*" +FILES:libglx-mesa = "${libdir}/libGLX*.so.*" +FILES:libopencl-mesa = "${libdir}/libMesaOpenCL.so.* ${libdir}/gallium-pipe/*.so ${sysconfdir}/OpenCL/vendors/mesa.icd" +FILES:libglapi = "${libdir}/libglapi.so.*" +FILES:libosmesa = "${libdir}/libOSMesa.so.*" +FILES:libxatracker = "${libdir}/libxatracker.so.*" + +FILES:${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/vulkan ${libdir}/vdpau/*.so" +FILES:libegl-mesa-dev = "${libdir}/libEGL*.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc" +FILES:libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h" +FILES:libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc" +FILES:libglx-mesa-dev = "${libdir}/libGLX*.*" +FILES:libglapi-dev = "${libdir}/libglapi.*" +FILES:libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc" +FILES:libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc" +FILES:libgles3-mesa-dev = "${includedir}/GLES3" +FILES:libopencl-mesa-dev = "${libdir}/libMesaOpenCL.so" +FILES:libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/GL/osmesa.h ${libdir}/pkgconfig/osmesa.pc" +FILES:libxatracker-dev = "${libdir}/libxatracker.so ${libdir}/libxatracker.la \ ${includedir}/xa_tracker.h ${includedir}/xa_composite.h ${includedir}/xa_context.h \ ${libdir}/pkgconfig/xatracker.pc" +# catch all to get all the tools and data +FILES:${PN}-tools = "${bindir} ${datadir}" +ALLOW_EMPTY:${PN}-tools = "1" # Fix upgrade path from mesa to mesa-megadriver -RREPLACES_mesa-megadriver = "mesa" -RCONFLICTS_mesa-megadriver = "mesa" -RPROVIDES_mesa-megadriver = "mesa" +RREPLACES:mesa-megadriver = "mesa" +RCONFLICTS:mesa-megadriver = "mesa" +RPROVIDES:mesa-megadriver = "mesa" diff --git a/meta/recipes-graphics/mesa/mesa_19.0.8.bb b/meta/recipes-graphics/mesa/mesa_19.0.8.bb deleted file mode 100644 index 8cb80b541e..0000000000 --- a/meta/recipes-graphics/mesa/mesa_19.0.8.bb +++ /dev/null @@ -1,19 +0,0 @@ -require ${BPN}.inc - -SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ - file://0001-Simplify-wayland-scanner-lookup.patch \ - file://0002-winsys-svga-drm-Include-sys-types.h.patch \ - file://0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch \ - file://0004-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch \ -" - -SRC_URI[md5sum] = "9634964d87f1ce8d0230493e43f34c50" -SRC_URI[sha256sum] = "d017eb53a810c32dabeedf6ca2238ae1e897ce9090e470e9ce1d6c9e3f1b0862" - -#because we cannot rely on the fact that all apps will use pkgconfig, -#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER -do_install_append() { - if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then - sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if defined(MESA_EGL_NO_X11_HEADERS) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h - fi -} diff --git a/meta/recipes-graphics/mesa/mesa_24.0.5.bb b/meta/recipes-graphics/mesa/mesa_24.0.5.bb new file mode 100644 index 0000000000..96e8aa38d6 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa_24.0.5.bb @@ -0,0 +1,2 @@ +require ${BPN}.inc + diff --git a/meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb b/meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb index 4e89d631c3..48d50c8f66 100644 --- a/meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb +++ b/meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb @@ -1,23 +1,25 @@ SUMMARY = "Very simple session manager for X" +DESCRIPTION = "Simple session manager for X, that provides just the right boilerplate to create a session and launch the browser " HOMEPAGE = "http://www.yoctoproject.org" BUGTRACKER = "http://bugzilla.pokylinux.org" -PR = "r4" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://mini-x-session;endline=5;md5=b6430bffbcf05f9760e72938826b7487" SECTION = "x11" -RCONFLICTS_${PN} = "matchbox-common" +RCONFLICTS:${PN} = "matchbox-common" SRC_URI = "file://mini-x-session" -S = "${WORKDIR}" -RDEPENDS_${PN} = "sudo" +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" + +RDEPENDS:${PN} = "sudo" inherit update-alternatives -ALTERNATIVE_${PN} = "x-session-manager" +ALTERNATIVE:${PN} = "x-session-manager" ALTERNATIVE_TARGET[x-session-manager] = "${bindir}/mini-x-session" ALTERNATIVE_PRIORITY = "50" diff --git a/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch b/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch deleted file mode 100644 index 82c93dd604..0000000000 --- a/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch +++ /dev/null @@ -1,20 +0,0 @@ -Fix missing include directory when building tests - -This patch is currently required for all versions of mx -Upstream-Status: Submitted @ https://github.com/clutter-project/mx/issues/82 -Signed-off-by: Tomas Frydrych <tomas@sleepfive.com> --- -Index: git/tests/Makefile.am -=================================================================== ---- git.orig/tests/Makefile.am 2013-05-08 15:18:56.918596425 +0100 -+++ git/tests/Makefile.am 2013-05-08 15:23:26.864781401 +0100 -@@ -10,7 +10,8 @@ - - INCLUDES = \ - -I$(top_srcdir) \ -- -I$(top_builddir) -+ -I$(top_builddir)\ -+ -I$(top_builddir)/mx - - noinst_PROGRAMS = \ - test-deform-texture \ diff --git a/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb b/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb deleted file mode 100644 index 58a6997ffe..0000000000 --- a/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb +++ /dev/null @@ -1,16 +0,0 @@ -require mx.inc - -# The 1.4.7 tag does not build against cogl 1.14, pull in a revision with a fix -SRCREV = "9b1db6b8060bd00b121a692f942404a24ae2960f" -PV = "1.4.7+git${SRCPV}" - -# Exclude x.99.x versions from upstream checks -UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>^\d+(\.(?!99)\d+)+)" - -SRC_URI = "git://github.com/clutter-project/mx.git;branch=mx-1.4 \ - file://fix-test-includes.patch \ - " -S = "${WORKDIR}/git" - -LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24 \ - file://mx/mx-widget.c;beginline=8;endline=20;md5=13bba3c973a72414a701e1e87b5ee879" diff --git a/meta/recipes-graphics/mx/mx.inc b/meta/recipes-graphics/mx/mx.inc deleted file mode 100644 index d304837484..0000000000 --- a/meta/recipes-graphics/mx/mx.inc +++ /dev/null @@ -1,21 +0,0 @@ -SUMMARY = "Clutter based UI widget library" -LICENSE = "LGPLv2.1" - -inherit clutter autotools distro_features_check gobject-introspection gtk-doc -# depends on clutter-1.0 which depends on cogl-1.0 -REQUIRED_DISTRO_FEATURES = "opengl" - -DEPENDS = "intltool-native clutter-1.0 dbus-glib gdk-pixbuf" - -SRC_URI = "http://source.clutter-project.org/sources/mx/${@get_verdir("${PV}")}/mx-${PV}.tar.xz" - -EXTRA_OECONF = "--disable-gtk-widgets \ - --with-dbus \ - --with-winsys=none \ - --without-clutter-imcontext \ - --without-clutter-gesture \ - --without-startup-notification \ - --without-glade \ - " - -FILES_${PN} += "${datadir}" diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb deleted file mode 100644 index 87c700e023..0000000000 --- a/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright (C) 2007 OpenedHand Ltd. -# - -SUMMARY = "Clutter package groups" - -PR = "r6" - -inherit packagegroup distro_features_check -# rdepends on clutter-* -REQUIRED_DISTRO_FEATURES = "opengl" - -PACKAGES = "\ - ${PN}-core \ - " - -SUMMARY_${PN}-core = "Clutter graphics library" -RDEPENDS_${PN}-core = "\ - clutter-1.0 \ - clutter-gst-3.0 \ - clutter-gtk-1.0 \ - " diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb new file mode 100644 index 0000000000..dd302c89e7 --- /dev/null +++ b/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb @@ -0,0 +1,14 @@ +SUMMARY = "Basic Weston compositor setup" +DESCRIPTION = "Packages required to set up a basic working Weston session" + +inherit packagegroup features_check + +# weston-init requires pam enabled if started via systemd +REQUIRED_DISTRO_FEATURES = "wayland ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', 'pam', '', d)}" + +RDEPENDS:${PN} = "\ + weston \ + weston-init \ + weston-examples \ + wayland-utils \ + " diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb index 7ea72d55a7..db6242af33 100644 --- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb +++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb @@ -1,15 +1,13 @@ SUMMARY = "Basic X11 session" DESCRIPTION = "Packages required to set up a basic working X11 session" -PR = "r1" -inherit packagegroup distro_features_check +inherit packagegroup features_check # rdepends on matchbox-wm REQUIRED_DISTRO_FEATURES = "x11" -RDEPENDS_${PN} = "\ +RDEPENDS:${PN} = "\ packagegroup-core-x11-xserver \ packagegroup-core-x11-utils \ - dbus \ matchbox-terminal \ matchbox-wm \ mini-x-session \ diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb index 97dcac5f79..ebc1330055 100644 --- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb +++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb @@ -3,18 +3,20 @@ # SUMMARY = "X11 display server" -PR = "r40" PACKAGE_ARCH = "${MACHINE_ARCH}" -inherit packagegroup distro_features_check +inherit packagegroup features_check # rdepends on XSERVER REQUIRED_DISTRO_FEATURES = "x11" -XSERVER ?= "xserver-xorg xf86-video-fbdev" +XSERVER ?= "xserver-xorg \ + xf86-video-fbdev \ + xf86-video-modesetting \ + " XSERVERCODECS ?= "" -RDEPENDS_${PN} = "\ +RDEPENDS:${PN} = "\ ${XSERVER} \ ${XSERVERCODECS} \ " diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb index 001db9e5e2..91db7ed33b 100644 --- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb +++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb @@ -2,9 +2,8 @@ # Copyright (C) 2011 Intel Corporation # -PR = "r40" -inherit packagegroup distro_features_check +inherit packagegroup features_check REQUIRED_DISTRO_FEATURES = "x11" PACKAGES = "${PN} ${PN}-utils" @@ -16,13 +15,13 @@ VIRTUAL-RUNTIME_xserver_common ?= "" VIRTUAL-RUNTIME_graphical_init_manager ?= "xserver-nodm-init" SUMMARY = "X11 display server and basic utilities" -RDEPENDS_${PN} = "\ +RDEPENDS:${PN} = "\ ${PN}-xserver \ ${PN}-utils \ " -SUMMARY_${PN}-utils = "X11 basic utilities and init" -RDEPENDS_${PN}-utils = "\ +SUMMARY:${PN}-utils = "X11 basic utilities and init" +RDEPENDS:${PN}-utils = "\ ${VIRTUAL-RUNTIME_xserver_common} \ ${VIRTUAL-RUNTIME_graphical_init_manager} \ xauth \ diff --git a/meta/recipes-graphics/pango/pango/0001-Skip-running-test-layout-test.patch b/meta/recipes-graphics/pango/pango/0001-Skip-running-test-layout-test.patch new file mode 100644 index 0000000000..ec7fb4727e --- /dev/null +++ b/meta/recipes-graphics/pango/pango/0001-Skip-running-test-layout-test.patch @@ -0,0 +1,45 @@ +From b9bfe3a79f165682a6db3d7ee1928365e93b1ccf Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 13 Apr 2022 19:39:29 -0700 +Subject: [PATCH] Skip running test-layout test + +This fails intermittently, it varies based on what version of harfbuzz +is installed and if it does not match with what pango CI tests then we +get random failures in this test. This has been disabled in other +distros [1] too + +We want to drop this on next upgrade and see if this test passes if not +then keep it disabled + +Fixes + +Running test: pango/test-layout.test +1..36 +ok 1 /layout/letterspacing.layout +ok 2 /layout/valid-7.layout +not ok 3 /layout/valid-14.layout +Bail out! +FAIL: pango/test-layout.test (Child process killed by signal 6) + +[1] https://github.com/archlinux/svntogit-packages/commit/3f883e7ff8071adad23b6bcc0ba4b995aff10d52 + +Upstream-Status: Inappropriate [bugfix https://gitlab.gnome.org/GNOME/pango/-/issues/677] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + tests/test-layout.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test-layout.c b/tests/test-layout.c +index 1139e4f..b47a066 100644 +--- a/tests/test-layout.c ++++ b/tests/test-layout.c +@@ -222,5 +222,5 @@ main (int argc, char *argv[]) + } + g_dir_close (dir); + +- return g_test_run (); ++ return 77; + } +-- +2.35.2 + diff --git a/meta/recipes-graphics/pango/pango/CVE-2019-1010238.patch b/meta/recipes-graphics/pango/pango/CVE-2019-1010238.patch deleted file mode 100644 index 5b0c342f49..0000000000 --- a/meta/recipes-graphics/pango/pango/CVE-2019-1010238.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 490f8979a260c16b1df055eab386345da18a2d54 Mon Sep 17 00:00:00 2001 -From: Matthias Clasen <mclasen@redhat.com> -Date: Wed, 10 Jul 2019 20:26:23 -0400 -Subject: [PATCH] bidi: Be safer against bad input - -Don't run off the end of an array that we -allocated to certain length. - -Closes: https://gitlab.gnome.org/GNOME/pango/issues/342 - -Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/pango/commit/490f8979a260c16b1df055eab386345da18a2d54] -CVE: CVE-2019-1010238 -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - pango/pango-bidi-type.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/pango/pango-bidi-type.c b/pango/pango-bidi-type.c -index 3e46b66c..5c02dbbb 100644 ---- a/pango/pango-bidi-type.c -+++ b/pango/pango-bidi-type.c -@@ -181,8 +181,11 @@ pango_log2vis_get_embedding_levels (const gchar *text, - for (i = 0, p = text; p < text + length; p = g_utf8_next_char(p), i++) - { - gunichar ch = g_utf8_get_char (p); -- FriBidiCharType char_type; -- char_type = fribidi_get_bidi_type (ch); -+ FriBidiCharType char_type = fribidi_get_bidi_type (ch); -+ -+ if (i == n_chars) -+ break; -+ - bidi_types[i] = char_type; - ored_types |= char_type; - if (FRIBIDI_IS_STRONG (char_type)) --- -2.21.0 - diff --git a/meta/recipes-graphics/pango/pango/insensitive-diff.patch b/meta/recipes-graphics/pango/pango/insensitive-diff.patch deleted file mode 100644 index faaa96133f..0000000000 --- a/meta/recipes-graphics/pango/pango/insensitive-diff.patch +++ /dev/null @@ -1,28 +0,0 @@ -Do case-insensitive diffs as the test is sensitive as to whether 0x0 is printed -as (null) or (NULL). - -Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/pango/merge_requests/44] -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/tests/markup-parse.c b/tests/markup-parse.c -index 633f3e89..36d2c776 100644 ---- a/tests/markup-parse.c -+++ b/tests/markup-parse.c -@@ -217,7 +217,7 @@ diff_with_file (const char *file1, - GString *string, - GError **error) - { -- const char *command[] = { "diff", "-u", file1, NULL, NULL }; -+ const char *command[] = { "diff", "-u", "-i", file1, NULL, NULL }; - char *diff, *tmpfile; - int fd; - -@@ -237,7 +237,7 @@ diff_with_file (const char *file1, - goto done; - } - close (fd); -- command[3] = tmpfile; -+ command[4] = tmpfile; - - /* run diff command */ - g_spawn_sync (NULL, (char **)command, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &diff, NULL, NULL, error); diff --git a/meta/recipes-graphics/pango/pango/run-ptest b/meta/recipes-graphics/pango/pango/run-ptest index fa87a75779..e1fab050ef 100644 --- a/meta/recipes-graphics/pango/pango/run-ptest +++ b/meta/recipes-graphics/pango/pango/run-ptest @@ -1,3 +1,6 @@ #! /bin/sh +# workaround for https://gitlab.gnome.org/GNOME/pango/-/issues/668 +mkdir -p /usr/share/fonts/pango-private +cp -rf /usr/libexec/installed-tests/pango/fonts/* /usr/share/fonts/pango-private gnome-desktop-testing-runner pango diff --git a/meta/recipes-graphics/pango/pango_1.42.4.bb b/meta/recipes-graphics/pango/pango_1.42.4.bb deleted file mode 100644 index 1e1a5b8bfd..0000000000 --- a/meta/recipes-graphics/pango/pango_1.42.4.bb +++ /dev/null @@ -1,55 +0,0 @@ -SUMMARY = "Framework for layout and rendering of internationalized text" -DESCRIPTION = "Pango is a library for laying out and rendering of text, \ -with an emphasis on internationalization. Pango can be used anywhere \ -that text layout is needed, though most of the work on Pango so far has \ -been done in the context of the GTK+ widget toolkit. Pango forms the \ -core of text and font handling for GTK+-2.x." -HOMEPAGE = "http://www.pango.org/" -BUGTRACKER = "http://bugzilla.gnome.org" -SECTION = "libs" -LICENSE = "LGPLv2.0+" - -LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7" - -GNOMEBASEBUILDCLASS = "meson" - -inherit gnomebase gtk-doc ptest-gnome upstream-version-is-even gobject-introspection - -SRC_URI += "file://run-ptest \ - file://insensitive-diff.patch \ - file://CVE-2019-1010238.patch \ - " - -SRC_URI[archive.md5sum] = "deb171a31a3ad76342d5195a1b5bbc7c" -SRC_URI[archive.sha256sum] = "1d2b74cd63e8bd41961f2f8d952355aa0f9be6002b52c8aa7699d9f5da597c9d" - -DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi" - -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" -PACKAGECONFIG[x11] = ",,virtual/libx11 libxft" - -GTKDOC_ENABLE_FLAG = "-Denable_docs=true" -GTKDOC_DISABLE_FLAG = "-Denable_docs=false" -EXTRA_OEMESON_append_class-target = " ${@bb.utils.contains('GTKDOC_ENABLED', 'True', '${GTKDOC_ENABLE_FLAG}', \ - '${GTKDOC_DISABLE_FLAG}', d)} " -GIR_MESON_OPTION = 'gir' - -LEAD_SONAME = "libpango-1.0*" -LIBV = "1.8.0" - -FILES_${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}" -FILES_${PN}-dev += "${libdir}/pango/${LIBV}/modules/*.la" - -RDEPENDS_${PN}-ptest += "liberation-fonts cantarell-fonts" - -RPROVIDES_${PN} += "pango-modules pango-module-indic-lang \ - pango-module-basic-fc pango-module-arabic-lang" - -BBCLASSEXTEND = "native nativesdk" - -do_install_append () { - if [ "${PTEST_ENABLED}" != "1" ]; then - rm -rf ${D}${libexecdir}/installed-tests ${D}${datadir}/installed-tests - rmdir --ignore-fail-on-non-empty ${D}${libexecdir} ${D}${datadir} - fi -} diff --git a/meta/recipes-graphics/pango/pango_1.52.2.bb b/meta/recipes-graphics/pango/pango_1.52.2.bb new file mode 100644 index 0000000000..4f748e6554 --- /dev/null +++ b/meta/recipes-graphics/pango/pango_1.52.2.bb @@ -0,0 +1,53 @@ +SUMMARY = "Framework for layout and rendering of internationalized text" +DESCRIPTION = "Pango is a library for laying out and rendering of text, \ +with an emphasis on internationalization. Pango can be used anywhere \ +that text layout is needed, though most of the work on Pango so far has \ +been done in the context of the GTK+ widget toolkit. Pango forms the \ +core of text and font handling for GTK+-2.x." +HOMEPAGE = "http://www.pango.org/" +BUGTRACKER = "http://bugzilla.gnome.org" +SECTION = "libs" +LICENSE = "LGPL-2.0-or-later" + +LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7" + + +inherit gnomebase gi-docgen ptest-gnome upstream-version-is-even gobject-introspection + +UPSTREAM_CHECK_REGEX = "pango-(?P<pver>\d+\.(?!9\d+)\d+\.\d+)" + +GIR_MESON_ENABLE_FLAG = "enabled" +GIR_MESON_DISABLE_FLAG = "disabled" + +SRC_URI += "file://run-ptest \ + file://0001-Skip-running-test-layout-test.patch \ + " + +SRC_URI[archive.sha256sum] = "d0076afe01082814b853deec99f9349ece5f2ce83908b8e58ff736b41f78a96b" + +DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \ + ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}" + +PACKAGECONFIG[x11] = ",,virtual/libx11 libxft" +PACKAGECONFIG[tests] = "-Dinstall-tests=true, -Dinstall-tests=false" +PACKAGECONFIG[thai] = "-Dlibthai=enabled,-Dlibthai=disabled,libthai" + +GIR_MESON_OPTION = 'introspection' + +do_configure:prepend() { + chmod +x ${S}/tests/*.py +} + +LEAD_SONAME = "libpango-1.0*" + +FILES:${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}" + +RDEPENDS:${PN}-ptest += "cantarell-fonts" +RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us" + +RPROVIDES:${PN} += "pango-modules pango-module-indic-lang \ + pango-module-basic-fc pango-module-arabic-lang" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/piglit/piglit/0001-cmake-install-bash-completions-in-the-right-place.patch b/meta/recipes-graphics/piglit/piglit/0001-cmake-install-bash-completions-in-the-right-place.patch deleted file mode 100644 index e07e810a73..0000000000 --- a/meta/recipes-graphics/piglit/piglit/0001-cmake-install-bash-completions-in-the-right-place.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 26faa2c157a27a18a9f767976730fe0c115e3af4 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Wed, 13 Jul 2016 19:19:02 +0300 -Subject: [PATCH] cmake: install bash-completions in the right place - -The completionsdir variable is a full path and should not be -prefixed. - -This does mean the files may be installed outside of -CMAKE_INSTALL_PREFIX -- the alternative is more difficult and -means that bash completion files may be installed where -bash-completion can't find them. - -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> -Upstream-Status: Submitted [mailing list] ---- - CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 8e2abba..784a8f9 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -532,7 +532,7 @@ install ( - if (BASH_COMPLETION_FOUND) - install( - FILES completions/bash/piglit -- DESTINATION ${CMAKE_INSTALL_PREFIX}/${BASH_COMPLETION_COMPLETIONSDIR}/ -+ DESTINATION ${BASH_COMPLETION_COMPLETIONSDIR}/ - ) - endif (BASH_COMPLETION_FOUND) - --- -2.8.1 - diff --git a/meta/recipes-graphics/piglit/piglit/0001-tests-Fix-narrowing-errors-seen-with-clang.patch b/meta/recipes-graphics/piglit/piglit/0001-tests-Fix-narrowing-errors-seen-with-clang.patch new file mode 100644 index 0000000000..08e709b1d0 --- /dev/null +++ b/meta/recipes-graphics/piglit/piglit/0001-tests-Fix-narrowing-errors-seen-with-clang.patch @@ -0,0 +1,50 @@ +From 77f327909e4a99c64261290cd76e234e10cc64d2 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Wed, 3 May 2023 21:59:43 -0700 +Subject: [PATCH] tests: Fix narrowing errors seen with clang + +Fixes +piglit-test-pattern.cpp:656:26: error: type 'float' cannot be narrowed to 'int' in initiali +zer list [-Wc++11-narrowing] + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/807] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + .../spec/ext_framebuffer_multisample/draw-buffers-common.cpp | 4 ++-- + tests/util/piglit-test-pattern.cpp | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp b/tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp +index 48e1ad4a5..b36830c45 100644 +--- a/tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp ++++ b/tests/spec/ext_framebuffer_multisample/draw-buffers-common.cpp +@@ -353,8 +353,8 @@ draw_pattern(bool sample_alpha_to_coverage, + float vertices[4][2] = { + { 0.0f, 0.0f + i * (pattern_height / num_rects) }, + { 0.0f, (i + 1.0f) * (pattern_height / num_rects) }, +- { pattern_width, (i + 1.0f) * (pattern_height / num_rects) }, +- { pattern_width, 0.0f + i * (pattern_height / num_rects) } }; ++ { static_cast<float>(pattern_width), (i + 1.0f) * (pattern_height / num_rects) }, ++ { static_cast<float>(pattern_width), 0.0f + i * (pattern_height / num_rects) } }; + + glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, + sizeof(vertices[0]), +diff --git a/tests/util/piglit-test-pattern.cpp b/tests/util/piglit-test-pattern.cpp +index 43d451d6a..52ee94457 100644 +--- a/tests/util/piglit-test-pattern.cpp ++++ b/tests/util/piglit-test-pattern.cpp +@@ -653,12 +653,12 @@ ColorGradientSunburst::draw_with_scale_and_offset(const float (*proj)[4], + { + switch (out_type) { + case GL_INT: { +- int clear_color[4] = { offset, offset, offset, offset }; ++ int clear_color[4] = { static_cast<int>(offset), static_cast<int>(offset), static_cast<int>(offset), static_cast<int>(offset) }; + glClearBufferiv(GL_COLOR, 0, clear_color); + break; + } + case GL_UNSIGNED_INT: { +- unsigned clear_color[4] = { offset, offset, offset, offset }; ++ unsigned clear_color[4] = { static_cast<unsigned>(offset), static_cast<unsigned>(offset), static_cast<unsigned>(offset), static_cast<unsigned>(offset) }; + glClearBufferuiv(GL_COLOR, 0, clear_color); + break; + } diff --git a/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch b/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch deleted file mode 100644 index 57eda2e207..0000000000 --- a/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch +++ /dev/null @@ -1,75 +0,0 @@ -Upstream-Status: Submitted [mailing list] -Signed-off-by: Ross Burton <ross.burton@intel.com> - -From 0e0a2a69261031d55d52b6045990e8982ea12912 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sat, 9 Jul 2016 07:52:19 +0000 -Subject: [PATCH] tests: only run rounding tests if FE_UPWARD is present - -On ARM, musl does not define FE_* when the architecture does not have VFP (which -is the right interpretation). - -As these tests depend on calling fesetround(), skip the test if FE_UPWARD isn't -available. - -Signed-off-by: Ross Burton <ross.burton@intel.com> ---- - tests/general/roundmode-getintegerv.c | 12 ++++++++---- - tests/general/roundmode-pixelstore.c | 12 ++++++++---- - 2 files changed, 16 insertions(+), 8 deletions(-) - -diff --git a/tests/general/roundmode-getintegerv.c b/tests/general/roundmode-getintegerv.c -index 28ecfaf55..aa99044a1 100644 ---- a/tests/general/roundmode-getintegerv.c -+++ b/tests/general/roundmode-getintegerv.c -@@ -79,13 +79,17 @@ test(float val, int expect) - void - piglit_init(int argc, char **argv) - { -- int ret; - bool pass = true; -- ret = fesetround(FE_UPWARD); -- if (ret != 0) { -- printf("Couldn't set rounding mode\n"); -+ -+#ifdef FE_UPWARD -+ if (fesetround(FE_UPWARD) != 0) { -+ printf("Setting rounding mode failed\n"); - piglit_report_result(PIGLIT_SKIP); - } -+#else -+ printf("Cannot set rounding mode\n"); -+ piglit_report_result(PIGLIT_SKIP); -+#endif - - pass = test(2.2, 2) && pass; - pass = test(2.8, 3) && pass; -diff --git a/tests/general/roundmode-pixelstore.c b/tests/general/roundmode-pixelstore.c -index 8a029b257..57ec11c09 100644 ---- a/tests/general/roundmode-pixelstore.c -+++ b/tests/general/roundmode-pixelstore.c -@@ -79,13 +79,17 @@ test(float val, int expect) - void - piglit_init(int argc, char **argv) - { -- int ret; - bool pass = true; -- ret = fesetround(FE_UPWARD); -- if (ret != 0) { -- printf("Couldn't set rounding mode\n"); -+ -+#ifdef FE_UPWARD -+ if (fesetround(FE_UPWARD) != 0) { -+ printf("Setting rounding mode failed\n"); - piglit_report_result(PIGLIT_SKIP); - } -+#else -+ printf("Cannot set rounding mode\n"); -+ piglit_report_result(PIGLIT_SKIP); -+#endif - - pass = test(2.2, 2) && pass; - pass = test(2.8, 3) && pass; --- -2.11.0 - diff --git a/meta/recipes-graphics/piglit/piglit/0001-utils-Include-libgen.h-on-musl-linux-systems.patch b/meta/recipes-graphics/piglit/piglit/0001-utils-Include-libgen.h-on-musl-linux-systems.patch new file mode 100644 index 0000000000..2875dd52ec --- /dev/null +++ b/meta/recipes-graphics/piglit/piglit/0001-utils-Include-libgen.h-on-musl-linux-systems.patch @@ -0,0 +1,83 @@ +From 6c852e6ac292008137a6f3a8aa908090bb5b4b11 Mon Sep 17 00:00:00 2001 +From: Erik Faye-Lund <erik.faye-lund@collabora.com> +Date: Tue, 19 Mar 2024 16:34:02 +0100 +Subject: [PATCH] properly check for libgen.h + +Some users are reporting that basename is not available when building on +Linux with musl libc. And since the POSIX spec[1] says that basename is +defined in libgen.h, we should include that when available. + +So let's properly detect the header, and include it if it exists. This +should hopefully make things a bit more robust. + +Since we're also including this from the CL program-tester, let's +rearrange the includes a bit so we know that config.h has been included. + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/888] +Reviewed-by: David Heidelberg <david.heidelberg@collabora.com> +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + CMakeLists.txt | 1 + + tests/cl/program/program-tester.c | 5 ++++- + tests/util/config.h.in | 1 + + tests/util/piglit-util.h | 4 ++-- + 4 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index dd2bf67125..5563fe0e20 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -492,6 +492,7 @@ check_include_file(unistd.h HAVE_UNISTD_H) + check_include_file(fcntl.h HAVE_FCNTL_H) + check_include_file(linux/sync_file.h HAVE_LINUX_SYNC_FILE_H) + check_include_file(endian.h HAVE_ENDIAN_H) ++check_include_file(libgen.h HAVE_LIBGEN_H) + + if(DEFINED PIGLIT_INSTALL_VERSION) + set(PIGLIT_INSTALL_VERSION_SUFFIX +diff --git a/tests/cl/program/program-tester.c b/tests/cl/program/program-tester.c +index 97fe64906d..e47fb5aacc 100644 +--- a/tests/cl/program/program-tester.c ++++ b/tests/cl/program/program-tester.c +@@ -31,10 +31,13 @@ + #include <inttypes.h> + #include <math.h> + #include <regex.h> +-#include <libgen.h> + + #include "piglit-framework-cl-program.h" + ++#ifdef HAVE_LIBGEN_H ++#include <libgen.h> ++#endif ++ + /* Regexes */ + + /* +diff --git a/tests/util/config.h.in b/tests/util/config.h.in +index 8ed5af1709..437eb91418 100644 +--- a/tests/util/config.h.in ++++ b/tests/util/config.h.in +@@ -16,3 +16,4 @@ + #cmakedefine HAVE_SYS_RESOURCE_H 1 + #cmakedefine HAVE_UNISTD_H 1 + #cmakedefine HAVE_ENDIAN_H 1 ++#cmakedefine HAVE_LIBGEN_H 1 +diff --git a/tests/util/piglit-util.h b/tests/util/piglit-util.h +index 4d3606c708..de999980b6 100644 +--- a/tests/util/piglit-util.h ++++ b/tests/util/piglit-util.h +@@ -52,8 +52,8 @@ extern "C" { + #include <math.h> + #include <float.h> + +-#if defined(__APPLE__) || defined(__MINGW32__) +-# include "libgen.h" // for basename ++#ifdef HAVE_LIBGEN_H ++# include <libgen.h> // for basename + #elif defined(_MSC_VER) + + static inline char * +-- +GitLab + diff --git a/meta/recipes-graphics/piglit/piglit/0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch b/meta/recipes-graphics/piglit/piglit/0002-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch index 5d6ec368ba..70bb55053d 100644 --- a/meta/recipes-graphics/piglit/piglit/0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch +++ b/meta/recipes-graphics/piglit/piglit/0002-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch @@ -1,4 +1,4 @@ -From 3bf1beee1ddd19bc536ff2856e04ac269d43daa2 Mon Sep 17 00:00:00 2001 +From cb8e4b99fcfe81399e3e6d922156db4a48a39a8e Mon Sep 17 00:00:00 2001 From: Pascal Bach <pascal.bach@siemens.com> Date: Thu, 4 Oct 2018 14:43:17 +0200 Subject: [PATCH] cmake: use proper WAYLAND_INCLUDE_DIRS variable @@ -15,7 +15,7 @@ Upstream-Status: Submitted [piglit@lists.freedesktop.org] 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/util/CMakeLists.txt b/tests/util/CMakeLists.txt -index a5f080156..a303a9f58 100644 +index 1714ab41f..3b67aa7da 100644 --- a/tests/util/CMakeLists.txt +++ b/tests/util/CMakeLists.txt @@ -97,7 +97,7 @@ if(PIGLIT_USE_WAFFLE) @@ -27,6 +27,3 @@ index a5f080156..a303a9f58 100644 ) endif() if(PIGLIT_HAS_X11) --- -2.11.0 - diff --git a/meta/recipes-graphics/piglit/piglit/0003-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch b/meta/recipes-graphics/piglit/piglit/0003-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch new file mode 100644 index 0000000000..ce5cbd3ea9 --- /dev/null +++ b/meta/recipes-graphics/piglit/piglit/0003-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch @@ -0,0 +1,27 @@ +From 7d2d23125f1946a7b74f9a427388d469500fcd8d Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Tue, 10 Nov 2020 17:13:50 +0000 +Subject: [PATCH] tests/util/piglit-shader.c: do not hardcode build path into + target binary + +This helps reproducibilty. + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + tests/util/piglit-shader.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/util/piglit-shader.c b/tests/util/piglit-shader.c +index 1787eb180..9e74704b1 100644 +--- a/tests/util/piglit-shader.c ++++ b/tests/util/piglit-shader.c +@@ -73,7 +73,7 @@ piglit_compile_shader(GLenum target, const char *filename) + + source_dir = getenv("PIGLIT_SOURCE_DIR"); + if (source_dir == NULL) { +- source_dir = SOURCE_DIR; ++ source_dir = "."; + } + + snprintf(filename_with_path, FILENAME_MAX - 1, diff --git a/meta/recipes-graphics/piglit/piglit/format-fix.patch b/meta/recipes-graphics/piglit/piglit/format-fix.patch deleted file mode 100644 index 73d539fef2..0000000000 --- a/meta/recipes-graphics/piglit/piglit/format-fix.patch +++ /dev/null @@ -1,69 +0,0 @@ -Upstream-Status: Submitted [mailing list] -Signed-off-by: Ross Burton <ross.burton@intel.com> - -From f0c6981322807e179e39ce67aeebd42cf7a54d36 Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@intel.com> -Date: Wed, 21 Nov 2018 12:44:36 +0000 -Subject: [PATCH] arb_texture_view: fix security format warnings - -If built with -Werror=format-security then Piglit fails to build: - -/tests/spec/arb_texture_view/rendering-layers-image.c:150:8: -error: format not a string literal and no format arguments [-Werror=format-security] - (desc)); \ - ^~~~~~ - -In this case test->uniform_type is being turned into a string using snprintf() -and then passed to piglit_report_subtest_result() which takes a format string, -but GCC can't verify the format. - -As _subtest_report() takes a format string, we can just remove the snprintf() -and let it construct the label. - -Also as X is used once and doesn't make the code clearer, just inline it. - -Signed-off-by: Ross Burton <ross.burton@intel.com> ---- - tests/spec/arb_texture_view/rendering-layers-image.c | 19 ++++++------------- - 1 file changed, 6 insertions(+), 13 deletions(-) - -diff --git a/tests/spec/arb_texture_view/rendering-layers-image.c b/tests/spec/arb_texture_view/rendering-layers-image.c -index 415b01657..86148075b 100644 ---- a/tests/spec/arb_texture_view/rendering-layers-image.c -+++ b/tests/spec/arb_texture_view/rendering-layers-image.c -@@ -142,26 +142,19 @@ test_render_layers(const struct test_info *test) - return pass; - } - --#define X(f, desc) \ -- do { \ -- const bool subtest_pass = (f); \ -- piglit_report_subtest_result(subtest_pass \ -- ? PIGLIT_PASS : PIGLIT_FAIL, \ -- (desc)); \ -- pass = pass && subtest_pass; \ -- } while (0) -- - enum piglit_result - piglit_display(void) - { - bool pass = true; - for (int test_idx = 0; test_idx < ARRAY_SIZE(tests); test_idx++) { - const struct test_info *test = &tests[test_idx]; -- char test_name[128]; -- snprintf(test_name, sizeof(test_name), "layers rendering of %s", test->uniform_type); -- X(test_render_layers(test), test_name); -+ -+ const bool subtest_pass = test_render_layers(test); -+ -+ piglit_report_subtest_result(subtest_pass ? PIGLIT_PASS : PIGLIT_FAIL, -+ "layers rendering of %s", test->uniform_type); -+ pass = pass && subtest_pass; - } --#undef X - pass = piglit_check_gl_error(GL_NO_ERROR) && pass; - return pass ? PIGLIT_PASS : PIGLIT_FAIL; - } --- -2.11.0 - diff --git a/meta/recipes-graphics/piglit/piglit_git.bb b/meta/recipes-graphics/piglit/piglit_git.bb index 59d134801a..99d75e64f8 100644 --- a/meta/recipes-graphics/piglit/piglit_git.bb +++ b/meta/recipes-graphics/piglit/piglit_git.bb @@ -1,27 +1,31 @@ SUMMARY = "OpenGL driver testing framework" -LICENSE = "MIT & LGPLv2+ & GPLv3 & GPLv2+ & BSD-3-Clause" +DESCRIPTION = "Piglit is an open-source test suite for OpenGL and OpenCL \ +implementations." +HOMEPAGE = "https://gitlab.freedesktop.org/mesa/piglit" +BUGTRACKER = "https://gitlab.freedesktop.org/mesa/piglit/-/issues" +LICENSE = "MIT & LGPL-2.0-or-later & GPL-3.0-only & GPL-2.0-or-later & BSD-3-Clause" LIC_FILES_CHKSUM = "file://COPYING;md5=b2beded7103a3d8a442a2a0391d607b0" -SRC_URI = "git://anongit.freedesktop.org/piglit \ - file://0001-cmake-install-bash-completions-in-the-right-place.patch \ - file://0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch \ - file://0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch \ - file://format-fix.patch \ +SRC_URI = "git://gitlab.freedesktop.org/mesa/piglit.git;protocol=https;branch=main \ + file://0002-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch \ + file://0003-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch \ + file://0001-tests-Fix-narrowing-errors-seen-with-clang.patch \ + file://0001-utils-Include-libgen.h-on-musl-linux-systems.patch \ " UPSTREAM_CHECK_COMMITS = "1" -# From 2018-10-26 -SRCREV = "b9066c7717af1d169a616c9e61706b99ff8515b5" +SRCREV = "22eaf6a91cfd57f7bb3df4e5068c2ac1472d4ec1" # (when PV goes above 1.0 remove the trailing r) -PV = "1.0+gitr${SRCPV}" +PV = "1.0+gitr" S = "${WORKDIR}/git" -DEPENDS = "libpng virtual/libx11 libxkbcommon libxrender waffle virtual/libgl libglu python3-mako-native python3-numpy-native python3-six-native virtual/egl" +X11_DEPS = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxrender libglu', '', d)}" +X11_RDEPS = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'mesa-demos', '', d)}" -inherit cmake pkgconfig python3native distro_features_check bash-completion -# depends on virtual/libx11 -REQUIRED_DISTRO_FEATURES = "x11" +DEPENDS = "libpng waffle libxkbcommon python3-mako-native python3-numpy-native python3-six-native virtual/egl" + +inherit cmake pkgconfig python3native features_check bash-completion # depends on virtual/libgl REQUIRED_DISTRO_FEATURES += "opengl" @@ -32,26 +36,39 @@ REQUIRED_DISTRO_FEATURES += "opengl" export TEMP = "${B}/temp/" do_compile[dirs] =+ "${B}/temp/" -PACKAGECONFIG ??= "" +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 glx', '', d)}" PACKAGECONFIG[freeglut] = "-DPIGLIT_USE_GLUT=1,-DPIGLIT_USE_GLUT=0,freeglut," +PACKAGECONFIG[glx] = "-DPIGLIT_BUILD_GLX_TESTS=ON,-DPIGLIT_BUILD_GLX_TESTS=OFF" +PACKAGECONFIG[opencl] = "-DPIGLIT_BUILD_CL_TESTS=ON,-DPIGLIT_BUILD_CL_TESTS=OFF,virtual/opencl-icd" +PACKAGECONFIG[x11] = "-DPIGLIT_BUILD_GL_TESTS=ON,-DPIGLIT_BUILD_GL_TESTS=OFF,${X11_DEPS}, ${X11_RDEPS}" +PACKAGECONFIG[vulkan] = "-DPIGLIT_BUILD_VK_TESTS=ON,-DPIGLIT_BUILD_VK_TESTS=OFF,glslang-native vulkan-loader,glslang" + +export PIGLIT_BUILD_DIR = "../../../../git" -do_configure_prepend() { +do_configure:prepend() { if [ "${@bb.utils.contains('PACKAGECONFIG', 'freeglut', 'yes', 'no', d)}" = "no" ]; then sed -i -e "/^#.*include <GL\/freeglut_ext.h>$/d" ${S}/src/piglit/glut_wrap.h sed -i -e "/^#.*include.*<GL\/glut.h>$/d" ${S}/src/piglit/glut_wrap.h fi } +# Forcibly strip because Piglit is *huge*, and don't bother trying to split/strip the result. OECMAKE_TARGET_INSTALL = "install/strip" +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" -RDEPENDS_${PN} = "waffle waffle-bin python3 python3-mako python3-json \ +RDEPENDS:${PN} = "waffle waffle-bin python3 python3-mako python3-json \ python3-misc \ python3-unixadmin python3-xml python3-multiprocessing \ python3-six python3-shell python3-io \ - python3-netserver mesa-demos bash \ + python3-netserver bash \ " -INSANE_SKIP_${PN} += "dev-so already-stripped" +INSANE_SKIP:${PN} += "dev-so already-stripped" + +# As nothing builds against Piglit we don't need to have anything in the +# sysroot, especially when this is ~2GB of test suite +SYSROOT_DIRS:remove = "${libdir}" # Can't be built with ccache CCACHE_DISABLE = "1" diff --git a/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb b/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb index cdfe38a221..ee5173dc83 100644 --- a/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb +++ b/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb @@ -1,8 +1,8 @@ SUMMARY = "A clock combined with a game of pong" -LICENSE = "GPLv2+" +LICENSE = "GPL-2.0-or-later" DEPENDS = "virtual/libx11 xdmcp xau" -inherit distro_features_check pkgconfig +inherit features_check pkgconfig # depends on virtual/libx11 REQUIRED_DISTRO_FEATURES = "x11" @@ -10,7 +10,8 @@ SRC_URI = "file://pong-clock-no-flicker.c" LIC_FILES_CHKSUM = "file://pong-clock-no-flicker.c;beginline=1;endline=23;md5=dd248d50f73f746d1ee78586b0b2ebd3" -S = "${WORKDIR}" +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" do_compile () { ${CC} ${CFLAGS} ${LDFLAGS} -o pong-clock pong-clock-no-flicker.c `pkg-config --cflags --libs x11 xau xdmcp` diff --git a/meta/recipes-graphics/shaderc/files/0001-cmake-disable-building-external-dependencies.patch b/meta/recipes-graphics/shaderc/files/0001-cmake-disable-building-external-dependencies.patch new file mode 100644 index 0000000000..5c49aa7fd5 --- /dev/null +++ b/meta/recipes-graphics/shaderc/files/0001-cmake-disable-building-external-dependencies.patch @@ -0,0 +1,106 @@ +From 941f5f5831e7a52c26168f81f25d0470860ca6f1 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sat, 13 Feb 2021 00:45:56 +0000 +Subject: [PATCH] cmake: disable building external dependencies + +- add cmake option to disable the build of the third_party dependencies +- change the update_build_version.py to use pkg-config when third_party dependencies not found + +Upstream-Status: Inappropriate [OE-core specific] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + CMakeLists.txt | 13 ++++++++++--- + utils/update_build_version.py | 22 +++++++++++++++------- + 2 files changed, 25 insertions(+), 10 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ffcb54b..cce715e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -62,6 +62,7 @@ else() + endif() + + option(SHADERC_ENABLE_WERROR_COMPILE "Enable passing -Werror to compiler, if available" ON) ++option(BUILD_EXTERNAL "Build external dependencies in /third_party" ON) + + set (CMAKE_CXX_STANDARD 17) + +@@ -119,8 +120,14 @@ endif(MSVC) + + + # Configure subdirectories. +-# We depend on these for later projects, so they should come first. +-add_subdirectory(third_party) ++if(BUILD_EXTERNAL) ++ # We depend on these for later projects, so they should come first. ++ add_subdirectory(third_party) ++else() ++ find_package(PkgConfig REQUIRED) ++ pkg_check_modules (PKG_CHECK REQUIRED SPIRV-Tools) ++ pkg_check_modules (PKG_CHECK REQUIRED glslang) ++endif() + + add_subdirectory(libshaderc_util) + add_subdirectory(libshaderc) +@@ -132,7 +139,7 @@ endif() + add_custom_target(build-version + ${Python_EXECUTABLE} + ${CMAKE_CURRENT_SOURCE_DIR}/utils/update_build_version.py +- ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc ++ ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR} + COMMENT "Update build-version.inc in the Shaderc build directory (if necessary).") + + function(define_pkg_config_file NAME LIBS) +diff --git a/utils/update_build_version.py b/utils/update_build_version.py +index b7ce5b8..95b34c5 100755 +--- a/utils/update_build_version.py ++++ b/utils/update_build_version.py +@@ -30,6 +30,7 @@ import re + import subprocess + import sys + import time ++import itertools + + def mkdir_p(directory): + """Make the directory, and all its ancestors as required. Any of the +@@ -121,25 +122,32 @@ def get_version_string(project, directory): + directory, which consists of software version string and git description + string.""" + detailed_version_string_lst = [project] +- if project != 'glslang': +- detailed_version_string_lst.append(deduce_software_version(directory)) +- detailed_version_string_lst.append(describe(directory).replace('"', '\\"')) ++ if isinstance(directory, str) and os.path.isdir(directory): ++ if project != 'glslang': ++ detailed_version_string_lst.append(deduce_software_version(directory)) ++ detailed_version_string_lst.append(describe(directory).replace('"', '\\"')) ++ else: ++ if project == 'spirv-tools': ++ project = 'SPIRV-Tools' ++ pkgconfig = ['pkg-config', '--modversion', project] ++ version = subprocess.run(pkgconfig, capture_output=True, text=True).stdout.rstrip() ++ detailed_version_string_lst.append(version) + return ' '.join(detailed_version_string_lst) + + + def main(): +- if len(sys.argv) != 5: +- print(('usage: {} <shaderc-dir> <spirv-tools-dir> <glslang-dir> <output-file>'.format( ++ if len(sys.argv) < 3: ++ print(('usage: {} <output-file> <shaderc-dir> [spirv-tools-dir] [glslang-dir]'.format( + sys.argv[0]))) + sys.exit(1) + + projects = ['shaderc', 'spirv-tools', 'glslang'] + new_content = ''.join([ + '"{}\\n"\n'.format(get_version_string(p, d)) +- for (p, d) in zip(projects, sys.argv[1:]) ++ for (p, d) in itertools.zip_longest(projects, sys.argv[2:]) + ]) + +- output_file = sys.argv[4] ++ output_file = sys.argv[1] + mkdir_p(os.path.dirname(output_file)) + + if os.path.isfile(output_file): diff --git a/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch b/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch new file mode 100644 index 0000000000..39f982b7f3 --- /dev/null +++ b/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch @@ -0,0 +1,25 @@ +From ec2442940e1d5338971861bb81537bae3a6c19e2 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sat, 13 Feb 2021 00:45:56 +0000 +Subject: [PATCH] libshaderc_util: fix glslang header file location + +Upstream-Status: Pending + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + libshaderc_util/src/compiler.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libshaderc_util/src/compiler.cc b/libshaderc_util/src/compiler.cc +index e5f5d10..5fd6d3c 100644 +--- a/libshaderc_util/src/compiler.cc ++++ b/libshaderc_util/src/compiler.cc +@@ -20,7 +20,7 @@ + #include <thread> + #include <tuple> + +-#include "SPIRV/GlslangToSpv.h" ++#include "glslang/SPIRV/GlslangToSpv.h" + #include "libshaderc_util/format.h" + #include "libshaderc_util/io_shaderc.h" + #include "libshaderc_util/message.h" diff --git a/meta/recipes-graphics/shaderc/shaderc_2024.0.bb b/meta/recipes-graphics/shaderc/shaderc_2024.0.bb new file mode 100644 index 0000000000..9975c608ac --- /dev/null +++ b/meta/recipes-graphics/shaderc/shaderc_2024.0.bb @@ -0,0 +1,29 @@ +SUMMARY = "A collection of tools, libraries and tests for shader compilation" +DESCRIPTION = "The Shaderc library provides an API for compiling GLSL/HLSL \ +source code to SPIRV modules. It has been shipping in the Android NDK since version r12b." +SECTION = "graphics" +HOMEPAGE = "https://github.com/google/shaderc" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRCREV = "9f56ca620c07d6c4d119c65c1c1f3f1c584c9985" +SRC_URI = "git://github.com/google/shaderc.git;protocol=https;branch=main \ + file://0001-cmake-disable-building-external-dependencies.patch \ + file://0002-libshaderc_util-fix-glslang-header-file-location.patch \ + " +UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$" +S = "${WORKDIR}/git" + +inherit cmake python3native pkgconfig + +DEPENDS = "spirv-headers spirv-tools glslang" + +EXTRA_OECMAKE = " \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_EXTERNAL=OFF \ + -DSHADERC_SKIP_TESTS=ON \ + -DSHADERC_SKIP_EXAMPLES=ON \ + -DSHADERC_SKIP_COPYRIGHT_CHECK=ON \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/spir/spirv-headers_1.3.283.0.bb b/meta/recipes-graphics/spir/spirv-headers_1.3.283.0.bb new file mode 100644 index 0000000000..5ec7e42b7c --- /dev/null +++ b/meta/recipes-graphics/spir/spirv-headers_1.3.283.0.bb @@ -0,0 +1,20 @@ +SUMMARY = "Machine-readable files for the SPIR-V Registry" +SECTION = "graphics" +HOMEPAGE = "https://www.khronos.org/registry/spir-v" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=d14ee3b13f42e9c9674acc5925c3d741" + +SRCREV = "4f7b471f1a66b6d06462cd4ba57628cc0cd087d7" +SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;branch=main" +PE = "1" +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools +# vulkan-validation-layers, vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" +S = "${WORKDIR}/git" + +inherit cmake + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/spir/spirv-tools_1.3.283.0.bb b/meta/recipes-graphics/spir/spirv-tools_1.3.283.0.bb new file mode 100644 index 0000000000..292a17f00d --- /dev/null +++ b/meta/recipes-graphics/spir/spirv-tools_1.3.283.0.bb @@ -0,0 +1,47 @@ +SUMMARY = "The SPIR-V Tools project provides an API and commands for \ +processing SPIR-V modules" +DESCRIPTION = "The project includes an assembler, binary module parser, \ +disassembler, validator, and optimizer for SPIR-V." +HOMEPAGE = "https://github.com/KhronosGroup/SPIRV-Tools" +SECTION = "graphics" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRCREV = "dd4b663e13c07fea4fbb3f70c1c91c86731099f7" +SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=main;protocol=https" +PE = "1" +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools +# vulkan-validation-layers, vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" +S = "${WORKDIR}/git" + +inherit cmake + +DEPENDS = "spirv-headers" + +EXTRA_OECMAKE += "\ + -DSPIRV-Headers_SOURCE_DIR=${STAGING_EXECPREFIXDIR} \ + -DSPIRV_TOOLS_BUILD_STATIC=OFF \ + -DBUILD_SHARED_LIBS=ON \ + -DSPIRV_SKIP_TESTS=ON \ +" + +do_install:append:class-target() { + # Properly set _IMPORT_PREFIX in INTERFACE_LINK_LIBRARIES so that dependent + # tools can find the right library + sed -i ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake \ + -e 's:INTERFACE_LINK_LIBRARIES.*$:INTERFACE_LINK_LIBRARIES "\$\{_IMPORT_PREFIX\}/${baselib}":' +} + +# all the libraries are unversioned, so don't pack it on PN-dev +SOLIBS = ".so" +FILES_SOLIBSDEV = "" + +PACKAGES =+ "${PN}-lesspipe" +FILES:${PN}-lesspipe = "${base_bindir}/spirv-lesspipe.sh" +RDEPENDS:${PN}-lesspipe += "${PN} bash" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch b/meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch new file mode 100644 index 0000000000..e5dff007d4 --- /dev/null +++ b/meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch @@ -0,0 +1,108 @@ +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +From a7e49fefde18ea8d5bada8096d32f23bcfb5a6dc Mon Sep 17 00:00:00 2001 +From: "Federico G. Schwindt" <fgsch@openbsd.org> +Date: Mon, 17 Feb 2014 15:48:12 +0100 +Subject: [PATCH 1/3] Fix crash on 32bit architectures where time_t is 64 bit + +This is an ABI change on platforms where sizeof(time_t) doesn't equal +sizeof(long). For most platforms this change shouldn't make a difference +at present. OpenBSD recently switched to 64bit time_t on all architectures +to avoid time_t overflow in 2038 on 32bit machines. + +This fix extends to consumers of startup-notification, for instance +the window manager of XFCE, which is how I got involved in this. +See http://mail.xfce.org/pipermail/xfce4-dev/2014-February/030611.html +and follow-ups. The XFCE devs pointed out that my patch to fix a +crash in XFCE's window manager depends on this startup-notification patch. + +Signed-off-by: Julien Danjou <julien@danjou.info> +--- + libsn/sn-monitor.c | 8 ++++---- + libsn/sn-monitor.h | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/libsn/sn-monitor.c b/libsn/sn-monitor.c +index 2a9ad16..f419bc1 100644 +--- a/libsn/sn-monitor.c ++++ b/libsn/sn-monitor.c +@@ -364,8 +364,8 @@ sn_startup_sequence_get_screen (SnStartupSequence *sequence) + **/ + void + sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence, +- long *tv_sec, +- long *tv_usec) ++ time_t *tv_sec, ++ suseconds_t *tv_usec) + { + if (tv_sec) + *tv_sec = sequence->initiation_time.tv_sec; +@@ -386,8 +386,8 @@ sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence, + **/ + void + sn_startup_sequence_get_last_active_time (SnStartupSequence *sequence, +- long *tv_sec, +- long *tv_usec) ++ time_t *tv_sec, ++ suseconds_t *tv_usec) + { + /* for now the same as get_initiated_time */ + if (tv_sec) +diff --git a/libsn/sn-monitor.h b/libsn/sn-monitor.h +index b58581f..2f639df 100644 +--- a/libsn/sn-monitor.h ++++ b/libsn/sn-monitor.h +@@ -77,11 +77,11 @@ const char* sn_startup_sequence_get_application_id (SnStartupSequence *se + int sn_startup_sequence_get_screen (SnStartupSequence *sequence); + + void sn_startup_sequence_get_initiated_time (SnStartupSequence *sequence, +- long *tv_sec, +- long *tv_usec); ++ time_t *tv_sec, ++ suseconds_t *tv_usec); + void sn_startup_sequence_get_last_active_time (SnStartupSequence *sequence, +- long *tv_sec, +- long *tv_usec); ++ time_t *tv_sec, ++ suseconds_t *tv_usec); + + void sn_startup_sequence_complete (SnStartupSequence *sequence); + +-- +2.26.2 + +From ea9f7e4cc6fd8c08d175ed7774ed2c5bd11c8ef0 Mon Sep 17 00:00:00 2001 +From: Colin Walters <walters@verbum.org> +Date: Mon, 17 Feb 2014 14:37:09 -0500 +Subject: [PATCH 2/3] Add include of <sys/select.h> for previous patch + +Unfortunately while the standard says that <sys/types.h> is the +correct header to get suseconds_t, at least with glibc, that requires +-DXOPEN_SOURCE. Which is problematic for a public header, because +then all *users* of startup-notification will be required to define +that. + +Poking around a bit, it looks like at least with glibc, <sys/select.h> +will give us an unconditional define. + +Signed-off-by: Julien Danjou <julien@danjou.info> +--- + libsn/sn-monitor.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libsn/sn-monitor.h b/libsn/sn-monitor.h +index 2f639df..cea4e12 100644 +--- a/libsn/sn-monitor.h ++++ b/libsn/sn-monitor.h +@@ -28,6 +28,7 @@ + #define __SN_MONITOR_H__ + + #include <libsn/sn-common.h> ++#include <sys/select.h> + + SN_BEGIN_DECLS + +-- +2.26.2 + diff --git a/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb b/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb index 6c1b93cd0a..aa18881a12 100644 --- a/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb +++ b/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb @@ -1,28 +1,31 @@ SUMMARY = "Enables monitoring and display of application startup" +DESCRIPTION = "Contains a reference implementation of the startup notification protocol. \ +The reference implementation is mostly under an X Window System style license, and has \ +no special dependencies. " HOMEPAGE = "http://www.freedesktop.org/wiki/Software/startup-notification/" -BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=Specifications" +BUGTRACKER = "https://gitlab.freedesktop.org/xdg/startup-notification/-/issues" # most files are under MIT, but libsn/sn-util.c is under LGPL, the # effective license is LGPL -LICENSE = "LGPLv2+" +LICENSE = "LGPL-2.0-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=a2ae2cd47d6d2f238410f5364dfbc0f2 \ file://libsn/sn-util.c;endline=18;md5=18a14dc1825d38e741d772311fea9ee1 \ file://libsn/sn-common.h;endline=23;md5=6d05bc0ebdcf5513a6e77cb26e8cd7e2 \ file://test/test-boilerplate.h;endline=23;md5=923e706b2a70586176eead261cc5bb98" -PR = "r2" SECTION = "libs" DEPENDS = "virtual/libx11 libsm xcb-util" -inherit autotools pkgconfig distro_features_check +inherit autotools pkgconfig features_check # depends on virtual/libx11 REQUIRED_DISTRO_FEATURES = "x11" SRC_URI = "http://www.freedesktop.org/software/startup-notification/releases/${BPN}-${PV}.tar.gz \ file://obsolete_automake_macros.patch \ + file://time_t.patch \ " SRC_URI[md5sum] = "2cd77326d4dcaed9a5a23a1232fb38e9" diff --git a/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb b/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb index f5df9efa3b..584a19a42a 100644 --- a/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb +++ b/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb @@ -2,7 +2,7 @@ SUMMARY = "Liberation(tm) Fonts" DESCRIPTION = "The Liberation(tm) Fonts is a font family originally \ created by Ascender(c) which aims at metric compatibility with \ Arial, Times New Roman, Courier New." -HOMEPAGE = "https://releases.pagure.org/liberation-fonts/" +HOMEPAGE = "https://github.com/liberationfonts/liberation-fonts" BUGTRACKER = "https://bugzilla.redhat.com/" SECTION = "x11/fonts" @@ -10,17 +10,14 @@ LICENSE = "OFL-1.1" LIC_FILES_CHKSUM = "file://LICENSE;md5=f96db970a9a46c5369142b99f530366b" PE = "1" -inherit allarch fontcache - -FONT_PACKAGES = "${PN}" - -SRC_URI = "https://releases.pagure.org/liberation-fonts/liberation-fonts-ttf-${PV}.tar.gz \ +SRC_URI = "https://github.com/liberationfonts/liberation-fonts/files/7261482/liberation-fonts-ttf-${PV}.tar.gz \ file://30-liberation-aliases.conf" +SRC_URI[sha256sum] = "7191c669bf38899f73a2094ed00f7b800553364f90e2637010a69c0e268f25d0" +GITHUB_BASE_URI = "https://github.com/liberationfonts/liberation-fonts/releases" S = "${WORKDIR}/liberation-fonts-ttf-${PV}" -SRC_URI[md5sum] = "5c781723a0d9ed6188960defba8e91cf" -SRC_URI[sha256sum] = "7890278a6cd17873c57d9cd785c2d230d9abdea837e96516019c5885dd271504" +inherit allarch fontcache github-releases do_install () { install -d ${D}${datadir}/fonts/ttf/ @@ -29,13 +26,13 @@ do_install () { done install -d ${D}${sysconfdir}/fonts/conf.d/ - install -m 0644 ${WORKDIR}/30-liberation-aliases.conf ${D}${sysconfdir}/fonts/conf.d/ + install -m 0644 ${UNPACKDIR}/30-liberation-aliases.conf ${D}${sysconfdir}/fonts/conf.d/ install -d ${D}${prefix}/share/doc/${BPN}/ install -m 0644 LICENSE ${D}${datadir}/doc/${BPN}/ } PACKAGES = "${PN}" -FILES_${PN} += "${sysconfdir} ${datadir}" +FILES:${PN} += "${sysconfdir} ${datadir}" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb b/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb index 70b32cf8f1..0fc075a468 100644 --- a/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb +++ b/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb @@ -1,4 +1,5 @@ SUMMARY = "The Bitstream Vera fonts - TTF Edition" +HOMEPAGE = "https://www.gnome.org/fonts/" DESCRIPTION = "The Bitstream Vera fonts include four monospace and sans \ faces (normal, oblique, bold, bold oblique) and two serif faces (normal \ and bold). In addition Fontconfig/Xft2 can artificially oblique the \ @@ -7,9 +8,8 @@ but is visibly different than normal and bold, and reasonably pleasing." SECTION = "x11/fonts" LICENSE = "BitstreamVera" LIC_FILES_CHKSUM = "file://COPYRIGHT.TXT;md5=27d7484b1e18d0ee4ce538644a3f04be" -PR = "r7" -inherit fontcache +inherit allarch fontcache FONT_PACKAGES = "${PN}" @@ -29,4 +29,4 @@ do_install () { done } -FILES_${PN} = "${datadir}/fonts" +FILES:${PN} = "${datadir}/fonts" diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-Makefile.am-explicitly-link-with-libdrm.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-Makefile.am-explicitly-link-with-libdrm.patch deleted file mode 100644 index aa8d814845..0000000000 --- a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-Makefile.am-explicitly-link-with-libdrm.patch +++ /dev/null @@ -1,31 +0,0 @@ -From d61f7073b8ce159d21811b291c22b273b040c330 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Tue, 12 Feb 2019 12:04:52 +0100 -Subject: [PATCH] Makefile.am: explicitly link with libdrm - -Otherwise, a failure happens with gold linker: - -../src/.libs/libvirglrenderer.so: error: undefined reference to 'drmPrimeHandleToFD' - -https://errors.yoctoproject.org/Errors/Details/222046/ - -Upstream-Status: Accepted [https://gitlab.freedesktop.org/virgl/virglrenderer/merge_requests/153] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - src/Makefile.am | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/Makefile.am b/src/Makefile.am -index 9a0a44e..9b668c8 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -1,5 +1,6 @@ - SUBDIRS := gallium/auxiliary - AM_LDFLAGS = -lm \ -+ $(LIBDRM_LIBS) \ - $(GBM_LIBS) \ - $(EPOXY_LIBS) \ - $(X11_LIBS) \ --- -2.17.1 - diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch new file mode 100644 index 0000000000..3e12495970 --- /dev/null +++ b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch @@ -0,0 +1,28 @@ +From dec8cca59124d7f8796b54902482ceb295a71b51 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Mon, 6 Jan 2020 12:44:42 +0100 +Subject: [PATCH] meson.build: use 'python3' directly for python + +This avoids a dependency on target python (due to meson probing +its configuration). + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 9f91ff2f..2391f89d 100644 +--- a/meson.build ++++ b/meson.build +@@ -74,7 +74,7 @@ flags = [ + + add_project_arguments(cc.get_supported_arguments(flags), language : 'c') + +-prog_python = import('python').find_installation('python3') ++prog_python = 'python3' + + not_found = dependency('', required: false) + libdrm_dep = dependency('libdrm', version : '>=2.4.50', required: get_option('drm').enabled() or get_option('venus')) diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch deleted file mode 100644 index 2b4ffa932d..0000000000 --- a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-add-missing-includes.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 05c5c5f43fbffb3317bd9da27d414890d2ef493c Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 18 Jan 2019 13:47:23 +0100 -Subject: [PATCH] vtest: add missing includes - -This fixes build failures with musl C library - -Upstream-Status: Accepted [https://gitlab.freedesktop.org/virgl/virglrenderer/merge_requests/125] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - vtest/util.c | 1 + - vtest/vtest_server.c | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/vtest/util.c b/vtest/util.c -index 0d3c78f..c605253 100644 ---- a/vtest/util.c -+++ b/vtest/util.c -@@ -26,6 +26,7 @@ - #include <stdio.h> - #include <string.h> - #include <unistd.h> -+#include <sys/select.h> - - int vtest_wait_for_fd_read(int fd) - { -diff --git a/vtest/vtest_server.c b/vtest/vtest_server.c -index bc6c95f..010721f 100644 ---- a/vtest/vtest_server.c -+++ b/vtest/vtest_server.c -@@ -31,6 +31,7 @@ - #include <netinet/in.h> - #include <sys/un.h> - #include <fcntl.h> -+#include <string.h> - - #include "util.h" - #include "vtest.h" diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_0.7.0.bb b/meta/recipes-graphics/virglrenderer/virglrenderer_0.7.0.bb deleted file mode 100644 index 225a0b8b0c..0000000000 --- a/meta/recipes-graphics/virglrenderer/virglrenderer_0.7.0.bb +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "VirGL virtual OpenGL renderer" -HOMEPAGE = "https://virgil3d.github.io/" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10" - -DEPENDS = "libdrm mesa libepoxy" -SRCREV = "402c228861c9893f64cffbbcb4cb23044b8c721c" -SRC_URI = "git://anongit.freedesktop.org/virglrenderer \ - file://0001-vtest-add-missing-includes.patch \ - file://0001-Makefile.am-explicitly-link-with-libdrm.patch \ - " - -S = "${WORKDIR}/git" - -inherit autotools pkgconfig distro_features_check - -BBCLASSEXTEND = "native nativesdk" - -REQUIRED_DISTRO_FEATURES = "opengl" -REQUIRED_DISTRO_FEATURES_class-native = "" -REQUIRED_DISTRO_FEATURES_class-nativesdk = "" diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.1.bb b/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.1.bb new file mode 100644 index 0000000000..0501b0c59c --- /dev/null +++ b/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.1.bb @@ -0,0 +1,33 @@ +SUMMARY = "VirGL virtual OpenGL renderer" +DESCRIPTION = "Virgil is a research project to investigate the possibility of \ +creating a virtual 3D GPU for use inside qemu virtual machines, that allows \ +the guest operating system to use the capabilities of the host GPU to \ +accelerate 3D rendering." +HOMEPAGE = "https://virgil3d.github.io/" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10" + +DEPENDS = "libdrm libepoxy virtual/egl virtual/libgbm" +SRCREV = "690680e5f0f952e22424fca1538c1b24457a0868" +SRC_URI = "git://gitlab.freedesktop.org/virgl/virglrenderer.git;branch=main;protocol=https \ + file://0001-meson.build-use-python3-directly-for-python.patch \ + " + +S = "${WORKDIR}/git" + +inherit meson pkgconfig features_check + +PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'venus', '', d)}" + +PACKAGECONFIG[venus] = "-Dvenus=true,-Dvenus=false,vulkan-loader vulkan-headers" +PACKAGECONFIG[va] = "-Dvideo=true,-Dvideo=false,libva" +PACKAGECONFIG[render-server] = "-Drender-server=true,-Drender-server=false" +PACKAGECONFIG[drm-msm-experimental] = "-Ddrm-msm-experimental=true,-Ddrm-msm-experimental=false" +PACKAGECONFIG[minigbm_allocation] = "-Dminigbm_allocation=true,-Dminigbm_allocation=false" +PACKAGECONFIG[venus-validate] = "-Dvenus-validate=true,-Dvenus-validate=false" +PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,libcheck" + +BBCLASSEXTEND = "native nativesdk" + +REQUIRED_DISTRO_FEATURES = "opengl" diff --git a/meta/recipes-graphics/vulkan/assimp_4.1.0.bb b/meta/recipes-graphics/vulkan/assimp_4.1.0.bb deleted file mode 100644 index 194cbe33cc..0000000000 --- a/meta/recipes-graphics/vulkan/assimp_4.1.0.bb +++ /dev/null @@ -1,20 +0,0 @@ -DESCRIPTION = "Open Asset Import Library is a portable Open Source library to import \ - various well-known 3D model formats in a uniform manner." -HOMEPAGE = "http://www.assimp.org/" -SECTION = "devel" - -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=2119edef0916b0bd511cb3c731076271" - -DEPENDS = "zlib" - -SRC_URI = "git://github.com/assimp/assimp.git" -UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(\d+(\.\d+)+))" - -SRCREV = "80799bdbf90ce626475635815ee18537718a05b1" - -S = "${WORKDIR}/git" - -inherit cmake - -EXTRA_OECMAKE = "-DASSIMP_BUILD_ASSIMP_TOOLS=OFF -DASSIMP_BUILD_TESTS=OFF -DASSIMP_LIB_INSTALL_DIR=${baselib}" diff --git a/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch b/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch deleted file mode 100644 index 93bcfbf851..0000000000 --- a/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 0a27144d43b70121f57f6036514d069ca9d2b971 Mon Sep 17 00:00:00 2001 -From: "Maxin B. John" <maxin.john@intel.com> -Date: Mon, 30 Jul 2018 17:23:29 +0300 -Subject: [PATCH] Don't build demos with questionably licensed data - -Some of the models don't have open source compatible licenses: -don't build demos using those. Also don't build demos that need -resources that are not included. - -ssao: -scenerendering: - Sibenik model, no license found - -deferred: -deferredmultisampling: -deferredshadows: - armor model, CC-BY-3.0 - -vulkanscene: -imgui: -shadowmapping: - vulkanscene model, no license found - -indirectdraw: - plant model, no license found - -hdr: -pbribl: -pbrtexture: - Require external Vulkan Asset Pack - -Upstream-Status: Inappropriate [configuration] - -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> -Signed-off-by: Maxin B. John <maxin.john@intel.com> ---- - examples/CMakeLists.txt | 14 -------------- - 1 file changed, 14 deletions(-) - -diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt -index 8eee3a4..698d3b3 100644 ---- a/examples/CMakeLists.txt -+++ b/examples/CMakeLists.txt -@@ -47,18 +47,12 @@ set(EXAMPLES - computeshader - conservativeraster - debugmarker -- deferred -- deferredmultisampling -- deferredshadows - descriptorsets - displacement - distancefieldfonts - dynamicuniformbuffer - gears - geometryshader -- hdr -- imgui -- indirectdraw - inputattachments - instancing - mesh -@@ -70,8 +64,6 @@ set(EXAMPLES - parallaxmapping - particlefire - pbrbasic -- pbribl -- pbrtexture - pipelines - pipelinestatistics - pushconstants -@@ -79,15 +71,10 @@ set(EXAMPLES - radialblur - raytracing - renderheadless -- scenerendering - screenshot -- shadowmapping -- shadowmappingomni -- shadowmappingcascade - skeletalanimation - specializationconstants - sphericalenvmapping -- ssao - stencilbuffer - subpasses - terraintessellation -@@ -101,7 +88,6 @@ set(EXAMPLES - texturesparseresidency - triangle - viewportarray -- vulkanscene - ) - - buildExamples() --- -2.4.0 - diff --git a/meta/recipes-graphics/vulkan/vulkan-demos_git.bb b/meta/recipes-graphics/vulkan/vulkan-demos_git.bb deleted file mode 100644 index bf30c980c0..0000000000 --- a/meta/recipes-graphics/vulkan/vulkan-demos_git.bb +++ /dev/null @@ -1,44 +0,0 @@ -DESCRIPTION = "Collection of Vulkan examples" -LICENSE = "MIT" -DEPENDS = "zlib" - -LIC_FILES_CHKSUM = "file://LICENSE.md;md5=dcf473723faabf17baa9b5f2207599d0 \ - file://examples/triangle/triangle.cpp;endline=12;md5=bccd1bf9cadd9e10086cf7872157e4fa" - -SRCREV_glm = "01f9ab5b6d21e5062ac0f6e0f205c7fa2ca9d769" -SRCREV_gli = "8e43030b3e12bb58a4663d85adc5c752f89099c0" - -SRC_URI = "git://github.com/SaschaWillems/Vulkan.git \ - git://github.com/g-truc/glm;destsuffix=git/external/glm;name=glm \ - git://github.com/g-truc/gli;destsuffix=git/external/gli;name=gli \ - file://0001-Don-t-build-demos-with-questionably-licensed-data.patch \ -" -UPSTREAM_CHECK_COMMITS = "1" -SRCREV = "ae0b59c6e2e8630a2ae26f4a0b7a72cbe7547948" -UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for" -S = "${WORKDIR}/git" - -REQUIRED_DISTRO_FEATURES = 'vulkan' - -inherit cmake distro_features_check -DEPENDS = "vulkan assimp" - -do_install_append () { - # Remove assets that have uncertain licenses - rm ${D}${datadir}/vulkan-demos/models/armor/* \ - ${D}${datadir}/vulkan-demos/models/sibenik/* \ - ${D}${datadir}/vulkan-demos/models/vulkanscene* \ - ${D}${datadir}/vulkan-demos/models/plants.dae \ - ${D}${datadir}/vulkan-demos/textures/texturearray_plants* - - mv ${D}${bindir}/screenshot ${D}${bindir}/vulkan-screenshot -} - -EXTRA_OECMAKE = "-DRESOURCE_INSTALL_DIR=${datadir}/vulkan-demos" - -ANY_OF_DISTRO_FEATURES = "x11 wayland" - -# Can only pick one of [wayland,xcb] -PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', 'xcb' ,d)}" -PACKAGECONFIG[wayland] = "-DUSE_WAYLAND_WSI=ON, -DUSE_WAYLAND_WSI=OFF, wayland" -PACKAGECONFIG[xcb] = ",,libxcb" diff --git a/meta/recipes-graphics/vulkan/vulkan-headers_1.3.283.0.bb b/meta/recipes-graphics/vulkan/vulkan-headers_1.3.283.0.bb new file mode 100644 index 0000000000..6423ef9df6 --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-headers_1.3.283.0.bb @@ -0,0 +1,28 @@ +SUMMARY = "Vulkan Header files and API registry" +DESCRIPTION = "Vulkan is a 3D graphics and compute API providing cross-platform access \ +to modern GPUs with low overhead and targeting realtime graphics applications such as \ +games and interactive media. This package contains the development headers \ +for packages wanting to make use of Vulkan." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Headers" +SECTION = "libs" + +LICENSE = "Apache-2.0 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=1bc355d8c4196f774c8b87ed1a8dd625" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=main;protocol=https" + +SRCREV = "eaa319dade959cb61ed2229c8ea42e307cc8f8b3" + +S = "${WORKDIR}/git" + +inherit cmake + +FILES:${PN} += "${datadir}/vulkan" +RDEPENDS:${PN} += "python3-core" + +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools, +# vulkan-validation-layers, vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" diff --git a/meta/recipes-graphics/vulkan/vulkan-loader_1.3.283.0.bb b/meta/recipes-graphics/vulkan/vulkan-loader_1.3.283.0.bb new file mode 100644 index 0000000000..6c3197e13f --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-loader_1.3.283.0.bb @@ -0,0 +1,43 @@ +SUMMARY = "3D graphics and compute API common loader" +DESCRIPTION = "Vulkan is a new generation graphics and compute API \ +that provides efficient access to modern GPUs. These packages \ +provide only the common vendor-agnostic library loader, headers and \ +the vulkaninfo utility." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Loader" +SECTION = "libs" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git;branch=vulkan-sdk-1.3.283;protocol=https" +SRCREV = "720be5198aad4696381d2e3eeadc131c9f56bdc6" + +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = "vulkan" + +inherit cmake features_check pkgconfig + +DEPENDS += "vulkan-headers" + +EXTRA_OECMAKE = "\ + -DBUILD_TESTS=OFF \ + -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \ + -DASSEMBLER_WORKS=FALSE \ + -DVulkanHeaders_INCLUDE_DIR=${STAGING_INCDIR} \ + -DVulkanRegistry_DIR=${RECIPE_SYSROOT}/${datadir} \ + " + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" + +PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr" +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" + +RRECOMMENDS:${PN} = "mesa-vulkan-drivers" + +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools, +# vulkan-validation-layers, vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/0001-Deprecate-u8string_view.patch b/meta/recipes-graphics/vulkan/vulkan-samples/0001-Deprecate-u8string_view.patch new file mode 100644 index 0000000000..c2304bdd48 --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-samples/0001-Deprecate-u8string_view.patch @@ -0,0 +1,59 @@ +From 93987b1ce7d6f91387202495aac61026070597df Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 15 Jan 2023 21:37:52 -0800 +Subject: [PATCH] Deprecate u8string_view + +Use basic_string_view instead + +Upstream-Status: Backport [https://github.com/fmtlib/fmt/commit/dea7fde8b7d649923dd41b0766bdf076033c62a2] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + include/spdlog/fmt/bundled/core.h | 3 ++- + include/spdlog/fmt/bundled/format.h | 15 ++------------- + 2 files changed, 4 insertions(+), 14 deletions(-) + +diff --git a/include/spdlog/fmt/bundled/core.h b/include/spdlog/fmt/bundled/core.h +index 50b79351..e8b029ef 100644 +--- a/include/spdlog/fmt/bundled/core.h ++++ b/include/spdlog/fmt/bundled/core.h +@@ -1484,7 +1484,8 @@ FMT_API void vprint(wstring_view format_str, wformat_args args); + + /** + \rst +- Prints formatted data to ``stdout``. ++ Formats ``args`` according to specifications in ``format_str`` and writes the ++ output to ``stdout``. + + **Example**:: + +diff --git a/include/spdlog/fmt/bundled/format.h b/include/spdlog/fmt/bundled/format.h +index 1bb24a52..39426361 100644 +--- a/include/spdlog/fmt/bundled/format.h ++++ b/include/spdlog/fmt/bundled/format.h +@@ -407,21 +407,10 @@ void basic_buffer<T>::append(const U *begin, const U *end) { + enum char8_t: unsigned char {}; + #endif + +-// A UTF-8 string view. +-class u8string_view : public basic_string_view<char8_t> { +- public: +- typedef char8_t char_type; +- +- u8string_view(const char *s): +- basic_string_view<char8_t>(reinterpret_cast<const char8_t*>(s)) {} +- u8string_view(const char *s, size_t count) FMT_NOEXCEPT: +- basic_string_view<char8_t>(reinterpret_cast<const char8_t*>(s), count) {} +-}; +- + #if FMT_USE_USER_DEFINED_LITERALS + inline namespace literals { +-inline u8string_view operator"" _u(const char *s, std::size_t n) { +- return {s, n}; ++inline basic_string_view<char8_t> operator"" _u(const char* s, std::size_t n) { ++ return {reinterpret_cast<const char8_t*>(s), n}; + } + } + #endif +-- +2.39.0 + diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/0001-Do-not-use-LFS64-functions-on-linux-musl.patch b/meta/recipes-graphics/vulkan/vulkan-samples/0001-Do-not-use-LFS64-functions-on-linux-musl.patch new file mode 100644 index 0000000000..f2bd7e510b --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-samples/0001-Do-not-use-LFS64-functions-on-linux-musl.patch @@ -0,0 +1,37 @@ +From ce7a593e74c8e0c2ece15c73e7614d4f13a19a53 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 30 Dec 2022 13:04:08 -0800 +Subject: [PATCH] Do not use LFS64 functions on linux/musl + +On musl, off_t is 64bit always ( even on 32bit platforms ), therefore using +LFS64 funcitons is not needed on such platforms. Moreover, musl has stopped +providing aliases for these functions [1] which means it wont compile on +newer musl systems. Therefore only use it on 32bit glibc/linux platforms +and exclude musl like cygwin or OSX + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=246f1c811448f37a44b41cd8df8d0ef9736d95f4 + +Upstream-Status: Submitted [https://github.com/gabime/spdlog/pull/2589] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + include/spdlog/details/os.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/include/spdlog/details/os.h b/include/spdlog/details/os.h +index 8e8476f0..be0a67b8 100644 +--- a/include/spdlog/details/os.h ++++ b/include/spdlog/details/os.h +@@ -227,7 +227,9 @@ inline size_t filesize(FILE *f) + #else // unix + int fd = fileno(f); + // 64 bits(but not in osx or cygwin, where fstat64 is deprecated) +-#if !defined(__FreeBSD__) && !defined(__APPLE__) && (defined(__x86_64__) || defined(__ppc64__)) && !defined(__CYGWIN__) ++#if !defined(__FreeBSD__) && !defined(__APPLE__) && \ ++ (defined(__linux__) && defined(__GLIBC__)) && \ ++ (defined(__x86_64__) || defined(__ppc64__)) && !defined(__CYGWIN__) + struct stat64 st; + if (::fstat64(fd, &st) == 0) + { +-- +2.39.0 + diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/0001-vulkan-samples-Fix-reproducibility-issue.patch b/meta/recipes-graphics/vulkan/vulkan-samples/0001-vulkan-samples-Fix-reproducibility-issue.patch new file mode 100644 index 0000000000..c16e05112f --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-samples/0001-vulkan-samples-Fix-reproducibility-issue.patch @@ -0,0 +1,43 @@ +From d998c753254649c7cf7c64e3fed78e41c11ad7ed Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Wed, 23 Aug 2023 09:38:37 +0200 +Subject: [PATCH] vulkan-samples: Fix reproducibility issue + +There is code to remove the prefix CMAKE_SOURCE_DIR from __FILENAME__ paths +used for logging with LOGE() in the code. We need to make this match the value we use +in the debug source remapping from CFLAGS + +We export the right path to use in the recipe with: + +EXTRA_OECMAKE = "-DCMAKE_DEBUG_SRCDIR=${TARGET_DBGSRC_DIR}/" + +and we then patch this into the code instead of the broken use +of CMAKE_SOURCE_DIR since __FILENAME__ will match our path prefix +changes. + +This also breaks reproducibility since the path length of the build directory +will currently change the output! + +Upstream-Status: Pending [needs to be discussed upstream] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Signed-off-by: Julien Stephan <jstephan@baylibre.com> +--- + bldsys/cmake/global_options.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bldsys/cmake/global_options.cmake b/bldsys/cmake/global_options.cmake +index b15c2da..d8952e5 100644 +--- a/bldsys/cmake/global_options.cmake ++++ b/bldsys/cmake/global_options.cmake +@@ -62,7 +62,7 @@ set(CMAKE_CXX_STANDARD 14) + set(CMAKE_DISABLE_SOURCE_CHANGES ON) + set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) + +-string(LENGTH "${CMAKE_SOURCE_DIR}/" ROOT_PATH_SIZE) ++string(LENGTH "${CMAKE_DEBUG_SRCDIR}/" ROOT_PATH_SIZE) + add_definitions(-DROOT_PATH_SIZE=${ROOT_PATH_SIZE}) + + set(CMAKE_C_FLAGS_DEBUG "-DDEBUG=0 ${CMAKE_C_FLAGS_DEBUG}") +-- +2.41.0 diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/32bit.patch b/meta/recipes-graphics/vulkan/vulkan-samples/32bit.patch new file mode 100644 index 0000000000..644c3b6167 --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-samples/32bit.patch @@ -0,0 +1,101 @@ +From 49761ca63797014223d8e3ff6fb2c0235803c19c Mon Sep 17 00:00:00 2001 +From: asuessenbach <asuessenbach@nvidia.com> +Date: Wed, 3 May 2023 09:50:08 +0200 +Subject: [PATCH] Resolve some Vulkan-Hpp-related issues on Win32. + +This patch fixes vulkan-samples compilation on 32-bit hosts. + +Upstream-Status: Backport +Signed-off-by: Ross Burton <ross.burton@arm.com> + +--- + framework/common/hpp_vk_common.h | 4 ++-- + framework/core/hpp_buffer.cpp | 4 ++-- + framework/core/hpp_buffer.h | 2 +- + framework/core/hpp_image.cpp | 2 +- + samples/api/hpp_texture_loading/hpp_texture_loading.cpp | 2 +- + 5 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/framework/common/hpp_vk_common.h b/framework/common/hpp_vk_common.h +index 39ed3dcde..0cbbe479e 100644 +--- a/framework/common/hpp_vk_common.h ++++ b/framework/common/hpp_vk_common.h +@@ -92,7 +92,7 @@ inline bool is_dynamic_buffer_descriptor_type(vk::DescriptorType descriptor_type + + inline vk::ShaderModule load_shader(const std::string &filename, vk::Device device, vk::ShaderStageFlagBits stage) + { +- return vkb::load_shader(filename, device, static_cast<VkShaderStageFlagBits>(stage)); ++ return static_cast<vk::ShaderModule>(vkb::load_shader(filename, device, static_cast<VkShaderStageFlagBits>(stage))); + } + + inline void set_image_layout(vk::CommandBuffer command_buffer, +@@ -104,7 +104,7 @@ inline void set_image_layout(vk::CommandBuffer command_buffer, + vk::PipelineStageFlags dst_mask = vk::PipelineStageFlagBits::eAllCommands) + { + vkb::set_image_layout(command_buffer, +- image, ++ static_cast<VkImage>(image), + static_cast<VkImageLayout>(old_layout), + static_cast<VkImageLayout>(new_layout), + static_cast<VkImageSubresourceRange>(subresource_range), +diff --git a/framework/core/hpp_buffer.cpp b/framework/core/hpp_buffer.cpp +index 8da265acb..e6509b9f4 100644 +--- a/framework/core/hpp_buffer.cpp ++++ b/framework/core/hpp_buffer.cpp +@@ -84,7 +84,7 @@ HPPBuffer::~HPPBuffer() + if (get_handle() && (allocation != VK_NULL_HANDLE)) + { + unmap(); +- vmaDestroyBuffer(get_device().get_memory_allocator(), get_handle(), allocation); ++ vmaDestroyBuffer(get_device().get_memory_allocator(), static_cast<VkBuffer>(get_handle()), allocation); + } + } + +@@ -93,7 +93,7 @@ VmaAllocation HPPBuffer::get_allocation() const + return allocation; + } + +-VkDeviceMemory HPPBuffer::get_memory() const ++vk::DeviceMemory HPPBuffer::get_memory() const + { + return memory; + } +diff --git a/framework/core/hpp_buffer.h b/framework/core/hpp_buffer.h +index 7a243c265..bad47406d 100644 +--- a/framework/core/hpp_buffer.h ++++ b/framework/core/hpp_buffer.h +@@ -55,7 +55,7 @@ class HPPBuffer : public vkb::core::HPPVulkanResource<vk::Buffer> + + VmaAllocation get_allocation() const; + const uint8_t *get_data() const; +- VkDeviceMemory get_memory() const; ++ vk::DeviceMemory get_memory() const; + + /** + * @return Return the buffer's device address (note: requires that the buffer has been created with the VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT usage fla) +diff --git a/framework/core/hpp_image.cpp b/framework/core/hpp_image.cpp +index 00fa89ba7..5e6f27363 100644 +--- a/framework/core/hpp_image.cpp ++++ b/framework/core/hpp_image.cpp +@@ -138,7 +138,7 @@ HPPImage::~HPPImage() + if (get_handle() && memory) + { + unmap(); +- vmaDestroyImage(get_device().get_memory_allocator(), get_handle(), memory); ++ vmaDestroyImage(get_device().get_memory_allocator(), static_cast<VkImage>(get_handle()), memory); + } + } + +diff --git a/samples/api/hpp_texture_loading/hpp_texture_loading.cpp b/samples/api/hpp_texture_loading/hpp_texture_loading.cpp +index 11a1f24c1..cbdd22773 100644 +--- a/samples/api/hpp_texture_loading/hpp_texture_loading.cpp ++++ b/samples/api/hpp_texture_loading/hpp_texture_loading.cpp +@@ -170,7 +170,7 @@ void HPPTextureLoading::load_texture() + memory_allocate_info = {memory_requirements.size, + get_device()->get_gpu().get_memory_type(memory_requirements.memoryTypeBits, vk::MemoryPropertyFlagBits::eDeviceLocal)}; + texture.device_memory = get_device()->get_handle().allocateMemory(memory_allocate_info); +- VK_CHECK(vkBindImageMemory(get_device()->get_handle(), texture.image, texture.device_memory, 0)); ++ get_device()->get_handle().bindImageMemory(texture.image, texture.device_memory, 0); + + vk::CommandBuffer copy_command = get_device()->create_command_buffer(vk::CommandBufferLevel::ePrimary, true); + diff --git a/meta/recipes-graphics/vulkan/vulkan-samples_git.bb b/meta/recipes-graphics/vulkan/vulkan-samples_git.bb new file mode 100644 index 0000000000..d60c0f3190 --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-samples_git.bb @@ -0,0 +1,39 @@ +SUMMARY = "The Vulkan Samples is collection of resources to help develop optimized Vulkan applications." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Samples/issues" +LICENSE = "Apache-2.0" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=48aa35cefb768436223a6e7f18dc2a2a" + +SRC_URI = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git;branch=main;protocol=https;lfs=0 \ + file://0001-vulkan-samples-Fix-reproducibility-issue.patch \ + file://0001-Do-not-use-LFS64-functions-on-linux-musl.patch;patchdir=third_party/spdlog \ + file://0001-Deprecate-u8string_view.patch;patchdir=third_party/spdlog \ + file://32bit.patch \ + " + +UPSTREAM_CHECK_COMMITS = "1" +SRCREV = "2307c3eb5608cb1205fa3514b3a31dbfb857d00c" + +UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for" +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = 'vulkan' + +inherit cmake features_check + +FILES:${PN} += "${datadir}" + +# +# There is code to remove the prefix CMAKE_SOURCE_DIR from __FILENAME__ paths +# used for logging with LOGE in the code. We need to make this match the value we use +# in the debug source remapping from CFLAGS +# +EXTRA_OECMAKE += "-DCMAKE_DEBUG_SRCDIR=${TARGET_DBGSRC_DIR}/" +# Binaries built with PCH enabled don't appear reproducible, differing results were seen +# from some builds depending on the point the PCH was compiled. Disable it to be +# deterministic +EXTRA_OECMAKE += "-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON" + +# This needs to be specified explicitly to avoid xcb/xlib dependencies +EXTRA_OECMAKE += "-DVKB_WSI_SELECTION=D2D" diff --git a/meta/recipes-graphics/vulkan/vulkan-tools_1.3.283.0.bb b/meta/recipes-graphics/vulkan/vulkan-tools_1.3.283.0.bb new file mode 100644 index 0000000000..a76f60735f --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-tools_1.3.283.0.bb @@ -0,0 +1,37 @@ +SUMMARY = "Vulkan Utilities and Tools" +DESCRIPTION = "Assist development by enabling developers to verify their applications correct use of the Vulkan API." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Tools" +SECTION = "libs" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=vulkan-sdk-1.3.283;protocol=https" +SRCREV = "38321da9031f5909f1ca2dbafac8840ef6b2c144" + +S = "${WORKDIR}/git" + +inherit cmake features_check pkgconfig +ANY_OF_DISTRO_FEATURES = "x11 wayland" +REQUIRED_DISTRO_FEATURES = "vulkan" + +DEPENDS += "vulkan-headers vulkan-loader vulkan-volk" + +EXTRA_OECMAKE = "\ + -DBUILD_TESTS=OFF \ + -DBUILD_CUBE=OFF \ + -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \ + " + +# must choose x11 or wayland or both +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" + +PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr" +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" + +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, spirv-headers, spirv-tools +# vulkan-validation-layers, vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" diff --git a/meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.3.283.0.bb b/meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.3.283.0.bb new file mode 100644 index 0000000000..3274bea8fd --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-utility-libraries_1.3.283.0.bb @@ -0,0 +1,33 @@ +SUMMARY = "Vulkan Utility Libraries" +DESCRIPTION = "Common libraries created to share code across various \ +Vulkan repositories, solving long standing issues for Vulkan SDK \ +developers and users." +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Utility-Libraries" +SECTION = "libs" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=4ca2d6799091aaa98a8520f1b793939b" + +SRC_URI = "git://github.com/KhronosGroup/Vulkan-Utility-Libraries.git;branch=main;protocol=https" +SRCREV = "ad7f699a7b2b5deb66eb3de19f24aa33597ed65b" + +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = "vulkan" + +DEPENDS = "vulkan-headers" + +EXTRA_OECMAKE = "\ + -DBUILD_TESTS=OFF \ + " + +inherit cmake features_check pkgconfig + +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, +# vulkan-validation-layers, spirv-headers, spirv-tools, +# vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" diff --git a/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.3.283.0.bb b/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.3.283.0.bb new file mode 100644 index 0000000000..2f1efba856 --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.3.283.0.bb @@ -0,0 +1,49 @@ +SUMMARY = "Vulkan Validation layers" +DESCRIPTION = "Khronos official Vulkan validation layers to assist developers \ +in verifying that their applications correctly use the Vulkan API" +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-ValidationLayers" +SECTION = "libs" + +LICENSE = "Apache-2.0 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cd3c0bc366cd9b6a906e22f0bcb5910f" + +SRC_URI = "git://github.com/KhronosGroup/Vulkan-ValidationLayers.git;branch=vulkan-sdk-1.3.283;protocol=https" +SRCREV = "d5bed3e26b3d487e8d21f0cc39039351eac921a7" + +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = "vulkan" + +DEPENDS = "vulkan-headers vulkan-loader spirv-headers spirv-tools glslang vulkan-utility-libraries" + +# BUILD_TESTS - Not required for OE builds +# USE_ROBIN_HOOD_HASHING - Provides substantial performance improvements on all platforms. +# Yocto project doesn't contain a recipe for package so disabled it. +EXTRA_OECMAKE = "\ + -DBUILD_TESTS=OFF \ + -DUSE_ROBIN_HOOD_HASHING=OFF \ + -DGLSLANG_INSTALL_DIR=${STAGING_LIBDIR} \ + -DVULKAN_HEADERS_INSTALL_DIR=${STAGING_EXECPREFIXDIR} \ + -DSPIRV_HEADERS_INSTALL_DIR=${STAGING_EXECPREFIXDIR} \ + " + +PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr" +PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" + +PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)}" + +inherit cmake features_check pkgconfig + +FILES:${PN} += "${datadir}/vulkan" + +SOLIBS = ".so" +FILES_SOLIBSDEV = "" + +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, +# vulkan-validation-layers, spirv-headers, spirv-tools, +# vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" diff --git a/meta/recipes-graphics/vulkan/vulkan-volk_1.3.283.0.bb b/meta/recipes-graphics/vulkan/vulkan-volk_1.3.283.0.bb new file mode 100644 index 0000000000..5485aa0b0d --- /dev/null +++ b/meta/recipes-graphics/vulkan/vulkan-volk_1.3.283.0.bb @@ -0,0 +1,37 @@ +SUMMARY = "A meta-loader for Vulkan" +DESCRIPTION = "Volk allows one to dynamically load entrypoints required \ +to use Vulkan without linking to vulkan-1.dll or statically linking Vulkan loader. \ +" +HOMEPAGE = "https://www.khronos.org/vulkan/" +BUGTRACKER = "https://github.com/zeux/volk" +SECTION = "libs" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=12e6af3a0e2a5e5dbf7796aa82b64626" + +SRC_URI = "git://github.com/zeux/volk.git;branch=master;protocol=https" +SRCREV = "3a8068a57417940cf2bf9d837a7bb60d015ca2f1" + +S = "${WORKDIR}/git" + +REQUIRED_DISTRO_FEATURES = "vulkan" + +DEPENDS = "vulkan-headers" + +EXTRA_OECMAKE = "\ + -DVOLK_INSTALL=ON \ + " + +inherit cmake features_check pkgconfig + +# These recipes need to be updated in lockstep with each other: +# glslang, vulkan-headers, vulkan-loader, vulkan-tools, +# vulkan-validation-layers, spirv-headers, spirv-tools, +# vulkan-utility-libraries, vulkan-volk. +# The tags versions should always be sdk-x.y.z, as this is what +# upstream considers a release. +UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" + +do_install:append() { + sed -i -e 's,${STAGING_DIR_TARGET},,g' ${D}${libdir}/cmake/volk/volkTargets.cmake +} diff --git a/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch b/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch deleted file mode 100644 index b0b9fc4e43..0000000000 --- a/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 9b13be109bc66f4d4a1ad53ce5c92c7c495e41d7 Mon Sep 17 00:00:00 2001 -From: "Maxin B. John" <maxin.john@intel.com> -Date: Tue, 24 Jul 2018 17:40:52 +0300 -Subject: [PATCH] commit f63cbe944107b5cd8f150ceaaec43b26099d5688 - -Author: Adam Jackson <ajax@redhat.com> -Date: Tue Feb 16 10:05:25 2016 -0500 - -demos: Don't build tri or cube - -There are more interesting demos, all we really want here is vulkaninfo. -This helps because we don't need to pre-build glslang/llvm/lunarglass -just to get the loader and layers. - -Upstream-Status: Inappropriate [configuration] - -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> -Signed-off-by: Maxin B. John <maxin.john@intel.com> ---- - demos/CMakeLists.txt | 88 ---------------------------------------------------- - 1 file changed, 88 deletions(-) - -diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt -index 4f32679..26e4cdf 100644 ---- a/demos/CMakeLists.txt -+++ b/demos/CMakeLists.txt -@@ -93,42 +93,6 @@ elseif(UNIX) - else() - endif() - --if(WIN32) -- # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory. -- # 32-bit target data goes in build32, and 64-bit target data goes into build. So, include/link the -- # appropriate data at build time. -- if (CMAKE_CL_64) -- set (BUILDTGT_DIR build) -- else () -- set (BUILDTGT_DIR build32) -- endif() -- -- # Use static MSVCRT libraries -- foreach(configuration in CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO -- CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO) -- if(${configuration} MATCHES "/MD") -- string(REGEX REPLACE "/MD" "/MT" ${configuration} "${${configuration}}") -- endif() -- endforeach() -- -- file(COPY cube.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) -- file(COPY vulkaninfo.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) --endif() -- --add_custom_command( -- COMMENT "Compiling cube demo vertex shader" -- OUTPUT cube.vert.inc -- COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.vert.inc ${PROJECT_SOURCE_DIR}/demos/cube.vert -- MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.vert -- DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.vert ${GLSLANG_VALIDATOR} --) --add_custom_command( -- COMMENT "Compiling cube demo fragment shader" -- OUTPUT cube.frag.inc -- COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.frag.inc ${PROJECT_SOURCE_DIR}/demos/cube.frag -- MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.frag -- DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.frag ${GLSLANG_VALIDATOR} --) - - include_directories(${CMAKE_CURRENT_BINARY_DIR}) - -@@ -172,55 +136,3 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - install(TARGETS ${API_LOWERCASE}info DESTINATION ${CMAKE_INSTALL_BINDIR}) - endif() - endif() -- --###################################################################################### --# cube -- --if(APPLE) -- include(macOS/cube/cube.cmake) --elseif(NOT WIN32) -- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) -- add_executable(cube cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) -- target_link_libraries(cube ${LIBRARIES}) -- endif() --else() -- if (CMAKE_CL_64) -- set (LIB_DIR "Win64") -- else() -- set (LIB_DIR "Win32") -- endif() -- -- add_executable(cube WIN32 cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) -- target_link_libraries(cube ${LIBRARIES}) --endif() -- --###################################################################################### --# cubepp -- --if(APPLE) -- include(macOS/cubepp/cubepp.cmake) --elseif(NOT WIN32) -- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) -- add_executable(cubepp cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) -- target_link_libraries(cubepp ${LIBRARIES}) -- endif() --else() -- if (CMAKE_CL_64) -- set (LIB_DIR "Win64") -- else() -- set (LIB_DIR "Win32") -- endif() -- -- add_executable(cubepp WIN32 cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) -- target_link_libraries(cubepp ${LIBRARIES}) --endif() -- --###################################################################################### --# smoke -- --if ((${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR})) -- if ((DEMOS_WSI_SELECTION STREQUAL "XCB") OR (DEMOS_WSI_SELECTION STREQUAL "WAYLAND") OR WIN32 OR -- (CMAKE_SYSTEM_NAME STREQUAL "Android") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin")) -- add_subdirectory(smoke) -- endif() --endif() --- -2.4.0 - diff --git a/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb b/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb deleted file mode 100644 index 02e4330cf2..0000000000 --- a/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb +++ /dev/null @@ -1,40 +0,0 @@ -SUMMARY = "3D graphics and compute API common loader" -DESCRIPTION = "Vulkan is a new generation graphics and compute API \ -that provides efficient access to modern GPUs. These packages \ -provide only the common vendor-agnostic library loader, headers and \ -the vulkaninfo utility." -HOMEPAGE = "https://www.khronos.org/vulkan/" -BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Loader" -SECTION = "libs" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=99c647ca3d4f6a4b9d8628f757aad156 \ - file://loader/loader.c;endline=25;md5=151b392f46568aaedb4ad22b246237ec" -SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git;nobranch=1 \ - file://demos-Don-t-build-tri-or-cube.patch \ - " -SRCREV = "5998d6f444a85e6381b7a089ebf3f9e86482a31d" -UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)" - -S = "${WORKDIR}/git" - -REQUIRED_DISTRO_FEATURES = "vulkan" - -inherit cmake python3native lib_package distro_features_check -ANY_OF_DISTRO_FEATURES = "x11 wayland" - -EXTRA_OECMAKE = "-DBUILD_WSI_MIR_SUPPORT=OFF \ - -DBUILD_LAYERS=OFF \ - -DBUILD_TESTS=OFF" - -# must choose x11 or wayland or both -PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '' ,d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '' ,d)}" -PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON -DDEMOS_WSI_SELECTION=XCB, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF -DDEMOS_WSI_SELECTION=WAYLAND, libxcb libx11 libxrandr" -PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland" - -RRECOMMENDS_${PN} = "mesa-vulkan-drivers" -INSANE_SKIP_${PN}-dev += "dev-elf" - -# Can't be built with ccache -CCACHE_DISABLE = "1" diff --git a/meta/recipes-graphics/waffle/waffle/0001-third_party-threads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch b/meta/recipes-graphics/waffle/waffle/0001-third_party-threads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch deleted file mode 100644 index a0c826ed93..0000000000 --- a/meta/recipes-graphics/waffle/waffle/0001-third_party-threads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 3b9b8f5f6d1b99af43e95ec0868404e552a85b73 Mon Sep 17 00:00:00 2001 -From: Emil Velikov <emil.l.velikov@gmail.com> -Date: Thu, 19 Mar 2015 22:26:11 +0000 -Subject: [PATCH] third_party/threads: Use PTHREAD_MUTEX_RECURSIVE by default - -PTHREAD_MUTEX_RECURSIVE_NP was used for compatibility with old glibc. -Although due to the_GNU_SOURCES define the portable, -PTHREAD_MUTEX_RECURSIVE will be available for Linuxes since at least -1998. Simplify things giving us compatibility with musl which -apparently does not provide the non-portable define. - -Inspired by almost identical commit in mesa aead7fe2e2b(c11/threads: Use -PTHREAD_MUTEX_RECURSIVE by default) by Felix Janda. - -Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> -Reviewed-by: Chad Versace <chad.versace@intel.com> ---- -Upstream-Status: Backport - - third_party/threads/threads_posix.c | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) - -diff --git a/third_party/threads/threads_posix.c b/third_party/threads/threads_posix.c -index 5835e43..e122bf9 100644 ---- a/third_party/threads/threads_posix.c -+++ b/third_party/threads/threads_posix.c -@@ -26,6 +26,9 @@ - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ -+ -+#define _GNU_SOURCE -+ - #include <stdlib.h> - #ifndef assert - #include <assert.h> -@@ -150,13 +153,8 @@ int mtx_init(mtx_t *mtx, int type) - && type != (mtx_try|mtx_recursive)) - return thrd_error; - pthread_mutexattr_init(&attr); -- if ((type & mtx_recursive) != 0) { --#if defined(__linux__) || defined(__linux) -- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP); --#else -+ if ((type & mtx_recursive) != 0) - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); --#endif -- } - pthread_mutex_init(mtx, &attr); - pthread_mutexattr_destroy(&attr); - return thrd_success; --- -2.5.2 - diff --git a/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch b/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch new file mode 100644 index 0000000000..31ac3e0dd1 --- /dev/null +++ b/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch @@ -0,0 +1,40 @@ +From 79b9e4338f803d79449e53a40b1ecc0a5a5889e4 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Tue, 26 Oct 2021 08:52:17 +0200 +Subject: [PATCH] waffle: do not make core protocol into the library + +None of the consumers (which is just piglit) use it, and +this avoids host contamination from pkg-config suggesting +wayland.xml from the host. + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> +--- + src/waffle/meson.build | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/src/waffle/meson.build b/src/waffle/meson.build +index 1cc99f6..022745a 100644 +--- a/src/waffle/meson.build ++++ b/src/waffle/meson.build +@@ -89,12 +89,6 @@ if build_surfaceless + endif + + if build_wayland +- wl_core_proto_c = custom_target( +- 'wl-core-proto.c', +- input: wayland_core_xml, +- output: 'wl-core-proto.c', +- command: [prog_wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'], +- ) + wl_xdg_shell_proto_c = custom_target( + 'wl-xdg-shell-proto.c', + input: wayland_xdg_shell_xml, +@@ -115,7 +109,6 @@ if build_wayland + 'wayland/wayland_wrapper.c', + ) + files_libwaffle += [ +- wl_core_proto_c, + wl_xdg_shell_proto_c, + wl_xdg_shell_proto_h, + ] diff --git a/meta/recipes-graphics/waffle/waffle_1.5.2.bb b/meta/recipes-graphics/waffle/waffle_1.5.2.bb deleted file mode 100644 index 43c3edc05a..0000000000 --- a/meta/recipes-graphics/waffle/waffle_1.5.2.bb +++ /dev/null @@ -1,37 +0,0 @@ -SUMMARY = "cross-platform C library to defer selection of GL API and of window system" -LICENSE = "BSD-2-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4c5154407c2490750dd461c50ad94797 \ - file://include/waffle/waffle.h;endline=24;md5=61dbf8697f61c78645e75a93c585b1bf" - -SRC_URI = "http://waffle-gl.org/files/release/${BPN}-${PV}/${BPN}-${PV}.tar.xz \ - file://0001-third_party-threads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch \ - " -SRC_URI[md5sum] = "c669c91bf2f7e13a5d781c3dbb30fd8c" -SRC_URI[sha256sum] = "d2c096cf654bf0061323a4b9231a1ef5b749a1e5c7c5bfe067e964219c2a851c" - -UPSTREAM_CHECK_URI = "http://www.waffle-gl.org/releases.html" - -inherit cmake distro_features_check lib_package - -# This should be overridden per-machine to reflect the capabilities of the GL -# stack. -PACKAGECONFIG ??= "glx" - -# libx11 requires x11 in DISTRO_FEATURES. -REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('PACKAGECONFIG', 'glx', 'x11', '', d)}" - -# virtual/libgl requires opengl in DISTRO_FEATURES. -REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('DEPENDS', 'virtual/${MLPREFIX}libgl', 'opengl', '', d)}" - -# I say virtual/libgl, actually wants gl.pc -PACKAGECONFIG[glx] = "-Dwaffle_has_glx=1,-Dwaffle_has_glx=0,virtual/${MLPREFIX}libgl libx11" - -# I say virtual/libgl, actually wants wayland-egl.pc, egl.pc, and the wayland -# DISTRO_FEATURE. -PACKAGECONFIG[wayland] = "-Dwaffle_has_wayland=1,-Dwaffle_has_wayland=0,virtual/${MLPREFIX}libgl wayland" - -# I say virtual/libgl, actually wants gbm.pc egl.pc -PACKAGECONFIG[gbm] = "-Dwaffle_has_gbm=1,-Dwaffle_has_gbm=0,virtual/${MLPREFIX}libgl udev" - -# I say virtual/libgl, actually wants egl.pc -PACKAGECONFIG[x11-egl] = "-Dwaffle_has_x11_egl=1,-Dwaffle_has_x11_egl=0,virtual/${MLPREFIX}libgl libxcb" diff --git a/meta/recipes-graphics/waffle/waffle_1.8.0.bb b/meta/recipes-graphics/waffle/waffle_1.8.0.bb new file mode 100644 index 0000000000..ad8649b40e --- /dev/null +++ b/meta/recipes-graphics/waffle/waffle_1.8.0.bb @@ -0,0 +1,50 @@ +SUMMARY = "A C library for selecting an OpenGL API and window system at runtime" +DESCRIPTION = "A cross-platform C library that allows one to defer selection \ +of an OpenGL API and window system until runtime. For example, on Linux, Waffle \ +enables an application to select X11/EGL with an OpenGL 3.3 core profile, \ +Wayland with OpenGL ES2, and other window system / API combinations." +HOMEPAGE = "https://gitlab.freedesktop.org/mesa/waffle" +BUGTRACKER = "https://gitlab.freedesktop.org/mesa/waffle" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4c5154407c2490750dd461c50ad94797 \ + file://include/waffle-1/waffle.h;endline=24;md5=61dbf8697f61c78645e75a93c585b1bf" + +SRC_URI = "git://gitlab.freedesktop.org/mesa/waffle.git;protocol=https;branch=master \ + file://0001-waffle-do-not-make-core-protocol-into-the-library.patch \ + " +SRCREV = "580b912a30085528886603942c100c7b309b3bdb" +S = "${WORKDIR}/git" + +inherit meson features_check lib_package bash-completion pkgconfig + +DEPENDS:append = " python3" + +# This should be overridden per-machine to reflect the capabilities of the GL +# stack. +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11-egl', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gbm surfaceless-egl', '', d)} \ +" + +# virtual/libgl requires opengl in DISTRO_FEATURES. +REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('DEPENDS', 'virtual/${MLPREFIX}libgl', 'opengl', '', d)}" + +# I say virtual/libgl, actually wants gl.pc +PACKAGECONFIG[glx] = "-Dglx=enabled,-Dglx=disabled,virtual/${MLPREFIX}libgl libx11" + +# wants wayland-egl.pc, egl.pc, and the wayland +# DISTRO_FEATURE. +PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,virtual/${MLPREFIX}egl wayland wayland-native wayland-protocols" + +# wants gbm.pc egl.pc +PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled,virtual/${MLPREFIX}egl virtual/${MLPREFIX}libgbm libdrm" + +# wants egl.pc +PACKAGECONFIG[x11-egl] = "-Dx11_egl=enabled,-Dx11_egl=disabled,virtual/${MLPREFIX}egl libxcb" +PACKAGECONFIG[surfaceless-egl] = "-Dsurfaceless_egl=enabled,-Dsurfaceless_egl=disabled,virtual/${MLPREFIX}egl" + +# TODO: optionally build manpages and examples + +do_install:append() { + rm -rf ${D}${datadir}/zsh +} diff --git a/meta/recipes-graphics/wayland/libinput/run-ptest b/meta/recipes-graphics/wayland/libinput/run-ptest new file mode 100644 index 0000000000..d11e6eb25b --- /dev/null +++ b/meta/recipes-graphics/wayland/libinput/run-ptest @@ -0,0 +1,9 @@ +#!/bin/sh + +/usr/libexec/libinput/libinput-test-suite -j1 +if [ $? -eq 0 ]; then + echo 'PASS: libinput-test-suite' +else + echo 'FAIL: libinput-test-suite' +fi + diff --git a/meta/recipes-graphics/wayland/libinput_1.12.6.bb b/meta/recipes-graphics/wayland/libinput_1.12.6.bb deleted file mode 100644 index 46366b7511..0000000000 --- a/meta/recipes-graphics/wayland/libinput_1.12.6.bb +++ /dev/null @@ -1,29 +0,0 @@ -SUMMARY = "Library to handle input devices in Wayland compositors" -HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/" -SECTION = "libs" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=1f2ea9ebff3a2c6d458faf58492efb63" - -DEPENDS = "libevdev udev mtdev" - -SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \ - " -SRC_URI[md5sum] = "8cf10cc0fdfab865b105dd28283fa0fd" -SRC_URI[sha256sum] = "12b4023a3fc683d3d8127db573bdf925a2ef366615042f69c87e57c32a50f45d" - -UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)" -inherit meson pkgconfig lib_package - -PACKAGECONFIG ??= "" -PACKAGECONFIG[libwacom] = "-Dlibwacom=true,-Dlibwacom=false,libwacom" -PACKAGECONFIG[gui] = "-Ddebug-gui=true,-Ddebug-gui=false,cairo gtk+3" - -UDEVDIR = "`pkg-config --variable=udevdir udev`" - -EXTRA_OEMESON += "-Dudev-dir=${UDEVDIR} -Ddocumentation=false -Dtests=false" - -# package name changed in 1.8.1 upgrade: make sure package upgrades work -RPROVIDES_${PN} = "libinput" -RREPLACES_${PN} = "libinput" -RCONFLICTS_${PN} = "libinput" diff --git a/meta/recipes-graphics/wayland/libinput_1.25.0.bb b/meta/recipes-graphics/wayland/libinput_1.25.0.bb new file mode 100644 index 0000000000..894858e361 --- /dev/null +++ b/meta/recipes-graphics/wayland/libinput_1.25.0.bb @@ -0,0 +1,49 @@ +SUMMARY = "Library to handle input devices in Wayland compositors" +DESCRIPTION = "libinput is a library to handle input devices in Wayland \ +compositors and to provide a generic X.Org input driver. It provides \ +device detection, device handling, input device event processing and \ +abstraction so minimize the amount of custom input code compositors need to \ +provide the common set of functionality that users expect." +HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/" +SECTION = "libs" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=bab4ac7dc1c10bc0fb037dc76c46ef8a" + +DEPENDS = "libevdev udev mtdev" + +SRC_URI = "git://gitlab.freedesktop.org/libinput/libinput.git;protocol=https;branch=main \ + file://run-ptest \ + " +SRCREV = "3fd38d89276b679ac3565efd7c2150fd047902cb" +S = "${WORKDIR}/git" + +UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)" + +inherit meson pkgconfig lib_package ptest + +# Patch out build directory, otherwise it leaks into ptest binary +do_configure:append() { + sed -i -e "s,${WORKDIR},,g" config.h + if [ -e "litest-config.h" ]; then + sed -i -e "s,${WORKDIR},,g" litest-config.h + fi +} + +PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}" +PACKAGECONFIG[libwacom] = "-Dlibwacom=true,-Dlibwacom=false,libwacom" +PACKAGECONFIG[gui] = "-Ddebug-gui=true,-Ddebug-gui=false,cairo gtk+3 wayland-native" +PACKAGECONFIG[tests] = "-Dtests=true -Dinstall-tests=true,-Dtests=false -Dinstall-tests=false,libcheck" + +UDEVDIR = "`pkg-config --variable=udevdir udev`" + +EXTRA_OEMESON += "-Dudev-dir=${UDEVDIR} \ + -Ddocumentation=false \ + -Dzshcompletiondir=no" + +# package name changed in 1.8.1 upgrade: make sure package upgrades work +RPROVIDES:${PN} = "libinput" +RREPLACES:${PN} = "libinput" +RCONFLICTS:${PN} = "libinput" + +FILES:${PN}-ptest += "${libexecdir}/libinput/libinput-test-suite" diff --git a/meta/recipes-graphics/wayland/mtdev_1.1.5.bb b/meta/recipes-graphics/wayland/mtdev_1.1.7.bb index ccd0ebbfce..24803c4238 100644 --- a/meta/recipes-graphics/wayland/mtdev_1.1.5.bb +++ b/meta/recipes-graphics/wayland/mtdev_1.1.7.bb @@ -12,7 +12,6 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=ea6bd0268bb0fcd6b27698616ceee5d6" SRC_URI = "http://bitmath.org/code/${BPN}/${BP}.tar.bz2" -SRC_URI[md5sum] = "52c9610b6002f71d1642dc1a1cca5ec1" -SRC_URI[sha256sum] = "6677d5708a7948840de734d8b4675d5980d4561171c5a8e89e54adf7a13eba7f" +SRC_URI[sha256sum] = "a107adad2101fecac54ac7f9f0e0a0dd155d954193da55c2340c97f2ff1d814e" inherit autotools pkgconfig diff --git a/meta/recipes-graphics/wayland/required-distro-features.inc b/meta/recipes-graphics/wayland/required-distro-features.inc new file mode 100644 index 0000000000..bb4a0e8ebd --- /dev/null +++ b/meta/recipes-graphics/wayland/required-distro-features.inc @@ -0,0 +1,8 @@ +# distro features required by weston recipes + +inherit features_check + +# requires pam enabled if started via systemd +# +REQUIRED_DISTRO_FEATURES = "wayland opengl ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', 'pam', '', d)}" + diff --git a/meta/recipes-graphics/wayland/wayland-protocols_1.17.bb b/meta/recipes-graphics/wayland/wayland-protocols_1.36.bb index ca8f06c551..9b008ca534 100644 --- a/meta/recipes-graphics/wayland/wayland-protocols_1.17.bb +++ b/meta/recipes-graphics/wayland/wayland-protocols_1.36.bb @@ -9,14 +9,18 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \ file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53" -SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ - " -SRC_URI[md5sum] = "55ddd5fdb02b73b9de9559aaec267315" -SRC_URI[sha256sum] = "df1319cf9705643aea9fd16f9056f4e5b2471bd10c0cc3713d4a4cdc23d6812f" +SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/${PV}/downloads/wayland-protocols-${PV}.tar.xz" +SRC_URI[sha256sum] = "71fd4de05e79f9a1ca559fac30c1f8365fa10346422f9fe795f74d77b9ef7e92" -UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" +UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tags" +UPSTREAM_CHECK_REGEX = "releases/(?P<pver>.+)" -inherit allarch autotools pkgconfig +inherit meson pkgconfig allarch + +EXTRA_OEMESON += "-Dtests=false" PACKAGES = "${PN}" -FILES_${PN} += "${datadir}/pkgconfig/wayland-protocols.pc" +FILES:${PN} += "${datadir}/pkgconfig/wayland-protocols.pc" + +BBCLASSEXTEND = "native nativesdk" + diff --git a/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb b/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb new file mode 100644 index 0000000000..59d414a0a6 --- /dev/null +++ b/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb @@ -0,0 +1,23 @@ +SUMMARY = "Wayland utilities" +DESCRIPTION = "Wayland-utils contains (for now) \ +wayland-info, a utility for displaying information about the Wayland \ +protocols supported by a Wayland compositor. \ +wayland-info is basically a standalone version of weston-info as found \ +in weston repository. " +HOMEPAGE = "http://wayland.freedesktop.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=548a66038a77415e1df51118625e832f \ + " + +SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz" +SRC_URI[sha256sum] = "d9278c22554586881802540751bcc42569262bf80cd9ac9b0fd12ff4bd09a9e4" + +UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/tags" +UPSTREAM_CHECK_REGEX = "releases/(?P<pver>.+)" + +inherit meson pkgconfig + +DEPENDS += "wayland wayland-native wayland-protocols" + +PACKAGECONFIG ??= "drm" +PACKAGECONFIG[drm] = "-Ddrm=enabled,-Ddrm=disabled,libdrm" diff --git a/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch b/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch new file mode 100644 index 0000000000..bc753de113 --- /dev/null +++ b/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch @@ -0,0 +1,41 @@ +From b4c64b6f07743e3fb63ce52359bc664ab7d60df0 Mon Sep 17 00:00:00 2001 +From: Joshua Watt <JPEWhacker@gmail.com> +Date: Thu, 20 Feb 2020 15:20:45 -0600 +Subject: [PATCH] build: Fix strndup detection on MinGW + +GCC and meson conspire together to incorrectly detect that strndup() +exists on MinGW as __builtin_strndup, when no such function exists. As a +work around, meson will skip looking for __builtin functions if an +'#include' is in the prefix, so add '#include <string.h>' when looking +for strndup(). + +See: https://github.com/mesonbuild/meson/issues/3672 + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/wayland/merge_requests/63] + +Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> +Signed-off-by: Denys Dmytriyenko <denis@denix.org> +--- + meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/meson.build b/meson.build +index 3bc25c9..adde7b9 100644 +--- a/meson.build ++++ b/meson.build +@@ -38,11 +38,11 @@ have_funcs = [ + 'prctl', + 'memfd_create', + 'mremap', +- 'strndup', + ] + foreach f: have_funcs + config_h.set('HAVE_' + f.underscorify().to_upper(), cc.has_function(f)) + endforeach ++config_h.set('HAVE_STRNDUP', cc.has_function('strndup') and cc.has_header_symbol('string.h', 'strndup')) + config_h.set10('HAVE_XUCRED_CR_PID', cc.has_member('struct xucred', 'cr_pid', prefix : '#include <sys/ucred.h>')) + have_broken_msg_cmsg_cloexec = false + if host_machine.system() == 'freebsd' +-- +2.7.4 + diff --git a/meta/recipes-graphics/wayland/wayland/0002-Consider-pkgconfig-sysroot-for-pkgdatadir.patch b/meta/recipes-graphics/wayland/wayland/0002-Consider-pkgconfig-sysroot-for-pkgdatadir.patch new file mode 100644 index 0000000000..4573bb635a --- /dev/null +++ b/meta/recipes-graphics/wayland/wayland/0002-Consider-pkgconfig-sysroot-for-pkgdatadir.patch @@ -0,0 +1,46 @@ +From ff8ecbe8891d592e645927659318720f9e190054 Mon Sep 17 00:00:00 2001 +From: Andreas Cord-Landwehr <cordlandwehr@kde.org> +Date: Sun, 6 Feb 2022 17:23:46 +0100 +Subject: [PATCH] Consider pkgconfig sysroot for pkgdatadir + +For libs/cflags this is done automatically, but not for manually accessed +variables. This matches what wayland-protocols does. + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/272] +--- + src/meson.build | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/meson.build b/src/meson.build +index a8a1d2b..721e151 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -65,7 +65,7 @@ if get_option('scanner') + version: meson.project_version(), + variables: [ + 'datarootdir=' + join_paths('${prefix}', get_option('datadir')), +- 'pkgdatadir=' + join_paths('${datarootdir}', meson.project_name()), ++ 'pkgdatadir=' + join_paths('${pc_sysrootdir}${datarootdir}', meson.project_name()), + 'bindir=' + join_paths('${prefix}', get_option('bindir')), + 'wayland_scanner=${bindir}/wayland-scanner' + ], +@@ -211,7 +211,7 @@ if get_option('libraries') + filebase: 'wayland-server', + variables: [ + 'datarootdir=' + join_paths('${prefix}', get_option('datadir')), +- 'pkgdatadir=' + join_paths('${datarootdir}', meson.project_name()) ++ 'pkgdatadir=' + join_paths('${pc_sysrootdir}${datarootdir}', meson.project_name()) + ] + ) + +@@ -250,7 +250,7 @@ if get_option('libraries') + filebase: 'wayland-client', + variables: [ + 'datarootdir=' + join_paths('${prefix}', get_option('datadir')), +- 'pkgdatadir=' + join_paths('${datarootdir}', meson.project_name()) ++ 'pkgdatadir=' + join_paths('${pc_sysrootdir}${datarootdir}', meson.project_name()) + ] + ) + +-- +2.37.2 diff --git a/meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch b/meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch deleted file mode 100644 index ad3526d984..0000000000 --- a/meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch +++ /dev/null @@ -1,32 +0,0 @@ -Fix wayland-client and wayland-scanner pc files - -Upstream-Status: Pending - -Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk> - -Index: wayland-1.14.0/src/wayland-client.pc.in -=================================================================== ---- wayland-1.14.0.orig/src/wayland-client.pc.in -+++ wayland-1.14.0/src/wayland-client.pc.in -@@ -1,7 +1,7 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ - datarootdir=@datarootdir@ --pkgdatadir=@datadir@/@PACKAGE@ -+pkgdatadir=${pc_sysrootdir}@datadir@/@PACKAGE@ - libdir=@libdir@ - includedir=@includedir@ - -Index: wayland-1.14.0/src/wayland-scanner.pc.in -=================================================================== ---- wayland-1.14.0.orig/src/wayland-scanner.pc.in -+++ wayland-1.14.0/src/wayland-scanner.pc.in -@@ -2,7 +2,7 @@ prefix=@prefix@ - exec_prefix=@exec_prefix@ - datarootdir=@datarootdir@ - pkgdatadir=@datadir@/@PACKAGE@ --wayland_scanner=@bindir@/wayland-scanner -+wayland_scanner=wayland-scanner - - Name: Wayland Scanner - Description: Wayland scanner diff --git a/meta/recipes-graphics/wayland/wayland/run-ptest b/meta/recipes-graphics/wayland/wayland/run-ptest new file mode 100644 index 0000000000..7e8d9de046 --- /dev/null +++ b/meta/recipes-graphics/wayland/wayland/run-ptest @@ -0,0 +1,17 @@ +#!/bin/sh + +export WAYLAND_SCANNER=wayland-scanner +export TEST_DATA_DIR=tests/data +export TEST_OUTPUT_DIR=tests/output +export SED=sed +export WAYLAND_EGL_LIB=/usr/lib/libwayland-egl.so.1 +export NM=nm + +for i in `ls tests/*-test tests/wayland-egl-symbols-check tests/scanner-test.sh`; do + $i + if [ $? -eq 0 ]; then + echo "PASS: $i" + else + echo "FAIL: $i" + fi +done diff --git a/meta/recipes-graphics/wayland/wayland_1.17.0.bb b/meta/recipes-graphics/wayland/wayland_1.17.0.bb deleted file mode 100644 index d34bb39747..0000000000 --- a/meta/recipes-graphics/wayland/wayland_1.17.0.bb +++ /dev/null @@ -1,44 +0,0 @@ -SUMMARY = "Wayland, a protocol between a compositor and clients" -DESCRIPTION = "Wayland is a protocol for a compositor to talk to its clients \ -as well as a C library implementation of that protocol. The compositor can be \ -a standalone display server running on Linux kernel modesetting and evdev \ -input devices, an X application, or a wayland client itself. The clients can \ -be traditional applications, X servers (rootless or fullscreen) or other \ -display servers." -HOMEPAGE = "http://wayland.freedesktop.org" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \ - file://src/wayland-server.c;endline=24;md5=b8e046164a766bb1ede8ba38e9dcd7ce" - -DEPENDS = "expat libxml2 libffi wayland-native" - -SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ - file://fixpathinpcfiles.patch \ - " -SRC_URI[md5sum] = "d91f970aea11fd549eae023d06f91af3" -SRC_URI[sha256sum] = "72aa11b8ac6e22f4777302c9251e8fec7655dc22f9d94ee676c6b276f95f91a4" - -UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" - -inherit autotools pkgconfig - -EXTRA_OECONF = "--disable-documentation --with-host-scanner" -EXTRA_OECONF_class-native = "--disable-documentation --disable-libraries" - -# Wayland installs a M4 macro for other projects to use, which uses the target -# pkg-config to find files. Replace pkg-config with pkg-config-native. -do_install_append_class-native() { - sed -e 's,PKG_CHECK_MODULES(.*),,g' \ - -e 's,$PKG_CONFIG,pkg-config-native,g' \ - -i ${D}/${datadir}/aclocal/wayland-scanner.m4 -} - -sysroot_stage_all_append_class-target () { - rm ${SYSROOT_DESTDIR}/${datadir}/aclocal/wayland-scanner.m4 - cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/ -} - -FILES_${PN} = "${libdir}/*${SOLIBS}" -FILES_${PN}-dev += "${bindir} ${datadir}/wayland" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/wayland/wayland_1.22.0.bb b/meta/recipes-graphics/wayland/wayland_1.22.0.bb new file mode 100644 index 0000000000..e7babc9ec6 --- /dev/null +++ b/meta/recipes-graphics/wayland/wayland_1.22.0.bb @@ -0,0 +1,62 @@ +SUMMARY = "Wayland, a protocol between a compositor and clients" +DESCRIPTION = "Wayland is a protocol for a compositor to talk to its clients \ +as well as a C library implementation of that protocol. The compositor can be \ +a standalone display server running on Linux kernel modesetting and evdev \ +input devices, an X application, or a wayland client itself. The clients can \ +be traditional applications, X servers (rootless or fullscreen) or other \ +display servers." +HOMEPAGE = "http://wayland.freedesktop.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \ + file://src/wayland-server.c;endline=24;md5=b8e046164a766bb1ede8ba38e9dcd7ce" + +DEPENDS = "expat libffi wayland-native" + +SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz \ + file://run-ptest \ + file://0001-build-Fix-strndup-detection-on-MinGW.patch \ + file://0002-Consider-pkgconfig-sysroot-for-pkgdatadir.patch \ + " +SRC_URI[sha256sum] = "1540af1ea698a471c2d8e9d288332c7e0fd360c8f1d12936ebb7e7cbc2425842" + +UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland/-/tags" +UPSTREAM_CHECK_REGEX = "releases/(?P<pver>\d+\.\d+\.(?!9\d+)\d+)" + +inherit meson pkgconfig ptest + +PACKAGECONFIG ??= "dtd-validation" +PACKAGECONFIG[dtd-validation] = "-Ddtd_validation=true,-Ddtd_validation=false,libxml2,," + +EXTRA_OEMESON = "-Ddocumentation=false" +EXTRA_OEMESON:class-native = "-Ddocumentation=false" + +# Wayland installs a M4 macro for other projects to use, which uses the target +# pkg-config to find files. Replace pkg-config with pkg-config-native. +do_install:append:class-native() { + sed -e 's,PKG_CHECK_MODULES(.*),,g' \ + -e 's,$PKG_CONFIG,pkg-config-native,g' \ + -i ${D}/${datadir}/aclocal/wayland-scanner.m4 +} + +do_install_ptest() { + mkdir -p ${D}${PTEST_PATH}/tests/data + cp -rf ${B}/tests/*-test ${B}/tests/*-checker ${D}${PTEST_PATH}/tests + cp -rf ${B}/tests/*-checker ${D}${PTEST_PATH} + cp -rf ${S}/tests/scanner-test.sh ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/data/* ${D}${PTEST_PATH}/tests/data/ + cp -rf ${S}/egl/wayland-egl-symbols-check ${D}${PTEST_PATH}/tests/ +} + +sysroot_stage_all:append:class-target () { + rm ${SYSROOT_DESTDIR}/${datadir}/aclocal/wayland-scanner.m4 + cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/ +} + +PACKAGES =+ "${PN}-tools" + +FILES:${PN}-tools = "${bindir}/wayland-scanner" +FILES:${PN}-dev += "${datadir}/${BPN}/wayland-scanner.mk" + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN}-ptest += "binutils sed ${PN}-tools" diff --git a/meta/recipes-graphics/wayland/weston-conf.bb b/meta/recipes-graphics/wayland/weston-conf.bb deleted file mode 100644 index f52200c46a..0000000000 --- a/meta/recipes-graphics/wayland/weston-conf.bb +++ /dev/null @@ -1,35 +0,0 @@ -SUMMARY = "Weston, a Wayland compositor, configuration files" -HOMEPAGE = "http://wayland.freedesktop.org" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" - -PACKAGE_ARCH = "${MACHINE_ARCH}" - -CONFFILES_${PN} = "${sysconfdir}/xdg/weston/weston.ini" - -FILES_${PN} = "${sysconfdir}/xdg/weston/weston.ini" - -PACKAGES = "${PN}" - -do_configure[noexec] = '1' -do_compile[noexec] = '1' - -do_install() { - : -} - -do_install_qemux86() { - mkdir -p ${D}/${sysconfdir}/xdg/weston - cat << EOF > ${D}/${sysconfdir}/xdg/weston/weston.ini -[core] -backend=fbdev-backend.so -EOF -} - -do_install_qemux86-64() { - mkdir -p ${D}/${sysconfdir}/xdg/weston - cat << EOF > ${D}/${sysconfdir}/xdg/weston/weston.ini -[core] -backend=fbdev-backend.so -EOF -} diff --git a/meta/recipes-graphics/wayland/weston-init.bb b/meta/recipes-graphics/wayland/weston-init.bb index 22ba5f3fb3..83f0cea49c 100644 --- a/meta/recipes-graphics/wayland/weston-init.bb +++ b/meta/recipes-graphics/wayland/weston-init.bb @@ -2,30 +2,106 @@ SUMMARY = "Startup script and systemd unit file for the Weston Wayland composito LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +PACKAGE_ARCH = "${MACHINE_ARCH}" + SRC_URI = "file://init \ + file://weston.env \ + file://weston.ini \ file://weston.service \ + file://weston.socket \ + file://weston-socket.sh \ + file://weston-autologin \ file://weston-start" -S = "${WORKDIR}" +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" -do_install() { - install -Dm755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/weston - install -Dm0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}/weston.service +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xwayland', '', d)}" +PACKAGECONFIG:append:qemuriscv64 = " use-pixman" +PACKAGECONFIG:append:qemuppc64 = " use-pixman" + +PACKAGECONFIG[xwayland] = ",," +PACKAGECONFIG[no-idle-timeout] = ",," +PACKAGECONFIG[use-pixman] = ",," +DEFAULTBACKEND ??= "" +DEFAULTBACKEND:qemuall ?= "drm" + +do_install() { # Install weston-start script - install -Dm755 ${WORKDIR}/weston-start ${D}${bindir}/weston-start - sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start - sed -i 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${bindir}/weston-start + if [ "${VIRTUAL-RUNTIME_init_manager}" != "systemd" ]; then + install -Dm755 ${S}/weston-start ${D}${bindir}/weston-start + sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start + sed -i 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${bindir}/weston-start + install -Dm755 ${S}/init ${D}/${sysconfdir}/init.d/weston + sed -i 's#ROOTHOME#${ROOT_HOME}#' ${D}/${sysconfdir}/init.d/weston + fi + + # Install Weston systemd service + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + install -D -p -m0644 ${S}/weston.service ${D}${systemd_system_unitdir}/weston.service + install -D -p -m0644 ${S}/weston.socket ${D}${systemd_system_unitdir}/weston.socket + install -D -p -m0644 ${S}/weston-socket.sh ${D}${sysconfdir}/profile.d/weston-socket.sh + sed -i -e s:/etc:${sysconfdir}:g \ + -e s:/usr/bin:${bindir}:g \ + -e s:/var:${localstatedir}:g \ + ${D}${systemd_system_unitdir}/weston.service + fi + + if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then + install -D -p -m0644 ${S}/weston-autologin ${D}${sysconfdir}/pam.d/weston-autologin + fi + + install -D -p -m0644 ${S}/weston.ini ${D}${sysconfdir}/xdg/weston/weston.ini + install -Dm644 ${S}/weston.env ${D}${sysconfdir}/default/weston + + if [ -n "${DEFAULTBACKEND}" ]; then + sed -i -e "/^\[core\]/a backend=${DEFAULTBACKEND}-backend.so" ${D}${sysconfdir}/xdg/weston/weston.ini + fi + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then + sed -i -e "/^\[core\]/a xwayland=true" ${D}${sysconfdir}/xdg/weston/weston.ini + fi + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'no-idle-timeout', 'yes', 'no', d)}" = "yes" ]; then + sed -i -e "/^\[core\]/a idle-time=0" ${D}${sysconfdir}/xdg/weston/weston.ini + fi + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'use-pixman', 'yes', 'no', d)}" = "yes" ]; then + sed -i -e "/^\[core\]/a use-pixman=true" ${D}${sysconfdir}/xdg/weston/weston.ini + fi + + install -dm 755 -o weston -g weston ${D}/home/weston } -inherit allarch update-rc.d distro_features_check systemd +INHIBIT_UPDATERCD_BBCLASS = "${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', '1', '', d)}" + +inherit update-rc.d systemd useradd + +USERADD_PACKAGES = "${PN}" # rdepends on weston which depends on virtual/egl -REQUIRED_DISTRO_FEATURES = "opengl" +# +require ${THISDIR}/required-distro-features.inc -RDEPENDS_${PN} = "weston kbd" +RDEPENDS:${PN} = "weston kbd" INITSCRIPT_NAME = "weston" INITSCRIPT_PARAMS = "start 9 5 2 . stop 20 0 1 6 ." -SYSTEMD_SERVICE_${PN} = "weston.service" +FILES:${PN} += "\ + ${sysconfdir}/xdg/weston/weston.ini \ + ${sysconfdir}/profile.d/weston-socket.sh \ + ${systemd_system_unitdir}/weston.service \ + ${systemd_system_unitdir}/weston.socket \ + ${sysconfdir}/default/weston \ + ${sysconfdir}/pam.d/ \ + /home/weston \ + " + +CONFFILES:${PN} += "${sysconfdir}/xdg/weston/weston.ini ${sysconfdir}/default/weston" + +SYSTEMD_SERVICE:${PN} = "weston.service weston.socket" +USERADD_PARAM:${PN} = "--home /home/weston --shell /bin/sh --user-group -G video,input,render,wayland weston" +GROUPADD_PARAM:${PN} = "-r wayland; -r render" + diff --git a/meta/recipes-graphics/wayland/weston-init/init b/meta/recipes-graphics/wayland/weston-init/init index d3e87c6cef..a5c54e001e 100644 --- a/meta/recipes-graphics/wayland/weston-init/init +++ b/meta/recipes-graphics/wayland/weston-init/init @@ -30,8 +30,9 @@ done case "$1" in start) . /etc/profile + export HOME=ROOTHOME - weston-start -- $OPTARGS + WESTON_USER=weston weston-start $OPTARGS & ;; stop) diff --git a/meta/recipes-graphics/wayland/weston-init/weston-autologin b/meta/recipes-graphics/wayland/weston-init/weston-autologin new file mode 100644 index 0000000000..f6e6d106de --- /dev/null +++ b/meta/recipes-graphics/wayland/weston-init/weston-autologin @@ -0,0 +1,11 @@ +auth required pam_nologin.so +auth required pam_unix.so try_first_pass nullok + +account required pam_nologin.so +account required pam_unix.so + +session required pam_env.so +session required pam_unix.so +-session optional pam_systemd.so type=wayland class=user desktop=weston +-session optional pam_loginuid.so + diff --git a/meta/recipes-graphics/wayland/weston-init/weston-socket.sh b/meta/recipes-graphics/wayland/weston-init/weston-socket.sh new file mode 100755 index 0000000000..86389d63a3 --- /dev/null +++ b/meta/recipes-graphics/wayland/weston-init/weston-socket.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# set weston variables for use with global weston socket +global_socket="/run/wayland-0" +if [ -e "$global_socket" ]; then + weston_group=$(stat -c "%G" "$global_socket") + if [ "$(id -u)" = "0" ]; then + export WAYLAND_DISPLAY="$global_socket" + else + case "$(groups "$USER")" in + *"$weston_group"*) + export WAYLAND_DISPLAY="$global_socket" + ;; + *) + ;; + esac + fi + unset weston_group +fi +unset global_socket diff --git a/meta/recipes-graphics/wayland/weston-init/weston-start b/meta/recipes-graphics/wayland/weston-init/weston-start index e72fbaaac4..01670cd4f5 100755 --- a/meta/recipes-graphics/wayland/weston-init/weston-start +++ b/meta/recipes-graphics/wayland/weston-init/weston-start @@ -5,8 +5,8 @@ export PATH="/sbin:/usr/sbin:/bin:/usr/bin" usage() { - cat <<EOF - $0 [<openvt arguments>] [-- <weston options>] + cat <<EOF + $0 [<weston options>] EOF } @@ -18,30 +18,25 @@ add_weston_argument() { weston_args="$weston_args $1" } -# Add openvt extra argument -add_openvt_argument() { - openvt_args="$openvt_args $1" +## Add module to --modules argument +add_weston_module() { + if [[ "x${weston_modules}" == "x" ]]; then + weston_modules="--modules " + fi; + weston_modules+="${1}," } if [ -n "$WAYLAND_DISPLAY" ]; then echo "ERROR: A Wayland compositor is already running, nested Weston instance is not supported yet." exit 1 fi -if [ -n "$DISPLAY" ]; then - launcher="weston" -else - launcher="weston-launch --" -fi -openvt_args="-s" -while [ -n "$1" ]; do - if [ "$1" = "--" ]; then - shift - break +if [ -n "$WESTON_USER" ]; then + if [ -z "$WESTON_GROUP" ]; then + # no explicit WESTON_GROUP given, therefore use WESTON_USER + export WESTON_GROUP="${WESTON_USER}" fi - openvt_args="$openvt_args $1" - shift -done +fi weston_args=$* @@ -55,15 +50,22 @@ if [ -d "$modules_dir" ]; then # process module . $m + if [[ x"{$weston_modules}" != "x" ]]; then + add_weston_argument "${weston_modules}" + fi; done fi if test -z "$XDG_RUNTIME_DIR"; then - export XDG_RUNTIME_DIR=/run/user/`id -u` - if ! test -d "$XDG_RUNTIME_DIR"; then - mkdir --parents $XDG_RUNTIME_DIR - chmod 0700 $XDG_RUNTIME_DIR - fi + export XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` + if ! test -d "$XDG_RUNTIME_DIR"; then + mkdir --parents $XDG_RUNTIME_DIR + chmod 0700 $XDG_RUNTIME_DIR + fi + if [ -n "$WESTON_USER" ] + then + chown $WESTON_USER:$WESTON_GROUP $XDG_RUNTIME_DIR + fi fi -exec openvt $openvt_args -- $launcher $weston_args --log=@LOCALSTATEDIR@/log/weston.log +su -c "XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` weston $weston_args --log=/tmp/weston.log" $WESTON_USER diff --git a/meta/recipes-graphics/wayland/weston-init/weston.env b/meta/recipes-graphics/wayland/weston-init/weston.env new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/meta/recipes-graphics/wayland/weston-init/weston.env diff --git a/meta/recipes-graphics/wayland/weston-init/weston.ini b/meta/recipes-graphics/wayland/weston-init/weston.ini new file mode 100644 index 0000000000..6bd5aef55a --- /dev/null +++ b/meta/recipes-graphics/wayland/weston-init/weston.ini @@ -0,0 +1,75 @@ +# configuration file for Weston + +[core] +#modules=xwayland.so,cms-colord.so +#shell=desktop-shell.so +#gbm-format=xrgb2101010 +require-input=false + +#[shell] +#background-image=/usr/share/backgrounds/gnome/Aqua.jpg +#background-color=0xff002244 +#background-type=tile +#clock-format=minutes +#panel-color=0x90ff0000 +#locking=true +#animation=zoom +#startup-animation=fade +#binding-modifier=ctrl +#num-workspaces=6 +#cursor-theme=whiteglass +#cursor-size=24 + +#lockscreen-icon=/usr/share/icons/gnome/256x256/actions/lock.png +#lockscreen=/usr/share/backgrounds/gnome/Garden.jpg +#homescreen=/usr/share/backgrounds/gnome/Blinds.jpg +#animation=fade + +#[launcher] +#icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png +#path=/usr/bin/gnome-terminal + +#[launcher] +#icon=/usr/share/icons/gnome/24x24/apps/utilities-terminal.png +#path=/usr/bin/weston-terminal + +#[launcher] +#icon=/usr/share/icons/hicolor/24x24/apps/google-chrome.png +#path=/usr/bin/google-chrome + +#[launcher] +#icon=/usr/share/icons/gnome/24x24/apps/arts.png +#path=/build/weston-0lEgCh/weston-1.11.0/weston-flower + +#[input-method] +#path=/usr/libexec/weston-keyboard + +#[output] +#name=LVDS1 +#mode=1680x1050 +#transform=90 +#icc_profile=/usr/share/color/icc/colord/Bluish.icc + +#[output] +#name=VGA1 +#mode=173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync +#transform=flipped + +#[output] +#name=X1 +#mode=1024x768 +#transform=flipped-90 + +#[libinput] +#enable_tap=true + +#[touchpad] +#constant_accel_factor = 50 +#min_accel_factor = 0.16 +#max_accel_factor = 1.0 + +[screen-share] +command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize + +#[xwayland] +#path=/usr/bin/Xwayland diff --git a/meta/recipes-graphics/wayland/weston-init/weston.service b/meta/recipes-graphics/wayland/weston-init/weston.service index 18f72626e0..80745998ed 100644 --- a/meta/recipes-graphics/wayland/weston-init/weston.service +++ b/meta/recipes-graphics/wayland/weston-init/weston.service @@ -1,13 +1,71 @@ +# This is a system unit for launching Weston with auto-login as the +# user configured here. +# +# Weston must be built with systemd support, and your weston.ini must load +# the plugin systemd-notify.so. [Unit] -Description=Weston Wayland Compositor -RequiresMountsFor=/run +Description=Weston, a Wayland compositor, as a system service +Documentation=man:weston(1) man:weston.ini(5) +Documentation=http://wayland.freedesktop.org/ + +# Make sure we are started after logins are permitted. +Requires=systemd-user-sessions.service +After=systemd-user-sessions.service + +# If Plymouth is used, we want to start when it is on its way out. +After=plymouth-quit-wait.service + +# D-Bus is necessary for contacting logind. Logind is required. +Wants=dbus.socket +After=dbus.socket + +# Ensure the socket is present +Requires=weston.socket + +# Since we are part of the graphical session, make sure we are started before +# it is complete. +Before=graphical.target + +# Prevent starting on systems without virtual consoles, Weston requires one +# for now. +ConditionPathExists=/dev/tty0 [Service] -User=root -PAMName=login -EnvironmentFile=-/etc/default/weston -ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS +# Requires systemd-notify.so Weston plugin. +Type=notify +EnvironmentFile=/etc/default/weston +ExecStart=/usr/bin/weston --modules=systemd-notify.so -[Install] -WantedBy=multi-user.target +# Optional watchdog setup +#TimeoutStartSec=60 +#WatchdogSec=20 +# The user to run Weston as. +User=weston +Group=weston + +# Make sure the working directory is the users home directory +WorkingDirectory=/home/weston + +# Set up a full user session for the user, required by Weston. +PAMName=weston-autologin + +# A virtual terminal is needed. +TTYPath=/dev/tty7 +TTYReset=yes +TTYVHangup=yes +TTYVTDisallocate=yes + +# Fail to start if not controlling the tty. +StandardInput=tty-fail +StandardOutput=journal +StandardError=journal + +# Log this user with utmp, letting it show up with commands 'w' and 'who'. +UtmpIdentifier=tty7 +UtmpMode=user + +[Install] +# Note: If you only want weston to start on-demand, remove this line with a +# service drop file +WantedBy=graphical.target diff --git a/meta/recipes-graphics/wayland/weston-init/weston.socket b/meta/recipes-graphics/wayland/weston-init/weston.socket new file mode 100644 index 0000000000..c1bdc83c05 --- /dev/null +++ b/meta/recipes-graphics/wayland/weston-init/weston.socket @@ -0,0 +1,14 @@ +[Unit] +Description=Weston socket +RequiresMountsFor=/run + +[Socket] +ListenStream=/run/wayland-0 +SocketMode=0775 +SocketUser=weston +SocketGroup=wayland +RemoveOnStop=yes + +[Install] +WantedBy=sockets.target + diff --git a/meta/recipes-graphics/wayland/weston/0001-libweston-tools-Include-libgen.h-for-basename-signat.patch b/meta/recipes-graphics/wayland/weston/0001-libweston-tools-Include-libgen.h-for-basename-signat.patch new file mode 100644 index 0000000000..1d281fa832 --- /dev/null +++ b/meta/recipes-graphics/wayland/weston/0001-libweston-tools-Include-libgen.h-for-basename-signat.patch @@ -0,0 +1,48 @@ +From 2b53236ac637dfa7fb0f438f7391a73f6ef92a06 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Thu, 14 Dec 2023 09:13:54 -0800 +Subject: [PATCH] libweston,tools: Include libgen.h for basename signature + +Latest musl has removed the declaration from string.h [1] as it only +implements POSIX version alone and string.h in glibc implements GNU +version of basename. This now results in compile errors on musl. + +This might be a warning with older compilers but it is error with +Clang-17+ as it treats -Wimplicit-function-declaration as error + +[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7 + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/1420] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + libweston/backend-drm/libbacklight.c | 1 + + tools/zunitc/src/zunitc_impl.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/libweston/backend-drm/libbacklight.c b/libweston/backend-drm/libbacklight.c +index ca7f2d68..74690fa7 100644 +--- a/libweston/backend-drm/libbacklight.c ++++ b/libweston/backend-drm/libbacklight.c +@@ -41,6 +41,7 @@ + #include <drm.h> + #include <fcntl.h> + #include <malloc.h> ++#include <libgen.h> + #include <string.h> + #include <errno.h> + +diff --git a/tools/zunitc/src/zunitc_impl.c b/tools/zunitc/src/zunitc_impl.c +index 18f03015..9b460fa0 100644 +--- a/tools/zunitc/src/zunitc_impl.c ++++ b/tools/zunitc/src/zunitc_impl.c +@@ -27,6 +27,7 @@ + + #include <errno.h> + #include <fcntl.h> ++#include <libgen.h> + #include <stdarg.h> + #include <stdbool.h> + #include <stdio.h> +-- +2.43.0 + diff --git a/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch deleted file mode 100644 index 09ec1559ec..0000000000 --- a/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch +++ /dev/null @@ -1,78 +0,0 @@ -From ad1d2161c811cff25d1684c33611f300adb753bc Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 29 May 2015 20:56:00 -0700 -Subject: [PATCH] make error() portable - -error() is not posix but gnu extension so may not be available on all -kind of systemsi e.g. musl. - -Upstream-Status: Submitted - -Signed-off-by: Khem Raj <raj.khem@gmail.com> - ---- - configure.ac | 2 ++ - libweston/weston-error.h | 20 ++++++++++++++++++++ - libweston/weston-launch.c | 2 +- - 3 files changed, 23 insertions(+), 1 deletion(-) - create mode 100644 libweston/weston-error.h - -diff --git a/configure.ac b/configure.ac -index 7aebbdb..dc9c802 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -109,6 +109,8 @@ AC_CHECK_DECL(CLOCK_MONOTONIC,[], - [[#include <time.h>]]) - AC_CHECK_HEADERS([execinfo.h]) - -+AC_CHECK_HEADERS([error.h]) -+ - AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate]) - - # check for libdrm as a build-time dependency only -diff --git a/libweston/weston-error.h b/libweston/weston-error.h -new file mode 100644 -index 0000000..2089d02 ---- /dev/null -+++ b/libweston/weston-error.h -@@ -0,0 +1,20 @@ -+#ifndef _WESTON_ERROR_H -+#define _WESTON_ERROR_H -+ -+#if defined(HAVE_ERROR_H) -+#include <error.h> -+#else -+#include <err.h> -+#include <string.h> -+#define _weston_error(S, E, F, ...) do { \ -+ if (E) \ -+ err(S, F ": %s", ##__VA_ARGS__, strerror(E)); \ -+ else \ -+ err(S, F, ##__VA_ARGS__); \ -+} while(0) -+ -+#define error _weston_error -+#endif -+ -+#endif -+ -diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c -index 1adcf21..166bf3b 100644 ---- a/libweston/weston-launch.c -+++ b/libweston/weston-launch.c -@@ -33,7 +33,6 @@ - #include <poll.h> - #include <errno.h> - --#include <error.h> - #include <getopt.h> - - #include <sys/types.h> -@@ -59,6 +58,7 @@ - #endif - - #include "weston-launch.h" -+#include "weston-error.h" - - #define DRM_MAJOR 226 - diff --git a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch deleted file mode 100644 index d648538b89..0000000000 --- a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch +++ /dev/null @@ -1,173 +0,0 @@ -From b98b9dbda902225cdd972b5bff6a641c36cc7e90 Mon Sep 17 00:00:00 2001 -From: Tom Hochstein <tom.hochstein@nxp.com> -Date: Wed, 22 Feb 2017 15:53:30 +0200 -Subject: [PATCH] weston-launch: Provide a default version that doesn't require PAM - -weston-launch requires PAM for starting weston as a non-root user. - -Since starting weston as root is a valid use case by itself, if -PAM is not available, provide a default version of weston-launch -without non-root-user support. - -Upstream-Status: Pending - -Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> -Signed-off-by: Denys Dmytriyenko <denys@ti.com> - ---- - configure.ac | 9 +++++++-- - libweston/weston-launch.c | 20 ++++++++++++++++++++ - 2 files changed, 27 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index dc9c802..48cf5cb 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -451,13 +451,17 @@ AC_ARG_ENABLE(resize-optimization, - AS_IF([test "x$enable_resize_optimization" = "xyes"], - [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])]) - -+AC_ARG_WITH(pam, -+ AS_HELP_STRING([--with-pam], [Use PAM]), -+ [use_pam=$withval], [use_pam=yes]) - AC_ARG_ENABLE(weston-launch, [ --enable-weston-launch],, enable_weston_launch=yes) - AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch = xyes) --if test x$enable_weston_launch = xyes; then -+if test x$enable_weston_launch = xyes -a x$use_pam = xyes; then - WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no]) - if test x$have_pam = xno; then -- AC_ERROR([weston-launch requires pam]) -+ AC_ERROR([PAM support is explicitly requested, but libpam couldn't be found]) - fi -+ AC_DEFINE([HAVE_PAM], [1], [Define if PAM is available]) - fi - - AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes") -@@ -702,6 +706,7 @@ AC_MSG_RESULT([ - Enable developer documentation ${enable_devdocs} - - weston-launch utility ${enable_weston_launch} -+ PAM support ${use_pam} - systemd-login support ${have_systemd_login} - systemd notify support ${enable_systemd_notify} - -diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c -index 166bf3b..6fb9232 100644 ---- a/libweston/weston-launch.c -+++ b/libweston/weston-launch.c -@@ -51,7 +51,9 @@ - - #include <pwd.h> - #include <grp.h> -+#ifdef HAVE_PAM - #include <security/pam_appl.h> -+#endif - - #ifdef HAVE_SYSTEMD_LOGIN - #include <systemd/sd-login.h> -@@ -101,8 +103,10 @@ drmSetMaster(int drm_fd) - #endif - - struct weston_launch { -+#ifdef HAVE_PAM - struct pam_conv pc; - pam_handle_t *ph; -+#endif - int tty; - int ttynr; - int sock[2]; -@@ -189,6 +193,7 @@ weston_launch_allowed(struct weston_launch *wl) - return false; - } - -+#ifdef HAVE_PAM - static int - pam_conversation_fn(int msg_count, - const struct pam_message **messages, -@@ -229,6 +234,7 @@ setup_pam(struct weston_launch *wl) - - return 0; - } -+#endif - - static int - setup_launcher_socket(struct weston_launch *wl) -@@ -422,6 +428,7 @@ quit(struct weston_launch *wl, int status) - close(wl->signalfd); - close(wl->sock[0]); - -+#ifdef HAVE_PAM - if (wl->new_user) { - err = pam_close_session(wl->ph, 0); - if (err) -@@ -429,6 +436,7 @@ quit(struct weston_launch *wl, int status) - err, pam_strerror(wl->ph, err)); - pam_end(wl->ph, err); - } -+#endif - - if (ioctl(wl->tty, KDSKBMUTE, 0) && - ioctl(wl->tty, KDSKBMODE, wl->kb_mode)) -@@ -608,6 +616,7 @@ setup_session(struct weston_launch *wl, char **child_argv) - setenv("HOME", wl->pw->pw_dir, 1); - setenv("SHELL", wl->pw->pw_shell, 1); - -+#ifdef HAVE_PAM - env = pam_getenvlist(wl->ph); - if (env) { - for (i = 0; env[i]; ++i) { -@@ -616,6 +625,7 @@ setup_session(struct weston_launch *wl, char **child_argv) - } - free(env); - } -+#endif - - /* - * We open a new session, so it makes sense -@@ -683,8 +693,10 @@ static void - help(const char *name) - { - fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name); -+#ifdef HAVE_PAM - fprintf(stderr, " -u, --user Start session as specified username,\n" - " e.g. -u joe, requires root.\n"); -+#endif - fprintf(stderr, " -t, --tty Start session on alternative tty,\n" - " e.g. -t /dev/tty4, requires -u option.\n"); - fprintf(stderr, " -v, --verbose Be verbose\n"); -@@ -698,7 +710,9 @@ main(int argc, char *argv[]) - int i, c; - char *tty = NULL; - struct option opts[] = { -+#ifdef HAVE_PAM - { "user", required_argument, NULL, 'u' }, -+#endif - { "tty", required_argument, NULL, 't' }, - { "verbose", no_argument, NULL, 'v' }, - { "help", no_argument, NULL, 'h' }, -@@ -710,9 +724,13 @@ main(int argc, char *argv[]) - while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) { - switch (c) { - case 'u': -+#ifdef HAVE_PAM - wl.new_user = optarg; - if (getuid() != 0) - error(1, 0, "Permission denied. -u allowed for root only"); -+#else -+ error(1, 0, "-u is unsupported in this weston-launch build"); -+#endif - break; - case 't': - tty = optarg; -@@ -753,8 +771,10 @@ main(int argc, char *argv[]) - if (setup_tty(&wl, tty) < 0) - exit(EXIT_FAILURE); - -+#ifdef HAVE_PAM - if (wl.new_user && setup_pam(&wl) < 0) - exit(EXIT_FAILURE); -+#endif - - if (setup_launcher_socket(&wl) < 0) - exit(EXIT_FAILURE); diff --git a/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start b/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start new file mode 100644 index 0000000000..a97e7b38d9 --- /dev/null +++ b/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start @@ -0,0 +1,9 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: Huawei Inc. +# SPDX-License-Identifier: Apache-2.0 + + +if [[ -x "/usr/lib/weston/systemd-notify.so" ]]; then + add_weston_module "systemd-notify.so" +fi diff --git a/meta/recipes-graphics/wayland/weston/xwayland.weston-start b/meta/recipes-graphics/wayland/weston/xwayland.weston-start index b483c97cf1..342ac8d129 100644 --- a/meta/recipes-graphics/wayland/weston/xwayland.weston-start +++ b/meta/recipes-graphics/wayland/weston/xwayland.weston-start @@ -1,7 +1,6 @@ #!/bin/sh if type Xwayland >/dev/null 2>/dev/null; then - mkdir -p /tmp/.X11-unix - - add_weston_argument "--modules=xwayland.so" + mkdir -m 775 -p /tmp/.X11-unix + chown root:video /tmp/.X11-unix fi diff --git a/meta/recipes-graphics/wayland/weston_13.0.0.bb b/meta/recipes-graphics/wayland/weston_13.0.0.bb new file mode 100644 index 0000000000..cb0024c5ca --- /dev/null +++ b/meta/recipes-graphics/wayland/weston_13.0.0.bb @@ -0,0 +1,146 @@ +SUMMARY = "Weston, a Wayland compositor" +DESCRIPTION = "Weston is the reference implementation of a Wayland compositor" +HOMEPAGE = "http://wayland.freedesktop.org" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \ + file://libweston/compositor.c;endline=27;md5=eb6d5297798cabe2ddc65e2af519bcf0 \ + " + +SRC_URI = "https://gitlab.freedesktop.org/wayland/weston/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz \ + file://0001-libweston-tools-Include-libgen.h-for-basename-signat.patch \ + file://weston.png \ + file://weston.desktop \ + file://xwayland.weston-start \ + file://systemd-notify.weston-start \ + " + +SRC_URI[sha256sum] = "52ff1d4aa2394a2e416c85a338b627ce97fa71d43eb762fd4aaf145d36fc795a" + +UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/weston/-/tags" +UPSTREAM_CHECK_REGEX = "releases/(?P<pver>\d+\.\d+\.(?!9\d+)\d+)" + +inherit meson pkgconfig useradd + +# depends on virtual/egl +# +require ${THISDIR}/required-distro-features.inc + +DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0" +DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native" + +LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'lto', '-Wl,-z,undefs', '', d)}" + +WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}" + +EXTRA_OEMESON += "-Dpipewire=false" + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms wayland egl clients', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \ + ${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', '', 'headless', d)} \ + image-jpeg \ + screenshare \ + shell-desktop \ + shell-fullscreen \ + shell-ivi \ + shell-kiosk \ + " + +# Can be 'damage', 'im', 'egl', 'shm', 'touch', 'dmabuf-feedback', 'dmabuf-v4l', 'dmabuf-egl' or 'all' +SIMPLECLIENTS ?= "all" + +# +# Compositor choices +# +# Weston on KMS +PACKAGECONFIG[kms] = "-Dbackend-drm=true,-Dbackend-drm=false,drm udev seatd virtual/egl virtual/libgles2 virtual/libgbm mtdev" +# Weston on Wayland (nested Weston) +PACKAGECONFIG[wayland] = "-Dbackend-wayland=true,-Dbackend-wayland=false,virtual/egl virtual/libgles2" +# Weston on X11 +PACKAGECONFIG[x11] = "-Dbackend-x11=true,-Dbackend-x11=false,virtual/libx11 libxcb libxcursor" +# Headless Weston +PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false" +# Weston on RDP +PACKAGECONFIG[rdp] = "-Dbackend-rdp=true,-Dbackend-rdp=false,freerdp" +# VA-API desktop recorder +PACKAGECONFIG[vaapi] = "-Dbackend-drm-screencast-vaapi=true,-Dbackend-drm-screencast-vaapi=false,libva" +# Weston with EGL support +PACKAGECONFIG[egl] = "-Drenderer-gl=true,-Drenderer-gl=false,virtual/egl" +# Weston with lcms support +PACKAGECONFIG[lcms] = "-Dcolor-management-lcms=true,-Dcolor-management-lcms=false,lcms" +# Weston with webp support +PACKAGECONFIG[webp] = "-Dimage-webp=true,-Dimage-webp=false,libwebp" +# Weston with systemd support +PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd dbus" +# Weston with Xwayland support (requires X11 and Wayland) +PACKAGECONFIG[xwayland] = "-Dxwayland=true,-Dxwayland=false,libxcb libxcursor xcb-util-cursor xwayland" +# colord CMS support +PACKAGECONFIG[colord] = "-Ddeprecated-color-management-colord=true,-Ddeprecated-color-management-colord=false,colord" +# Clients support +PACKAGECONFIG[clients] = "-Dsimple-clients=${SIMPLECLIENTS} -Ddemo-clients=true,-Dsimple-clients= -Ddemo-clients=false" +# Virtual remote output with GStreamer on DRM backend +PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base" +# Weston with screen-share support +PACKAGECONFIG[screenshare] = "-Dscreenshare=true,-Dscreenshare=false" +# Traditional desktop shell +PACKAGECONFIG[shell-desktop] = "-Dshell-desktop=true,-Dshell-desktop=false" +# Fullscreen shell +PACKAGECONFIG[shell-fullscreen] = "-Dshell-fullscreen=true,-Dshell-fullscreen=false" +# In-Vehicle Infotainment (IVI) shell +PACKAGECONFIG[shell-ivi] = "-Dshell-ivi=true,-Dshell-ivi=false" +# Kiosk shell +PACKAGECONFIG[shell-kiosk] = "-Dshell-kiosk=true,-Dshell-kiosk=false" +# JPEG image loading support +PACKAGECONFIG[image-jpeg] = "-Dimage-jpeg=true,-Dimage-jpeg=false, jpeg" +# screencasting via PipeWire +PACKAGECONFIG[pipewire] = "-Dbackend-pipewire=true,-Dbackend-pipewire=false,pipewire" +# VNC remote screensharing +PACKAGECONFIG[vnc] = "-Dbackend-vnc=true,-Dbackend-vnc=false,neatvnc" + + +do_install:append() { + # Weston doesn't need the .la files to load modules, so wipe them + rm -f ${D}/${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.la + + # If X11, ship a desktop file to launch it + if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then + install -d ${D}${datadir}/applications + install ${UNPACKDIR}/weston.desktop ${D}${datadir}/applications + + install -d ${D}${datadir}/icons/hicolor/48x48/apps + install ${UNPACKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps + fi + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then + install -Dm 644 ${UNPACKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland + fi + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'yes', 'no', d)}" = "yes" ]; then + install -Dm 644 ${UNPACKDIR}/systemd-notify.weston-start ${D}${datadir}/weston-start/systemd-notify + fi + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then + chmod u+s ${D}${bindir}/weston-launch + fi +} + +PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \ + libweston-${WESTON_MAJOR_VERSION} ${PN}-examples" + +FILES:${PN}-dev += "${libdir}/${BPN}/libexec_weston.so" +FILES:${PN} = "${sysconfdir} ${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so* ${datadir}" + +FILES:libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so" +SUMMARY:libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'." + +FILES:${PN}-examples = "${bindir}/*" + +FILES:${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so" +RDEPENDS:${PN}-xwayland += "xwayland" + +RDEPENDS:${PN} += "xkeyboard-config" +RRECOMMENDS:${PN} = "weston-init liberation-fonts" +RRECOMMENDS:${PN}-dev += "wayland-protocols" + +USERADD_PACKAGES = "${PN}" +GROUPADD_PARAM:${PN} = "--system weston-launch" diff --git a/meta/recipes-graphics/wayland/weston_5.0.0.bb b/meta/recipes-graphics/wayland/weston_5.0.0.bb deleted file mode 100644 index e51710928a..0000000000 --- a/meta/recipes-graphics/wayland/weston_5.0.0.bb +++ /dev/null @@ -1,108 +0,0 @@ -SUMMARY = "Weston, a Wayland compositor" -DESCRIPTION = "Weston is the reference implementation of a Wayland compositor" -HOMEPAGE = "http://wayland.freedesktop.org" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \ - file://libweston/compositor.c;endline=27;md5=6c53bbbd99273f4f7c4affa855c33c0a" - -SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ - file://weston.png \ - file://weston.desktop \ - file://0001-make-error-portable.patch \ - file://xwayland.weston-start \ - file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ -" -SRC_URI[md5sum] = "752a04ce3c65af4884cfac4e57231bdb" -SRC_URI[sha256sum] = "15a23423bcfa45e31e1dedc0cd524ba71e2930df174fde9c99b71a537c4e4caf" - -UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html" - -inherit autotools pkgconfig useradd distro_features_check -# depends on virtual/egl -REQUIRED_DISTRO_FEATURES = "opengl" - -DEPENDS = "libxkbcommon gdk-pixbuf pixman cairo glib-2.0 jpeg" -DEPENDS += "wayland wayland-protocols libinput virtual/egl pango wayland-native" - -WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}" - -EXTRA_OECONF = "--enable-setuid-install \ - --disable-rdp-compositor \ - " -PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ - ${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd x11', d)} \ - clients launch" -# -# Compositor choices -# -# Weston on KMS -PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa virtual/libgbm mtdev" -# Weston on Wayland (nested Weston) -PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa" -# Weston on X11 -PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo" -# Headless Weston -PACKAGECONFIG[headless] = "--enable-headless-compositor,--disable-headless-compositor" -# Weston on framebuffer -PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor,--disable-fbdev-compositor,udev mtdev" -# weston-launch -PACKAGECONFIG[launch] = "--enable-weston-launch,--disable-weston-launch,drm" -# VA-API desktop recorder -PACKAGECONFIG[vaapi] = "--enable-vaapi-recorder,--disable-vaapi-recorder,libva" -# Weston with EGL support -PACKAGECONFIG[egl] = "--enable-egl --enable-simple-egl-clients,--disable-egl --disable-simple-egl-clients,virtual/egl" -# Weston with cairo glesv2 support -PACKAGECONFIG[cairo-glesv2] = "--with-cairo-glesv2,--with-cairo=image,cairo" -# Weston with lcms support -PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms" -# Weston with webp support -PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp" -# Weston with systemd-login support -PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus" -# Weston with Xwayland support (requires X11 and Wayland) -PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland" -# colord CMS support -PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord" -# Clients support -PACKAGECONFIG[clients] = "--enable-clients --enable-simple-clients --enable-demo-clients-install,--disable-clients --disable-simple-clients" -# Weston with PAM support -PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam" - -do_install_append() { - # Weston doesn't need the .la files to load modules, so wipe them - rm -f ${D}/${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.la - - # If X11, ship a desktop file to launch it - if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then - install -d ${D}${datadir}/applications - install ${WORKDIR}/weston.desktop ${D}${datadir}/applications - - install -d ${D}${datadir}/icons/hicolor/48x48/apps - install ${WORKDIR}/weston.png ${D}${datadir}/icons/hicolor/48x48/apps - fi - - if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then - install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland - fi -} - -PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \ - libweston-${WESTON_MAJOR_VERSION} ${PN}-examples" - -FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir}" - -FILES_libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so" -SUMMARY_libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'." - -FILES_${PN}-examples = "${bindir}/*" - -FILES_${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so" -RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland" - -RDEPENDS_${PN} += "xkeyboard-config" -RRECOMMENDS_${PN} = "weston-conf liberation-fonts" -RRECOMMENDS_${PN}-dev += "wayland-protocols" - -USERADD_PACKAGES = "${PN}" -GROUPADD_PARAM_${PN} = "--system weston-launch" diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf b/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf new file mode 100644 index 0000000000..7ab7460816 --- /dev/null +++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf @@ -0,0 +1,2 @@ +cap_sys_admin @USER@ +none * diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm index 6c548551b8..116bb278bc 100755 --- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm +++ b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm @@ -38,6 +38,14 @@ case "$1" in if [ -e /dev/hidraw0 ]; then chmod o+rw /dev/hidraw* fi + # Make sure that the Xorg has the cap_sys_admin capability which is + # needed for setting the drm master + if ! grep -q "^auth.*pam_cap\.so" /etc/pam.d/su; then + echo "auth optional pam_cap.so" >>/etc/pam.d/su + fi + if ! /usr/sbin/getcap $XSERVER | grep -q cap_sys_admin; then + /usr/sbin/setcap cap_sys_admin+eip $XSERVER + fi fi # Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211] diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb b/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb index a77c56445c..cd4acf8155 100644 --- a/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb +++ b/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb @@ -1,8 +1,7 @@ SUMMARY = "Simple Xserver Init Script (no dm)" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" SECTION = "x11" -PR = "r31" SRC_URI = "file://xserver-nodm \ file://Xserver \ @@ -10,16 +9,18 @@ SRC_URI = "file://xserver-nodm \ file://gplv2-license.patch \ file://xserver-nodm.service.in \ file://xserver-nodm.conf.in \ + file://capability.conf \ " -S = "${WORKDIR}" +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" # Since we refer to ROOTLESS_X which is normally enabled per-machine PACKAGE_ARCH = "${MACHINE_ARCH}" -inherit update-rc.d systemd distro_features_check +inherit update-rc.d systemd features_check -REQUIRED_DISTRO_FEATURES = "x11" +REQUIRED_DISTRO_FEATURES = "x11 ${@oe.utils.conditional('ROOTLESS_X', '1', 'pam', '', d)}" PACKAGECONFIG ??= "blank" # dpms and screen saver will be on only if 'blank' is in PACKAGECONFIG @@ -40,6 +41,8 @@ do_install() { if [ "${ROOTLESS_X}" = "1" ] ; then XUSER_HOME="/home/xuser" XUSER="xuser" + install -D capability.conf ${D}${sysconfdir}/security/capability.conf + sed -i "s:@USER@:${XUSER}:" ${D}${sysconfdir}/security/capability.conf else XUSER_HOME=${ROOT_HOME} XUSER="root" @@ -49,9 +52,9 @@ do_install() { sed -i "s:@NO_CURSOR_ARG@:${NO_CURSOR_ARG}:" ${D}${sysconfdir}/default/xserver-nodm if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then - install -d ${D}${systemd_unitdir}/system - install -m 0644 ${WORKDIR}/xserver-nodm.service.in ${D}${systemd_unitdir}/system/xserver-nodm.service - sed -i "s:@USER@:${XUSER}:" ${D}${systemd_unitdir}/system/xserver-nodm.service + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${S}/xserver-nodm.service.in ${D}${systemd_system_unitdir}/xserver-nodm.service + sed -i "s:@USER@:${XUSER}:" ${D}${systemd_system_unitdir}/xserver-nodm.service fi if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then @@ -60,10 +63,10 @@ do_install() { fi } -RDEPENDS_${PN} = "xinit ${@oe.utils.conditional('ROOTLESS_X', '1', 'xuser-account', '', d)}" +RDEPENDS:${PN} = "xinit ${@oe.utils.conditional('ROOTLESS_X', '1', 'xuser-account libcap libcap-bin', '', d)}" INITSCRIPT_NAME = "xserver-nodm" INITSCRIPT_PARAMS = "start 9 5 . stop 20 0 1 2 3 6 ." -SYSTEMD_SERVICE_${PN} = "xserver-nodm.service" +SYSTEMD_SERVICE:${PN} = "xserver-nodm.service" -RCONFLICTS_${PN} = "xserver-common (< 1.34-r9) x11-common" +RCONFLICTS:${PN} = "xserver-common (< 1.34-r9) x11-common" diff --git a/meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb b/meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb index a4ab7f6eb8..40b77422bf 100644 --- a/meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb +++ b/meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb @@ -2,19 +2,19 @@ SUMMARY = "Transparent X11 cursor theme for touchscreens" HOMEPAGE = "http://www.matchbox-project.org/" BUGTRACKER = "http://bugzilla.yoctoproject.org/" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" SECTION = "x11/base" SRCREV = "23c8af5ba4a1b7efbaf0bbca59a65ff7e10a1a06" -PV = "0.1.1+git${SRCPV}" +PV = "0.1.1+git" -SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master" +SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master;protocol=https" UPSTREAM_CHECK_COMMITS = "1" S = "${WORKDIR}/git" inherit autotools allarch -FILES_${PN} = "${datadir}/icons/xcursor-transparent/cursors/*" +FILES:${PN} = "${datadir}/icons/xcursor-transparent/cursors/*" diff --git a/meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb b/meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb index 65348c3762..f4516e6975 100644 --- a/meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb +++ b/meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb @@ -1,11 +1,15 @@ SUMMARY = "Touchscreen calibration data from xinput-calibrator" +DESCRIPTION = "A generic touchscreen calibration program for X.Org" +HOMEPAGE = "https://www.freedesktop.org/wiki/Software/xinput_calibrator/" +BUGTRACKER = "https://github.com/tias/xinput_calibrator/issues" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" -PR = "r7" SRC_URI = "file://pointercal.xinput" -S = "${WORKDIR}" + +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" do_install() { # Only install file if it has a contents @@ -17,4 +21,4 @@ do_install() { } PACKAGE_ARCH = "${MACHINE_ARCH}" -CONFFILES_${PN} = "${sysconfdir}/pointercal.xinput" +CONFFILES:${PN} = "${sysconfdir}/pointercal.xinput" diff --git a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/Allow-xinput_calibrator_pointercal.sh-to-be-run-as-n.patch b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/Allow-xinput_calibrator_pointercal.sh-to-be-run-as-n.patch index 86982924a8..de0862599d 100644 --- a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/Allow-xinput_calibrator_pointercal.sh-to-be-run-as-n.patch +++ b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/Allow-xinput_calibrator_pointercal.sh-to-be-run-as-n.patch @@ -1,4 +1,4 @@ -Upstream-Status: Pending +Upstream-Status: Inactive-Upstream [last commits over a decade ago] From 14734a93bd3fc323325459e24b04795422e395e6 Mon Sep 17 00:00:00 2001 From: Laurentiu Palcu <laurentiu.palcu@intel.com> diff --git a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb index 9873d3f33f..0516928a76 100644 --- a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb +++ b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb @@ -1,18 +1,17 @@ SUMMARY = "Touchscreen calibration program for X11" HOMEPAGE = "http://www.freedesktop.org/wiki/Software/xinput_calibrator" -LICENSE = "MIT-X" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://src/calibrator.cpp;endline=22;md5=1bcba08f67cdb56f34021557898e4b5a" DEPENDS = "virtual/libx11 libxi libxrandr" -PV = "0.7.5+git${SRCPV}" -PR = "r6" +PV = "0.7.5+git" -inherit autotools pkgconfig distro_features_check +inherit autotools pkgconfig features_check # depends on virtual/libx11 REQUIRED_DISTRO_FEATURES = "x11" -SRCREV = "03dadf55109bd43d3380f040debe9f82f66f2f35" -SRC_URI = "git://github.com/tias/xinput_calibrator.git \ +SRCREV = "18ec53f1cada39f905614ebfaffed5c7754ecf46" +SRC_URI = "git://github.com/kreijack/xinput_calibrator.git;branch=libinput;protocol=https \ file://30xinput_calibrate.sh \ file://Allow-xinput_calibrator_pointercal.sh-to-be-run-as-n.patch \ file://0001-calibrator.hh-Include-string-to-get-std-string.patch \ @@ -23,17 +22,17 @@ S = "${WORKDIR}/git" # force native X11 ui as we don't have gtk+ in DEPENDS EXTRA_OECONF += "--with-gui=x11" -do_install_append() { +do_install:append() { install -d ${D}${bindir} install -m 0755 ${S}/scripts/xinput_calibrator_pointercal.sh ${D}${bindir}/xinput_calibrator_once.sh install -d ${D}${sysconfdir}/X11/Xsession.d/ - install -m 0755 ${WORKDIR}/30xinput_calibrate.sh ${D}${sysconfdir}/X11/Xsession.d/ + install -m 0755 ${UNPACKDIR}/30xinput_calibrate.sh ${D}${sysconfdir}/X11/Xsession.d/ install -d ${D}${sysconfdir}/xdg/autostart sed -e 's,^Exec=.*,Exec=${bindir}/xinput_calibrator_once.sh,' ${S}/scripts/xinput_calibrator.desktop > ${D}${sysconfdir}/xdg/autostart/xinput_calibrator.desktop } -FILES_${PN} += "${sysconfdir}/xdg/autostart" -RDEPENDS_${PN} = "xinput formfactor" -RRECOMMENDS_${PN} = "pointercal-xinput" +FILES:${PN} += "${sysconfdir}/xdg/autostart" +RDEPENDS:${PN} = "xinput formfactor" +RRECOMMENDS:${PN} = "pointercal-xinput" diff --git a/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb b/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb deleted file mode 100644 index a453e24876..0000000000 --- a/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb +++ /dev/null @@ -1,22 +0,0 @@ -require xorg-app-common.inc - -SUMMARY = "A program to create an index of X font files in a directory" - -DESCRIPTION = "For each directory argument, mkfontdir reads all of the \ -font files in the directory. The font names and related data are written \ -out to the files \"fonts.dir\", \"fonts.scale\", and \"fonts.alias\". \ -The X server and font server use these files to find the available font \ -files." - -PE = "1" -PR = "${INC_PR}.0" - -RDEPENDS_${PN} += "mkfontscale" -RDEPENDS_${PN}_class-native += "mkfontscale-native" - -BBCLASSEXTEND = "native" - -LIC_FILES_CHKSUM = "file://COPYING;md5=b4fcf2b90cadbfc15009b9e124dc3a3f" - -SRC_URI[md5sum] = "18c429148c96c2079edda922a2b67632" -SRC_URI[sha256sum] = "56d52a482df130484e51fd066d1b6eda7c2c02ddbc91fe6e2be1b9c4e7306530" diff --git a/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb b/meta/recipes-graphics/xorg-app/mkfontscale_1.2.3.bb index 2a6bec1649..aa79902a34 100644 --- a/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb +++ b/meta/recipes-graphics/xorg-app/mkfontscale_1.2.3.bb @@ -10,9 +10,12 @@ is used by the mkfontdir program." DEPENDS = "util-macros-native zlib libfontenc freetype xorgproto" +PROVIDES += "mkfontdir" +RPROVIDES:${PN} += "mkfontdir" + BBCLASSEXTEND = "native" -LIC_FILES_CHKSUM = "file://COPYING;md5=2e0d129d05305176d1a790e0ac1acb7f" +LIC_FILES_CHKSUM = "file://COPYING;md5=5a60c596d1b5f3dee9f005b703b3180d" -SRC_URI[md5sum] = "987c438e79f5ddb84a9c5726a1610819" -SRC_URI[sha256sum] = "1e98df69ee5f4542d711e140e1d93e2c3f2775407ccbb7849110d52b91782a6a" +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "2921cdc344f1acee04bcd6ea1e29565c1308263006e134a9ee38cf9c9d6fe75e" diff --git a/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb b/meta/recipes-graphics/xorg-app/rgb_1.1.0.bb index c3e853631b..f14da7fd21 100644 --- a/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb +++ b/meta/recipes-graphics/xorg-app/rgb_1.1.0.bb @@ -10,7 +10,7 @@ DEPENDS += " xorgproto util-macros" LIC_FILES_CHKSUM = "file://COPYING;md5=ef598adbe241bd0b0b9113831f6e249a" PE = "1" -SRC_URI[md5sum] = "eab5bbd7642e5c784429307ec210d198" -SRC_URI[sha256sum] = "bbca7c6aa59939b9f6a0fb9fff15dfd62176420ffd4ae30c8d92a6a125fbe6b0" +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "fc03d7f56e5b2a617668167f8927948cce54f93097e7ccd9f056077f479ed37b" -FILES_${PN} += "${datadir}/X11" +FILES:${PN} += "${datadir}/X11" diff --git a/meta/recipes-graphics/xorg-app/x11perf_1.6.0.bb b/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb index a06aa269b6..651d03caca 100644 --- a/meta/recipes-graphics/xorg-app/x11perf_1.6.0.bb +++ b/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb @@ -13,11 +13,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=428ca4d67a41fcd4fc3283dce9bbda7e \ PE = "1" -do_install_append_class-target () { +inherit multilib_script + +MULTILIB_SCRIPTS = "${PN}:${bindir}/x11perfcomp" + +do_install:append:class-target () { sed -i -e 's:${HOSTTOOLS_DIR}/::g' ${D}${bindir}/x11perfcomp } -FILES_${PN} += "${libdir}/X11/x11perfcomp/*" +FILES:${PN} += "${libdir}/X11/x11perfcomp/*" -SRC_URI[md5sum] = "f0b24e4d8beb622a419e8431e1c03cd7" -SRC_URI[sha256sum] = "e87098dec1947572d70c62697a7b70bde1ab5668237d4660080eade6bc096751" +SRC_URI[md5sum] = "e96b56756990c56c24d2d02c2964456b" +SRC_URI[sha256sum] = "1c7e0b8ffc2794b4ccf11e04d551823abe0ea47b4f7db0637390db6fbe817c34" diff --git a/meta/recipes-graphics/xorg-app/xauth_1.0.10.bb b/meta/recipes-graphics/xorg-app/xauth_1.1.3.bb index 0e90ffd67b..b0ca33bf4b 100644 --- a/meta/recipes-graphics/xorg-app/xauth_1.0.10.bb +++ b/meta/recipes-graphics/xorg-app/xauth_1.1.3.bb @@ -8,8 +8,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=5ec74dd7ea4d10c4715a7c44f159a40b" DEPENDS += "libxau libxext libxmu" PE = "1" -SRC_URI[md5sum] = "f3f76cb10f69b571c43893ea6a634aa4" -SRC_URI[sha256sum] = "5afe42ce3cdf4f60520d1658d2b17face45c74050f39af45dccdc95e73fafc4d" +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "e7075498bae332f917f01d660f9b940c0752b2556a8da61ccb62a44d0ffe9d33" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," diff --git a/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.2.bb b/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.4.bb index af04bb6e3a..3becd40281 100644 --- a/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.2.bb +++ b/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.4.bb @@ -9,12 +9,12 @@ clients and the server, and the different types of screens and visuals \ that are available." LIC_FILES_CHKSUM = "file://COPYING;md5=f3d09e6b9e203a1af489e16c708f4fb3" -DEPENDS += "libxtst libxext libxxf86vm libxxf86dga libxxf86misc libxi libxrender libxinerama libdmx libxau libxcomposite" +DEPENDS += "libxtst libxext libxxf86vm libxi libxrender libxinerama libxau libxcomposite" PE = "1" SRC_URI += "file://disable-xkb.patch" -SRC_URI[md5sum] = "8809037bd48599af55dad81c508b6b39" -SRC_URI[sha256sum] = "30238ed915619e06ceb41721e5f747d67320555cc38d459e954839c189ccaf51" +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "a8ada581dbd7266440d7c3794fa89edf6b99b8857fc2e8c31042684f3af4822b" EXTRA_OECONF = "--disable-xkb" diff --git a/meta/recipes-graphics/xorg-app/xev/diet-x11.patch b/meta/recipes-graphics/xorg-app/xev/diet-x11.patch deleted file mode 100644 index 53c0ac2e61..0000000000 --- a/meta/recipes-graphics/xorg-app/xev/diet-x11.patch +++ /dev/null @@ -1,109 +0,0 @@ -Upstream-Status: Inappropriate [disable feature] - ---- - xev.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -Index: xev-1.2.3/xev.c -=================================================================== ---- xev-1.2.3.orig/xev.c -+++ xev-1.2.3/xev.c -@@ -125,17 +125,6 @@ do_KeyPress(XEvent *eventp) - nbytes = XLookupString(e, str, 256, &ks, NULL); - - /* not supposed to call XmbLookupString on a key release event */ -- if (e->type == KeyPress && xic) { -- do { -- nmbbytes = XmbLookupString(xic, e, buf, bsize - 1, &ks, &status); -- buf[nmbbytes] = '\0'; -- -- if (status == XBufferOverflow) { -- bsize = nmbbytes + 1; -- buf = realloc(buf, bsize); -- } -- } while (status == XBufferOverflow); -- } - - if (ks == NoSymbol) - ksname = "NoSymbol"; -@@ -168,16 +157,6 @@ do_KeyPress(XEvent *eventp) - } - - /* not supposed to call XmbLookupString on a key release event */ -- if (e->type == KeyPress && xic) { -- printf(" XmbLookupString gives %d bytes: ", nmbbytes); -- if (nmbbytes > 0) { -- dump(buf, nmbbytes); -- printf(" \"%s\"\n", buf); -- } -- else { -- printf("\n"); -- } -- } - - printf(" XFilterEvent returns: %s\n", - XFilterEvent(eventp, e->window) ? "True" : "False"); -@@ -1141,7 +1120,7 @@ parse_event_mask(const char *s, long eve - if (s) - return True; - } -- } -+ } - - if (s != NULL) - fprintf(stderr, "%s: unrecognized event mask '%s'\n", ProgramName, s); -@@ -1288,37 +1267,6 @@ main(int argc, char **argv) - fprintf(stderr, "%s: XSetLocaleModifiers failed\n", ProgramName); - } - -- xim = XOpenIM(dpy, NULL, NULL, NULL); -- if (xim == NULL) { -- fprintf(stderr, "%s: XOpenIM failed\n", ProgramName); -- } -- -- if (xim) { -- imvalret = XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL); -- if (imvalret != NULL || xim_styles == NULL) { -- fprintf(stderr, "%s: input method doesn't support any styles\n", -- ProgramName); -- } -- -- if (xim_styles) { -- xim_style = 0; -- for (i = 0; i < xim_styles->count_styles; i++) { -- if (xim_styles->supported_styles[i] == -- (XIMPreeditNothing | XIMStatusNothing)) { -- xim_style = xim_styles->supported_styles[i]; -- break; -- } -- } -- -- if (xim_style == 0) { -- fprintf(stderr, -- "%s: input method doesn't support the style we support\n", -- ProgramName); -- } -- XFree(xim_styles); -- } -- } -- - screen = DefaultScreen(dpy); - - attr.event_mask = event_masks[EVENT_MASK_INDEX_CORE]; -@@ -1373,16 +1321,6 @@ main(int argc, char **argv) - printf("Outer window is 0x%lx, inner window is 0x%lx\n", w, subw); - } - -- if (xim && xim_style) { -- xic = XCreateIC(xim, -- XNInputStyle, xim_style, -- XNClientWindow, w, XNFocusWindow, w, NULL); -- -- if (xic == NULL) { -- fprintf(stderr, "XCreateIC failed\n"); -- } -- } -- - have_rr = XRRQueryExtension(dpy, &rr_event_base, &rr_error_base); - if (have_rr) { - int rr_major, rr_minor; diff --git a/meta/recipes-graphics/xorg-app/xev_1.2.3.bb b/meta/recipes-graphics/xorg-app/xev_1.2.6.bb index 6a69e747a6..182aeff1b7 100644 --- a/meta/recipes-graphics/xorg-app/xev_1.2.3.bb +++ b/meta/recipes-graphics/xorg-app/xev_1.2.6.bb @@ -12,7 +12,6 @@ PE = "1" DEPENDS += "libxrandr xorgproto" -SRC_URI += "file://diet-x11.patch" +SRC_URI[sha256sum] = "61e1c5e008ac9973aca7cdddf36e9df7410e77083b030eb04f4dc737c51807d7" -SRC_URI[md5sum] = "eec82a5d4b599736f0fa637e96136746" -SRC_URI[sha256sum] = "66bc4f1cfa1946d62612737815c34164e4ce40fcebd2c9e1d7e7a1117ad3ad09" +SRC_URI_EXT = "xz" diff --git a/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb b/meta/recipes-graphics/xorg-app/xeyes_1.3.0.bb index 06885f8f53..3d1a7063ea 100644 --- a/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb +++ b/meta/recipes-graphics/xorg-app/xeyes_1.3.0.bb @@ -8,7 +8,7 @@ PE = "1" LIC_FILES_CHKSUM = "file://COPYING;md5=3ea51b365051ac32d1813a7dbaa4bfc6" -SRC_URI[md5sum] = "6f0543ec84283df5743eeafc173bea4a" -SRC_URI[sha256sum] = "57bcec0d2d167af9e5d44d0dbd74c6d7c0f0591cd0608952b23c749fdd910553" +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "0950c600bf33447e169a539ee6655ef9f36d6cebf2c1be67f7ab55dacb753023" -DEPENDS += "libxau libxt libxext libxmu libxrender" +DEPENDS += "libxau libxt libxext libxmu libxrender libxi" diff --git a/meta/recipes-graphics/xorg-app/xhost_1.0.8.bb b/meta/recipes-graphics/xorg-app/xhost_1.0.9.bb index 26bec3f0dd..d54e6cae65 100644 --- a/meta/recipes-graphics/xorg-app/xhost_1.0.8.bb +++ b/meta/recipes-graphics/xorg-app/xhost_1.0.9.bb @@ -9,12 +9,13 @@ and security. Environments which require more sophisticated measures \ should implement the user-based mechanism or use the hooks in the \ protocol for passing other authentication data to the server." -LIC_FILES_CHKSUM = "file://COPYING;md5=8fbed71dddf48541818cef8079124199" -DEPENDS += "libxmu libxau" +LIC_FILES_CHKSUM = "file://COPYING;md5=b1f81049109f21bb3c365d9f42f79f3b" +DEPENDS += "libxmu libxau gettext-native" PE = "1" -SRC_URI[md5sum] = "a48c72954ae6665e0616f6653636da8c" -SRC_URI[sha256sum] = "a2dc3c579e13674947395ef8ccc1b3763f89012a216c2cc6277096489aadc396" +SRC_URI_EXT = "xz" + +SRC_URI[sha256sum] = "ea86b531462035b19a2e5e01ef3d9a35cca7d984086645e2fc844d8f0e346645" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," diff --git a/meta/recipes-graphics/xorg-app/xinit/0001-Make-manpage-multilib-identical.patch b/meta/recipes-graphics/xorg-app/xinit/0001-Make-manpage-multilib-identical.patch new file mode 100644 index 0000000000..649905574c --- /dev/null +++ b/meta/recipes-graphics/xorg-app/xinit/0001-Make-manpage-multilib-identical.patch @@ -0,0 +1,28 @@ +From d642e60d8963f1b90569cd0ab5c29ac2c9bfe939 Mon Sep 17 00:00:00 2001 +From: Jeremy Puhlman <jpuhlman@mvista.com> +Date: Fri, 6 Mar 2020 22:28:14 +0000 +Subject: [PATCH] Make manpage multilib identical + +Upstream-Status: Submitted + +Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> +--- + man/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/Makefile.am b/man/Makefile.am +index 9c6569f..608e933 100644 +--- a/man/Makefile.am ++++ b/man/Makefile.am +@@ -12,7 +12,7 @@ MAN_SUBSTS+= -e 's|__XSERVERNAME__|$(XSERVERNAME)|g' \ + -e 's|__XCONFIGFILEMAN__|$(XCONFIGFILEMAN)|g' \ + -e 's|__xinitdir__|$(XINITDIR)|g' \ + -e 's|__bindir__|$(bindir)|g' \ +- -e 's|__libdir__|$(libdir)|g' \ ++ -e 's|__libdir__|$(prefix)/lib*|g' \ + -e 's|__configdir__|$(XINITDIR)|g' + + +-- +2.23.0 + diff --git a/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb b/meta/recipes-graphics/xorg-app/xinit_1.4.2.bb index 5626ebbd52..82c0b0d833 100644 --- a/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb +++ b/meta/recipes-graphics/xorg-app/xinit_1.4.2.bb @@ -12,9 +12,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=18f01e7b39807bebe2b8df101a039b68" PE = "1" -SRC_URI[md5sum] = "6d506ab2efc17a08e87778654e099d37" -SRC_URI[sha256sum] = "de9b8f617b68a70f6caf87da01fcf0ebd2b75690cdcba9c921d0ef54fa54abb9" +SRC_URI += "file://0001-Make-manpage-multilib-identical.patch" + +SRC_URI_EXT = "xz" + +SRC_URI[sha256sum] = "b7d8dc8d22ef9f15985a10b606ee4f2aad6828befa437359934647e88d331f23" EXTRA_OECONF = "ac_cv_path_MCOOKIE=${bindir}/mcookie" -RDEPENDS_${PN} += "util-linux-mcookie" +PACKAGECONFIG ??= "rxvt" +PACKAGECONFIG[rxvt] = "--with-xterm=rxvt,,,rxvt-unicode" + +RDEPENDS:${PN} += "util-linux-mcookie" diff --git a/meta/recipes-graphics/xorg-app/xinput_1.6.2.bb b/meta/recipes-graphics/xorg-app/xinput_1.6.4.bb index 25cd047bc9..f5e3f5da12 100644 --- a/meta/recipes-graphics/xorg-app/xinput_1.6.2.bb +++ b/meta/recipes-graphics/xorg-app/xinput_1.6.4.bb @@ -8,5 +8,6 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=881525f89f99cad39c9832bcb72e6fa5" DEPENDS += " libxi libxrandr libxinerama" -SRC_URI[md5sum] = "6a889412eff2e3c1c6bb19146f6fe84c" -SRC_URI[sha256sum] = "3694d29b4180952fbf13c6d4e59541310cbb11eef5bf888ff3d8b7f4e3aee5c4" +SRC_URI_EXT = "xz" +SRC_URI[md5sum] = "8e4d14823b7cbefe1581c398c6ab0035" +SRC_URI[sha256sum] = "ad04d00d656884d133110eeddc34e9c69e626ebebbbab04dc95791c2907057c8" diff --git a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb b/meta/recipes-graphics/xorg-app/xkbcomp_1.4.7.bb index eaf8eaaf74..f259f33dd8 100644 --- a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb +++ b/meta/recipes-graphics/xorg-app/xkbcomp_1.4.7.bb @@ -7,11 +7,13 @@ XKB keymap into one of several output formats. The most common use for \ xkbcomp is to create a compiled keymap file (.xkm extension) which can \ be read directly by XKB-capable X servers or utilities." -LIC_FILES_CHKSUM = "file://COPYING;md5=08436e4f4476964e2e2dd7e7e41e076a" +LIC_FILES_CHKSUM = "file://COPYING;md5=be5e191f04d3f2cd80aa83b928ba984c" DEPENDS += "libxkbfile" BBCLASSEXTEND = "native" -SRC_URI[md5sum] = "12610df19df2af3797f2c130ee2bce97" -SRC_URI[sha256sum] = "6dd8bcb9be7e85bd7294abe261b8c7b0539d2fc93e41b80fb8bd013767ce8424" +EXTRA_OECONF += "--disable-selective-werror" + +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "0a288114e5f44e31987042c79aecff1ffad53a8154b8ec971c24a69a80f81f77" diff --git a/meta/recipes-graphics/xorg-app/xmodmap_1.0.10.bb b/meta/recipes-graphics/xorg-app/xmodmap_1.0.11.bb index 7dedb03a2b..dc955aa977 100644 --- a/meta/recipes-graphics/xorg-app/xmodmap_1.0.10.bb +++ b/meta/recipes-graphics/xorg-app/xmodmap_1.0.11.bb @@ -12,5 +12,6 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=272c17e96370e1e74773fa22d9989621" PE = "1" -SRC_URI[md5sum] = "51f1d30a525e9903280ffeea2744b1f6" -SRC_URI[sha256sum] = "473f0941d7439d501bb895ff358832b936ec34c749b9704c37a15e11c318487c" +SRC_URI[sha256sum] = "9a2f8168f7b0bc382828847403902cb6bf175e17658b36189eac87edda877e81" + +SRC_URI_EXT = "xz" diff --git a/meta/recipes-graphics/xorg-app/xorg-app-common.inc b/meta/recipes-graphics/xorg-app/xorg-app-common.inc index 3529cb26ef..5dbe8abe86 100644 --- a/meta/recipes-graphics/xorg-app/xorg-app-common.inc +++ b/meta/recipes-graphics/xorg-app/xorg-app-common.inc @@ -2,16 +2,15 @@ SUMMARY = "X application" HOMEPAGE = "http://www.x.org/" BUGTRACKER = "https://bugs.freedesktop.org" SECTION = "x11/apps" -LICENSE = "MIT-X" +LICENSE = "MIT" DEPENDS = "util-macros-native virtual/libx11" # depends on virtual/libx11 REQUIRED_DISTRO_FEATURES = "x11" -INC_PR = "r8" +SRC_URI_EXT = "bz2" +SRC_URI = "${XORG_MIRROR}/individual/app/${BPN}-${PV}.tar.${SRC_URI_EXT}" -SRC_URI = "${XORG_MIRROR}/individual/app/${BPN}-${PV}.tar.bz2" +inherit autotools pkgconfig features_check -inherit autotools pkgconfig distro_features_check - -FILES_${PN} += " ${libdir}/X11/${BPN} ${datadir}/X11/app-defaults/" +FILES:${PN} += " ${libdir}/X11/${BPN} ${datadir}/X11/app-defaults/" diff --git a/meta/recipes-graphics/xorg-app/xprop_1.2.4.bb b/meta/recipes-graphics/xorg-app/xprop_1.2.7.bb index 3280813ef8..96e364b2b3 100644 --- a/meta/recipes-graphics/xorg-app/xprop_1.2.4.bb +++ b/meta/recipes-graphics/xorg-app/xprop_1.2.7.bb @@ -14,5 +14,5 @@ DEPENDS += "libxmu" PE = "1" -SRC_URI[md5sum] = "cc369c28383a5d7144e7197ee7d30bfa" -SRC_URI[sha256sum] = "8c77fb096e46c60032b7e2bde9492c3ffcc18734f50b395085a5f10bfd3cf753" +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "4436e3148bb91a162406230d9f736a49ca8b50b74790015dc15d78d6ce8e825f" diff --git a/meta/recipes-graphics/xorg-app/xrandr_1.5.0.bb b/meta/recipes-graphics/xorg-app/xrandr_1.5.2.bb index ea6897948d..1e29031849 100644 --- a/meta/recipes-graphics/xorg-app/xrandr_1.5.0.bb +++ b/meta/recipes-graphics/xorg-app/xrandr_1.5.2.bb @@ -11,5 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=fe1608bdb33cf8c62a4438f7d34679b3" DEPENDS += "libxrandr libxrender" PE = "1" -SRC_URI[md5sum] = "ebffac98021b8f1dc71da0c1918e9b57" -SRC_URI[sha256sum] = "c1cfd4e1d4d708c031d60801e527abc9b6d34b85f2ffa2cadd21f75ff38151cd" +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "c8bee4790d9058bacc4b6246456c58021db58a87ddda1a9d0139bf5f18f1f240" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-app/xset/disable-xkb.patch b/meta/recipes-graphics/xorg-app/xset/disable-xkb.patch index a97c7b72fa..0bb05a3b88 100644 --- a/meta/recipes-graphics/xorg-app/xset/disable-xkb.patch +++ b/meta/recipes-graphics/xorg-app/xset/disable-xkb.patch @@ -1,14 +1,21 @@ -add "-disable-xkb" option +From 3090dcafac7c8080091b5e3e3720209c65251a1a Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard@openedhand.com> +Date: Mon, 22 May 2006 22:15:57 +0000 +Subject: [PATCH] add "-disable-xkb" option Upstream-Status: Pending Rebase for 1.2.1 by: Yu Ke <ke.yu@intel.com> -Index: xset-1.2.3/configure.ac -=================================================================== ---- xset-1.2.3.orig/configure.ac -+++ xset-1.2.3/configure.ac -@@ -53,11 +53,15 @@ PKG_CHECK_MODULES(SET_XEXT, xext, +--- + configure.ac | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/configure.ac b/configure.ac +index e7c2bdf..8e1ed5e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -52,11 +52,15 @@ PKG_CHECK_MODULES(SET_XEXT, xext, AC_CHECK_HEADERS([X11/extensions/dpms.h X11/extensions/MITMisc.h],,,[#include <X11/Xlib.h>]) CPPFLAGS="$SAVE_CPPFLAGS"],[echo "not found"]) @@ -22,5 +29,5 @@ Index: xset-1.2.3/configure.ac CPPFLAGS="$SAVE_CPPFLAGS"],[echo "not found"]) +fi - AC_ARG_WITH(xf86misc, AS_HELP_STRING([--without-xf86misc],[Disable xf86misc support.]), - [USE_XF86MISC="$withval"], [USE_XF86MISC="yes"]) + AC_ARG_WITH(xf86misc, AS_HELP_STRING([--with-xf86misc],[Enable xf86misc support.]), + [USE_XF86MISC="$withval"], [USE_XF86MISC="no"]) diff --git a/meta/recipes-graphics/xorg-app/xset_1.2.4.bb b/meta/recipes-graphics/xorg-app/xset_1.2.5.bb index 5748837fd5..398530f342 100644 --- a/meta/recipes-graphics/xorg-app/xset_1.2.4.bb +++ b/meta/recipes-graphics/xorg-app/xset_1.2.5.bb @@ -7,13 +7,14 @@ preference options of the display." LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=bea81cc9827cdf1af0e12c2b8228cf8d" -DEPENDS += "libxext libxxf86misc libxmu libxau" +DEPENDS += "libxext libxmu libxau" PE = "1" SRC_URI += "file://disable-xkb.patch" -SRC_URI[md5sum] = "70ea7bc7bacf1a124b1692605883f620" -SRC_URI[sha256sum] = "e4fd95280df52a88e9b0abc1fee11dcf0f34fc24041b9f45a247e52df941c957" +SRC_URI_EXT = "xz" + +SRC_URI[sha256sum] = "9f692d55635b3862cd63633b1222a87680ec283c7a8e8ed6dd698a3147f75e2f" CFLAGS += "-D_GNU_SOURCE" EXTRA_OECONF = "--disable-xkb --without-fontcache" diff --git a/meta/recipes-graphics/xorg-app/xvinfo_1.1.4.bb b/meta/recipes-graphics/xorg-app/xvinfo_1.1.5.bb index a913ae11f3..d7e5d917ef 100644 --- a/meta/recipes-graphics/xorg-app/xvinfo_1.1.4.bb +++ b/meta/recipes-graphics/xorg-app/xvinfo_1.1.5.bb @@ -10,5 +10,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b664101ad7a1dc758a4c4109bf978e68" DEPENDS += " libxv" PE = "1" -SRC_URI[md5sum] = "b13afec137b9b331814a9824ab03ec80" -SRC_URI[sha256sum] = "0353220d6606077ba42363db65f50410759f9815352f77adc799e2adfa76e73f" +SRC_URI_EXT = "xz" +SRC_URI[sha256sum] = "3ede71ecb26d9614ccbc6916720285e95a2c7e0c5e19b8570eaaf72ad7c5c404" diff --git a/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb b/meta/recipes-graphics/xorg-app/xwininfo_1.1.6.bb index 1fb90dd244..39ec76724c 100644 --- a/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb +++ b/meta/recipes-graphics/xorg-app/xwininfo_1.1.6.bb @@ -6,10 +6,11 @@ DESCRIPTION = "Xwininfo is a utility for displaying information about \ windows. Information may include window position, size, color depth, \ and a number of other items." -LIC_FILES_CHKSUM = "file://COPYING;md5=78976cd3115f6faf615accc4e094d90e" +LIC_FILES_CHKSUM = "file://COPYING;md5=a1b9559d7b7997a6e9588012ebf8769a" DEPENDS += "libxext libxmu gettext-native" PE = "0" -SRC_URI[md5sum] = "9a505b91ae7160bbdec360968d060c83" -SRC_URI[sha256sum] = "839498aa46b496492a5c65cd42cd2e86e0da88149b0672e90cb91648f8cd5b01" +SRC_URI_EXT = "xz" +SRC_URI[md5sum] = "c91201bc1eb5e7b38933be8d0f7f16a8" +SRC_URI[sha256sum] = "3518897c17448df9ba99ad6d9bb1ca0f17bc0ed7c0fd61281b34ceed29a9253f" diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.9.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.9.0.bb deleted file mode 100644 index 1896fff9f9..0000000000 --- a/meta/recipes-graphics/xorg-driver/xf86-input-keyboard_1.9.0.bb +++ /dev/null @@ -1,13 +0,0 @@ -require xorg-driver-input.inc - -SUMMARY = "X.Org X server -- keyboard input driver" - -DESCRIPTION = "keyboard is an Xorg input driver for keyboards. The \ -driver supports the standard OS-provided keyboard interface. The driver \ -functions as a keyboard input device, and may be used as the X server's \ -core keyboard." - -LIC_FILES_CHKSUM = "file://COPYING;md5=ea2099d24ac9e316a6d4b9f20b3d4e10" - -SRC_URI[md5sum] = "a3a3f0dd32361dcdbd406e894dafe090" -SRC_URI[sha256sum] = "f7c900f21752683402992b288d5a2826de7a6c0c0abac2aadd7e8a409e170388" diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.2.bb b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.2.bb deleted file mode 100644 index 19123e06c9..0000000000 --- a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.2.bb +++ /dev/null @@ -1,11 +0,0 @@ -require xorg-driver-input.inc - -SUMMARY = "Generic input driver for the X.Org server based on libinput" -LIC_FILES_CHKSUM = "file://COPYING;md5=5e6b20ea2ef94a998145f0ea3f788ee0" - -DEPENDS += "libinput" - -SRC_URI[md5sum] = "b7548bc1d7e82d189205794ff86307af" -SRC_URI[sha256sum] = "b8b346962c6b62b8069928c29c0db83b6f544863bf2fc6830f324de841de2820" - -FILES_${PN} += "${datadir}/X11/xorg.conf.d" diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.4.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.4.0.bb new file mode 100644 index 0000000000..92272c3f2a --- /dev/null +++ b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.4.0.bb @@ -0,0 +1,12 @@ +require xorg-driver-input.inc + +SUMMARY = "Generic input driver for the X.Org server based on libinput" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=a22925127bd3c827c384cedd23ed2309" + +DEPENDS += "libinput" + +XORG_DRIVER_COMPRESSOR = ".tar.xz" +SRC_URI[sha256sum] = "3a3d14cd895dc75b59ae2783b888031956a0bac7a1eff16d240dbb9d5df3e398" + +FILES:${PN} += "${datadir}/X11/xorg.conf.d" diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.3.bb b/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.5.bb index c38dab505b..92e54d9701 100644 --- a/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.3.bb +++ b/meta/recipes-graphics/xorg-driver/xf86-input-mouse_1.9.5.bb @@ -8,7 +8,7 @@ functions as a pointer input device, and may be used as the X server's \ core pointer. Multiple mice are supported by multiple instances of this \ driver." -LIC_FILES_CHKSUM = "file://COPYING;md5=90ea9f90d72b6d9327dede5ffdb2a510" +LIC_FILES_CHKSUM = "file://COPYING;md5=d213a69053dffe9bcab94abf60013d33" -SRC_URI[md5sum] = "a2104693bbcfe1413397f7905eecd3dc" -SRC_URI[sha256sum] = "93ecb350604d05be98b7d4e5db3b8155a44890069a7d8d6b800c0bea79c85cc5" +SRC_URI[sha256sum] = "4fde8ae9b44352e2a208584c36528ee3ed13cf5fe4417208a9785daccefd9968" +XORG_DRIVER_COMPRESSOR = ".tar.xz" diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.2.bb index dc31890f69..8e446290b2 100644 --- a/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb +++ b/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.2.bb @@ -10,7 +10,8 @@ advanced features of the touchpad to become available." LIC_FILES_CHKSUM = "file://COPYING;md5=55aacd3535a741824955c5eb8f061398" -SRC_URI[md5sum] = "cfb79d3c975151f9bbf30b727c260cb9" -SRC_URI[sha256sum] = "7af83526eff1c76e8b9e1553b34245c203d029028d8044dd9dcf71eef1001576" +SRC_URI[sha256sum] = "b8fa4aab913fc63754bbd6439e020658c412743a055201ddf212760593962c38" DEPENDS += "libxi mtdev libxtst libevdev" + +XORG_DRIVER_COMPRESSOR = ".tar.xz" diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.2.0.bb index 92a1b25ebe..7567b1ef2b 100644 --- a/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb +++ b/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.2.0.bb @@ -6,16 +6,17 @@ protocol that is provided by VMware virtual machines to give absolute \ pointer positioning. The vmmouse driver is capable of falling back to the \ standard 'mouse' driver if a VMware virtual machine is not detected." -SRC_URI[md5sum] = "85e2e464b7219c495ad3a16465c226ed" -SRC_URI[sha256sum] = "0af558957ac1be1b2863712c2475de8f4d7f14921fd01ded2e2fde4921b19319" +XORG_DRIVER_COMPRESSOR = ".tar.xz" -RDEPENDS_${PN} += "xf86-input-mouse" +SRC_URI[sha256sum] = "56f077580ab8f02e2f40358c5c46b0ae3e1828fc77744526b24adf1ceea339b8" + +RDEPENDS:${PN} += "xf86-input-mouse" LIC_FILES_CHKSUM = "file://COPYING;md5=622841c068a9d7625fbfe7acffb1a8fc" COMPATIBLE_HOST = '(i.86|x86_64).*-linux' -do_install_append () { +do_install:append () { # We don't care about hal rm -rf ${D}${datadir}/hal/ rm -rf ${D}${libdir}/hal/ @@ -23,4 +24,4 @@ do_install_append () { EXTRA_OECONF = "--with-udev-rules-dir=${nonarch_base_libdir}/udev/rules.d" -FILES_${PN} += "${datadir}/X11/xorg.conf.d" +FILES:${PN} += "${datadir}/X11/xorg.conf.d" diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-cirrus_1.5.3.bb b/meta/recipes-graphics/xorg-driver/xf86-video-cirrus_1.6.0.bb index c498477604..32eb8a4816 100644 --- a/meta/recipes-graphics/xorg-driver/xf86-video-cirrus_1.5.3.bb +++ b/meta/recipes-graphics/xorg-driver/xf86-video-cirrus_1.6.0.bb @@ -7,7 +7,8 @@ the driver is still useful." LIC_FILES_CHKSUM = "file://COPYING;md5=6ddc7ca860dc5fd014e7f160ea699295" -SRC_URI[md5sum] = "7d7dfd4cdc42aa8b6e923510fa00ad2b" -SRC_URI[sha256sum] = "edc87b20a55259126b5239b5c1ef913419eab7ded0ed12ae9ae989460d7351ab" +SRC_URI[sha256sum] = "0ef3fa0083de3d9a040f11b3af38598d8405f1165b908fdd6712c30038326401" DEPENDS += "libpciaccess" + +XORG_DRIVER_COMPRESSOR = ".tar.xz" diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel/01_Fix-build-on-i686.patch b/meta/recipes-graphics/xorg-driver/xf86-video-intel/01_Fix-build-on-i686.patch deleted file mode 100644 index 52916f8b4a..0000000000 --- a/meta/recipes-graphics/xorg-driver/xf86-video-intel/01_Fix-build-on-i686.patch +++ /dev/null @@ -1,55 +0,0 @@ -From a414d4e24461da1cb4cef8ee910bc57bab360ceb Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Tue, 6 Mar 2018 12:07:46 -0500 -Subject: [PATCH] Fix build on i686 - -Presumably this only matters for i686 because amd64 implies sse2, but: - -BUILDSTDERR: In file included from gen4_vertex.c:34: -BUILDSTDERR: gen4_vertex.c: In function 'emit_vertex': -BUILDSTDERR: sna_render_inline.h:40:26: error: inlining failed in call to always_inline 'vertex_emit_2s': target specific option mismatch -BUILDSTDERR: static force_inline void vertex_emit_2s(struct sna *sna, int16_t x, int16_t y) -BUILDSTDERR: ^~~~~~~~~~~~~~ -BUILDSTDERR: gen4_vertex.c:308:25: note: called from here -BUILDSTDERR: #define OUT_VERTEX(x,y) vertex_emit_2s(sna, x,y) /* XXX assert(!too_large(x, y)); */ -BUILDSTDERR: ^~~~~~~~~~~~~~~~~~~~~~~~ -BUILDSTDERR: gen4_vertex.c:360:2: note: in expansion of macro 'OUT_VERTEX' -BUILDSTDERR: OUT_VERTEX(dstX, dstY); -BUILDSTDERR: ^~~~~~~~~~ - -The bug here appears to be that emit_vertex() is declared 'sse2' but -vertex_emit_2s is merely always_inline. gcc8 decides that since you said -always_inline you need to have explicitly cloned it for every -permutation of targets. Merely saying inline seems to do the job of -cloning vertex_emit_2s as much as necessary. - -So to reiterate: if you say always-inline, it won't, but if you just say -maybe inline, it will. Thanks gcc, that's helpful. - -- ajax - -Patch taken from Fedora. - -Upstream-Status: Pending -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> - ---- - src/sna/compiler.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/sna/compiler.h b/src/sna/compiler.h -index 3c176a16..bc447c7a 100644 ---- a/src/sna/compiler.h -+++ b/src/sna/compiler.h -@@ -32,7 +32,7 @@ - #define likely(expr) (__builtin_expect (!!(expr), 1)) - #define unlikely(expr) (__builtin_expect (!!(expr), 0)) - #define noinline __attribute__((noinline)) --#define force_inline inline __attribute__((always_inline)) -+#define force_inline inline - #define fastcall __attribute__((regparm(3))) - #define must_check __attribute__((warn_unused_result)) - #define constant __attribute__((const)) --- -2.16.2 - diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb b/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb index bf9009bda0..2e526bd799 100644 --- a/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb +++ b/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb @@ -9,34 +9,29 @@ Infrastructure (DRI)." LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e" -SRCREV = "33ee0c3b21ea279e08d0863fcb2e874f0974b00e" -PV = "2.99.917+git${SRCPV}" +SRCREV = "31486f40f8e8f8923ca0799aea84b58799754564" +PV = "2.99.917+git" S = "${WORKDIR}/git" -SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel \ - " - -SRC_URI_append_qemux86 = "file://01_Fix-build-on-i686.patch" +SRC_URI = "git://anongit.freedesktop.org/git/xorg/driver/xf86-video-intel;protocol=https;branch=master" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" -DEPENDS += "virtual/libx11 drm libpciaccess pixman" +DEPENDS += "virtual/libx11 drm libpciaccess pixman cairo libpng libxcb libxcomposite libxdamage libxrender libxrandr libxext libxfixes" -PACKAGECONFIG ??= "sna xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri2 dri3', '', d)}" +PACKAGECONFIG ??= "sna xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri2 dri3', '', d)}" -PACKAGECONFIG[dri] = "--enable-dri,--disable-dri" -PACKAGECONFIG[dri1] = "--enable-dri1,--disable-dri1" PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2" PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3" PACKAGECONFIG[sna] = "--enable-sna,--disable-sna" PACKAGECONFIG[uxa] = "--enable-uxa,--disable-uxa" PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev" PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc xcb-util" -PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxrandr libxdamage libxfixes libxcursor libxtst libxrender libxscrnsaver libxext libx11 pixman libxcb libxshmfence" +PACKAGECONFIG[tools] = "--enable-tools,--disable-tools,libxinerama libxcursor libxtst libxscrnsaver libxshmfence" # --enable-kms-only option is required by ROOTLESS_X EXTRA_OECONF += '${@oe.utils.conditional( "ROOTLESS_X", "1", " --enable-kms-only", "", d )}' COMPATIBLE_HOST = '(i.86|x86_64).*-linux' -FILES_${PN} += "${datadir}/polkit-1" +FILES:${PN} += "${datadir}/polkit-1" diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch b/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch deleted file mode 100644 index 9e01770667..0000000000 --- a/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 2645e0aa9c17c2c966a0533e52ad00510311483e Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Wed, 29 Aug 2018 11:04:23 -0400 -Subject: [PATCH] Refuse to run on UEFI machines - -No possible good can come of this. - -v2: Check for .../efi-framebuffer.0 ("is there an EFI framebuffer") -instead of /sys/firmware/efi ("is this an EFI machine"). Suggested by -Peter Jones. - -Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/driver/xf86-video-vesa] - -Reviewed-by: Peter Jones <pjones@redhat.com> -Signed-off-by: Adam Jackson <ajax@redhat.com> -Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> ---- - src/vesa.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/src/vesa.c b/src/vesa.c -index 9b65b9b..af750e2 100644 ---- a/src/vesa.c -+++ b/src/vesa.c -@@ -43,7 +43,7 @@ - #endif - - #include <string.h> -- -+#include <unistd.h> - #include "vesa.h" - - /* All drivers initialising the SW cursor need this */ -@@ -450,7 +450,14 @@ VESAPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev, - intptr_t match_data) - { - ScrnInfoPtr pScrn; -- -+ -+#ifdef __linux__ -+ if (access("/sys/devices/platform/efi-framebuffer.0", F_OK) == 0) { -+ ErrorF("vesa: Refusing to run on UEFI\n"); -+ return FALSE; -+ } -+#endif -+ - pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL, - NULL, NULL, NULL, NULL, NULL); - if (pScrn != NULL) { --- -2.20.1 - diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.6.0.bb index f6aa54456c..33c2035f6b 100644 --- a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb +++ b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.6.0.bb @@ -13,11 +13,8 @@ DEPENDS += "virtual/libx11 xorgproto libpciaccess" COMPATIBLE_HOST = '(i.86|x86_64).*-linux' -RRECOMMENDS_${PN} += "xserver-xorg-module-libint10" +RRECOMMENDS:${PN} += "xserver-xorg-module-libint10" -SRC_URI[md5sum] = "8134201beaf6f77150c7809c3cc802e6" -SRC_URI[sha256sum] = "bf443c94d7bf6cd4e248f8a3147f4647be04dc4c80250d9405006263bbdee38c" +XORG_DRIVER_COMPRESSOR = ".tar.xz" +SRC_URI[sha256sum] = "10082771b1a8f659c60b3d9b70456a4b59948a75b3cade2dfa33b8b05e549bb1" -SRC_URI += " \ - file://0001-Refuse-to-run-on-UEFI-machines.patch \ - " diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vmware/0002-add-option-for-vmwgfx.patch b/meta/recipes-graphics/xorg-driver/xf86-video-vmware/0002-add-option-for-vmwgfx.patch deleted file mode 100644 index 5bda720ce5..0000000000 --- a/meta/recipes-graphics/xorg-driver/xf86-video-vmware/0002-add-option-for-vmwgfx.patch +++ /dev/null @@ -1,103 +0,0 @@ -From da6612659a279bcb02f70622b53a3894fbc11052 Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Fri, 9 Dec 2016 14:35:45 +0200 -Subject: [PATCH] Add option for vmwgfx - -Upstream-Status:Submitted - -Signed-off-by: Ross Burton <ross.burton@intel.com> -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> ---- - configure.ac | 51 +++++++++++++++++++++------------------------------ - 1 file changed, 21 insertions(+), 30 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 9f259ce..f3fec57 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -64,6 +64,13 @@ AC_ARG_ENABLE(vmwarectrl-client, - [VMWARECTRL=$enableval], [VMWARECTRL=no]) - AM_CONDITIONAL(BUILD_VMWARECTRL, [test "x$VMWARECTRL" = xyes]) - -+# Define a configure option to build the vmwgfx driver -+AC_ARG_ENABLE(vmwgfx, -+ AS_HELP_STRING([--disable-vmwgfx], -+ [Disable vmwgfx driver (KMS/3D) (default: enabled)]), -+ [VMWGFX="$enableval"], [VMWGFX="yes"]) -+AM_CONDITIONAL(BUILD_VMWGFX, test "x$VMWGFX" = xyes) -+ - # Store the list of server defined optional extensions in REQUIRED_MODULES - XORG_DRIVER_CHECK_EXT(RANDR, randrproto) - XORG_DRIVER_CHECK_EXT(RENDER, renderproto) -@@ -85,11 +92,6 @@ PKG_CHECK_EXISTS([xorg-server >= 1.4.99], - [AC_DEFINE([HAVE_XORG_SERVER_1_5_0], 1, - [Has version 1.5.0 or greater of the Xserver])]) - --PKG_CHECK_EXISTS([xorg-server >= 1.7.0], -- [AC_DEFINE([HAVE_XORG_SERVER_1_7_0], 1, -- [Has version 1.7.0 or greater of the Xserver]) -- BUILD_VMWGFX=yes],[BUILD_VMWGFX=no]) -- - PKG_CHECK_EXISTS([xorg-server >= 1.12.0], - [AC_DEFINE([HAVE_XORG_SERVER_1_12_0], 1, - [Has version 1.12.0 or greater of the Xserver])]) -@@ -114,34 +116,22 @@ AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes) - - AC_SUBST([moduledir]) - --if test x$BUILD_VMWGFX = xyes; then -- PKG_CHECK_MODULES([LIBDRM], [libdrm],[],[BUILD_VMWGFX=no]) --fi --if test x$BUILD_VMWGFX = xyes; then --# --# Early versions of mesa 10 forgot to bump the XA major version number in --# the xa_tracker.h header --# -- PKG_CHECK_MODULES([XATRACKER], [xatracker >= 0.4.0], -- [PKG_CHECK_EXISTS([xatracker = 2.0.0], -- [AC_DEFINE([HAVE_XA_2], 1, -- [Has version 2 of XA])])], -- [BUILD_VMWGFX=no]) --# --# Check for prime. --# -+AC_MSG_CHECKING([whether to build Kernel Mode Setting and 3D]) -+if test x$VMWGFX = xyes; then -+ AC_MSG_RESULT([yes]) -+ PKG_CHECK_MODULES([LIBDRM], [libdrm]) -+ # Check for prime. - PKG_CHECK_EXISTS([libdrm >= 2.4.38], - [AC_DEFINE([HAVE_LIBDRM_2_4_38], 1, - [Has version 2.4.38 or greater of libdrm])]) --fi - --DRIVER_NAME=vmware --AC_SUBST([DRIVER_NAME]) -- --AC_MSG_CHECKING([whether to build Kernel Mode Setting and 3D]) --if test x$BUILD_VMWGFX = xyes; then -- AC_MSG_RESULT([yes]) -- AC_DEFINE([BUILD_VMWGFX], 1, [Building the vmwgfx driver path]) -+ # Early versions of mesa 10 forgot to bump the XA major version number -+ # in the xa_tracker.h header -+ PKG_CHECK_MODULES([XATRACKER], [xatracker >= 0.4.0], -+ [PKG_CHECK_EXISTS([xatracker = 2.0.0], -+ [AC_DEFINE([HAVE_XA_2], 1, -+ [Has version 2 of XA])])]) -+ AC_DEFINE([BUILD_VMWGFX], 1, [Building the vmwgfx driver path]) - libudev_check=yes - AC_ARG_WITH([libudev], - [AS_HELP_STRING([--without-libudev], -@@ -158,7 +148,8 @@ else - AC_MSG_RESULT([no]) - fi - --AM_CONDITIONAL(BUILD_VMWGFX, test "x$BUILD_VMWGFX" = xyes) -+DRIVER_NAME=vmware -+AC_SUBST([DRIVER_NAME]) - - AC_CONFIG_FILES([ - Makefile --- -2.1.4 - diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.3.0.bb b/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.4.0.bb index 41612b7f07..d7ba2b9e86 100644 --- a/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.3.0.bb +++ b/meta/recipes-graphics/xorg-driver/xf86-video-vmware_13.4.0.bb @@ -7,13 +7,8 @@ DESCRIPTION = "vmware is an Xorg driver for VMware virtual video cards." LIC_FILES_CHKSUM = "file://COPYING;md5=5fcd7d437a959a15fbee8707747c6b53" DEPENDS += "virtual/libx11 xorgproto libpciaccess" +XORG_DRIVER_COMPRESSOR = ".tar.xz" -SRC_URI += "file://0002-add-option-for-vmwgfx.patch" - -SRC_URI[md5sum] = "08d66d062055080ff699ab4869726ea2" -SRC_URI[sha256sum] = "47971924659e51666a757269ad941a059ef5afe7a47b5101c174a6022ac4066c" +SRC_URI[sha256sum] = "aed31ee5ed5ecc6e2226705383e7ad06f7602c1376a295305f376b17af3eb81a" COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)' - -PACKAGECONFIG ?= "" -PACKAGECONFIG[vmwgfx] = "--enable-vmwgfx, --disable-vmwgfx, libdrm virtual/mesa" diff --git a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc index e657c65b4c..c61cdd05b3 100644 --- a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc +++ b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc @@ -2,24 +2,27 @@ SUMMARY = "X driver" HOMEPAGE = "http://www.x.org" BUGTRACKER = "https://bugs.freedesktop.org" SECTION = "x11/drivers" -LICENSE = "MIT-X" +LICENSE = "MIT" PE = "2" -INC_PR = "r21" DEPENDS = "virtual/xserver xorgproto util-macros" -SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}.tar.bz2" +XORG_DRIVER_COMPRESSOR ?= ".tar.bz2" +SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}${XORG_DRIVER_COMPRESSOR}" -FILES_${PN} += " ${libdir}/xorg/modules/drivers/*.so" +FILES:${PN} += " ${libdir}/xorg/modules/drivers/*.so" + +inherit pkgconfig features_check +XORGBUILDCLASS ??= "autotools" +inherit_defer ${XORGBUILDCLASS} -inherit autotools pkgconfig distro_features_check # depends on virtual/xserver REQUIRED_DISTRO_FEATURES = "x11" # FIXME: We don't want to include the libtool archives (*.la) from modules # directory, as they serve no useful purpose. Upstream should fix Makefile.am -do_install_append() { +do_install:append() { find ${D}${libdir}/xorg/modules -regex ".*\.la$" | xargs rm -f -- } @@ -37,6 +40,6 @@ def _add_xorg_abi_depends(d, name): abi = "%sxorg-abi-%s-%s" % (mlprefix, name, output.split(".")[0]) pn = d.getVar("PN") - d.appendVar('RDEPENDS_' + pn, ' ' + abi) + d.appendVar('RDEPENDS:' + pn, ' ' + abi) SECURITY_LDFLAGS = "${SECURITY_X_LDFLAGS}" diff --git a/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc b/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc index 57912e70db..934c3d75c1 100644 --- a/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc +++ b/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc @@ -7,6 +7,6 @@ python add_xorg_abi_depends() { } PACKAGEFUNCS =+ "add_xorg_abi_depends" -FILES_${PN} += " ${libdir}/xorg/modules/input/*.so \ +FILES:${PN} += " ${libdir}/xorg/modules/input/*.so \ ${datadir}/X11/xorg.conf.d \ " diff --git a/meta/recipes-graphics/xorg-font/encodings/nocompiler.patch b/meta/recipes-graphics/xorg-font/encodings/nocompiler.patch deleted file mode 100644 index f330c185af..0000000000 --- a/meta/recipes-graphics/xorg-font/encodings/nocompiler.patch +++ /dev/null @@ -1,33 +0,0 @@ -Upstream-Status: Inappropriate [configuration] - -XORG_DEFAULT_OPTIONS pulls in the following dependency chains: - -XORG_CWARNFLAGS -> AC_PROG_CC_C99 -XORG_STRICT_OPTION -> AC_PROG_CC_C99, XORG_CWARNFLAGS -XORG_MANPAGE_SECTIONS -> AC_CANONICAL_HOST -> Checks host - -each of which triggers the use of the host compiler. As an "all" -architecture package, it shouldn't need a compiler (and doesn't). - -RP 17/5/2011 - -Index: encodings-1.0.4/configure.ac -=================================================================== ---- encodings-1.0.4.orig/configure.ac 2011-05-17 23:36:19.505095876 +0100 -+++ encodings-1.0.4/configure.ac 2011-05-17 23:54:14.935096128 +0100 -@@ -4,12 +4,12 @@ - AM_INIT_AUTOMAKE([foreign dist-bzip2]) - AM_MAINTAINER_MODE - --# Require xorg-macros: XORG_DEFAULT_OPTIONS - m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])]) - XORG_MACROS_VERSION(1.3) --XORG_DEFAULT_OPTIONS -- -+XORG_RELEASE_VERSION -+XORG_CHANGELOG -+XORG_INSTALL - AC_PROG_INSTALL - - # Require X.Org's font util macros 1.2 or later diff --git a/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb b/meta/recipes-graphics/xorg-font/encodings_1.1.0.bb index 36766f2f42..7432c08ec0 100644 --- a/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb +++ b/meta/recipes-graphics/xorg-font/encodings_1.1.0.bb @@ -7,16 +7,18 @@ require xorg-font-common.inc LICENSE = "PD" LIC_FILES_CHKSUM = "file://COPYING;md5=9da93f2daf2d5572faa2bfaf0dbd9e76" PE = "1" -PR = "${INC_PR}.1" DEPENDS = "mkfontscale-native mkfontdir-native font-util-native" -RDEPENDS_${PN} = "" +RDEPENDS:${PN} = "" -SRC_URI += "file://nocompiler.patch" +SRC_URI[sha256sum] = "9ff13c621756cfa12e95f32ba48a5b23839e8f577d0048beda66c67dab4de975" + +SRC_URI_EXT = "xz" inherit allarch EXTRA_OECONF += "--with-encodingsdir=${datadir}/fonts/X11/encodings" -SRC_URI[md5sum] = "0f2d6546d514c5cc4ecf78a60657a5c1" -SRC_URI[sha256sum] = "ced6312988a45d23812c2ac708b4595f63fd7a49c4dcd9f66bdcd50d1057d539" +# postinst from .inc doesn't apply to this recipe +pkg_postinst:${PN} () { +} diff --git a/meta/recipes-graphics/xorg-font/font-alias-1.0.3/nocompiler.patch b/meta/recipes-graphics/xorg-font/font-alias-1.0.3/nocompiler.patch deleted file mode 100644 index 0b9fb8ccc0..0000000000 --- a/meta/recipes-graphics/xorg-font/font-alias-1.0.3/nocompiler.patch +++ /dev/null @@ -1,32 +0,0 @@ -Upstream-Status: Inappropriate [configuration] - -XORG_DEFAULT_OPTIONS pulls in the following dependency chains: - -XORG_CWARNFLAGS -> AC_PROG_CC_C99 -XORG_STRICT_OPTION -> AC_PROG_CC_C99, XORG_CWARNFLAGS -XORG_MANPAGE_SECTIONS -> AC_CANONICAL_HOST -> Checks host - -each of which triggers the use of the host compiler. As an "all" -architecture package, it shouldn't need a compiler (and doesn't). - -RP 17/5/2011 - -diff -uNr font-alias-1.0.3.orig//configure.ac font-alias-1.0.3/configure.ac ---- font-alias-1.0.3.orig//configure.ac 2011-05-18 21:29:18.378258643 +0200 -+++ font-alias-1.0.3/configure.ac 2011-05-18 21:32:06.865258593 +0200 -@@ -28,12 +28,12 @@ - AM_INIT_AUTOMAKE([foreign dist-bzip2]) - AM_MAINTAINER_MODE - --# Require xorg-macros: XORG_DEFAULT_OPTIONS - m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])]) - XORG_MACROS_VERSION(1.3) --XORG_DEFAULT_OPTIONS -- -+XORG_RELEASE_VERSION -+XORG_CHANGELOG -+XORG_INSTALL - AC_PROG_INSTALL - - XORG_FONTROOTDIR diff --git a/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb b/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb deleted file mode 100644 index 15e101596a..0000000000 --- a/meta/recipes-graphics/xorg-font/font-alias_1.0.3.bb +++ /dev/null @@ -1,24 +0,0 @@ -SUMMARY = "X font aliases" - -require xorg-font-common.inc - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=bf0158b89be493d523d69d9f29265038 \ - file://cyrillic/fonts.alias;md5=f40795b0640d6785826aecd3b16f6124 \ - file://75dpi/fonts.alias;md5=6bc48023f2ae7f3bfc105db7b0ee6b49 \ - file://misc/fonts.alias;md5=a8ec05d528431d4c9703b55a7efd67a8 \ - file://100dpi/fonts.alias;md5=85bebd6ca213aa656c301a72eb4397cb" - -SRC_URI += "file://nocompiler.patch" - -DEPENDS = "util-macros-native font-util-native" -RDEPENDS_${PN} = "encodings font-util" -RDEPENDS_${PN}_class-native = "font-util-native" - -inherit allarch - -PE = "1" -PR = "${INC_PR}.3" - -SRC_URI[md5sum] = "6d25f64796fef34b53b439c2e9efa562" -SRC_URI[sha256sum] = "8b453b2aae1cfa8090009ca037037b8c5e333550651d5a158b7264ce1d472c9a" diff --git a/meta/recipes-graphics/xorg-font/font-alias_1.0.5.bb b/meta/recipes-graphics/xorg-font/font-alias_1.0.5.bb new file mode 100644 index 0000000000..03c39a4334 --- /dev/null +++ b/meta/recipes-graphics/xorg-font/font-alias_1.0.5.bb @@ -0,0 +1,22 @@ +SUMMARY = "X font aliases" + +require xorg-font-common.inc + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=bf0158b89be493d523d69d9f29265038 \ + file://cyrillic/fonts.alias;md5=d27bc65a2655cacdbc2644b51c064c20 \ + file://75dpi/fonts.alias;md5=6bc48023f2ae7f3bfc105db7b0ee6b49 \ + file://misc/fonts.alias;md5=1bdafa7c31aa54f87f3531f2ef8ed5a6 \ + file://100dpi/fonts.alias;md5=85bebd6ca213aa656c301a72eb4397cb \ + " +SRC_URI_EXT = "xz" + +DEPENDS = "util-macros-native font-util-native" +RDEPENDS:${PN} = "encodings font-util" +RDEPENDS:${PN}:class-native = "font-util-native" + +inherit allarch + +PE = "1" + +SRC_URI[sha256sum] = "9f89e217bb73e0e3636a0a493fbf8b7c995156e0c53d9a0476d201b67c2d6b6e" diff --git a/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb b/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb deleted file mode 100644 index 1289c1686c..0000000000 --- a/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "X.Org font package creation/installation utilities" - -require xorg-font-common.inc - -#Unicode is MIT -LICENSE = "BSD & MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=5df208ec65eb84ce5bb8d82d8f3b9675 \ - file://ucs2any.c;endline=28;md5=8357dc567fc628bd12696f15b2a33bcb \ - file://bdftruncate.c;endline=26;md5=4f82ffc101a1b165eae9c6998abff937 \ - file://map-ISO8859-1;beginline=9;endline=23;md5=1cecb984063248f29ffe5c46f5c04f34" - -DEPENDS = "encodings util-macros" -DEPENDS_class-native = "util-macros-native" -RDEPENDS_${PN} = "mkfontdir mkfontscale encodings" -RDEPENDS_${PN}_class-native = "" - -BBCLASSEXTEND = "native" - -SRC_URI[md5sum] = "23756dab809f9ec5011bb27fb2c3c7d6" -SRC_URI[sha256sum] = "aa7ebdb0715106dd255082f2310dbaa2cd7e225957c2a77d719720c7cc92b921" - -SYSROOT_DIRS_BLACKLIST_remove = "${datadir}/fonts" diff --git a/meta/recipes-graphics/xorg-font/font-util_1.4.1.bb b/meta/recipes-graphics/xorg-font/font-util_1.4.1.bb new file mode 100644 index 0000000000..0c65927fb4 --- /dev/null +++ b/meta/recipes-graphics/xorg-font/font-util_1.4.1.bb @@ -0,0 +1,23 @@ +SUMMARY = "X.Org font package creation/installation utilities" + +require xorg-font-common.inc + +LICENSE = "Unicode-TOU & BSD-4-Clause & BSD-2-Clause" +LIC_FILES_CHKSUM = "file://COPYING;md5=2a9e705c00e463c8d294f90486852e06 \ + file://ucs2any.c;endline=28;md5=8357dc567fc628bd12696f15b2a33bcb \ + file://bdftruncate.c;endline=26;md5=4f82ffc101a1b165eae9c6998abff937 \ + file://map-ISO8859-1;beginline=1;endline=4;md5=9c9c1d525d29c0e82b5c99edbb8e71c1 \ + " + +DEPENDS = "encodings util-macros" +DEPENDS:class-native = "util-macros-native" +RDEPENDS:${PN} = "mkfontdir mkfontscale encodings" +RDEPENDS:${PN}:class-native = "" + +BBCLASSEXTEND = "native" + +SRC_URI[sha256sum] = "5c9f64123c194b150fee89049991687386e6ff36ef2af7b80ba53efaf368cc95" + +SYSROOT_DIRS_IGNORE:remove = "${datadir}/fonts" + +SRC_URI_EXT = "xz" diff --git a/meta/recipes-graphics/xorg-font/xorg-font-common.inc b/meta/recipes-graphics/xorg-font/xorg-font-common.inc index cdbebcf788..edf7cf7642 100644 --- a/meta/recipes-graphics/xorg-font/xorg-font-common.inc +++ b/meta/recipes-graphics/xorg-font/xorg-font-common.inc @@ -2,36 +2,35 @@ HOMEPAGE = "http://www.x.org" BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" SECTION = "x11/fonts" -LICENSE = "MIT-X" +LICENSE = "MIT" DEPENDS = " encodings font-alias font-util-native" -RDEPENDS_${PN} = "encodings font-util font-alias" +RDEPENDS:${PN} = "encodings font-util font-alias" XORG_PN = "${BPN}" -INC_PR = "r2" - -SRC_URI = "${XORG_MIRROR}/individual/font/${XORG_PN}-${PV}.tar.bz2" +SRC_URI_EXT = "bz2" +SRC_URI = "${XORG_MIRROR}/individual/font/${XORG_PN}-${PV}.tar.${SRC_URI_EXT}" S = "${WORKDIR}/${XORG_PN}-${PV}" -inherit autotools pkgconfig distro_features_check +inherit autotools pkgconfig features_check # The mkfontscale-native requires x11 in DISTRO_FEATURES REQUIRED_DISTRO_FEATURES = "x11" EXTRA_OEMAKE += "FCCACHE=/bin/true UTIL_DIR=${STAGING_DIR_TARGET}\$\(MAPFILES_PATH\)" -do_install_append() { +do_install:append() { find ${D}${libdir}/X11/fonts -type f -name fonts.dir | xargs rm -f find ${D}${libdir}/X11/fonts -type f -name fonts.scale | xargs rm -f find ${D}${datadir}/fonts/X11 -type f -name fonts.dir | xargs rm -f find ${D}${datadir}/fonts/X11 -type f -name fonts.scale | xargs rm -f } -FILES_${PN} += " ${libdir}/X11/fonts ${datadir}" +FILES:${PN} += " ${libdir}/X11/fonts ${datadir}" PACKAGE_WRITE_DEPS += "mkfontdir-native mkfontscale-native" -pkg_postinst_${PN} () { +pkg_postinst:${PN} () { for fontdir in `find $D/usr/lib/X11/fonts -type d`; do mkfontdir $fontdir mkfontscale $fontdir diff --git a/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb b/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb index 9bcd1b2fa6..d32ef77447 100644 --- a/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb +++ b/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb @@ -10,10 +10,11 @@ LIC_FILES_CHKSUM = "file://../misc/fonts.dir;md5=82a143d94d6a974aafe97132d2d519a SRC_URI = "file://misc" +SOURCE_DATE_EPOCH = "1613559011" + PE = "1" -PR = "r2" -inherit allarch distro_features_check +inherit allarch features_check # The font-alias requires x11 in DISTRO_FEATURES REQUIRED_DISTRO_FEATURES = "x11" @@ -21,12 +22,14 @@ REQUIRED_DISTRO_FEATURES = "x11" S = "${WORKDIR}/misc" PACKAGES = "${PN}" -FILES_${PN} = "${libdir}/X11/ ${datadir}/fonts/X11/" -RDEPENDS_${PN} += "font-alias" +FILES:${PN} = "${libdir}/X11/ ${datadir}/fonts/X11/" +RDEPENDS:${PN} += "font-alias" do_install() { install -d ${D}/${datadir}/fonts/X11/misc install -m 0644 ${S}/* ${D}/${datadir}/fonts/X11/misc/ + # Pick a date/time as otherwise it would be the git checkout/modify time + touch -d @1613559011 ${D}/${datadir}/fonts/X11/misc/* install -d ${D}/${libdir}/X11 ln -sf ${datadir}/fonts/X11/ ${D}/${libdir}/X11/fonts -s } diff --git a/meta/recipes-graphics/xorg-lib/libdmx_1.1.4.bb b/meta/recipes-graphics/xorg-lib/libdmx_1.1.4.bb deleted file mode 100644 index 66172cb30c..0000000000 --- a/meta/recipes-graphics/xorg-lib/libdmx_1.1.4.bb +++ /dev/null @@ -1,20 +0,0 @@ -require xorg-lib-common.inc - -SUMMARY = "DMX: Distributed Multihead X extension library" - -DESCRIPTION = "The DMX extension provides support for communication with \ -and control of Xdmx(1) server. Attributes of the Xdmx(1) server and of \ -the back-end screens attached to the server can be queried and modified \ -via this protocol." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=a3c3499231a8035efd0e004cfbd3b72a \ - file://src/dmx.c;endline=33;md5=c43f19af03c7c8619cadc9724ed9afe1" - -DEPENDS += "libxext xorgproto" - -PE = "1" - -SRC_URI[md5sum] = "d2f1f0ec68ac3932dd7f1d9aa0a7a11c" -SRC_URI[sha256sum] = "253f90005d134fa7a209fbcbc5a3024335367c930adf0f3203e754cf32747243" - diff --git a/meta/recipes-graphics/xorg-lib/libfontenc_1.1.4.bb b/meta/recipes-graphics/xorg-lib/libfontenc_1.1.8.bb index 1fc74b1995..0fc117fc58 100644 --- a/meta/recipes-graphics/xorg-lib/libfontenc_1.1.4.bb +++ b/meta/recipes-graphics/xorg-lib/libfontenc_1.1.8.bb @@ -11,7 +11,6 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=96254c20ab81c63e65b26f0dbcd4a1c1" DEPENDS += "zlib xorgproto font-util" PE = "1" -SRC_URI[md5sum] = "6447db6a689fb530c218f0f8328c3abc" -SRC_URI[sha256sum] = "2cfcce810ddd48f2e5dc658d28c1808e86dcf303eaff16728b9aa3dbc0092079" +SRC_URI[sha256sum] = "7b02c3d405236e0d86806b1de9d6868fe60c313628b38350b032914aa4fd14c6" BBCLASSEXTEND = "native" diff --git a/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch b/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch deleted file mode 100644 index 20c6dda2e4..0000000000 --- a/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch +++ /dev/null @@ -1,149 +0,0 @@ -From ff5e59f32255913bb1cdf51441b98c9107ae165b Mon Sep 17 00:00:00 2001 -From: Benjamin Tissoires <benjamin.tissoires@gmail.com> -Date: Tue, 4 Apr 2017 19:12:53 +0200 -Subject: Use getentropy() if arc4random_buf() is not available - -This allows to fix CVE-2017-2626 on Linux platforms without pulling in -libbsd. -The libc getentropy() is available since glibc 2.25 but also on OpenBSD. -For Linux, we need at least a v3.17 kernel. If the recommended -arc4random_buf() function is not available, emulate it by first trying -to use getentropy() on a supported glibc and kernel. If the call fails, -fall back to the current (partly vulnerable) code. - -Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> -Reviewed-by: Mark Kettenis <kettenis@openbsd.org> -Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> -Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> - -Upstream-Status: Backport[https://cgit.freedesktop.org/xorg/lib/libICE - /commit/?id=ff5e59f32255913bb1cdf51441b98c9107ae165b] - -CVE: CVE-2017-2626 - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - configure.ac | 2 +- - src/iceauth.c | 65 ++++++++++++++++++++++++++++++++++++++++++----------------- - 2 files changed, 47 insertions(+), 20 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 458882a..c971ab6 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -38,7 +38,7 @@ AC_DEFINE(ICE_t, 1, [Xtrans transport type]) - - # Checks for library functions. - AC_CHECK_LIB([bsd], [arc4random_buf]) --AC_CHECK_FUNCS([asprintf arc4random_buf]) -+AC_CHECK_FUNCS([asprintf arc4random_buf getentropy]) - - # Allow checking code with lint, sparse, etc. - XORG_WITH_LINT -diff --git a/src/iceauth.c b/src/iceauth.c -index ed31683..de4785b 100644 ---- a/src/iceauth.c -+++ b/src/iceauth.c -@@ -44,31 +44,19 @@ Author: Ralph Mor, X Consortium - - static int was_called_state; - --/* -- * MIT-MAGIC-COOKIE-1 is a sample authentication method implemented by -- * the SI. It is not part of standard ICElib. -- */ -+#ifndef HAVE_ARC4RANDOM_BUF - -- --char * --IceGenerateMagicCookie ( -+static void -+emulate_getrandom_buf ( -+ char *auth, - int len - ) - { -- char *auth; --#ifndef HAVE_ARC4RANDOM_BUF - long ldata[2]; - int seed; - int value; - int i; --#endif - -- if ((auth = malloc (len + 1)) == NULL) -- return (NULL); -- --#ifdef HAVE_ARC4RANDOM_BUF -- arc4random_buf(auth, len); --#else - #ifdef ITIMER_REAL - { - struct timeval now; -@@ -76,13 +64,13 @@ IceGenerateMagicCookie ( - ldata[0] = now.tv_sec; - ldata[1] = now.tv_usec; - } --#else -+#else /* ITIMER_REAL */ - { - long time (); - ldata[0] = time ((long *) 0); - ldata[1] = getpid (); - } --#endif -+#endif /* ITIMER_REAL */ - seed = (ldata[0]) + (ldata[1] << 16); - srand (seed); - for (i = 0; i < len; i++) -@@ -90,7 +78,46 @@ IceGenerateMagicCookie ( - value = rand (); - auth[i] = value & 0xff; - } --#endif -+} -+ -+static void -+arc4random_buf ( -+ char *auth, -+ int len -+) -+{ -+ int ret; -+ -+#if HAVE_GETENTROPY -+ /* weak emulation of arc4random through the entropy libc */ -+ ret = getentropy (auth, len); -+ if (ret == 0) -+ return; -+#endif /* HAVE_GETENTROPY */ -+ -+ emulate_getrandom_buf (auth, len); -+} -+ -+#endif /* !defined(HAVE_ARC4RANDOM_BUF) */ -+ -+/* -+ * MIT-MAGIC-COOKIE-1 is a sample authentication method implemented by -+ * the SI. It is not part of standard ICElib. -+ */ -+ -+ -+char * -+IceGenerateMagicCookie ( -+ int len -+) -+{ -+ char *auth; -+ -+ if ((auth = malloc (len + 1)) == NULL) -+ return (NULL); -+ -+ arc4random_buf (auth, len); -+ - auth[len] = '\0'; - return (auth); - } --- -cgit v1.1 - diff --git a/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb b/meta/recipes-graphics/xorg-lib/libice_1.1.1.bb index c1b19138fb..d5e3d28e06 100644 --- a/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb +++ b/meta/recipes-graphics/xorg-lib/libice_1.1.1.bb @@ -8,7 +8,7 @@ negotiating versions, and for reporting errors. " require xorg-lib-common.inc -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=d162b1b3c6fa812da9d804dcf8584a93" DEPENDS += "xorgproto xtrans" @@ -20,10 +20,7 @@ XORG_PN = "libICE" BBCLASSEXTEND = "native nativesdk" -SRC_URI[md5sum] = "addfb1e897ca8079531669c7c7711726" -SRC_URI[sha256sum] = "8f7032f2c1c64352b5423f6b48a8ebdc339cc63064af34d66a6c9aa79759e202" - -SRC_URI += "file://CVE-2017-2626.patch" +SRC_URI[sha256sum] = "03e77afaf72942c7ac02ccebb19034e6e20f456dcf8dddadfeb572aa5ad3e451" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" PACKAGECONFIG[arc4] = "ac_cv_lib_bsd_arc4random_buf=yes,ac_cv_lib_bsd_arc4random_buf=no,libbsd" diff --git a/meta/recipes-graphics/xorg-lib/libpciaccess/0004-Don-t-include-sys-io.h-on-arm.patch b/meta/recipes-graphics/xorg-lib/libpciaccess/0004-Don-t-include-sys-io.h-on-arm.patch deleted file mode 100644 index f532858244..0000000000 --- a/meta/recipes-graphics/xorg-lib/libpciaccess/0004-Don-t-include-sys-io.h-on-arm.patch +++ /dev/null @@ -1,28 +0,0 @@ -From b6df5202306bd71158b482f25ca2e6919645d4dd Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Thu, 4 Jun 2015 20:55:06 -0700 -Subject: [PATCH 4/4] Don't include sys/io.h on arm - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - src/linux_sysfs.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/linux_sysfs.c b/src/linux_sysfs.c -index 3f95e53..1e3aad3 100644 ---- a/src/linux_sysfs.c -+++ b/src/linux_sysfs.c -@@ -50,7 +50,7 @@ - #include <dirent.h> - #include <errno.h> - --#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) -+#if defined(__i386__) || defined(__x86_64__) - #include <sys/io.h> - #else - #define inb(x) -1 --- -2.1.4 - diff --git a/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb b/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb deleted file mode 100644 index d030c31bd0..0000000000 --- a/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb +++ /dev/null @@ -1,20 +0,0 @@ -SUMMARY = "Generic PCI access library for X" - -DESCRIPTION = "libpciaccess provides functionality for X to access the \ -PCI bus and devices in a platform-independent way." - -require xorg-lib-common.inc - -SRC_URI += "\ - file://0004-Don-t-include-sys-io.h-on-arm.patch \ -" - -SRC_URI[md5sum] = "8f436e151d5106a9cfaa71857a066d33" -SRC_URI[sha256sum] = "3df543e12afd41fea8eac817e48cbfde5aed8817b81670a4e9e493bb2f5bf2a4" - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=277aada5222b9a22fbf3471ff3687068" - -REQUIRED_DISTRO_FEATURES = "" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libpciaccess_0.18.1.bb b/meta/recipes-graphics/xorg-lib/libpciaccess_0.18.1.bb new file mode 100644 index 0000000000..d311fd95e0 --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libpciaccess_0.18.1.bb @@ -0,0 +1,26 @@ +SUMMARY = "Generic PCI access library for X" + +DESCRIPTION = "libpciaccess provides functionality for X to access the \ +PCI bus and devices in a platform-independent way." + +HOMEPAGE = "http://www.x.org" +BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" + +SECTION = "x11/libs" +LICENSE = "MIT" +DEPENDS = "util-macros" + +SRC_URI = "${XORG_MIRROR}/individual/lib/${BP}.tar.xz" + +inherit features_check pkgconfig meson + +REQUIRED_DISTRO_FEATURES ?= "x11" + +SRC_URI[sha256sum] = "4af43444b38adb5545d0ed1c2ce46d9608cc47b31c2387fc5181656765a6fa76" + +LICENSE = "MIT & MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=54c978968e565218eea36cf03ef24352" + +REQUIRED_DISTRO_FEATURES = "" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libpthread-stubs_0.4.bb b/meta/recipes-graphics/xorg-lib/libpthread-stubs_0.5.bb index ffa1c859d6..62384e6d2e 100644 --- a/meta/recipes-graphics/xorg-lib/libpthread-stubs_0.4.bb +++ b/meta/recipes-graphics/xorg-lib/libpthread-stubs_0.5.bb @@ -7,13 +7,12 @@ SECTION = "x11/libs" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=6edc1fea03d959f0c2d743fe5ca746ad" -SRC_URI = "http://xcb.freedesktop.org/dist/${BP}.tar.bz2" -SRC_URI[md5sum] = "48c1544854a94db0e51499cc3afd797f" -SRC_URI[sha256sum] = "e4d05911a3165d3b18321cc067fdd2f023f06436e391c6a28dff618a78d2e733" +SRC_URI = "http://xcb.freedesktop.org/dist/${BP}.tar.xz" +SRC_URI[sha256sum] = "59da566decceba7c2a7970a4a03b48d9905f1262ff94410a649224e33d2442bc" inherit autotools -RDEPENDS_${PN}-dev = "" -RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" +DEV_PKG_DEPENDENCY = "" +RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb b/meta/recipes-graphics/xorg-lib/libsm_1.2.4.bb index 49df690f0a..ab030723c6 100644 --- a/meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb +++ b/meta/recipes-graphics/xorg-lib/libsm_1.2.4.bb @@ -8,7 +8,7 @@ has a particular state." require xorg-lib-common.inc -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=c0fb37f44e02bdbde80546024400728d" DEPENDS += "libice xorgproto xtrans" @@ -22,8 +22,7 @@ PE = "1" XORG_PN = "libSM" -SRC_URI[md5sum] = "87c7fad1c1813517979184c8ccd76628" -SRC_URI[sha256sum] = "2d264499dcb05f56438dee12a1b4b71d76736ce7ba7aa6efbf15ebb113769cbb" +SRC_URI[sha256sum] = "fdcbe51e4d1276b1183da77a8a4e74a137ca203e0bcfb20972dd5f3347e97b84" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," diff --git a/meta/recipes-graphics/xorg-lib/libx11-compose-data/0001-Drop-x11-dependencies.patch b/meta/recipes-graphics/xorg-lib/libx11-compose-data/0001-Drop-x11-dependencies.patch new file mode 100644 index 0000000000..61af98d95e --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libx11-compose-data/0001-Drop-x11-dependencies.patch @@ -0,0 +1,90 @@ +From e1f9b0b531c6ddb11a85c0664051e2e4efc589fb Mon Sep 17 00:00:00 2001 +From: Ming Liu <ming.liu@toradex.com> +Date: Sun, 5 May 2019 11:55:14 +0200 +Subject: [PATCH] Drop x11 dependencies + +Upstream-Status: Inappropriate [OE-Specific] + +Signed-off-by: Ming Liu <ming.liu@toradex.com> + +Rebase for version 1.8.3. + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- + configure.ac | 44 -------------------------------------------- + 1 file changed, 44 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 33d0102..50e2d93 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -76,27 +76,8 @@ fi + AC_SUBST([EXEEXT_FOR_BUILD]) + + # Checks for pkg-config packages +- +-# Always required +-X11_REQUIRES='xproto >= 7.0.25 xextproto xtrans xcb >= 1.11.1' +-X11_EXTRA_DEPS="xcb >= 1.11.1" +- + PKG_PROG_PKG_CONFIG() + +-AC_SUBST(X11_EXTRA_DEPS) +- +-# Issue an error if xtrans.m4 was not found and XTRANS_CONNECTION_FLAGS macro +-# was not expanded, since libX11 with no transport types is rather useless. +-# +-# If you're seeing an error here, be sure you installed the lib/xtrans module +-# first and if it's not in the default location, that you set the ACLOCAL +-# environment variable to find it, such as: +-# ACLOCAL="aclocal -I ${PREFIX}/share/aclocal" +-m4_pattern_forbid([^XTRANS_CONNECTION_FLAGS$]) +- +-# Transport selection macro from xtrans.m4 +-XTRANS_CONNECTION_FLAGS +- + # Check for dlopen + AC_MSG_CHECKING([if run-time linking is supported]) + AC_SEARCH_LIBS(dlopen,[dl svld]) +@@ -255,30 +236,6 @@ AC_SUBST(USE_THREAD_LIBS) + + AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, 1, [poll() function is available])], ) + +-# +-# Find keysymdef.h +-# +-AC_MSG_CHECKING([keysym definitions]) +-AC_ARG_WITH([keysymdefdir], +- [AC_HELP_STRING([--with-keysymdefdir=DIR], [The location of keysymdef.h (defaults to xproto include dir)])], +- [KEYSYMDEFDIR=$withval], +- [KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11]) +- +-if test ! -d "$KEYSYMDEFDIR"; then +- AC_MSG_ERROR([$KEYSYMDEFDIR doesn't exist or isn't a directory]) +-fi +- +-FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h" +-for i in $FILES; do +- if test -f "$KEYSYMDEFDIR/$i"; then +- KEYSYMDEFS="$KEYSYMDEFS $KEYSYMDEFDIR/$i" +- elif test "x$i" = "xkeysymdef.h"; then +- AC_MSG_ERROR([Cannot find keysymdef.h]) +- fi +-done +-AC_MSG_RESULT([$KEYSYMDEFS]) +-AC_SUBST(KEYSYMDEFS) +- + AC_ARG_ENABLE(xcms, + AS_HELP_STRING([--disable-xcms], + [Disable Xlib support for CMS *EXPERIMENTAL*]), +@@ -358,7 +315,6 @@ X11_LIBDIR="${libdir}/X11" + AX_DEFINE_DIR(X11_LIBDIR, X11_LIBDIR, [Location of libX11 library data]) + AC_SUBST(X11_LIBDIR) + +-PKG_CHECK_MODULES(X11, [$X11_REQUIRES]) + X11_CFLAGS="$X11_CFLAGS $XTHREAD_CFLAGS" + + # +-- +2.7.4 + diff --git a/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.8.4.bb b/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.8.4.bb new file mode 100644 index 0000000000..2131f46213 --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.8.4.bb @@ -0,0 +1,35 @@ +SUMMARY = "Xlib: Compose data files for libx11" +DESCRIPTION = "This package provides the compose data files for libx11." + +python () { + if bb.utils.contains('DISTRO_FEATURES', 'x11', True, False, d): + raise bb.parse.SkipRecipe("libx11-compose-data is incompatible with x11 distro feature, use libx11 instead.") +} + +require xorg-lib-common.inc + +LICENSE = "MIT & BSD-1-Clause & HPND & HPND-sell-variant & ISC" +LIC_FILES_CHKSUM = "file://COPYING;md5=1d49cdd2b386c5db11ec636d680b7116" + +XORG_PN = "libX11" + +SRC_URI += "file://0001-Drop-x11-dependencies.patch \ + " + +SRC_URI[sha256sum] = "c9a287a5aefa9804ce3cfafcf516fe96ed3f7e8e45c0e2ee59e84c86757df518" + +REQUIRED_DISTRO_FEATURES = "" + +EXTRA_OECONF += "--disable-xkb" + +do_compile() { + oe_runmake -C nls +} + +do_install() { + oe_runmake DESTDIR=${D} -C nls install +} + +PACKAGES = "${PN}" + +FILES:${PN} = "${datadir}/X11/locale ${libdir}/X11/locale" diff --git a/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.7.bb b/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.7.bb deleted file mode 100644 index 9c773a09dd..0000000000 --- a/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.7.bb +++ /dev/null @@ -1,16 +0,0 @@ -require libx11.inc - -DESCRIPTION += " Support for XCMS and XLOCALE is disabled in \ -this version." - -SRC_URI += "file://X18NCMSstubs.patch \ - file://fix-disable-xlocale.patch \ - file://fix-utf8-wrong-define.patch \ - " - -RPROVIDES_${PN}-dev = "libx11-dev" -RPROVIDES_${PN}-locale = "libx11-locale" - -EXTRA_OECONF += "--disable-xlocale" - -PACKAGECONFIG ??= "" diff --git a/meta/recipes-graphics/xorg-lib/libx11.inc b/meta/recipes-graphics/xorg-lib/libx11.inc deleted file mode 100644 index ea2ebfb8b9..0000000000 --- a/meta/recipes-graphics/xorg-lib/libx11.inc +++ /dev/null @@ -1,38 +0,0 @@ -SUMMARY = "Xlib: C Language X Interface library" - -DESCRIPTION = "This package provides a client interface to the X Window \ -System, otherwise known as 'Xlib'. It provides a complete API for the \ -basic functions of the window system." - -require xorg-lib-common.inc - -FILESEXTRAPATHS =. "${FILE_DIRNAME}/libx11:" - -PE = "1" - -SRC_URI[md5sum] = "034fdd6cc5393974d88aec6f5bc96162" -SRC_URI[sha256sum] = "910e9e30efba4ad3672ca277741c2728aebffa7bc526f04dcfa74df2e52a1348" - -PROVIDES = "virtual/libx11" - -XORG_PN = "libX11" -LICENSE = "MIT & MIT-style & BSD" -LIC_FILES_CHKSUM = "file://COPYING;md5=172255dee66bb0151435b2d5d709fcf7" - -DEPENDS += "xorgproto xtrans libxcb" -DEPENDS += "xorgproto-native" - -EXTRA_OECONF += "--with-keysymdefdir=${STAGING_INCDIR}/X11/ --disable-xf86bigfont" -EXTRA_OEMAKE += 'CWARNFLAGS=""' - -PACKAGECONFIG ??= "xcms" -PACKAGECONFIG[xcms] = "--enable-xcms,--disable-xcms" - -# src/util/makekeys is built natively but needs -D_GNU_SOURCE defined. -CPPFLAGS_FOR_BUILD += "-D_GNU_SOURCE" - -PACKAGES =+ "${PN}-xcb" - -FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${datadir}/X11/Xcms.txt" -FILES_${PN}-xcb += "${libdir}/libX11-xcb.so.*" -FILES_${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale" diff --git a/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch b/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch deleted file mode 100644 index 2a723b7e43..0000000000 --- a/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 5235a7f3692a4c3c90dd4ac1be3c670388904bbe Mon Sep 17 00:00:00 2001 -From: Tatu Frisk <tatu.frisk@ge.com> -Date: Tue, 14 Mar 2017 14:41:27 +0200 -Subject: [PATCH] Fix hanging issue in _XReply - -Assume event queue is empty if another thread is blocking waiting for event. - -If one thread was blocking waiting for an event and another thread sent a -reply to the X server, both threads got blocked until an event was -received. - -Upstream-Status: Submitted [https://patchwork.freedesktop.org/patch/171458/] - -This patch needs to be removed once the corresponding patch has been merged upstream. - -https://patchwork.freedesktop.org/patch/171458/ - -Signed-off-by: Tatu Frisk <tatu.frisk@ge.com> -Signed-off-by: Jose Alarcon <jose.alarcon@ge.com> - -[Refreshed for 1.6.7 update] -Signed-off-by: Armin Kuster <akuster808@gmail.com> - ---- - src/xcb_io.c | 19 +++++++------------ - 1 file changed, 7 insertions(+), 12 deletions(-) - -Index: libX11-1.6.7/src/xcb_io.c -=================================================================== ---- libX11-1.6.7.orig/src/xcb_io.c -+++ libX11-1.6.7/src/xcb_io.c -@@ -620,18 +620,14 @@ Status _XReply(Display *dpy, xReply *rep - if(dpy->xcb->event_owner == XlibOwnsEventQueue) - { - xcb_generic_reply_t *event; -- /* If some thread is already waiting for events, -- * it will get the first one. That thread must -- * process that event before we can continue. */ -- /* FIXME: That event might be after this reply, -- * and might never even come--or there might be -- * multiple threads trying to get events. */ -- while(dpy->xcb->event_waiter) -- { /* need braces around ConditionWait */ -- ConditionWait(dpy, dpy->xcb->event_notify); -- } -- while((event = poll_for_event(dpy, True))) -- handle_response(dpy, event, True); -+ -+ /* Assume event queue is empty if another thread is blocking -+ * waiting for event. */ -+ if(!dpy->xcb->event_waiter) -+ { -+ while((event = poll_for_response(dpy))) -+ handle_response(dpy, event, True); -+ } - } - - req->reply_waiter = 0; diff --git a/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch b/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch deleted file mode 100644 index c1172147a6..0000000000 --- a/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch +++ /dev/null @@ -1,536 +0,0 @@ -From 62005ad019d6afb81da100b3113292a16472d241 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Mon, 10 Sep 2018 09:08:27 +0800 -Subject: [PATCH] Stub out x18n - -Update patch to version 1.6.6 -Signed-off-by: Changqing Li <changqing.li@windriver.com> -Upstream-Status: Inappropriate [configuration] ---- - src/Makefile.am | 5 +- - src/X18NCMSstubs.c | 426 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/imConv.c | 5 +- - src/locking.c | 4 + - 4 files changed, 438 insertions(+), 2 deletions(-) - create mode 100644 src/X18NCMSstubs.c - -diff --git a/src/Makefile.am b/src/Makefile.am -index f8c476d..cdbcbbd 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -336,13 +336,16 @@ if THRSTUBS - libX11_la_SOURCES+=UIThrStubs.c - endif - -+libX11_la_SOURCES+=X18NCMSstubs.c -+ - x11datadir = @X11_DATADIR@ - x11data_DATA = XErrorDB - - EXTRA_DIST = \ - $(x11data_DATA) \ - os2Stubs.c \ -- UIThrStubs.c -+ UIThrStubs.c \ -+ X18NCMSstubs.c - - libX11_xcb_la_SOURCES = x11_xcb.c Xxcbint.h - libX11_xcb_la_LDFLAGS = -version-number 1:0:0 -no-undefined -diff --git a/src/X18NCMSstubs.c b/src/X18NCMSstubs.c -new file mode 100644 -index 0000000..429cb31 ---- /dev/null -+++ b/src/X18NCMSstubs.c -@@ -0,0 +1,426 @@ -+ /* - Provides stubs and dummy funcs needed when Xcms and XLocale stuff removed -+ * -+ * Copyright © 2003 Matthew Allum -+ * -+ * Permission to use, copy, modify, distribute, and sell this software and its -+ * documentation for any purpose is hereby granted without fee, provided that -+ * the above copyright notice appear in all copies and that both that -+ * copyright notice and this permission notice appear in supporting -+ * documentation, and that the name of Matthew Allum not be used in -+ * advertising or publicity pertaining to distribution of the software without -+ * specific, written prior permission. Keith Packard and Compaq makes no -+ * representations about the suitability of this software for any purpose. It -+ * is provided "as is" without express or implied warranty. -+ * -+ * MATTHEW ALLUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS -+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, -+ * IN NO EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR -+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -+ * PERFORMANCE OF THIS SOFTWARE. -+ */ -+ -+#include <stdlib.h> -+#include "Xlibint.h" -+#include "Xlcint.h" -+#include <X11/Xlocale.h> -+#include <X11/Xos.h> -+#ifdef WIN32 -+#undef close -+#endif -+#include <X11/Xutil.h> -+#include "XlcPubI.h" -+ -+#include "Xcmsint.h" /* for XcmsCCC type */ -+#include "XlcPubI.h" /* for XLCd type */ -+#include "config.h" -+ -+#if ! XLOCALE -+ -+Bool -+XSupportsLocale() -+{ -+ return False; -+} -+ -+char * -+XSetLocaleModifiers( -+ const char *modifiers) -+{ -+ return NULL; -+} -+ -+XLCd -+_XOpenLC( -+ char *name) -+{ -+ return NULL; -+} -+ -+XLCd -+_XlcCurrentLC() -+{ -+ return NULL; -+} -+ -+void -+_XlcVaToArgList( -+ va_list var, -+ int count, -+ XlcArgList *args_ret) -+{ -+ return; -+} -+ -+void -+_XlcCountVaList( -+ va_list var, -+ int *count_ret) -+{ -+ return; -+} -+ -+void -+_XCloseLC( -+ XLCd lcd) -+{ -+ return; -+} -+ -+int -+_XlcConvert( -+ XlcConv conv, -+ XPointer *from, -+ int *from_left, -+ XPointer *to, -+ int *to_left, -+ XPointer *args, -+ int num_args) -+{ -+ return 0; -+} -+ -+/* XIM Stubs */ -+ -+XPointer -+_XimGetLocaleCode ( _Xconst char* encoding_name ) -+{ -+ return NULL; -+} -+ -+int -+_XimGetCharCode ( -+ XPointer ucs_conv, -+ KeySym keysym, -+ unsigned char* buf, -+ int nbytes) -+{ -+ return 0; -+} -+ -+/* Xrm Stubs */ -+ -+XrmMethods -+_XrmInitParseInfo( -+ XPointer *state) -+{ -+ return (XrmMethods) NULL; -+} -+ -+/* Xwc Stubs */ -+ -+int -+XwcTextExtents( -+ XFontSet font_set, -+ _Xconst wchar_t *text, -+ int text_len, -+ XRectangle *overall_ink_extents, -+ XRectangle *overall_logical_extents) -+{ -+ return 0; -+} -+ -+void -+XwcDrawString(Display *display, -+ Drawable d, -+ XFontSet font_set, -+ GC gc, -+ int x, int y, -+ _Xconst wchar_t *string, -+ int num_wchars) -+{ -+ ; -+} -+ -+void -+XwcDrawText( -+ Display *dpy, -+ Drawable d, -+ GC gc, -+ int x, -+ int y, -+ XwcTextItem *text_items, -+ int nitems) -+{ -+ ; -+} -+ -+void -+XwcDrawImageString( -+ Display *dpy, -+ Drawable d, -+ XFontSet font_set, -+ GC gc, -+ int x, -+ int y, -+ _Xconst wchar_t *text, -+ int text_len) -+{ -+ ; -+} -+ -+int -+XwcTextEscapement( -+ XFontSet font_set, -+ _Xconst wchar_t *text, -+ int text_len) -+{ -+ return 0; -+} -+ -+Status -+XwcTextPerCharExtents( -+ XFontSet font_set, -+ _Xconst wchar_t *text, -+ int text_len, -+ XRectangle *ink_extents_buffer, -+ XRectangle *logical_extents_buffer, -+ int buffer_size, -+ int *num_chars, -+ XRectangle *max_ink_extents, -+ XRectangle *max_logical_extents) -+{ -+ return(XcmsFailure); -+} -+ -+int -+XwcTextPropertyToTextList( -+ Display *dpy, -+ const XTextProperty *text_prop, -+ wchar_t ***list_ret, -+ int *count_ret) -+{ -+ return 0; -+} -+ -+int -+XwcTextListToTextProperty( -+ Display *dpy, -+ wchar_t **list, -+ int count, -+ XICCEncodingStyle style, -+ XTextProperty *text_prop) -+{ -+ return 0; -+} -+ -+void -+XwcFreeStringList(wchar_t **list) -+{ -+ return; -+} -+ -+ -+void XmbSetWMProperties ( /* Actually from mbWMProps.c */ -+ Display *dpy, -+ Window w, -+ _Xconst char *windowName, -+ _Xconst char *iconName, -+ char **argv, -+ int argc, -+ XSizeHints *sizeHints, -+ XWMHints *wmHints, -+ XClassHint *classHints) -+{ -+ return; -+} -+ -+int -+XmbTextPropertyToTextList( -+ Display *dpy, -+ const XTextProperty *text_prop, -+ char ***list_ret, -+ int *count_ret) -+{ -+ return XLocaleNotSupported; -+} -+ -+int -+XmbTextListToTextProperty( -+ Display *dpy, -+ char **list, -+ int count, -+ XICCEncodingStyle style, -+ XTextProperty *text_prop) -+{ -+ return XLocaleNotSupported; -+} -+ -+int -+XmbTextExtents( -+ XFontSet font_set, -+ _Xconst char *text, -+ int text_len, -+ XRectangle *overall_ink_extents, -+ XRectangle *overall_logical_extents) -+{ -+ return 0; -+} -+ -+void -+XmbDrawText( -+ Display *dpy, -+ Drawable d, -+ GC gc, -+ int x, -+ int y, -+ XmbTextItem *text_items, -+ int nitems) -+{ -+ ; -+} -+ -+void -+XmbDrawString( -+ Display *dpy, -+ Drawable d, -+ XFontSet font_set, -+ GC gc, -+ int x, -+ int y, -+ _Xconst char *text, -+ int text_len) -+{ -+ ; -+} -+ -+void -+XmbDrawImageString( -+ Display *dpy, -+ Drawable d, -+ XFontSet font_set, -+ GC gc, -+ int x, -+ int y, -+ _Xconst char *text, -+ int text_len) -+{ -+ ; -+} -+ -+int -+XmbTextEscapement( -+ XFontSet font_set, -+ _Xconst char *text, -+ int text_len) -+{ -+ return 0; -+} -+ -+Status -+XmbTextPerCharExtents( -+ XFontSet font_set, -+ _Xconst char *text, -+ int text_len, -+ XRectangle *ink_extents_buffer, -+ XRectangle *logical_extents_buffer, -+ int buffer_size, -+ int *num_chars, -+ XRectangle *max_ink_extents, -+ XRectangle *max_logical_extents) -+{ -+ return 0; -+} -+ -+unsigned int -+KeySymToUcs4(KeySym keysym) -+{ -+ return 0; -+} -+ -+#endif -+ -+#if ! XCMS -+ -+XcmsCCC -+XcmsCCCOfColormap(dpy, cmap) -+ Display *dpy; -+ Colormap cmap; -+{ -+ return NULL; -+} -+ -+Status -+_XcmsResolveColorString ( -+ XcmsCCC ccc, -+ const char **color_string, -+ XcmsColor *pColor_exact_return, -+ XcmsColorFormat result_format) -+{ -+ return(XcmsFailure); -+} -+ -+void -+_XcmsUnresolveColor( -+ XcmsCCC ccc, -+ XcmsColor *pColor) -+{ -+ return; -+} -+ -+void -+_XUnresolveColor( -+ XcmsCCC ccc, -+ XColor *pXColor) -+{ -+ return; -+} -+ -+XcmsCmapRec * -+_XcmsAddCmapRec(dpy, cmap, windowID, visual) -+ Display *dpy; -+ Colormap cmap; -+ Window windowID; -+ Visual *visual; -+{ -+ return NULL; -+} -+ -+void -+_XcmsRGB_to_XColor( -+ XcmsColor *pColors, -+ XColor *pXColors, -+ unsigned int nColors) -+{ -+ return; -+} -+ -+XcmsCmapRec * -+_XcmsCopyCmapRecAndFree( -+ Display *dpy, -+ Colormap src_cmap, -+ Colormap copy_cmap) -+{ -+ return NULL; -+} -+ -+void -+_XcmsDeleteCmapRec( -+ Display *dpy, -+ Colormap cmap) -+{ -+ return; -+} -+ -+#endif -diff --git a/src/imConv.c b/src/imConv.c -index c3c1974..04ecc81 100644 ---- a/src/imConv.c -+++ b/src/imConv.c -@@ -80,6 +80,7 @@ static const struct SubstRec SubstTable[] = { - * from UCS char to specified charset char. - * This converter is needed for _XimGetCharCode subroutine. - */ -+#ifdef XLOCALE - XPointer - _XimGetLocaleCode ( - _Xconst char* encoding_name) -@@ -93,7 +94,7 @@ _XimGetLocaleCode ( - } - return cvt; - } -- -+#endif - /* - * Returns the locale dependent representation of a keysym. - * The locale's encoding is passed in form of pointer to UCS convertor. -@@ -105,6 +105,7 @@ _XimGetLocaleCode ( - * locale - */ - /*ARGSUSED*/ -+#ifdef XLOCALE - int - _XimGetCharCode ( - XPointer ucs_conv, -@@ -133,6 +134,7 @@ _XimGetCharCode ( - buf[count]= '\0'; - return count; - } -+#endif - - #ifdef XKB - static int lookup_string( -diff --git a/src/locking.c b/src/locking.c -index 9f4fe06..e6967ee 100644 ---- a/src/locking.c -+++ b/src/locking.c -@@ -65,7 +65,9 @@ in this Software without prior written authorization from The Open Group. - #define NUM_FREE_CVLS 4 - - /* in lcWrap.c */ -+#ifdef XLOCALE - extern LockInfoPtr _Xi18n_lock; -+#endif - - #ifdef WIN32 - static DWORD _X_TlsIndex = (DWORD)-1; -@@ -597,9 +599,11 @@ Status XInitThreads(void) - _Xglobal_lock = &global_lock; - xmutex_init(_Xglobal_lock->lock); - xmutex_set_name(_Xglobal_lock->lock, "Xlib global"); -+#ifdef XLOCALE - _Xi18n_lock = &i18n_lock; - xmutex_init(_Xi18n_lock->lock); - xmutex_set_name(_Xi18n_lock->lock, "Xlib i18n"); -+#endif - _XLockMutex_fn = _XLockMutex; - _XUnlockMutex_fn = _XUnlockMutex; - _XCreateMutex_fn = _XCreateMutex; --- -2.7.4 - diff --git a/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch b/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch deleted file mode 100644 index 09cf74fff4..0000000000 --- a/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 5c1693028ef12ab767d7cdbc349c27efa1ada87a Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Mon, 10 Sep 2018 09:13:38 +0800 -Subject: [PATCH] Fix build when xlocale disabled - -Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com> - -Update patch to version 1.6.6 -Signed-off-by: Changqing Li <changqing.li@windriver.com> -Upstream-Status: Pending ---- - src/Font.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/Font.c b/src/Font.c -index a73f9b1..8f4d210 100644 ---- a/src/Font.c -+++ b/src/Font.c -@@ -675,7 +675,11 @@ int _XF86LoadQueryLocaleFont( - } - if (l - 2 - (p - charset) < 0) - return 0; -+#ifdef XLOCALE - if (_XlcNCompareISOLatin1(name + l - 2 - (p - charset), charset, p - charset)) -+#else -+ if (strncasecmp(name + l - 2 - (p - charset), charset, p - charset)) -+#endif - return 0; - if (strlen(p + 1) + l - 1 >= sizeof(buf) - 1) - return 0; --- -2.7.4 - diff --git a/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch b/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch deleted file mode 100644 index 0b57e0b068..0000000000 --- a/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 046703373055c7029c19d171e415ff3caaa87372 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Mon, 10 Sep 2018 09:16:33 +0800 -Subject: [PATCH] Disable unicode - -Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com> - -Update patch to version 1.6.6 - -Signed-off-by: Changqing Li <changqing.li@windriver.com> -Upstream-Status: Pending ---- - include/X11/Xlib.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/X11/Xlib.h b/include/X11/Xlib.h -index 84403f7..56be654 100644 ---- a/include/X11/Xlib.h -+++ b/include/X11/Xlib.h -@@ -67,7 +67,7 @@ _Xmblen( - - /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in - November 2000. Its presence is indicated through the following macro. */ --#define X_HAVE_UTF8_STRING 1 -+#undef X_HAVE_UTF8_STRING - - /* The Xlib structs are full of implicit padding to properly align members. - We can't clean that up without breaking ABI, so tell clang not to bother --- -2.7.4 - diff --git a/meta/recipes-graphics/xorg-lib/libx11_1.6.7.bb b/meta/recipes-graphics/xorg-lib/libx11_1.6.7.bb deleted file mode 100644 index 6141f571c5..0000000000 --- a/meta/recipes-graphics/xorg-lib/libx11_1.6.7.bb +++ /dev/null @@ -1,13 +0,0 @@ -require libx11.inc - -SRC_URI += "file://disable_tests.patch \ - file://Fix-hanging-issue-in-_XReply.patch \ - " - -inherit gettext - -do_configure_append () { - sed -i -e "/X11_CFLAGS/d" ${B}/src/util/Makefile -} - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libx11_1.8.9.bb b/meta/recipes-graphics/xorg-lib/libx11_1.8.9.bb new file mode 100644 index 0000000000..5dcb063473 --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libx11_1.8.9.bb @@ -0,0 +1,43 @@ +SUMMARY = "Xlib: C Language X Interface library" + +DESCRIPTION = "This package provides a client interface to the X Window \ +System, otherwise known as 'Xlib'. It provides a complete API for the \ +basic functions of the window system." + +require xorg-lib-common.inc + +LICENSE = "MIT & BSD-1-Clause & HPND & HPND-sell-variant & ISC" +LIC_FILES_CHKSUM = "file://COPYING;md5=1d49cdd2b386c5db11ec636d680b7116" + +DEPENDS += "xorgproto \ + xtrans \ + libxcb \ + xorgproto-native \ + autoconf-archive-native \ + " + +PROVIDES = "virtual/libx11" + +PE = "1" + +XORG_PN = "libX11" + +SRC_URI += "file://disable_tests.patch" + +SRC_URI[sha256sum] = "779d8f111d144ef93e2daa5f23a762ce9555affc99592844e71c4243d3bd3262" + +inherit gettext + +EXTRA_OECONF += "--with-keysymdefdir=${STAGING_INCDIR}/X11/ --disable-xf86bigfont" +EXTRA_OEMAKE += 'CWARNFLAGS=""' + +PACKAGECONFIG ??= "xcms" +PACKAGECONFIG[xcms] = "--enable-xcms,--disable-xcms" + +PACKAGES =+ "${PN}-xcb" + +FILES:${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${datadir}/X11/Xcms.txt" +FILES:${PN}-xcb += "${libdir}/libX11-xcb.so.*" +FILES:${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb b/meta/recipes-graphics/xorg-lib/libxau_1.0.11.bb index dcfc66652a..f1b492c39f 100644 --- a/meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb +++ b/meta/recipes-graphics/xorg-lib/libxau_1.0.11.bb @@ -8,7 +8,7 @@ require xorg-lib-common.inc inherit gettext -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=7908e342491198401321cec1956807ec" DEPENDS += " xorgproto" @@ -20,5 +20,4 @@ XORG_PN = "libXau" BBCLASSEXTEND = "native nativesdk" -SRC_URI[md5sum] = "c5f16288f2da9f071b29111d68797480" -SRC_URI[sha256sum] = "ccf8cbf0dbf676faa2ea0a6d64bcc3b6746064722b606c8c52917ed00dcb73ec" +SRC_URI[sha256sum] = "f3fa3282f5570c3f6bd620244438dbfbdd580fc80f02f549587a0f8ab329bbeb" diff --git a/meta/recipes-graphics/xorg-lib/libxcb/0001-use-_Alignof-to-avoid-UB-in-ALIGNOF.patch b/meta/recipes-graphics/xorg-lib/libxcb/0001-use-_Alignof-to-avoid-UB-in-ALIGNOF.patch new file mode 100644 index 0000000000..5b159d646d --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libxcb/0001-use-_Alignof-to-avoid-UB-in-ALIGNOF.patch @@ -0,0 +1,45 @@ +From d55b6b1fa87700f3eae3a29522972d2e7be7d53e Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sat, 14 Jan 2023 10:11:35 -0800 +Subject: [PATCH] use _Alignof to avoid UB in ALIGNOF + +WG14 N2350 clearly says that it is an UB having type definitions +within "offsetof" [1]. Clang 16+ has started diagnosing it [2]. +This patch changes the implementation of macro +"ALIGNOF" to builtin "_Alignof" to avoid undefined behavior. + +_Alignof() return the ABI required minimum alignment. + +[1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2350.htm +[2] https://reviews.llvm.org/D133574 + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/lib/libxcb/-/merge_requests/42] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/c_client.py | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/c_client.py b/src/c_client.py +index fd256f0..4e48f13 100644 +--- a/src/c_client.py ++++ b/src/c_client.py +@@ -288,7 +288,6 @@ def c_open(self): + _c('#include "%s.h"', _ns.header) + + _c('') +- _c('#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)') + + if _ns.is_ext: + for (n, h) in self.direct_imports: +@@ -1266,7 +1265,7 @@ def _c_serialize_helper_fields(context, self, + count += 1 + + code_lines.append( +- '%s xcb_align_to = ALIGNOF(%s);' ++ '%s xcb_align_to = _Alignof(%s);' + % (space, + 'char' + if field.c_field_type == 'void' or field.type.is_switch +-- +2.39.0 + diff --git a/meta/recipes-graphics/xorg-lib/libxcb/disable-check.patch b/meta/recipes-graphics/xorg-lib/libxcb/disable-check.patch deleted file mode 100644 index c0efbdc213..0000000000 --- a/meta/recipes-graphics/xorg-lib/libxcb/disable-check.patch +++ /dev/null @@ -1,25 +0,0 @@ -The "check" package is checked for without an explicit enable/disable option, -which can lead to non-deterministic build issues with both check and libxslt. - -As the unit test suite is minimal at present, simply disable the test suite. In -the future if the test suite is expanded this can be made conditional on the -ptest DISTRO_FEATURE. - -Upstream-Status: Inappropriate -Signed-off-by: Ross Burton <ross.burton@intel.com> - - -Index: libxcb-1.12/configure.ac -=================================================================== ---- libxcb-1.12.orig/configure.ac -+++ libxcb-1.12/configure.ac -@@ -36,7 +36,8 @@ if test x"$HAVE_DOT" = xno; then - AC_MSG_WARN([dot not found - doxygen targets will be skipped]) - fi - --PKG_CHECK_MODULES(CHECK, [check >= 0.9.4], [HAVE_CHECK=yes], [HAVE_CHECK=no]) -+dnl PKG_CHECK_MODULES(CHECK, [check >= 0.9.4], [HAVE_CHECK=yes], [HAVE_CHECK=no]) -+HAVE_CHECK=no - AM_CONDITIONAL(HAVE_CHECK, test x$HAVE_CHECK = xyes) - - XSLTPROC=no diff --git a/meta/recipes-graphics/xorg-lib/libxcb/gcc-mips-pr68302-mips-workaround.patch b/meta/recipes-graphics/xorg-lib/libxcb/gcc-mips-pr68302-mips-workaround.patch deleted file mode 100644 index 698d038f90..0000000000 --- a/meta/recipes-graphics/xorg-lib/libxcb/gcc-mips-pr68302-mips-workaround.patch +++ /dev/null @@ -1,22 +0,0 @@ -Reduce debug info for xcb.c since on mips we run into a gcc5 bug - -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68302 - -This patch is a workaround to get past the gcc bug until its resolved. -it should have minimal impact on libxcb while make it work. - -Upstream-Status: Inappropriate [OE-Specific] -Signed-off-by: Khem Raj <raj.khem@gmail.com> - -Index: libxcb-1.11.1/src/Makefile.am -=================================================================== ---- libxcb-1.11.1.orig/src/Makefile.am -+++ libxcb-1.11.1/src/Makefile.am -@@ -188,6 +188,7 @@ EXTSOURCES += xkb.c - if BUILD_XKB - lib_LTLIBRARIES += libxcb-xkb.la - libxcb_xkb_la_LDFLAGS = -version-info 1:0:0 -no-undefined -+CFLAGS += -g1 - libxcb_xkb_la_LIBADD = $(XCB_LIBS) - nodist_libxcb_xkb_la_SOURCES = xkb.c xkb.h - endif diff --git a/meta/recipes-graphics/xorg-lib/libxcb/xcbincludedir.patch b/meta/recipes-graphics/xorg-lib/libxcb/xcbincludedir.patch deleted file mode 100644 index 46297c33c3..0000000000 --- a/meta/recipes-graphics/xorg-lib/libxcb/xcbincludedir.patch +++ /dev/null @@ -1,28 +0,0 @@ -As pkg-config --variable doesn't respect the sysroot, add the pkg-config sysroot -to the beginning of variables that are used later on the host. - -Upstream-Status: Pending -Signed-off-by: Ross Burton <ross.burton@intel.com> - -diff --git a/configure.ac b/configure.ac -index 94da4f7..d29cd6a 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -64,7 +64,7 @@ AC_SUBST(NEEDED) - - # Find the xcb-proto protocol descriptions - AC_MSG_CHECKING(XCBPROTO_XCBINCLUDEDIR) --XCBPROTO_XCBINCLUDEDIR=`$PKG_CONFIG --variable=xcbincludedir xcb-proto` -+XCBPROTO_XCBINCLUDEDIR=$PKG_CONFIG_SYSROOT_DIR/`$PKG_CONFIG --variable=xcbincludedir xcb-proto` - AC_MSG_RESULT($XCBPROTO_XCBINCLUDEDIR) - AC_SUBST(XCBPROTO_XCBINCLUDEDIR) - -@@ -74,7 +74,7 @@ AC_SUBST(XCBPROTO_VERSION) - - # Find the xcbgen Python package - AC_MSG_CHECKING(XCBPROTO_XCBPYTHONDIR) --XCBPROTO_XCBPYTHONDIR=`$PKG_CONFIG --variable=pythondir xcb-proto` -+XCBPROTO_XCBPYTHONDIR=$PKG_CONFIG_SYSROOT_DIR/`$PKG_CONFIG --variable=pythondir xcb-proto` - AC_MSG_RESULT($XCBPROTO_XCBPYTHONDIR) - AC_SUBST(XCBPROTO_XCBPYTHONDIR) - diff --git a/meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb b/meta/recipes-graphics/xorg-lib/libxcb_1.16.1.bb index 84303e6246..de3290aa9f 100644 --- a/meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb +++ b/meta/recipes-graphics/xorg-lib/libxcb_1.16.1.bb @@ -9,31 +9,30 @@ SECTION = "x11/libs" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7" -SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.bz2 \ - file://xcbincludedir.patch \ - file://disable-check.patch \ - file://gcc-mips-pr68302-mips-workaround.patch \ - " +SRC_URI = "http://xcb.freedesktop.org/dist/libxcb-${PV}.tar.xz \ + file://0001-use-_Alignof-to-avoid-UB-in-ALIGNOF.patch" -SRC_URI[md5sum] = "f33cdfc67346f7217a9326c0d8679975" -SRC_URI[sha256sum] = "a89fb7af7a11f43d2ce84a844a4b38df688c092bf4b67683aef179cdf2a647c4" +SRC_URI[sha256sum] = "f24d187154c8e027b358fc7cb6588e35e33e6a92f11c668fe77396a7ae66e311" BBCLASSEXTEND = "native nativesdk" DEPENDS = "xcb-proto xorgproto libxau libpthread-stubs libxdmcp" -PACKAGES_DYNAMIC = "^libxcb-.*" +PACKAGES_DYNAMIC = "^${PN}-.*" -FILES_${PN} = "${libdir}/libxcb.so.*" +FILES:${PN} = "${libdir}/libxcb.so.*" -inherit autotools pkgconfig distro_features_check +inherit autotools pkgconfig features_check # The libxau and others requires x11 in DISTRO_FEATURES REQUIRED_DISTRO_FEATURES = "x11" -REQUIRED_DISTRO_FEATURES_class-native = "" export PYTHON = "python3" -python populate_packages_prepend () { - do_split_packages(d, '${libdir}', r'^libxcb-(.*)\.so\..*$', 'libxcb-%s', 'XCB library module for %s', allow_links=True) +do_install:append () { + chown root.root ${D}${datadir}/doc/${BPN}/tutorial -R +} + +python populate_packages:prepend () { + do_split_packages(d, '${libdir}', r'^libxcb-(.*)\.so\..*$', '${PN}-%s', 'XCB library module for %s', allow_links=True) } diff --git a/meta/recipes-graphics/xorg-lib/libxcomposite/change-include-order.patch b/meta/recipes-graphics/xorg-lib/libxcomposite/change-include-order.patch deleted file mode 100644 index 60331f6e78..0000000000 --- a/meta/recipes-graphics/xorg-lib/libxcomposite/change-include-order.patch +++ /dev/null @@ -1,18 +0,0 @@ -Upstream-Status: Inappropriate [configuration] - -This patch makes the build use its own Xcomposite.h over rather than an -older Xcomposite.h that might already be installed in the staging dir. - -Index: libXcomposite-0.4.3/src/Makefile.am -=================================================================== ---- libXcomposite-0.4.3.orig/src/Makefile.am 2010-06-30 22:42:53.000000000 -0700 -+++ libXcomposite-0.4.3/src/Makefile.am 2010-11-23 23:09:34.544322930 -0800 -@@ -19,7 +19,7 @@ - # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - # PERFORMANCE OF THIS SOFTWARE. - --AM_CFLAGS = $(CWARNFLAGS) $(XCOMPOSITE_CFLAGS) $(XFIXES_CFLAGS) -+AM_CFLAGS = -I$(top_srcdir)/include $(CWARNFLAGS) $(XCOMPOSITE_CFLAGS) $(XFIXES_CFLAGS) - AM_CPPFLAGS = -I$(top_srcdir)/include - - lib_LTLIBRARIES = libXcomposite.la diff --git a/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb b/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.6.bb index 3ef3ddb817..881f579695 100644 --- a/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb +++ b/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.6.bb @@ -11,7 +11,7 @@ compositing transformations through a client." require xorg-lib-common.inc -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=3f2907aad541f6f226fbc58cc1b3cdf1" DEPENDS += " xorgproto virtual/libx11 libxfixes libxext" @@ -22,7 +22,4 @@ PE = "1" XORG_PN = "libXcomposite" -SRC_URI += " file://change-include-order.patch" - -SRC_URI[md5sum] = "3fa0841ea89024719b20cd702a9b54e0" -SRC_URI[sha256sum] = "b3218a2c15bab8035d16810df5b8251ffc7132ff3aa70651a1fba0bfe9634e8f" +SRC_URI[sha256sum] = "fe40bcf0ae1a09070eba24088a5eb9810efe57453779ec1e20a55080c6dc2c87" diff --git a/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libxcursor_1.2.2.bb index 2df7a3a4f2..159ac4f7fa 100644 --- a/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb +++ b/meta/recipes-graphics/xorg-lib/libxcursor_1.2.2.bb @@ -7,9 +7,10 @@ can exist in several sizes and the library automatically picks the best \ size." require xorg-lib-common.inc +SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.xz" -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=8902e6643f7bcd7793b23dcd5d8031a4" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=dbf3bd0f2348eeccd0f217146ba26250" DEPENDS += "libxrender libxfixes" @@ -17,7 +18,6 @@ PE = "1" XORG_PN = "libXcursor" -SRC_URI[md5sum] = "9b9be0e289130fb820aedf67705fc549" -SRC_URI[sha256sum] = "3ad3e9f8251094af6fe8cb4afcf63e28df504d46bfa5a5529db74a505d628782" +SRC_URI[sha256sum] = "53d071bd2cc56e517a30998d5e685c8a74556ddada43c6985d14da9a023a88ee" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libxcvt_0.1.2.bb b/meta/recipes-graphics/xorg-lib/libxcvt_0.1.2.bb new file mode 100644 index 0000000000..e62fabdf58 --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libxcvt_0.1.2.bb @@ -0,0 +1,19 @@ +SUMMARY = "Library providing a standalone version of the X server \ +implementation of the VESA CVT standard timing modelines generator" +HOMEPAGE = "https://gitlab.freedesktop.org/xorg/lib/libxcvt" +BUGTRACKER = "https://gitlab.freedesktop.org/xorg/lib/libxcvt/-/issues" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=129947a06984d6faa6f9a9788fa2a03f" +SECTION = "x11/libs" + +SRC_URI = "git://gitlab.freedesktop.org/xorg/lib/libxcvt.git;protocol=https;branch=master" +SRCREV = "d9ca87eea9eecddaccc3a77227bcb3acf84e89df" + +S = "${WORKDIR}/git" + +inherit meson + +FILES:${PN} = " \ + ${libdir}/libxcvt.so.0* \ + ${bindir}/cvt \ +" diff --git a/meta/recipes-graphics/xorg-lib/libxdamage_1.1.5.bb b/meta/recipes-graphics/xorg-lib/libxdamage_1.1.6.bb index b201124d86..279d6c33dc 100644 --- a/meta/recipes-graphics/xorg-lib/libxdamage_1.1.5.bb +++ b/meta/recipes-graphics/xorg-lib/libxdamage_1.1.6.bb @@ -23,7 +23,6 @@ PE = "1" XORG_PN = "libXdamage" -SRC_URI[md5sum] = "e3f554267a7a04b042dc1f6352bd6d99" -SRC_URI[sha256sum] = "b734068643cac3b5f3d2c8279dd366b5bf28c7219d9e9d8717e1383995e0ea45" +SRC_URI[sha256sum] = "52733c1f5262fca35f64e7d5060c6fcd81a880ba8e1e65c9621cf0727afb5d11" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb b/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.5.bb index 466f3491fd..d1a1a2e7f9 100644 --- a/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb +++ b/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.5.bb @@ -10,7 +10,7 @@ require xorg-lib-common.inc inherit gettext -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=d559fb26e129626022e052a5e6e0e123" DEPENDS += "xorgproto" @@ -22,8 +22,7 @@ XORG_PN = "libXdmcp" BBCLASSEXTEND = "native nativesdk" -SRC_URI[md5sum] = "18aa5c1279b01f9d18e3299969665b2e" -SRC_URI[sha256sum] = "81fe09867918fff258296e1e1e159f0dc639cb30d201c53519f25ab73af4e4e2" +SRC_URI[sha256sum] = "d8a5222828c3adab70adf69a5583f1d32eb5ece04304f7f8392b6a353aa2228c" PACKAGECONFIG ??= "" PACKAGECONFIG[arc4] = "ac_cv_lib_bsd_arc4random_buf=yes,ac_cv_lib_bsd_arc4random_buf=no,libbsd" diff --git a/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb b/meta/recipes-graphics/xorg-lib/libxext_1.3.6.bb index aae8f2af6d..275926a885 100644 --- a/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb +++ b/meta/recipes-graphics/xorg-lib/libxext_1.3.6.bb @@ -10,8 +10,8 @@ extensions." require xorg-lib-common.inc -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=879ce266785414bd1cbc3bc2f4d9d7c8" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=4234bb3b2f1521ea101e4e9db7c33c69" DEPENDS += "xorgproto virtual/libx11" PROVIDES = "xext" @@ -19,8 +19,6 @@ PROVIDES = "xext" PE = "1" XORG_PN = "libXext" - BBCLASSEXTEND = "native nativesdk" -SRC_URI[md5sum] = "52df7c4c1f0badd9f82ab124fb32eb97" -SRC_URI[sha256sum] = "b518d4d332231f313371fdefac59e3776f4f0823bcb23cf7c7305bfb57b16e35" +SRC_URI[sha256sum] = "edb59fa23994e405fdc5b400afdf5820ae6160b94f35e3dc3da4457a16e89753" diff --git a/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb b/meta/recipes-graphics/xorg-lib/libxfixes_6.0.1.bb index f0e2f606ce..28df7bb805 100644 --- a/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb +++ b/meta/recipes-graphics/xorg-lib/libxfixes_6.0.1.bb @@ -6,18 +6,16 @@ provide the minimal server-side support necessary to eliminate problems \ caused by these workarounds." require xorg-lib-common.inc +SRC_URI[sha256sum] = "b695f93cd2499421ab02d22744458e650ccc88c1d4c8130d60200213abc02d58" -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=a5a9755c8921cc7dc08a5cfe4267d0ff" DEPENDS += "virtual/libx11 xorgproto" PE = "1" XORG_PN = "libXfixes" +XORG_EXT = "tar.xz" BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "07e01e046a0215574f36a3aacb148be0" -SRC_URI[sha256sum] = "de1cd33aff226e08cefd0e6759341c2c8e8c9faf8ce9ac6ec38d43e287b22ad6" - diff --git a/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb b/meta/recipes-graphics/xorg-lib/libxfont2_2.0.6.bb index 2b72d6750c..535e7f629e 100644 --- a/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb +++ b/meta/recipes-graphics/xorg-lib/libxfont2_2.0.6.bb @@ -6,7 +6,7 @@ such as freetype)." require xorg-lib-common.inc -LICENSE = "MIT & MIT-style & BSD" +LICENSE = "MIT & MIT & BSD-4-Clause & BSD-2-Clause" LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c" DEPENDS += "freetype xtrans xorgproto libfontenc zlib" @@ -15,8 +15,9 @@ XORG_PN = "libXfont2" BBCLASSEXTEND = "native" -SRC_URI[md5sum] = "b7ca87dfafeb5205b28a1e91ac3efe85" -SRC_URI[sha256sum] = "0e8ab7fd737ccdfe87e1f02b55f221f0bd4503a1c5f28be4ed6a54586bac9c4e" +SRC_URI[sha256sum] = "74ca20017eb0fb3f56d8d5e60685f560fc85e5ff3d84c61c4cb891e40c27aef4" PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," + +CVE_PRODUCT = "libxfont libxfont2" diff --git a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb index 94c6c66e87..fa6585d6dc 100644 --- a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb +++ b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb @@ -6,7 +6,7 @@ such as freetype)." require xorg-lib-common.inc -LICENSE = "MIT & MIT-style & BSD" +LICENSE = "MIT & MIT & BSD-3-Clause" LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c" DEPENDS += "freetype xtrans xorgproto libfontenc zlib" @@ -15,6 +15,7 @@ PROVIDES = "xfont" PE = "1" XORG_PN = "libXfont" +XORG_EXT = "tar.bz2" BBCLASSEXTEND = "native" diff --git a/meta/recipes-graphics/xorg-lib/libxft_2.3.2.bb b/meta/recipes-graphics/xorg-lib/libxft_2.3.8.bb index 4565ae2626..2699c1dfd7 100644 --- a/meta/recipes-graphics/xorg-lib/libxft_2.3.2.bb +++ b/meta/recipes-graphics/xorg-lib/libxft_2.3.8.bb @@ -20,14 +20,13 @@ PROVIDES = "xft" PE = "1" -SRC_URI[md5sum] = "331b3a2a3a1a78b5b44cfbd43f86fcfe" -SRC_URI[sha256sum] = "f5a3c824761df351ca91827ac221090943ef28b248573486050de89f4bfcdc4c" +SRC_URI[sha256sum] = "5e8c3c4bc2d4c0a40aef6b4b38ed2fb74301640da29f6528154b5009b1c6dd49" XORG_PN = "libXft" BBCLASSEXTEND = "native nativesdk" -python () { - if d.getVar('DEBIAN_NAMES'): - d.setVar('PKG_${PN}', '${MLPREFIX}libxft2') +python populate_packages:prepend () { + if d.getVar('DEBIAN_NAMES'): + d.setVar('PKG:${PN}', '${MLPREFIX}libxft2') } diff --git a/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb b/meta/recipes-graphics/xorg-lib/libxi_1.8.1.bb index ab49cdba3f..00bd46ef13 100644 --- a/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb +++ b/meta/recipes-graphics/xorg-lib/libxi_1.8.1.bb @@ -7,7 +7,7 @@ input devices other than the core X keyboard and pointer. It allows \ client programs to select input from these devices independently from \ each other and independently from the core devices." -LICENSE = "MIT & MIT-style" +LICENSE = "MIT & MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=17b064789fab936a1c58c4e13d965b0f \ file://src/XIGetDevFocus.c;endline=23;md5=cdfb0d435a33ec57ea0d1e8e395b729f" @@ -16,9 +16,8 @@ DEPENDS += "libxext xorgproto libxfixes" PE = "1" XORG_PN = "libXi" +XORG_EXT = "tar.xz" -SRC_URI[md5sum] = "1f0f2719c020655a60aee334ddd26d67" -SRC_URI[sha256sum] = "c2e6b8ff84f9448386c1b5510a5cf5a16d788f76db018194dacdc200180faf45" +SRC_URI[sha256sum] = "89bfc0e814f288f784202e6e5f9b362b788ccecdeb078670145eacd8749656a7" BBCLASSEXTEND = "native nativesdk" - diff --git a/meta/recipes-graphics/xorg-lib/libxinerama_1.1.4.bb b/meta/recipes-graphics/xorg-lib/libxinerama_1.1.5.bb index edce35da5d..421b64e68d 100644 --- a/meta/recipes-graphics/xorg-lib/libxinerama_1.1.4.bb +++ b/meta/recipes-graphics/xorg-lib/libxinerama_1.1.5.bb @@ -15,8 +15,6 @@ PROVIDES = "xinerama" PE = "1" XORG_PN = "libXinerama" - -SRC_URI[md5sum] = "0d5f826a197dae74da67af4a9ef35885" -SRC_URI[sha256sum] = "0008dbd7ecf717e1e507eed1856ab0d9cf946d03201b85d5dcf61489bb02d720" +SRC_URI[sha256sum] = "5094d1f0fcc1828cb1696d0d39d9e866ae32520c54d01f618f1a3c1e30c2085c" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.4.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.4.bb deleted file mode 100644 index 8fcae12cef..0000000000 --- a/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.4.bb +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "Generic XKB keymap library" -DESCRIPTION = "libxkbcommon is a keymap compiler and support library which \ -processes a reduced subset of keymaps as defined by the XKB specification." -HOMEPAGE = "http://www.xkbcommon.org" -LIC_FILES_CHKSUM = "file://LICENSE;md5=e525ed9809e1f8a07cf4bce8b09e8b87" -LICENSE = "MIT & MIT-style" - -DEPENDS = "util-macros flex-native bison-native" - -SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz" - -SRC_URI[md5sum] = "3c4409058dfd203f641a563358e0187d" -SRC_URI[sha256sum] = "60ddcff932b7fd352752d51a5c4f04f3d0403230a584df9a2e0d5ed87c486c8b" - -UPSTREAM_CHECK_URI = "http://xkbcommon.org/" - -inherit autotools pkgconfig - -EXTRA_OECONF = "--disable-docs" - -PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" -PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,libxcb xkeyboard-config," diff --git a/meta/recipes-graphics/xorg-lib/libxkbcommon_1.7.0.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.7.0.bb new file mode 100644 index 0000000000..40cf616f0b --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.7.0.bb @@ -0,0 +1,40 @@ +SUMMARY = "Generic XKB keymap library" +DESCRIPTION = "libxkbcommon is a keymap compiler and support library which \ +processes a reduced subset of keymaps as defined by the XKB specification." +HOMEPAGE = "http://www.xkbcommon.org" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e525ed9809e1f8a07cf4bce8b09e8b87" +LICENSE = "MIT & MIT" + +DEPENDS = "flex-native bison-native" + +SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz" + +SRC_URI[sha256sum] = "65782f0a10a4b455af9c6baab7040e2f537520caa2ec2092805cdfd36863b247" + +UPSTREAM_CHECK_URI = "http://xkbcommon.org/" + +inherit meson pkgconfig bash-completion + +PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)} xkbregistry" + +PACKAGECONFIG[docs] = "-Denable-docs=true,-Denable-docs=false,doxygen-native" +PACKAGECONFIG[wayland] = "-Denable-wayland=true,-Denable-wayland=false,wayland-native wayland wayland-protocols," +PACKAGECONFIG[x11] = "-Denable-x11=true,-Denable-x11=false,libxcb xkeyboard-config," +PACKAGECONFIG[xkbregistry] = "-Denable-xkbregistry=true,-Denable-xkbregistry=false,libxml2" + +PACKAGE_BEFORE_PN += "xkbcli" +FILES:${PN} = "" +FILES:xkbcli = "${bindir}/xkbcli ${libexecdir}/xkbcommon/xkbcli-*" + +python populate_packages:prepend () { + # Put the libraries into separate packages to avoid dependency creep + do_split_packages(d, d.expand('${libdir}'), r'^(lib.*)\.so\.*', '%s', '%s library', extra_depends='', allow_links=True) +} + +# Fix a following runtime error: +# xkbcommon: ERROR: couldn't find a Compose file for locale "C" +RDEPENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libx11-locale', 'libx11-compose-data', d)}" + +BBCLASSEXTEND += "native" + +CVE_PRODUCT += "xkbcommon:libxkbcommon" diff --git a/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb b/meta/recipes-graphics/xorg-lib/libxkbfile_1.1.3.bb index f5c18607ac..aab6284384 100644 --- a/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb +++ b/meta/recipes-graphics/xorg-lib/libxkbfile_1.1.3.bb @@ -5,7 +5,7 @@ description files for XKB, the X11 keyboard configuration extension." require xorg-lib-common.inc -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=8be7367f7e5d605a426f76bb37d4d61f" DEPENDS += "virtual/libx11 xorgproto" @@ -13,6 +13,4 @@ DEPENDS += "virtual/libx11 xorgproto" PE = "1" BBCLASSEXTEND = "native" - -SRC_URI[md5sum] = "4a4cfeaf24dab1b991903455d6d7d404" -SRC_URI[sha256sum] = "51817e0530961975d9513b773960b4edd275f7d5c72293d5a151ed4f42aeb16a" +SRC_URI[sha256sum] = "a9b63eea997abb9ee6a8b4fbb515831c841f471af845a09de443b28003874bec" diff --git a/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb b/meta/recipes-graphics/xorg-lib/libxmu_1.2.1.bb index 4740c15732..51faf170bf 100644 --- a/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb +++ b/meta/recipes-graphics/xorg-lib/libxmu_1.2.1.bb @@ -7,11 +7,10 @@ Widgets. A subset of the functions that do not rely on the Athena \ Widgets (libXaw) or X Toolkit Instrinsics (libXt) are provided in a \ second library, libXmuu." - require xorg-lib-common.inc -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=def3d8e4e9c42004f1941fa22f01dc18" +LICENSE = "MIT & MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=e79ad4fcc53b9bfe0fc38507a56446b9" DEPENDS += "libxt libxext" PROVIDES = "xmu" @@ -24,12 +23,8 @@ LEAD_SONAME = "libXmu" PACKAGES =+ "libxmuu" -FILES_libxmuu = "${libdir}/libXmuu.so.*" +FILES:libxmuu = "${libdir}/libXmuu.so.*" BBCLASSEXTEND = "native" -SRC_URI[md5sum] = "41d92ab627dfa06568076043f3e089e4" -SRC_URI[sha256sum] = "756edc7c383254eef8b4e1b733c3bf1dc061b523c9f9833ac7058378b8349d0b" - -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" -PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," +SRC_URI[sha256sum] = "fcb27793248a39e5fcc5b9c4aec40cc0734b3ca76aac3d7d1c264e7f7e14e8b2" diff --git a/meta/recipes-graphics/xorg-lib/libxpm_3.5.12.bb b/meta/recipes-graphics/xorg-lib/libxpm_3.5.17.bb index 57b202cae3..8e15ecc0d4 100644 --- a/meta/recipes-graphics/xorg-lib/libxpm_3.5.12.bb +++ b/meta/recipes-graphics/xorg-lib/libxpm_3.5.17.bb @@ -10,18 +10,18 @@ pixmap format, which is commonly used in legacy X applications. XPM is \ an extension of the monochrome XBM bitmap specificied in the X \ protocol." -LICENSE = "BSD" -LIC_FILES_CHKSUM = "file://COPYING;md5=51f4270b012ecd4ab1a164f5f4ed6cf7" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=903942ebc9d807dfb68540f40bae5aff" DEPENDS += "libxext libsm libxt gettext-native" PE = "1" XORG_PN = "libXpm" +EXTRA_OECONF += "--disable-open-zfile" PACKAGES =+ "sxpm cxpm" -FILES_cxpm = "${bindir}/cxpm" -FILES_sxpm = "${bindir}/sxpm" +FILES:cxpm = "${bindir}/cxpm" +FILES:sxpm = "${bindir}/sxpm" -SRC_URI[md5sum] = "20f4627672edb2bd06a749f11aa97302" -SRC_URI[sha256sum] = "fd6a6de3da48de8d1bb738ab6be4ad67f7cb0986c39bd3f7d51dd24f7854bdec" +SRC_URI[sha256sum] = "64b31f81019e7d388c822b0b28af8d51c4622b83f1f0cb6fa3fc95e271226e43" BBCLASSEXTEND = "native" diff --git a/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb b/meta/recipes-graphics/xorg-lib/libxrandr_1.5.4.bb index b90ebc6232..3e2825b916 100644 --- a/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb +++ b/meta/recipes-graphics/xorg-lib/libxrandr_1.5.4.bb @@ -8,7 +8,7 @@ specified in the Proceedings of the 2001 Usenix Technical Conference \ require xorg-lib-common.inc -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=c9d1a2118a6cd5727521db8e7a2fee69" DEPENDS += "virtual/libx11 xorgproto libxrender libxext" @@ -19,5 +19,4 @@ XORG_PN = "libXrandr" BBCLASSEXTEND = "native nativesdk" -SRC_URI[md5sum] = "28e486f1d491b757173dd85ba34ee884" -SRC_URI[sha256sum] = "1ff9e7fa0e4adea912b16a5f0cfa7c1d35b0dcda0e216831f7715c8a3abcf51a" +SRC_URI[sha256sum] = "1ad5b065375f4a85915aa60611cc6407c060492a214d7f9daf214be752c3b4d3" diff --git a/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb b/meta/recipes-graphics/xorg-lib/libxrender_0.9.11.bb index 9b18366138..e138764dff 100644 --- a/meta/recipes-graphics/xorg-lib/libxrender_0.9.10.bb +++ b/meta/recipes-graphics/xorg-lib/libxrender_0.9.11.bb @@ -8,7 +8,7 @@ drawn by loading glyphs into the server and rendering sets of them." require xorg-lib-common.inc -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=d8bc71986d3b9b3639f6dfd6fac8f196" DEPENDS += "virtual/libx11 xorgproto" @@ -18,7 +18,5 @@ PE = "1" XORG_PN = "libXrender" BBCLASSEXTEND = "native nativesdk" - -SRC_URI[md5sum] = "802179a76bded0b658f4e9ec5e1830a4" -SRC_URI[sha256sum] = "c06d5979f86e64cabbde57c223938db0b939dff49fdb5a793a1d3d0396650949" +SRC_URI[sha256sum] = "bc53759a3a83d1ff702fb59641b3d2f7c56e05051fa0cfa93501166fa782dc24" diff --git a/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libxres_1.2.2.bb index af6bb19a25..72b28d9107 100644 --- a/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb +++ b/meta/recipes-graphics/xorg-lib/libxres_1.2.2.bb @@ -16,5 +16,4 @@ PE = "1" XORG_PN = "libXres" -SRC_URI[md5sum] = "5d6d443d1abc8e1f6fc1c57fb27729bb" -SRC_URI[sha256sum] = "ff75c1643488e64a7cfbced27486f0f944801319c84c18d3bd3da6bf28c812d4" +SRC_URI[sha256sum] = "9a7446f3484b9b7538ac5ee30d2c1ce9e5b7fbbaf1440e02f6cca186a1fa745f" diff --git a/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb b/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.4.bb index aed52e75ee..1b407f52f0 100644 --- a/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb +++ b/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.4.bb @@ -14,10 +14,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=21fd154ee757813632ada871a34113fb" DEPENDS += "libxext xorgproto" PROVIDES = "libxss" -RREPLACES_${PN} = "libxss" +RREPLACES:${PN} = "libxss" PE = "1" XORG_PN = "libXScrnSaver" -SRC_URI[md5sum] = "eeea9d5af3e6c143d0ea1721d27a5e49" -SRC_URI[sha256sum] = "f917075a1b7b5a38d67a8b0238eaab14acd2557679835b154cf2bca576e89bf8" +SRC_URI[sha256sum] = "75cd2859f38e207a090cac980d76bc71e9da99d48d09703584e00585abc920fe" diff --git a/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch b/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch new file mode 100644 index 0000000000..3e87794d20 --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch @@ -0,0 +1,39 @@ +From 5827f6389a227157958d14a687fb29223cb3a03a Mon Sep 17 00:00:00 2001 +From: Mingli Yu <mingli.yu@windriver.com> +Date: Wed, 7 Apr 2021 07:48:42 +0000 +Subject: [PATCH] xshmfence_futex.h: Define SYS_futex if it does not exist + +_NR_futex is not defines by newer architectures e.g. riscv32 as +they only have 64bit variant of time_t. Glibc defines SYS_futex +interface based on __NR_futex, since this is used in applications, +such applications start to fail to build for these newer architectures. +This patch defines a fallback to alias __NR_futex to __NR_futex_time64 +to make SYS_futex keep working. + +Reference: https://git.openembedded.org/openembedded-core/commit/?id=7a218adf9990f5e18d0b6a33eb34091969f979c7 + +Upstream-Status: Pending + +Signed-off-by: Mingli Yu <mingli.yu@windriver.com> +--- + src/xshmfence_futex.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/xshmfence_futex.h b/src/xshmfence_futex.h +index 673ac0e..a71efa5 100644 +--- a/src/xshmfence_futex.h ++++ b/src/xshmfence_futex.h +@@ -53,6 +53,10 @@ static inline int futex_wait(int32_t *addr, int32_t value) { + #include <sys/time.h> + #include <sys/syscall.h> + ++#if !defined(SYS_futex) && defined(SYS_futex_time64) ++#define SYS_futex SYS_futex_time64 ++#endif ++ + static inline long sys_futex(void *addr1, int op, int val1, struct timespec *timeout, void *addr2, int val3) + { + return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3); +-- +2.29.2 + diff --git a/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb b/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.2.bb index 85a48e4c58..0a7da938e1 100644 --- a/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb +++ b/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.2.bb @@ -6,12 +6,15 @@ using file descriptor passing." require xorg-lib-common.inc -LICENSE = "MIT-style" +LICENSE = "HPND" LIC_FILES_CHKSUM = "file://COPYING;md5=47e508ca280fde97906eacb77892c3ac" DEPENDS += "virtual/libx11" -BBCLASSEXTEND = "native nativesdk" +EXTRA_OECONF += "--with-shared-memory-dir=/dev/shm" + +SRC_URI += "file://0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch" -SRC_URI[md5sum] = "42dda8016943dc12aff2c03a036e0937" -SRC_URI[sha256sum] = "b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7" +SRC_URI[sha256sum] = "870df257bc40b126d91b5a8f1da6ca8a524555268c50b59c0acd1a27f361606f" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libxt/0001-libXt-util-don-t-link-makestrs-with-target-cflags.patch b/meta/recipes-graphics/xorg-lib/libxt/0001-libXt-util-don-t-link-makestrs-with-target-cflags.patch deleted file mode 100644 index 1a691a3d5e..0000000000 --- a/meta/recipes-graphics/xorg-lib/libxt/0001-libXt-util-don-t-link-makestrs-with-target-cflags.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b0c0e6d90bd99a699701c9542640adb218f5d536 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> -Date: Mon, 10 Jul 2017 16:51:13 +0300 -Subject: [PATCH] libXt: util: don't link makestrs with target cflags - -The line: AM_CFLAGS = $(XT_CFLAGS) -in util/Makefile.am is wrong because it adds target cflags to the -compilation of makestrs, which is built for the build machine, which -leads to build failures when cross-compiling. - -Upstream-Status: Pending - -Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> -Signed-off-by: Maxin B. John <maxin.john@intel.com> ---- - util/Makefile.am | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/util/Makefile.am b/util/Makefile.am -index 800b35b..f2dd1f9 100644 ---- a/util/Makefile.am -+++ b/util/Makefile.am -@@ -11,7 +11,6 @@ EXTRA_DIST = \ - StrDefs.ht \ - string.list - --AM_CFLAGS = $(XT_CFLAGS) - makestrs_SOURCES = makestrs.c - - --- -2.4.0 - diff --git a/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch b/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch index ffc2c15d71..ff8c675dbd 100644 --- a/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch +++ b/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch @@ -1,3 +1,8 @@ +From f069b0a430fe96f3ece2106d34375008833599d3 Mon Sep 17 00:00:00 2001 +From: Nitin A Kamble <nitin.a.kamble@intel.com> +Date: Fri, 2 Dec 2011 12:20:05 -0800 +Subject: [PATCH] libxt: fix compilatoin with x32 toolchain + Upstream-Status: Pending This fixes compilation with x32 toolchain. @@ -5,10 +10,15 @@ This fixes compilation with x32 toolchain. Received this patch from H.J. Lu <hjl.tools@gmail.com> Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/1 +--- + include/X11/Xtos.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) ---- libXt-1.1.1/include/X11/Xtos.h.x32 2011-02-08 07:56:40.000000000 -0800 -+++ libXt-1.1.1/include/X11/Xtos.h 2011-11-30 17:19:27.473349770 -0800 -@@ -62,7 +62,7 @@ SOFTWARE. +diff --git a/include/X11/Xtos.h b/include/X11/Xtos.h +index 64b2da8..44f52c2 100644 +--- a/include/X11/Xtos.h ++++ b/include/X11/Xtos.h +@@ -59,7 +59,7 @@ SOFTWARE. defined(__sparc64__) || \ defined(__s390x__) || \ (defined(__hppa__) && defined(__LP64__)) || \ diff --git a/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb b/meta/recipes-graphics/xorg-lib/libxt_1.3.0.bb index 23d9db41c4..1805dae772 100644 --- a/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb +++ b/meta/recipes-graphics/xorg-lib/libxt_1.3.0.bb @@ -12,9 +12,8 @@ independent of any particular user interface policy or style." require xorg-lib-common.inc -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=6565b1e0094ea1caae0971cc4035f343" - +LICENSE = "MIT & MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=d6e9ca2c4b2276625afe025b0a2a4d8c" DEPENDS += "util-linux libxcb libsm virtual/libx11 xorgproto libxdmcp" PROVIDES = "xt" @@ -22,14 +21,12 @@ PROVIDES = "xt" PE = "1" XORG_PN = "libXt" +XORG_EXT = "tar.xz" + +SRC_URI += "file://libxt_fix_for_x32.patch" -SRC_URI += "file://libxt_fix_for_x32.patch \ - file://0001-libXt-util-don-t-link-makestrs-with-target-cflags.patch \ - " +SRC_URI[sha256sum] = "52820b3cdb827d08dc90bdfd1b0022a3ad8919b57a39808b12591973b331bf91" BBCLASSEXTEND = "native nativesdk" EXTRA_OECONF += "--disable-xkb" - -SRC_URI[md5sum] = "8f5b5576fbabba29a05f3ca2226f74d3" -SRC_URI[sha256sum] = "46eeb6be780211fdd98c5109286618f6707712235fdd19df4ce1e6954f349f1a" diff --git a/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb b/meta/recipes-graphics/xorg-lib/libxtst_1.2.4.bb index 7837f69d38..db0621ba2e 100644 --- a/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb +++ b/meta/recipes-graphics/xorg-lib/libxtst_1.2.4.bb @@ -6,7 +6,7 @@ DESCRIPTION = "This extension is a minimal set of client and server \ extensions required to completely test the X11 server with no user \ intervention." -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=bb4f89972c3869f617f61c1a79ad1952 \ file://src/XTest.c;beginline=2;endline=32;md5=b1c8c9dff842b4d5b89ca5fa32c40e99" @@ -15,8 +15,6 @@ PROVIDES = "xtst" PE = "1" XORG_PN = "libXtst" - -SRC_URI[md5sum] = "ef8c2c1d16a00bd95b9fdcef63b8a2ca" -SRC_URI[sha256sum] = "4655498a1b8e844e3d6f21f3b2c4e2b571effb5fd83199d428a6ba7ea4bf5204" +SRC_URI[sha256sum] = "84f5f30b9254b4ffee14b5b0940e2622153b0d3aed8286a3c5b7eeb340ca33c8" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb b/meta/recipes-graphics/xorg-lib/libxv_1.0.12.bb index c6027233ef..7f9c5e5cbc 100644 --- a/meta/recipes-graphics/xorg-lib/libxv_1.0.11.bb +++ b/meta/recipes-graphics/xorg-lib/libxv_1.0.12.bb @@ -7,13 +7,12 @@ clients, which may draw in a number of colourspaces, including YUV." require xorg-lib-common.inc -LICENSE = "MIT-style" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=827da9afab1f727f2a66574629e0f39c" DEPENDS += "libxext xorgproto" XORG_PN = "libXv" -SRC_URI[md5sum] = "210b6ef30dda2256d54763136faa37b9" -SRC_URI[sha256sum] = "d26c13eac99ac4504c532e8e76a1c8e4bd526471eb8a0a4ff2a88db60cb0b088" +SRC_URI[sha256sum] = "aaf7fa09f689f7a2000fe493c0d64d1487a1210db154053e9e2336b860c63848" diff --git a/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb b/meta/recipes-graphics/xorg-lib/libxvmc_1.0.14.bb index 7e49a98ddb..af18afc62d 100644 --- a/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb +++ b/meta/recipes-graphics/xorg-lib/libxvmc_1.0.14.bb @@ -4,6 +4,7 @@ DESCRIPTION = "XvMC extends the X Video extension (Xv) and enables \ hardware rendered motion compensation support." require xorg-lib-common.inc +SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.xz" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=0a207f08d4961489c55046c9a5e500da \ @@ -15,5 +16,4 @@ PE = "1" XORG_PN = "libXvMC" -SRC_URI[md5sum] = "4cbe1c1def7a5e1b0ed5fce8e512f4c6" -SRC_URI[sha256sum] = "e501a079b5dfaef0897c56152770c77e05e362065cec58910289aa567277ee2e" +SRC_URI[sha256sum] = "e4be9eb6b6bafdbbf81f47f7163047215376e45e2dc786d0ea6181c930725ed9" diff --git a/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb b/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb deleted file mode 100644 index 626199e09c..0000000000 --- a/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb +++ /dev/null @@ -1,19 +0,0 @@ -require xorg-lib-common.inc - -SUMMARY = "XFree86-DGA: XFree86 Direct Graphics Access extension library" - -DESCRIPTION = "libXxf86dga provides the XFree86-DGA extension, which \ -allows direct graphics access to a framebuffer-like region, and also \ -allows relative mouse reporting, et al. It is mainly used by games and \ -emulators for games." - -LIC_FILES_CHKSUM = "file://COPYING;md5=abb99ac125f84f424a4278153988e32f" - -DEPENDS += "libxext" - -PE = "1" - -SRC_URI[md5sum] = "d7dd9b9df336b7dd4028b6b56542ff2c" -SRC_URI[sha256sum] = "8eecd4b6c1df9a3704c04733c2f4fa93ef469b55028af5510b25818e2456c77e" - -XORG_PN = "libXxf86dga" diff --git a/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb b/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb deleted file mode 100644 index 45b0673e73..0000000000 --- a/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "XFree86-Misc: XFree86 miscellaneous extension library" - -DESCRIPTION = "The XFree86-Misc extension, provides a means to access \ -input device configuration settings specific to the XFree86/Xorg DDX." - -require xorg-lib-common.inc - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=27c91ecc435bd3d2bfad868914c94b45" - -DEPENDS += "libxext" -PROVIDES = "xxf86misc" - -PE = "1" - -XORG_PN = "libXxf86misc" - -SRC_URI[md5sum] = "37ad70f8b53b94b550f9290be97fbe2d" -SRC_URI[sha256sum] = "a89c03e2b0f16239d67a2031b9003f31b5a686106bbdb3c797fb88ae472af380" diff --git a/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb b/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.5.bb index 95fc0b642c..16fd29ebcd 100644 --- a/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.4.bb +++ b/meta/recipes-graphics/xorg-lib/libxxf86vm_1.1.5.bb @@ -15,6 +15,6 @@ DEPENDS += "libxext xorgproto" PE = "1" XORG_PN = "libXxf86vm" +SRC_URI[sha256sum] = "247fef48b3e0e7e67129e41f1e789e8d006ba47dba1c0cdce684b9b703f888e7" -SRC_URI[md5sum] = "298b8fff82df17304dfdb5fe4066fe3a" -SRC_URI[sha256sum] = "afee27f93c5f31c0ad582852c0fb36d50e4de7cd585fcf655e278a633d85cd57" +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch b/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch deleted file mode 100644 index 782c1db022..0000000000 --- a/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0ccd906b904d21536d5ab41c6196760e3e5d72cb Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Tue, 17 May 2016 17:30:00 -0700 -Subject: [PATCH] test/utils: Check for FE_INVALID definition before use - -Some architectures e.g. nios2 do not support all exceptions - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Submitted - - test/utils.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/test/utils.c b/test/utils.c -index f8e42a5..fe32b1e 100644 ---- a/test/utils.c -+++ b/test/utils.c -@@ -978,9 +978,11 @@ enable_invalid_exceptions (void) - { - #ifdef HAVE_FENV_H - #ifdef HAVE_FEENABLEEXCEPT -+#ifdef FE_INVALID - feenableexcept (FE_INVALID); - #endif - #endif -+#endif - } - - void * --- -2.8.2 - diff --git a/meta/recipes-graphics/xorg-lib/pixman_0.38.0.bb b/meta/recipes-graphics/xorg-lib/pixman_0.38.0.bb deleted file mode 100644 index 49c3d62342..0000000000 --- a/meta/recipes-graphics/xorg-lib/pixman_0.38.0.bb +++ /dev/null @@ -1,40 +0,0 @@ -SUMMARY = "Pixman: Pixel Manipulation library" - -DESCRIPTION = "Pixman provides a library for manipulating pixel regions \ --- a set of Y-X banded rectangles, image compositing using the \ -Porter/Duff model and implicit mask generation for geometric primitives \ -including trapezoids, triangles, and rectangles." - -require xorg-lib-common.inc - -# see http://cairographics.org/releases/ - only even minor versions are stable -UPSTREAM_CHECK_REGEX = "pixman-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)" - -LICENSE = "MIT & MIT-style & PD" -LIC_FILES_CHKSUM = "file://COPYING;md5=14096c769ae0cbb5fcb94ec468be11b3 \ - file://pixman/pixman-matrix.c;endline=21;md5=4a018dff3e4e25302724c88ff95c2456 \ - file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \ - " -DEPENDS += "zlib libpng" -BBCLASSEXTEND = "native nativesdk" - -PE = "1" - -IWMMXT = "--disable-arm-iwmmxt" -LOONGSON_MMI = "--disable-loongson-mmi" -# If target supports neon then disable the 'simd' (ie VFPv2) fallback, otherwise disable neon. -NEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--disable-arm-simd", "--disable-arm-neon" ,d)}" - -EXTRA_OECONF = "--disable-gtk ${IWMMXT} ${LOONGSON_MMI} ${NEON}" -EXTRA_OECONF_class-native = "--disable-gtk" -EXTRA_OECONF_class-nativesdk = "--disable-gtk" - -SRC_URI += "\ - file://0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch \ - file://0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch \ -" - -SRC_URI[md5sum] = "04ecad28edcc14e7eb5f7ed6df29c7a0" -SRC_URI[sha256sum] = "b768e3f7895ddebdc0f07478729d9cec4fe0a9d2201f828c900d67b0e5b436a8" - -REQUIRED_DISTRO_FEATURES = "" diff --git a/meta/recipes-graphics/xorg-lib/pixman_0.42.2.bb b/meta/recipes-graphics/xorg-lib/pixman_0.42.2.bb new file mode 100644 index 0000000000..23ae0cbb27 --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/pixman_0.42.2.bb @@ -0,0 +1,47 @@ +SUMMARY = "Pixman: Pixel Manipulation library" +DESCRIPTION = "Pixman provides a library for manipulating pixel regions \ +-- a set of Y-X banded rectangles, image compositing using the \ +Porter/Duff model and implicit mask generation for geometric primitives \ +including trapezoids, triangles, and rectangles." +HOMEPAGE = "http://www.pixman.org" +SECTION = "x11/libs" +DEPENDS = "zlib" + +SRC_URI = "https://www.cairographics.org/releases/${BP}.tar.gz \ + file://0001-ARM-qemu-related-workarounds-in-cpu-features-detecti.patch \ + " +SRC_URI[sha256sum] = "ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e" + +# see http://cairographics.org/releases/ - only even minor versions are stable +UPSTREAM_CHECK_REGEX = "pixman-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)" + +PE = "1" + +LICENSE = "MIT & PD" +LIC_FILES_CHKSUM = "file://COPYING;md5=14096c769ae0cbb5fcb94ec468be11b3 \ + file://pixman/pixman-matrix.c;endline=21;md5=4a018dff3e4e25302724c88ff95c2456 \ + file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \ + " + +inherit meson pkgconfig + +# These are for the tests and demos, which we don't install +EXTRA_OEMESON = "-Dgtk=disabled -Dlibpng=disabled" +# ld: pixman/libpixman-mmx.a(pixman-mmx.c.o): +# linking mips:loongson_2f module with previous mips:isa64 modules +EXTRA_OEMESON += "-Dloongson-mmi=disabled" +# disable iwmmxt due to compile fails on most arm platforms. +EXTRA_OEMESON += "-Diwmmxt=disabled" + +EXTRA_OEMESON:append:class-target:powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "-Dvmx=enabled", "-Dvmx=disabled", d)}" +EXTRA_OEMESON:append:class-target:powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "-Dvmx=enabled", "-Dvmx=disabled", d)}" +EXTRA_OEMESON:append:class-target:powerpc64le = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "-Dvmx=enabled", "-Dvmx=disabled", d)}" + +EXTRA_OEMESON:append:armv7a = "${@bb.utils.contains("TUNE_FEATURES","neon",""," -Dneon=disabled",d)}" +EXTRA_OEMESON:append:armv7ve = "${@bb.utils.contains("TUNE_FEATURES","neon",""," -Dneon=disabled",d)}" + +EXTRA_OEMESON:append:class-native = " -Dopenmp=disabled" + +BBCLASSEXTEND = "native nativesdk" + +CVE_STATUS[CVE-2023-37769] = "not-applicable-config: stress-test is an uninstalled test" diff --git a/meta/recipes-graphics/xorg-lib/xcb-util-cursor_0.1.4.bb b/meta/recipes-graphics/xorg-lib/xcb-util-cursor_0.1.4.bb new file mode 100644 index 0000000000..047697845c --- /dev/null +++ b/meta/recipes-graphics/xorg-lib/xcb-util-cursor_0.1.4.bb @@ -0,0 +1,10 @@ +require recipes-graphics/xorg-lib/xcb-util.inc + +SUMMARY = "XCB port of libXcursor" + +DEPENDS += "xcb-util xcb-util-renderutil xcb-util-image" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=ce469b61c70ff8d7cce0547476891974" + +SRC_URI[sha256sum] = "28dcfe90bcab7b3561abe0dd58eb6832aa9cc77cfe42fcdfa4ebe20d605231fb" diff --git a/meta/recipes-graphics/xorg-lib/xcb-util-image_0.4.0.bb b/meta/recipes-graphics/xorg-lib/xcb-util-image_0.4.1.bb index c6bb5a61cd..018ac913bf 100644 --- a/meta/recipes-graphics/xorg-lib/xcb-util-image_0.4.0.bb +++ b/meta/recipes-graphics/xorg-lib/xcb-util-image_0.4.1.bb @@ -9,5 +9,4 @@ LIC_FILES_CHKSUM = "file://image/xcb_image.c;endline=24;md5=eafdf965cfb89955fded SRC_URI += "file://clang.patch \ " -SRC_URI[md5sum] = "08fe8ffecc8d4e37c0ade7906b3f4c87" -SRC_URI[sha256sum] = "2db96a37d78831d643538dd1b595d7d712e04bdccf8896a5e18ce0f398ea2ffc" +SRC_URI[sha256sum] = "ccad8ee5dadb1271fd4727ad14d9bd77a64e505608766c4e98267d9aede40d3d" diff --git a/meta/recipes-graphics/xorg-lib/xcb-util-keysyms_0.4.0.bb b/meta/recipes-graphics/xorg-lib/xcb-util-keysyms_0.4.1.bb index bca64ed61f..f1a4c3e500 100644 --- a/meta/recipes-graphics/xorg-lib/xcb-util-keysyms_0.4.0.bb +++ b/meta/recipes-graphics/xorg-lib/xcb-util-keysyms_0.4.1.bb @@ -3,7 +3,6 @@ require xcb-util.inc LICENSE = "MIT" LIC_FILES_CHKSUM = "file://keysyms/keysyms.c;endline=30;md5=2f8de023ed823bb92f0b47900574ea9e \ " -SRC_URI[md5sum] = "1022293083eec9e62d5659261c29e367" -SRC_URI[sha256sum] = "0ef8490ff1dede52b7de533158547f8b454b241aa3e4dcca369507f66f216dd9" +SRC_URI[sha256sum] = "7c260a5294412aed429df1da2f8afd3bd07b7cba3fec772fba15a613a6d5c638" diff --git a/meta/recipes-graphics/xorg-lib/xcb-util-renderutil_0.3.9.bb b/meta/recipes-graphics/xorg-lib/xcb-util-renderutil_0.3.10.bb index 25c22e5fa7..6590fa3301 100644 --- a/meta/recipes-graphics/xorg-lib/xcb-util-renderutil_0.3.9.bb +++ b/meta/recipes-graphics/xorg-lib/xcb-util-renderutil_0.3.10.bb @@ -6,5 +6,4 @@ LIC_FILES_CHKSUM = "file://renderutil/glyph.c;endline=24;md5=c517c483b8d726234ec file://renderutil/xcb_renderutil.h;endline=24;md5=d0ddab3052dd4949c93cfcb0891c96df \ " -SRC_URI[md5sum] = "468b119c94da910e1291f3ffab91019a" -SRC_URI[sha256sum] = "c6e97e48fb1286d6394dddb1c1732f00227c70bd1bedb7d1acabefdd340bea5b" +SRC_URI[sha256sum] = "3e15d4f0e22d8ddbfbb9f5d77db43eacd7a304029bf25a6166cc63caa96d04ba" diff --git a/meta/recipes-graphics/xorg-lib/xcb-util-wm_0.4.1.bb b/meta/recipes-graphics/xorg-lib/xcb-util-wm_0.4.2.bb index 39f1383299..65d340f88c 100644 --- a/meta/recipes-graphics/xorg-lib/xcb-util-wm_0.4.1.bb +++ b/meta/recipes-graphics/xorg-lib/xcb-util-wm_0.4.2.bb @@ -7,5 +7,4 @@ LIC_FILES_CHKSUM = "file://ewmh/ewmh.c.m4;endline=27;md5=63fd80552d7dc886f4eb267 file://icccm/xcb_icccm.h;beginline=4;endline=31;md5=393772b7b07b9868d479d538238c1d8a \ " -SRC_URI[md5sum] = "87b19a1cd7bfcb65a24e36c300e03129" -SRC_URI[sha256sum] = "28bf8179640eaa89276d2b0f1ce4285103d136be6c98262b6151aaee1d3c2a3f" +SRC_URI[sha256sum] = "62c34e21d06264687faea7edbf63632c9f04d55e72114aa4a57bb95e4f888a0b" diff --git a/meta/recipes-graphics/xorg-lib/xcb-util.inc b/meta/recipes-graphics/xorg-lib/xcb-util.inc index 99d04f9d44..9898a6a13e 100644 --- a/meta/recipes-graphics/xorg-lib/xcb-util.inc +++ b/meta/recipes-graphics/xorg-lib/xcb-util.inc @@ -16,8 +16,8 @@ SECTION = "x11/libs" DEPENDS = "libxcb" DEPENDS += "gperf-native" -SRC_URI = "http://xcb.freedesktop.org/dist/${BPN}-${PV}.tar.bz2" +SRC_URI = "http://xcb.freedesktop.org/dist/${BPN}-${PV}.tar.xz" -inherit autotools pkgconfig distro_features_check +inherit autotools pkgconfig features_check REQUIRED_DISTRO_FEATURES = "x11" diff --git a/meta/recipes-graphics/xorg-lib/xcb-util_0.4.0.bb b/meta/recipes-graphics/xorg-lib/xcb-util_0.4.1.bb index 206f07a65c..0da004f907 100644 --- a/meta/recipes-graphics/xorg-lib/xcb-util_0.4.0.bb +++ b/meta/recipes-graphics/xorg-lib/xcb-util_0.4.1.bb @@ -1,8 +1,9 @@ require xcb-util.inc +SRC_URI = "http://xcb.freedesktop.org/dist/${BPN}-${PV}.tar.xz" + LICENSE = "MIT" LIC_FILES_CHKSUM = "file://src/xcb_aux.c;endline=30;md5=ae305b9c2a38f9ba27060191046a6460 \ file://src/xcb_event.h;endline=27;md5=627be355aee59e1b8ade80d5bd90fad9" -SRC_URI[md5sum] = "2e97feed81919465a04ccc71e4073313" -SRC_URI[sha256sum] = "46e49469cb3b594af1d33176cd7565def2be3fa8be4371d62271fabb5eae50e9" +SRC_URI[sha256sum] = "5abe3bbbd8e54f0fa3ec945291b7e8fa8cfd3cccc43718f8758430f94126e512" diff --git a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.26.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.41.bb index 5c23288456..79ce7dea35 100644 --- a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.26.bb +++ b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.41.bb @@ -9,24 +9,24 @@ systems." HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig" BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config" -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9" +LICENSE = "MIT & MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=8fc8ae699974c360e2e2e883a63ce264" -SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2" - -SRC_URI[md5sum] = "e2e980629bfeb9f40a7d44488b18ba12" -SRC_URI[sha256sum] = "393718c7460cd06c4e8cb819d943ca54812ea476f32714c4d8975c77031a038e" +SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.xz" +SRC_URI[sha256sum] = "f02cd6b957295e0d50236a3db15825256c92f67ef1f73bf1c77a4b179edf728f" SECTION = "x11/libs" -DEPENDS = "intltool-native util-macros libxslt-native" +DEPENDS = "util-macros libxslt-native" EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps" -FILES_${PN} += "${datadir}/X11/xkb" +FILES:${PN} += "${datadir}/X11/xkb" -inherit autotools pkgconfig gettext +inherit meson pkgconfig gettext python3native -do_install_append () { +do_install:append () { install -d ${D}${datadir}/X11/xkb/compiled cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg } + +BBCLASSEXTEND += "native" diff --git a/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc b/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc index 6f4e44454f..15c7ecf782 100644 --- a/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc +++ b/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc @@ -2,26 +2,26 @@ HOMEPAGE = "http://www.x.org" BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" SECTION = "x11/libs" -LICENSE = "MIT-X" +LICENSE = "MIT" DEPENDS = "util-macros" XORG_PN = "${BPN}" +XORG_EXT ?= "tar.xz" -SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.bz2" +SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.${XORG_EXT}" S = "${WORKDIR}/${XORG_PN}-${PV}" -inherit autotools distro_features_check pkgconfig +inherit autotools features_check pkgconfig EXTRA_OECONF = "--disable-specs --without-groff --without-ps2pdf --without-fop" PACKAGECONFIG ??= "" PACKAGECONFIG[xmlto] = "--with-xmlto, --without-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" -UNKNOWN_CONFIGURE_WHITELIST += "--enable-malloc0returnsnull --disable-malloc0returnsnull \ +UNKNOWN_CONFIGURE_OPT_IGNORE += "--enable-malloc0returnsnull --disable-malloc0returnsnull \ --disable-specs --without-groff --without-ps2pdf --without-fop \ --without-xmlto --with-xmlto \ " REQUIRED_DISTRO_FEATURES ?= "x11" -REQUIRED_DISTRO_FEATURES_class-native = "" diff --git a/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb b/meta/recipes-graphics/xorg-lib/xtrans_1.5.0.bb index 200716fb02..781382e516 100644 --- a/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb +++ b/meta/recipes-graphics/xorg-lib/xtrans_1.5.0.bb @@ -9,18 +9,17 @@ except in the X Transport Interface code." require xorg-lib-common.inc -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=49347921d4d5268021a999f250edc9ca" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=bc875e1c864f4f62b29f7d8651f627fa" SRC_URI += "file://multilibfix.patch" PE = "1" -RDEPENDS_${PN}-dev = "" +DEV_PKG_DEPENDENCY = "" inherit gettext BBCLASSEXTEND = "native nativesdk" -SRC_URI[md5sum] = "c5ba432dd1514d858053ffe9f4737dd8" -SRC_URI[sha256sum] = "adbd3b36932ce4c062cd10f57d78a156ba98d618bdb6f50664da327502bc8301" +SRC_URI[sha256sum] = "1ba4b703696bfddbf40bacf25bce4e3efb2a0088878f017a50e9884b0c8fb1bd" diff --git a/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Fix-install-conflict-when-enable-multilib.patch b/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Fix-install-conflict-when-enable-multilib.patch new file mode 100644 index 0000000000..4209139da8 --- /dev/null +++ b/meta/recipes-graphics/xorg-proto/xcb-proto/0001-Fix-install-conflict-when-enable-multilib.patch @@ -0,0 +1,32 @@ +From fc28149b6b198042c8d29e0931415adad7ed3231 Mon Sep 17 00:00:00 2001 +From: Wang Mingyu <wangmy@fujitsu.com> +Date: Thu, 16 Mar 2023 08:03:47 +0000 +Subject: [PATCH] Fix install conflict when enable multilib. + +Automake defines pythondir in terms of libdir (rather than hardcode 'lib' or query it from python as automake upstream does) +https://git.yoctoproject.org/poky/tree/meta/recipes-devtools/automake/automake/0001-automake-Update-for-python.m4-to-respect-libdir.patch + +So libdir needs to be defined when pythondir is defined. + +Upstream-Status: Inappropriate + +Signed-off-by: Wang Mingyu <wangmy@fujitsu.com> +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 8b57a83..580f5bc 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,6 +1,6 @@ + SUBDIRS = src xcbgen + +-pkgconfigdir = $(datarootdir)/pkgconfig ++pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = xcb-proto.pc + + EXTRA_DIST=doc xcb-proto.pc.in autogen.sh README.md +-- +2.34.1 + diff --git a/meta/recipes-graphics/xorg-proto/xcb-proto/0001-xcb-proto.pc.in-reinstate-libdir.patch b/meta/recipes-graphics/xorg-proto/xcb-proto/0001-xcb-proto.pc.in-reinstate-libdir.patch new file mode 100644 index 0000000000..fe0a96c207 --- /dev/null +++ b/meta/recipes-graphics/xorg-proto/xcb-proto/0001-xcb-proto.pc.in-reinstate-libdir.patch @@ -0,0 +1,29 @@ +From ed499cffabe64fc1dc5898cb69ffa7e62c19e9d8 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Tue, 5 Jul 2022 21:19:20 +0200 +Subject: [PATCH] xcb-proto.pc.in: reinstate libdir + +Otherwise the following occurs when building libxcb: +| checking for xcb-proto >= 1.14... no +| configure: error: Package requirements (xcb-proto >= 1.14) were not met: +| +| Variable 'libdir' not defined in '/srv/work/alex/poky/build-64-alt/tmp/work/core2-64-poky-linux/libxcb/1.15-r0/recipe-sysroot/usr/share/pkgconfig/xcb-proto.pc' + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/proto/xcbproto/-/merge_requests/31] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> +--- + xcb-proto.pc.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xcb-proto.pc.in b/xcb-proto.pc.in +index 0822b18..c7c8b47 100644 +--- a/xcb-proto.pc.in ++++ b/xcb-proto.pc.in +@@ -2,6 +2,7 @@ prefix=@prefix@ + exec_prefix=@exec_prefix@ + datarootdir=@datarootdir@ + datadir=@datadir@ ++libdir=@libdir@ + xcbincludedir=${pc_sysrootdir}@xcbincludedir@ + PYTHON_PREFIX=@PYTHON_PREFIX@ + pythondir=${pc_sysrootdir}@pythondir@ diff --git a/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb b/meta/recipes-graphics/xorg-proto/xcb-proto_1.17.0.bb index 7467090920..2a78a87e77 100644 --- a/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb +++ b/meta/recipes-graphics/xorg-proto/xcb-proto_1.17.0.bb @@ -11,19 +11,21 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=d763b081cb10c223435b01e00dc0aba7 \ file://src/dri2.xml;beginline=2;endline=28;md5=f8763b13ff432e8597e0d610cf598e65" -SRC_URI = "http://xcb.freedesktop.org/dist/${BP}.tar.bz2" -SRC_URI[md5sum] = "abe9aa4886138150bbc04ae4f29b90e3" -SRC_URI[sha256sum] = "7b98721e669be80284e9bbfeab02d2d0d54cd11172b72271e47a2fe875e2bde1" +SRC_URI = "https://xorg.freedesktop.org/archive/individual/proto/${BP}.tar.xz \ + file://0001-xcb-proto.pc.in-reinstate-libdir.patch \ + file://0001-Fix-install-conflict-when-enable-multilib.patch \ + " +SRC_URI[sha256sum] = "2c1bacd2110f4799f74de6ebb714b94cf6f80fb112316b1219480fd22562148c" inherit autotools pkgconfig python3native PACKAGES += "python-xcbgen" -FILES_${PN} = "" -FILES_${PN}-dev += "${datadir}/xcb/*.xml ${datadir}/xcb/*.xsd" -FILES_python-xcbgen = "${PYTHON_SITEPACKAGES_DIR}" +FILES:${PN} = "" +FILES:${PN}-dev += "${datadir}/xcb/*.xml ${datadir}/xcb/*.xsd" +FILES:python-xcbgen = "${PYTHON_SITEPACKAGES_DIR}" -RDEPENDS_${PN}-dev = "" -RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" +DEV_PKG_DEPENDENCY = "" +RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc b/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc deleted file mode 100644 index 7a417c9742..0000000000 --- a/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "X protocol headers: ${XORG_PN}" -HOMEPAGE = "http://www.x.org" -BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" - -SECTION = "x11/libs" -LICENSE = "MIT-X" - -XORG_PN = "${BPN}" - -SRC_URI = "${XORG_MIRROR}/individual/proto/${XORG_PN}-${PV}.tar.bz2" - -S = "${WORKDIR}/${XORG_PN}-${PV}" - -DEPENDS = "util-macros" - -inherit autotools pkgconfig -EXTRA_OECONF = "--without-fop" - -UNKNOWN_CONFIGURE_WHITELIST += "--without-fop --without-xmlto --with-xmlto" - -PACKAGECONFIG ??= "" -PACKAGECONFIG[xmlto] = "--with-xmlto, --without-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" - -# ${PN} is empty so we need to tweak -dev and -dbg package dependencies -RDEPENDS_${PN}-dev = "" -RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" diff --git a/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch b/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch deleted file mode 100644 index 48296f7844..0000000000 --- a/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch +++ /dev/null @@ -1,468 +0,0 @@ -Upstream-Status: Submitted - -https://cgit.freedesktop.org/xorg/proto/xorgproto/commit/?id=91c1c8e1490c970379efb16784003426faec806e - -From 6feb974e0deb3355908c30e07293d82a3f6996ed Mon Sep 17 00:00:00 2001 -From: Jeremy Puhlman <jpuhlman@mvista.com> -Date: Mon, 11 Jun 2018 16:42:43 +0000 -Subject: [PATCH] Remove libdir specification. - -Currently the pc files define libdir, however they are installed into -/usr/share, which means they should be architecture agnostic. In a -multilib system, xorg-proto built for each multilib abi, the value of -libdir is going to be different. These should either be installed in -<libdir>/pkgconfig or they shouldn't define libdir, espeically since -they don't actually use the definition. This specifically causes an -issue when trying to install both abis at the same time, since they are -not binary identical, something like rpm will complain that they - ---- - applewmproto.pc.in | 1 - - bigreqsproto.pc.in | 1 - - compositeproto.pc.in | 1 - - damageproto.pc.in | 1 - - dmxproto.pc.in | 1 - - dri2proto.pc.in | 1 - - dri3proto.pc.in | 1 - - evieproto.pc.in | 1 - - fixesproto.pc.in | 1 - - fontcacheproto.pc.in | 1 - - fontsproto.pc.in | 1 - - glproto.pc.in | 1 - - inputproto.pc.in | 1 - - kbproto.pc.in | 1 - - lg3dproto.pc.in | 1 - - presentproto.pc.in | 1 - - printproto.pc.in | 1 - - randrproto.pc.in | 1 - - recordproto.pc.in | 1 - - renderproto.pc.in | 1 - - resourceproto.pc.in | 1 - - scrnsaverproto.pc.in | 1 - - trapproto.pc.in | 1 - - videoproto.pc.in | 1 - - windowswmproto.pc.in | 1 - - xcalibrateproto.pc.in | 1 - - xcmiscproto.pc.in | 1 - - xextproto.pc.in | 1 - - xf86bigfontproto.pc.in | 1 - - xf86dgaproto.pc.in | 1 - - xf86driproto.pc.in | 1 - - xf86miscproto.pc.in | 1 - - xf86rushproto.pc.in | 1 - - xf86vidmodeproto.pc.in | 1 - - xineramaproto.pc.in | 1 - - xproto.pc.in | 1 - - xproxymngproto.pc.in | 1 - - 37 files changed, 37 deletions(-) - -diff --git a/applewmproto.pc.in b/applewmproto.pc.in -index 17841ac..3227b21 100644 ---- a/applewmproto.pc.in -+++ b/applewmproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: AppleWMProto -diff --git a/bigreqsproto.pc.in b/bigreqsproto.pc.in -index 94577ed..e21bb59 100644 ---- a/bigreqsproto.pc.in -+++ b/bigreqsproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: BigReqsProto -diff --git a/compositeproto.pc.in b/compositeproto.pc.in -index da429c7..b0dada1 100644 ---- a/compositeproto.pc.in -+++ b/compositeproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: CompositeExt -diff --git a/damageproto.pc.in b/damageproto.pc.in -index 6fd9ef1..bfd5244 100644 ---- a/damageproto.pc.in -+++ b/damageproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: DamageProto -diff --git a/dmxproto.pc.in b/dmxproto.pc.in -index e82ee7d..d140e1c 100644 ---- a/dmxproto.pc.in -+++ b/dmxproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: DMXProto -diff --git a/dri2proto.pc.in b/dri2proto.pc.in -index cb5b171..fa9d24d 100644 ---- a/dri2proto.pc.in -+++ b/dri2proto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: DRI2Proto -diff --git a/dri3proto.pc.in b/dri3proto.pc.in -index e42d60e..20da358 100644 ---- a/dri3proto.pc.in -+++ b/dri3proto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: DRI3Proto -diff --git a/evieproto.pc.in b/evieproto.pc.in -index 64e0ec4..fd5442b 100644 ---- a/evieproto.pc.in -+++ b/evieproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: EvIEExt -diff --git a/fixesproto.pc.in b/fixesproto.pc.in -index f8258e2..c7fcb81 100644 ---- a/fixesproto.pc.in -+++ b/fixesproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: FixesProto -diff --git a/fontcacheproto.pc.in b/fontcacheproto.pc.in -index eb4238b..8ffffe9 100644 ---- a/fontcacheproto.pc.in -+++ b/fontcacheproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: FontcacheProto -diff --git a/fontsproto.pc.in b/fontsproto.pc.in -index 9d22354..ebb61a4 100644 ---- a/fontsproto.pc.in -+++ b/fontsproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: FontsProto -diff --git a/glproto.pc.in b/glproto.pc.in -index b951db5..e97bfc9 100644 ---- a/glproto.pc.in -+++ b/glproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: GLProto -diff --git a/inputproto.pc.in b/inputproto.pc.in -index 1eb6619..270b95c 100644 ---- a/inputproto.pc.in -+++ b/inputproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: InputProto -diff --git a/kbproto.pc.in b/kbproto.pc.in -index bdd39f1..32a172d 100644 ---- a/kbproto.pc.in -+++ b/kbproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: KBProto -diff --git a/lg3dproto.pc.in b/lg3dproto.pc.in -index 3930ad7..43fba29 100644 ---- a/lg3dproto.pc.in -+++ b/lg3dproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: Lg3dProto -diff --git a/presentproto.pc.in b/presentproto.pc.in -index 6ec4b7d..55b84dc 100644 ---- a/presentproto.pc.in -+++ b/presentproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: PresentProto -diff --git a/printproto.pc.in b/printproto.pc.in -index 8a2e2d6..a2da66d 100644 ---- a/printproto.pc.in -+++ b/printproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: PrintProto -diff --git a/randrproto.pc.in b/randrproto.pc.in -index 5a5edb2..6d60cbb 100644 ---- a/randrproto.pc.in -+++ b/randrproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: RandrProto -diff --git a/recordproto.pc.in b/recordproto.pc.in -index 0ff4c0b..a87aa82 100644 ---- a/recordproto.pc.in -+++ b/recordproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: RecordProto -diff --git a/renderproto.pc.in b/renderproto.pc.in -index e6028ac..34b15e0 100644 ---- a/renderproto.pc.in -+++ b/renderproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: RenderProto -diff --git a/resourceproto.pc.in b/resourceproto.pc.in -index a409db9..f927cbb 100644 ---- a/resourceproto.pc.in -+++ b/resourceproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: ResourceProto -diff --git a/scrnsaverproto.pc.in b/scrnsaverproto.pc.in -index 6556a2c..fd9d368 100644 ---- a/scrnsaverproto.pc.in -+++ b/scrnsaverproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: ScrnSaverProto -diff --git a/trapproto.pc.in b/trapproto.pc.in -index 8cb0aa8..8a220b9 100644 ---- a/trapproto.pc.in -+++ b/trapproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: TrapProto -diff --git a/videoproto.pc.in b/videoproto.pc.in -index 14b907a..5c22f7a 100644 ---- a/videoproto.pc.in -+++ b/videoproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: VideoProto -diff --git a/windowswmproto.pc.in b/windowswmproto.pc.in -index 0a2ec0b..ec56e82 100644 ---- a/windowswmproto.pc.in -+++ b/windowswmproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: WindowsWMProto -diff --git a/xcalibrateproto.pc.in b/xcalibrateproto.pc.in -index 40b6fd0..f1ea5de 100644 ---- a/xcalibrateproto.pc.in -+++ b/xcalibrateproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XCalibrate -diff --git a/xcmiscproto.pc.in b/xcmiscproto.pc.in -index 0dfbf21..b72bbc6 100644 ---- a/xcmiscproto.pc.in -+++ b/xcmiscproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XCMiscProto -diff --git a/xextproto.pc.in b/xextproto.pc.in -index f66eeae..9419c91 100644 ---- a/xextproto.pc.in -+++ b/xextproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XExtProto -diff --git a/xf86bigfontproto.pc.in b/xf86bigfontproto.pc.in -index 18c5647..4a67be6 100644 ---- a/xf86bigfontproto.pc.in -+++ b/xf86bigfontproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XF86BigFontProto -diff --git a/xf86dgaproto.pc.in b/xf86dgaproto.pc.in -index 5c5f8b1..e029cd4 100644 ---- a/xf86dgaproto.pc.in -+++ b/xf86dgaproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XF86DGAProto -diff --git a/xf86driproto.pc.in b/xf86driproto.pc.in -index 93df292..c8faf14 100644 ---- a/xf86driproto.pc.in -+++ b/xf86driproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XF86DRIProto -diff --git a/xf86miscproto.pc.in b/xf86miscproto.pc.in -index af73fa3..05d5d9e 100644 ---- a/xf86miscproto.pc.in -+++ b/xf86miscproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XF86MiscProto -diff --git a/xf86rushproto.pc.in b/xf86rushproto.pc.in -index fc5f63b..1c7ff1b 100644 ---- a/xf86rushproto.pc.in -+++ b/xf86rushproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XF86RushProto -diff --git a/xf86vidmodeproto.pc.in b/xf86vidmodeproto.pc.in -index fcb74f2..ef062b3 100644 ---- a/xf86vidmodeproto.pc.in -+++ b/xf86vidmodeproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XF86VidModeProto -diff --git a/xineramaproto.pc.in b/xineramaproto.pc.in -index 1ffd37d..9172f1e 100644 ---- a/xineramaproto.pc.in -+++ b/xineramaproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XineramaProto -diff --git a/xproto.pc.in b/xproto.pc.in -index 8ff2d3d..899316a 100644 ---- a/xproto.pc.in -+++ b/xproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - includex11dir=@includedir@/X11 - -diff --git a/xproxymngproto.pc.in b/xproxymngproto.pc.in -index 5c6fad6..1a81e28 100644 ---- a/xproxymngproto.pc.in -+++ b/xproxymngproto.pc.in -@@ -1,6 +1,5 @@ - prefix=@prefix@ - exec_prefix=@exec_prefix@ --libdir=@libdir@ - includedir=@includedir@ - - Name: XProxyManagementProtocol --- -2.11.1 - diff --git a/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb b/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb deleted file mode 100644 index cec6e87559..0000000000 --- a/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb +++ /dev/null @@ -1,16 +0,0 @@ -require xorg-proto-common.inc - -SUMMARY = "XCalibrate: Touchscreen calibration headers" - -DESCRIPTION = "This package provides the headers and specification documents defining \ -the core protocol and (many) extensions for the X Window System" - -LICENSE = "MIT-style" -LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=b9e051107d5628966739a0b2e9b32676" - -SRC_URI += "file://0001-Remove-libdir-specification.patch" - -SRC_URI[md5sum] = "81557ca47ee66a4e54590fcdadd28114" -SRC_URI[sha256sum] = "fee885e0512899ea5280c593fdb2735beb1693ad170c22ebcc844470eec415a0" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-proto/xorgproto_2024.1.bb b/meta/recipes-graphics/xorg-proto/xorgproto_2024.1.bb new file mode 100644 index 0000000000..3f56e21a55 --- /dev/null +++ b/meta/recipes-graphics/xorg-proto/xorgproto_2024.1.bb @@ -0,0 +1,25 @@ +SUMMARY = "X Window System unified protocol definitions" +DESCRIPTION = "This package provides the headers and specification documents defining \ +the core protocol and (many) extensions for the X Window System" +HOMEPAGE = "http://www.x.org" +BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" + +SECTION = "x11/libs" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=0b9fe3db4015bcbe920e7c67a39ee3f1" + +SRC_URI = "${XORG_MIRROR}/individual/proto/${BP}.tar.xz" +SRC_URI[sha256sum] = "372225fd40815b8423547f5d890c5debc72e88b91088fbfb13158c20495ccb59" + +inherit meson + +PACKAGECONFIG ??= "" +PACKAGECONFIG[legacy] = "-Dlegacy=true,-Dlegacy=false" + +# Datadir only used to install pc files, $datadir/pkgconfig +datadir="${libdir}" +# ${PN} is empty so we need to tweak -dev and -dbg package dependencies +DEV_PKG_DEPENDENCY = "" +RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb b/meta/recipes-graphics/xorg-util/makedepend_1.0.9.bb index 727ab54965..6db7d04079 100644 --- a/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb +++ b/meta/recipes-graphics/xorg-util/makedepend_1.0.9.bb @@ -17,5 +17,4 @@ BBCLASSEXTEND = "native" LIC_FILES_CHKSUM = "file://COPYING;md5=43a6eda34b48ee821b3b66f4f753ce4f" -SRC_URI[md5sum] = "efb2d7c7e22840947863efaedc175747" -SRC_URI[sha256sum] = "503903d41fb5badb73cb70d7b3740c8b30fe1cc68c504d3b6a85e6644c4e5004" +SRC_URI[sha256sum] = "bc94ffda6cd4671603a69c39dbe8f96b317707b9185b2aaa3b54b5d134b41884" diff --git a/meta/recipes-graphics/xorg-util/util-macros/0001-xorg-macros.m4.in-do-not-run-AC_CANONICAL_HOST-in-ma.patch b/meta/recipes-graphics/xorg-util/util-macros/0001-xorg-macros.m4.in-do-not-run-AC_CANONICAL_HOST-in-ma.patch new file mode 100644 index 0000000000..e08b586bf0 --- /dev/null +++ b/meta/recipes-graphics/xorg-util/util-macros/0001-xorg-macros.m4.in-do-not-run-AC_CANONICAL_HOST-in-ma.patch @@ -0,0 +1,28 @@ +From 6afaaf164ab9370204856961a92ad8ee523a8293 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Fri, 3 Mar 2023 13:24:58 +0100 +Subject: [PATCH] xorg-macros.m4.in: do not run AC_CANONICAL_HOST in manpage + section macro + +This doesn't work when building allarch items, as it calls into +config.sub with the host triplet, and config.sub can't match +it against any architeture it knows. + +Upstream-Status: Inappropriate [oe specific] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> +--- + xorg-macros.m4.in | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in +index 3b8b8e9..6541236 100644 +--- a/xorg-macros.m4.in ++++ b/xorg-macros.m4.in +@@ -111,7 +111,6 @@ AC_SUBST(TRADITIONALCPPFLAGS) + # Added AC_PROG_SED in version 1.8 + + AC_DEFUN([XORG_MANPAGE_SECTIONS],[ +-AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_PROG_SED]) + + case $host_os in diff --git a/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb b/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb deleted file mode 100644 index 268059935c..0000000000 --- a/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "X autotools macros" - -DESCRIPTION = "M4 autotools macros used by various X.org programs." - -require xorg-util-common.inc - -LICENSE = "MIT & MIT-style" -LIC_FILES_CHKSUM = "file://COPYING;md5=1970511fddd439b07a6ba789d28ff662" - -PE = "1" - -SRC_URI[md5sum] = "5059b328fac086b733ffac6607164c41" -SRC_URI[sha256sum] = "9225c45c3de60faf971979a55a5536f3562baa4b6f02246c23e98ac0c09a75b7" - -# ${PN} is empty so we need to tweak -dev and -dbg package dependencies -RDEPENDS_${PN}-dev = "" -RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-util/util-macros_1.20.1.bb b/meta/recipes-graphics/xorg-util/util-macros_1.20.1.bb new file mode 100644 index 0000000000..8a0e7bec41 --- /dev/null +++ b/meta/recipes-graphics/xorg-util/util-macros_1.20.1.bb @@ -0,0 +1,20 @@ +SUMMARY = "X autotools macros" + +DESCRIPTION = "M4 autotools macros used by various X.org programs." + +require xorg-util-common.inc + +LICENSE = "MIT & MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=42ba50748cb7ccf8739424e5e2072b02" + +PE = "1" + +SRC_URI += "file://0001-xorg-macros.m4.in-do-not-run-AC_CANONICAL_HOST-in-ma.patch" + +SRC_URI[sha256sum] = "b373f72887b1394ce2193180a60cb0d1fb8b17bc96ddd770cfd7a808cb489a15" + +# ${PN} is empty so we need to tweak -dev and -dbg package dependencies +DEV_PKG_DEPENDENCY = "" +RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-graphics/xorg-util/xorg-util-common.inc b/meta/recipes-graphics/xorg-util/xorg-util-common.inc index 18d022c49f..a4c85a4ebc 100644 --- a/meta/recipes-graphics/xorg-util/xorg-util-common.inc +++ b/meta/recipes-graphics/xorg-util/xorg-util-common.inc @@ -2,7 +2,7 @@ HOMEPAGE = "http://www.x.org" BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" SECTION = "x11/utils" -LICENSE = "MIT-X" +LICENSE = "MIT" XORG_PN = "${BPN}" diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf index f4cd139e8d..3eb380a0a4 100644 --- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf +++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuarm/xorg.conf @@ -35,4 +35,8 @@ Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" Option "AllowEmptyInput" "no" + Option "BlankTime" "0" + Option "StandbyTime" "0" + Option "SuspendTime" "0" + Option "OffTime" "0" EndSection diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf deleted file mode 100644 index 1d3c64f620..0000000000 --- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf +++ /dev/null @@ -1,39 +0,0 @@ - -Section "Files" -EndSection - -Section "Device" - Identifier "Graphics Controller" - Driver "fbdev" -EndSection - -Section "Monitor" - Identifier "Generic Monitor" - Option "DPMS" - # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz - Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync - # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz - ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync - # 640x480 @ 72Hz (VESA) hsync: 37.9kHz - ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync - # 640x480 @ 75Hz (VESA) hsync: 37.5kHz - ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync - # 640x480 @ 85Hz (VESA) hsync: 43.3kHz - ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync -EndSection - -Section "Screen" - Identifier "Default Screen" - Device "Graphics Controller" - Monitor "Generic Monitor" - DefaultDepth 16 - SubSection "Display" - Modes "640x480" - EndSubSection -EndSection - -Section "ServerLayout" - Identifier "Default Layout" - Screen "Default Screen" - Option "AllowEmptyInput" "no" -EndSection diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf deleted file mode 100644 index 03b94dc3af..0000000000 --- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf +++ /dev/null @@ -1,39 +0,0 @@ - -Section "Files" -EndSection - -Section "Device" - Identifier "Graphics Controller" - Driver "fbdev" -EndSection - -Section "Monitor" - Identifier "Generic Monitor" - Option "DPMS" - # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz - Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync - # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz - ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync - # 640x480 @ 72Hz (VESA) hsync: 37.9kHz - ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync - # 640x480 @ 75Hz (VESA) hsync: 37.5kHz - ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync - # 640x480 @ 85Hz (VESA) hsync: 43.3kHz - ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync -EndSection - -Section "Screen" - Identifier "Default Screen" - Device "Graphics Controller" - Monitor "Generic Monitor" - DefaultDepth 16 - SubSection "Display" - Modes "640x480" - EndSubSection -EndSection - -Section "ServerLayout" - Identifier "Default Layout" - Screen "Default Screen" - Option "AllowEmptyInput" "no" -EndSection diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf index f4cd139e8d..3eb380a0a4 100644 --- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf +++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemuppc/xorg.conf @@ -35,4 +35,8 @@ Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" Option "AllowEmptyInput" "no" + Option "BlankTime" "0" + Option "StandbyTime" "0" + Option "SuspendTime" "0" + Option "OffTime" "0" EndSection diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf index f4cd139e8d..3eb380a0a4 100644 --- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf +++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemush4/xorg.conf @@ -35,4 +35,8 @@ Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" Option "AllowEmptyInput" "no" + Option "BlankTime" "0" + Option "StandbyTime" "0" + Option "SuspendTime" "0" + Option "OffTime" "0" EndSection diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86-64/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86-64/xorg.conf index c12d92c201..c01c3331c5 100644 --- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86-64/xorg.conf +++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86-64/xorg.conf @@ -30,4 +30,8 @@ Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" Option "AllowEmptyInput" "no" + Option "BlankTime" "0" + Option "StandbyTime" "0" + Option "SuspendTime" "0" + Option "OffTime" "0" EndSection diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86/xorg.conf b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86/xorg.conf index c12d92c201..c01c3331c5 100644 --- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86/xorg.conf +++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemux86/xorg.conf @@ -30,4 +30,8 @@ Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" Option "AllowEmptyInput" "no" + Option "BlankTime" "0" + Option "StandbyTime" "0" + Option "SuspendTime" "0" + Option "OffTime" "0" EndSection diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb index 5420b7d23e..0972a5dd78 100644 --- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb +++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb @@ -1,22 +1,22 @@ SUMMARY = "X.Org X server configuration file" HOMEPAGE = "http://www.x.org" SECTION = "x11/base" -LICENSE = "MIT-X" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" -PR = "r33" SRC_URI = "file://xorg.conf" -S = "${WORKDIR}" +S = "${WORKDIR}/sources" +UNPACKDIR = "${S}" -CONFFILES_${PN} = "${sysconfdir}/X11/xorg.conf" +CONFFILES:${PN} = "${sysconfdir}/X11/xorg.conf" PACKAGE_ARCH = "${MACHINE_ARCH}" -ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY:${PN} = "1" do_install () { - if test -s ${WORKDIR}/xorg.conf; then + if test -s ${S}/xorg.conf; then install -d ${D}/${sysconfdir}/X11 - install -m 0644 ${WORKDIR}/xorg.conf ${D}/${sysconfdir}/X11/ + install -m 0644 ${S}/xorg.conf ${D}/${sysconfdir}/X11/ fi } diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc index 615ad6d9bd..22f7d9a8ad 100644 --- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc +++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc @@ -1,7 +1,7 @@ SUMMARY = "The X.Org X server" HOMEPAGE = "http://www.x.org" SECTION = "x11/base" -LICENSE = "MIT-X" +LICENSE = "MIT" LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880" # xf86-*-* packages depend on an X server built with the xfree86 DDX @@ -13,23 +13,32 @@ PROVIDES = "virtual/xserver-xf86" PROVIDES += "virtual/xserver" PE = "2" -INC_PR = "r8" XORG_PN = "xorg-server" -SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2" +SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.xz" -CVE_PRODUCT = "xorg-server" +UPSTREAM_CHECK_REGEX = "xorg-server-(?P<pver>\d+(\.(?!99)\d+)+)\.tar" + +CVE_PRODUCT = "xorg-server x_server" + +CVE_STATUS[CVE-2011-4613] = "not-applicable-platform: This is specific to Debian's xserver-wrapper.c" +CVE_STATUS[CVE-2020-25697] = "upstream-wontfix: \ +As per upstream, exploiting this flaw is non-trivial and it requires exact \ +timing on the behalf of the attacker. Many graphical applications exit if their \ +connection to the X server is lost, so a typical desktop session is either \ +impossible or difficult to exploit. There is currently no upstream patch \ +available for this flaw." +CVE_STATUS[CVE-2022-3553] = "cpe-incorrect: This is specific to XQuartz, which is the macOS X server port" S = "${WORKDIR}/${XORG_PN}-${PV}" -inherit autotools pkgconfig +inherit meson pkgconfig -inherit distro_features_check +inherit features_check REQUIRED_DISTRO_FEATURES = "x11" -PROTO_DEPS = "xorgproto" -LIB_DEPS = "pixman libxfont2 xtrans libxau libxext libxdmcp libdrm libxkbfile libpciaccess" -DEPENDS = "${PROTO_DEPS} ${LIB_DEPS} font-util" +LIB_DEPS = "pixman libxfont2 xtrans libxau libxext libxdmcp libdrm libxkbfile libpciaccess libxcvt libtirpc" +DEPENDS = "xorgproto ${LIB_DEPS} font-util" # Split out some modules and extensions from the main package # These aren't needed for basic operations and only take up space: @@ -69,93 +78,80 @@ PACKAGES =+ "${PN}-sdl \ ${PN}-module-libxf4bpp \ xf86-video-modesetting" -SUMMARY_xf86-video-modesetting = "X.Org X server -- modesetting display driver" -INSANE_SKIP_${MLPREFIX}xf86-video-modesetting = "xorg-driver-abi" - -XSERVER_RRECOMMENDS = "xkeyboard-config rgb xserver-xf86-config xkbcomp xf86-input-libinput" -RRECOMMENDS_${PN} += "${XSERVER_RRECOMMENDS}" -RRECOMMENDS_${PN}-xwayland += "${XSERVER_RRECOMMENDS}" -RDEPENDS_${PN}-xvfb += "xkeyboard-config" -RDEPENDS_${PN}-module-exa = "${PN} (= ${EXTENDPKGV})" - -FILES_${PN} = "${bindir} ${libdir}/X11/Options ${libdir}/X11/Cards ${libdir}/X11/getconfig ${libdir}/X11/etc ${libdir}/modules/*.so ${libdir}/xorg/modules/*.so /etc/X11 ${libdir}/xorg/protocol.txt ${datadir}/X11/xorg.conf.d" -FILES_${PN}-dev += "${libdir}/xorg/modules/*.la ${libdir}/xorg/modules/*/*.la" -FILES_${PN}-doc += "${libdir}/X11/doc ${datadir}/X11/xkb/compiled/README.compiled ${localstatedir}/lib/xkb/README.compiled" -FILES_${PN}-sdl = "${bindir}/Xsdl" -FILES_${PN}-fbdev = "${bindir}/Xfbdev" -FILES_${PN}-xvfb = "${bindir}/Xvfb" -FILES_${PN}-utils = "${bindir}/scanpci ${bindir}/pcitweak ${bindir}/ioport ${bindir}/in[bwl] ${bindir}/out[bwl] ${bindir}/mmap[rw] ${bindir}/gtf ${bindir}/getconfig ${bindir}/getconfig.pl" -FILES_${PN}-xephyr = "${bindir}/Xephyr" -FILES_${PN}-xwayland = "${bindir}/Xwayland" -FILES_${PN}-multimedia-modules = "${libdir}/xorg/modules/multimedia/*drv*" -FILES_${PN}-extension-dri = "${libdir}/xorg/modules/extensions/libdri.so" -FILES_${PN}-extension-dri2 = "${libdir}/xorg/modules/extensions/libdri2.so" -FILES_${PN}-extension-glx = "${libdir}/xorg/modules/extensions/libglx.so" -FILES_${PN}-extension-record = "${libdir}/xorg/modules/extensions/librecord.so" -FILES_${PN}-extension-extmod = "${libdir}/xorg/modules/extensions/libextmod.so" -FILES_${PN}-extension-dbe = "${libdir}/xorg/modules/extensions/libdbe.so" -FILES_${PN}-module-libint10 = "${libdir}/xorg/modules/libint10.so" -FILES_${PN}-module-libafb = "${libdir}/xorg/modules/libafb.so" -FILES_${PN}-module-libwfb = "${libdir}/xorg/modules/libwfb.so" -FILES_${PN}-module-libmfb = "${libdir}/xorg/modules/libmfb.so" -FILES_${PN}-module-libcfb = "${libdir}/xorg/modules/libcfb.so" -FILES_${PN}-module-exa = "${libdir}/xorg/modules/libexa.so" -FILES_${PN}-module-xaa = "${libdir}/xorg/modules/libxaa.so" -FILES_${PN}-module-libxf1bpp = "${libdir}/xorg/modules/libxf1bpp.so" -FILES_${PN}-module-libxf4bpp = "${libdir}/xorg/modules/libxf4bpp.so" -FILES_xf86-video-modesetting = "${libdir}/xorg/modules/drivers/modesetting_drv.so" - -EXTRA_OECONF += "--with-fop=no \ - --with-pic \ - --disable-static \ - --disable-record \ - --disable-dmx \ - --disable-xnest \ - --enable-xvfb \ - --enable-composite \ - --without-dtrace \ - --with-int10=x86emu \ - --sysconfdir=/etc/X11 \ - --localstatedir=/var \ - --with-xkb-output=/var/lib/xkb \ +SUMMARY:xf86-video-modesetting = "X.Org X server -- modesetting display driver" +INSANE_SKIP:${MLPREFIX}xf86-video-modesetting = "xorg-driver-abi" + +XSERVER_RDEPENDS = "xkeyboard-config rgb xserver-xf86-config xkbcomp xf86-input-libinput" +RDEPENDS:${PN} += "${XSERVER_RDEPENDS}" +RDEPENDS:${PN}-xwayland += "${XSERVER_RDEPENDS}" +RDEPENDS:${PN}-xvfb += "xkeyboard-config" +RDEPENDS:${PN}-module-exa = "${PN} (= ${EXTENDPKGV})" + +FILES:${PN} = "${bindir} ${libdir}/X11/Options ${libdir}/X11/Cards ${libdir}/X11/getconfig ${libdir}/X11/etc ${libdir}/modules/*.so ${libdir}/xorg/modules/input/*.so ${libdir}/xorg/modules/*.so /etc/X11 ${libdir}/xorg/protocol.txt ${datadir}/X11/xorg.conf.d" +FILES:${PN}-dev += "${libdir}/xorg/modules/*.la ${libdir}/xorg/modules/*/*.la" +FILES:${PN}-doc += "${libdir}/X11/doc ${datadir}/X11/xkb/compiled/README.compiled ${localstatedir}/lib/xkb/README.compiled" +FILES:${PN}-sdl = "${bindir}/Xsdl" +FILES:${PN}-fbdev = "${bindir}/Xfbdev" +FILES:${PN}-xvfb = "${bindir}/Xvfb" +FILES:${PN}-utils = "${bindir}/scanpci ${bindir}/pcitweak ${bindir}/ioport ${bindir}/in[bwl] ${bindir}/out[bwl] ${bindir}/mmap[rw] ${bindir}/gtf ${bindir}/getconfig ${bindir}/getconfig.pl" +FILES:${PN}-xephyr = "${bindir}/Xephyr" +FILES:${PN}-xwayland = "${bindir}/Xwayland" +FILES:${PN}-multimedia-modules = "${libdir}/xorg/modules/multimedia/*drv*" +FILES:${PN}-extension-dri = "${libdir}/xorg/modules/extensions/libdri.so" +FILES:${PN}-extension-dri2 = "${libdir}/xorg/modules/extensions/libdri2.so" +FILES:${PN}-extension-glx = "${libdir}/xorg/modules/extensions/libglx.so" +FILES:${PN}-extension-record = "${libdir}/xorg/modules/extensions/librecord.so" +FILES:${PN}-extension-extmod = "${libdir}/xorg/modules/extensions/libextmod.so" +FILES:${PN}-extension-dbe = "${libdir}/xorg/modules/extensions/libdbe.so" +FILES:${PN}-module-libint10 = "${libdir}/xorg/modules/libint10.so" +FILES:${PN}-module-libafb = "${libdir}/xorg/modules/libafb.so" +FILES:${PN}-module-libwfb = "${libdir}/xorg/modules/libwfb.so" +FILES:${PN}-module-libmfb = "${libdir}/xorg/modules/libmfb.so" +FILES:${PN}-module-libcfb = "${libdir}/xorg/modules/libcfb.so" +FILES:${PN}-module-exa = "${libdir}/xorg/modules/libexa.so" +FILES:${PN}-module-xaa = "${libdir}/xorg/modules/libxaa.so" +FILES:${PN}-module-libxf1bpp = "${libdir}/xorg/modules/libxf1bpp.so" +FILES:${PN}-module-libxf4bpp = "${libdir}/xorg/modules/libxf4bpp.so" +FILES:xf86-video-modesetting = "${libdir}/xorg/modules/drivers/modesetting_drv.so" + +EXTRA_OEMESON += " \ + -Dxnest=false \ + -Ddtrace=false \ + -Dint10=x86emu \ + -Dxkb_output_dir=/var/lib/xkb \ " -OPENGL_PKGCONFIGS = "dri glx glamor dri3 xshmfence" -PACKAGECONFIG ??= "dri2 udev ${XORG_CRYPTO} \ +OPENGL_PKGCONFIGS = "dri glx glamor dri3" +PACKAGECONFIG ??= "dga dri2 udev ${XORG_CRYPTO} \ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '${OPENGL_PKGCONFIGS}', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'opengl wayland', 'xwayland', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-logind', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-logind', '', d)} \ " -PACKAGECONFIG[udev] = "--enable-config-udev,--disable-config-udev,udev" -PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,xorgproto virtual/mesa" -PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2,xorgproto" -# DRI3 requires xshmfence to also be enabled -PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3,xorgproto" -PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,xorgproto virtual/libgl virtual/libx11" -PACKAGECONFIG[glamor] = "--enable-glamor,--disable-glamor,libepoxy virtual/libgbm,libegl" -PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind" -PACKAGECONFIG[xshmfence] = "--enable-xshmfence,--disable-xshmfence,libxshmfence" -PACKAGECONFIG[xmlto] = "--with-xmlto, --without-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native" -PACKAGECONFIG[systemd-logind] = "--enable-systemd-logind=yes,--enable-systemd-logind=no,dbus," -PACKAGECONFIG[systemd] = "--with-systemd-daemon,--without-systemd-daemon,systemd" -PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,xorgproto" -PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland,wayland wayland-native wayland-protocols libepoxy" +PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,udev" +PACKAGECONFIG[dga] = "-Ddga=true,-Ddga=false" +PACKAGECONFIG[dri] = "-Ddri1=true,-Ddri1=false,virtual/mesa" +PACKAGECONFIG[dri2] = "-Ddri2=true,-Ddri2=false" +PACKAGECONFIG[dri3] = "-Ddri3=true,-Ddri3=false" +PACKAGECONFIG[glx] = "-Dglx=true,-Dglx=false,virtual/libgl virtual/libx11" +PACKAGECONFIG[glamor] = "-Dglamor=true,-Dglamor=false,libepoxy virtual/libgbm,libegl" +PACKAGECONFIG[unwind] = "-Dlibunwind=true,-Dlibunwind=false,libunwind" +PACKAGECONFIG[systemd-logind] = "-Dsystemd_logind=true,-Dsystemd_logind=false,dbus," +PACKAGECONFIG[xinerama] = "-Dxinerama=true,-Dxinerama=false" +PACKAGECONFIG[xvfb] = "-Dxvfb=true,-Dxvfb=false" # Xorg requires a SHA1 implementation, pick one XORG_CRYPTO ??= "openssl" -PACKAGECONFIG[openssl] = "--with-sha1=libcrypto,,openssl" -PACKAGECONFIG[nettle] = "--with-sha1=libnettle,,nettle" -PACKAGECONFIG[gcrypt] = "--with-sha1=libgcrypt,,libgcrypt" +PACKAGECONFIG[openssl] = "-Dsha1=libcrypto,,openssl" +PACKAGECONFIG[nettle] = "-Dsha1=libnettle,,nettle" +PACKAGECONFIG[gcrypt] = "-Dsha1=libgcrypt,,libgcrypt" -do_install_append () { - # Its assumed base-files creates this for us - rmdir ${D}${localstatedir}/log/ +do_install:append () { + sed -i -e 's,${libdir}/xorg/modules,${prefix}/lib*/xorg/modules,' ${D}${mandir}/man5/xorg.conf.5 } # Add runtime provides for the ABI versions of the video and input subsystems, # so that drivers can depend on the relevant version. -python populate_packages_prepend() { +python populate_packages:prepend() { import subprocess # Set PKG_CONFIG_PATH so pkg-config looks at the .pc files that are going @@ -176,6 +172,8 @@ python populate_packages_prepend() { return "%sxorg-abi-%s-%s" % (mlprefix, name, output) pn = d.getVar("PN") - d.appendVar("RPROVIDES_" + pn, " " + get_abi("input")) - d.appendVar("RPROVIDES_" + pn, " " + get_abi("video")) + d.appendVar("RPROVIDES:" + pn, " " + get_abi("input")) + d.appendVar("RPROVIDES:" + pn, " " + get_abi("video")) } + +CVE_STATUS[CVE-2023-5574] = "${@bb.utils.contains('PACKAGECONFIG', 'xvfb', '', 'not-applicable-config: specific to Xvfb', d)}" diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch new file mode 100644 index 0000000000..11d5546537 --- /dev/null +++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch @@ -0,0 +1,29 @@ +From ce3b8a230a3805c9b557c1f106795675bd034860 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 17 Aug 2020 10:50:51 -0700 +Subject: [PATCH] Avoid duplicate definitions of IOPortBase + +This fixed build with gcc10/-fno-common + +Fixes +compiler.h:528: multiple definition of `IOPortBase'; + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +--- + hw/xfree86/os-support/linux/lnx_video.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c +index fd83022..1d0d96e 100644 +--- a/hw/xfree86/os-support/linux/lnx_video.c ++++ b/hw/xfree86/os-support/linux/lnx_video.c +@@ -78,6 +78,7 @@ xf86OSInitVidMem(VidMemInfoPtr pVidMem) + /***************************************************************************/ + /* I/O Permissions section */ + /***************************************************************************/ ++_X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */ + + #if defined(__powerpc__) + volatile unsigned char *ioBase = NULL; diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch deleted file mode 100644 index c0c242814b..0000000000 --- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 8a382c015cd3c69fcfc146ef03dcbf30c77ff207 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 1 Mar 2019 09:47:57 -0800 -Subject: [PATCH] test/xtest: Initialize array with braces - -Fixes an error when extra warnings are enabled, this is caught with clang - -test/xtest.c:64:23: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] - WindowRec root = {0}; - ^ - {} -1 error generated. - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - test/xtest.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/xtest.c b/test/xtest.c -index fc5e433..d7e6620 100644 ---- a/test/xtest.c -+++ b/test/xtest.c -@@ -61,7 +61,7 @@ xtest_init_devices(void) - { - ScreenRec screen = {0}; - ClientRec server_client = {0}; -- WindowRec root = {0}; -+ WindowRec root = {{0}}; - WindowOptRec optional = {0}; - - /* random stuff that needs initialization */ --- -2.21.0 - diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/musl-arm-inb-outb.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/musl-arm-inb-outb.patch deleted file mode 100644 index 4be441fb71..0000000000 --- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/musl-arm-inb-outb.patch +++ /dev/null @@ -1,18 +0,0 @@ -inb/outb family for arm is only implemented on glibc -so assumption across linux is wrong - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: xorg-server-1.18.0/hw/xfree86/common/compiler.h -=================================================================== ---- xorg-server-1.18.0.orig/hw/xfree86/common/compiler.h -+++ xorg-server-1.18.0/hw/xfree86/common/compiler.h -@@ -758,7 +758,7 @@ inl(unsigned short port) - return xf86ReadMmio32Le((void *) ioBase, port); - } - --#elif defined(__arm__) && defined(__linux__) -+#elif defined(__arm__) && defined(__GLIBC__) - - /* for Linux on ARM, we use the LIBC inx/outx routines */ - /* note that the appropriate setup via "ioperm" needs to be done */ diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch deleted file mode 100644 index 2ef9fa9fe4..0000000000 --- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch +++ /dev/null @@ -1,34 +0,0 @@ -Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/xserver/merge_requests/22] -Signed-off-by: Ross Burton <ross.burton@intel.com> - -From 5f65a6246fe752764045dd1e38912f1dccec71e4 Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@intel.com> -Date: Thu, 20 Sep 2018 20:12:24 +0100 -Subject: [PATCH] xorg-server.m4: just all cflags instead of just sdkdir - -Instead of fetching just the sdkdir variable of xorg-server using pkg-config, -simply get all of the CFLAGS. Aside from completeness, this helps builds in -sysroots as pkg-config knows what to do with --cflags but doesn't remap -arbitrary variables. - -Signed-off-by: Ross Burton <ross.burton@intel.com> ---- - xorg-server.m4 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/xorg-server.m4 b/xorg-server.m4 -index 18255b91a..195bda5d8 100644 ---- a/xorg-server.m4 -+++ b/xorg-server.m4 -@@ -31,7 +31,7 @@ dnl - AC_DEFUN([XORG_DRIVER_CHECK_EXT],[ - AC_REQUIRE([PKG_PROG_PKG_CONFIG]) - SAVE_CFLAGS="$CFLAGS" -- CFLAGS="$CFLAGS -I`$PKG_CONFIG --variable=sdkdir xorg-server`" -+ CFLAGS="$CFLAGS `$PKG_CONFIG --cflags xorg-server`" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include "xorg-server.h" - #if !defined $1 --- -2.11.0 - diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.4.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.12.bb index ad99d6bece..570e08d5ae 100644 --- a/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.4.bb +++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.12.bb @@ -1,29 +1,26 @@ require xserver-xorg.inc -SRC_URI += "file://musl-arm-inb-outb.patch \ - file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \ - file://pkgconfig.patch \ - file://0001-test-xtest-Initialize-array-with-braces.patch \ - " -SRC_URI[md5sum] = "c4841cc24b79420205d082fe82e0a650" -SRC_URI[sha256sum] = "fe0fd493ebe93bfc56bede382fa204458ff5f636ea54d413a5d1bd58e19166ee" +SRC_URI += "file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \ + file://0001-Avoid-duplicate-definitions-of-IOPortBase.patch \ + " +SRC_URI[sha256sum] = "1e016e2be1b5ccdd65eac3ea08e54bd13ce8f4f6c3fb32ad6fdac4e71729a90f" # These extensions are now integrated into the server, so declare the migration # path for in-place upgrades. -RREPLACES_${PN} = "${PN}-extension-dri \ +RREPLACES:${PN} = "${PN}-extension-dri \ ${PN}-extension-dri2 \ ${PN}-extension-record \ ${PN}-extension-extmod \ ${PN}-extension-dbe \ " -RPROVIDES_${PN} = "${PN}-extension-dri \ +RPROVIDES:${PN} = "${PN}-extension-dri \ ${PN}-extension-dri2 \ ${PN}-extension-record \ ${PN}-extension-extmod \ ${PN}-extension-dbe \ " -RCONFLICTS_${PN} = "${PN}-extension-dri \ +RCONFLICTS:${PN} = "${PN}-extension-dri \ ${PN}-extension-dri2 \ ${PN}-extension-record \ ${PN}-extension-extmod \ diff --git a/meta/recipes-graphics/xrestop/xrestop_0.4.bb b/meta/recipes-graphics/xrestop/xrestop_0.4.bb index ce5df03936..a6b6c4238d 100644 --- a/meta/recipes-graphics/xrestop/xrestop_0.4.bb +++ b/meta/recipes-graphics/xrestop/xrestop_0.4.bb @@ -5,12 +5,11 @@ DESCRIPTION = "top-like statistics of X11 server resource usage by clients" HOMEPAGE = "http://www.freedesktop.org/wiki/Software/xrestop" BUGTRACKER = "https://bugs.freedesktop.org/" -LICENSE = "GPLv2+" +LICENSE = "GPL-2.0-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ file://xrestop.c;endline=18;md5=730876c30f0d8a928676bcd1242a3b35" SECTION = "x11/utils" -PR = "r3" DEPENDS = "libxres libxext virtual/libx11 ncurses" @@ -19,6 +18,6 @@ SRC_URI = "http://downloads.yoctoproject.org/releases/xrestop/xrestop-${PV}.tar. SRC_URI[md5sum] = "d8a54596cbaf037e62b80c4585a3ca9b" SRC_URI[sha256sum] = "67c2fc94a7ecedbaae0d1837e82e93d1d98f4a6d759828860e552119af3ce257" -inherit autotools pkgconfig distro_features_check +inherit autotools pkgconfig features_check # depends on virtual/libx11 REQUIRED_DISTRO_FEATURES = "x11" diff --git a/meta/recipes-graphics/xwayland/xwayland_23.2.6.bb b/meta/recipes-graphics/xwayland/xwayland_23.2.6.bb new file mode 100644 index 0000000000..f51429bc8c --- /dev/null +++ b/meta/recipes-graphics/xwayland/xwayland_23.2.6.bb @@ -0,0 +1,50 @@ +SUMMARY = "XWayland is an X Server that runs under Wayland." +DESCRIPTION = "XWayland is an X Server running as a Wayland client, \ +and thus is capable of displaying native X11 client applications in a \ +Wayland compositor environment. The goal of XWayland is to facilitate \ +the transition from X Window System to Wayland environments, providing \ +a way to run unported applications in the meantime." +HOMEPAGE = "https://fedoraproject.org/wiki/Changes/XwaylandStandalone" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880" + +SRC_URI = "https://www.x.org/archive/individual/xserver/xwayland-${PV}.tar.xz" +SRC_URI[sha256sum] = "1c9a366b4e7ccadba0f9bd313c59eae12d23bd72543b22a26eaf8b20835cfc6d" + +UPSTREAM_CHECK_REGEX = "xwayland-(?P<pver>\d+(\.(?!90\d)\d+)+)\.tar" + +inherit meson features_check pkgconfig +REQUIRED_DISTRO_FEATURES = "x11 opengl" + +DEPENDS += "xorgproto xtrans pixman libxkbfile libxfont2 wayland wayland-native wayland-protocols libdrm libepoxy libxcvt" + +OPENGL_PKGCONFIGS = "glx glamor dri3" +PACKAGECONFIG ??= "${XORG_CRYPTO} ${XWAYLAND_EI} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '${OPENGL_PKGCONFIGS}', '', d)} \ +" +PACKAGECONFIG[dri3] = "-Ddri3=true,-Ddri3=false,libxshmfence" +PACKAGECONFIG[libdecor] = "-Dlibdecor=true,-Dlibdecor=false,libdecor" +PACKAGECONFIG[glx] = "-Dglx=true,-Dglx=false,virtual/libgl virtual/libx11" +PACKAGECONFIG[glamor] = "-Dglamor=true,-Dglamor=false,libepoxy virtual/libgbm,libegl" +PACKAGECONFIG[unwind] = "-Dlibunwind=true,-Dlibunwind=false,libunwind" +PACKAGECONFIG[xinerama] = "-Dxinerama=true,-Dxinerama=false" + +# Xorg requires a SHA1 implementation, pick one +XORG_CRYPTO ??= "openssl" +PACKAGECONFIG[openssl] = "-Dsha1=libcrypto,,openssl" +PACKAGECONFIG[nettle] = "-Dsha1=libnettle,,nettle" +PACKAGECONFIG[gcrypt] = "-Dsha1=libgcrypt,,libgcrypt" +XWAYLAND_EI ??= "xwayland_ei_false" +PACKAGECONFIG[xwayland_ei_false] = "-Dxwayland_ei=false" +PACKAGECONFIG[xwayland_ei_portal] = "-Dxwayland_ei=portal,,libei" +PACKAGECONFIG[xwayland_ei_socket] = "-Dxwayland_ei=socket,,libei" + +do_install:append() { + # remove files not needed and clashing with xserver-xorg + rm -rf ${D}/${libdir}/xorg/ +} + +FILES:${PN} += "${libdir}/xorg/protocol.txt" + +RDEPENDS:${PN} += "xkbcomp" |