summaryrefslogtreecommitdiffstats
path: root/external/poky/meta/recipes-graphics
diff options
context:
space:
mode:
Diffstat (limited to 'external/poky/meta/recipes-graphics')
-rw-r--r--external/poky/meta/recipes-graphics/cairo/cairo/0001-cairo-Fix-CVE-2017-9814.patch45
-rw-r--r--external/poky/meta/recipes-graphics/cairo/cairo/CVE-2018-19876.patch34
-rw-r--r--external/poky/meta/recipes-graphics/cairo/cairo_1.16.0.bb (renamed from external/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb)33
-rw-r--r--external/poky/meta/recipes-graphics/clutter/clutter-1.0.inc9
-rw-r--r--external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0.inc2
-rw-r--r--external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb (renamed from external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.26.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc7
-rw-r--r--external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch37
-rw-r--r--external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb1
-rw-r--r--external/poky/meta/recipes-graphics/cogl/cogl-1.0.inc15
-rw-r--r--external/poky/meta/recipes-graphics/cogl/cogl-1.0/0001-Fix-an-incorrect-preprocessor-conditional.patch32
-rw-r--r--external/poky/meta/recipes-graphics/cogl/cogl-1.0/test-backface-culling.c-fix-may-be-used-uninitialize.patch35
-rw-r--r--external/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb8
-rw-r--r--external/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.4.bb6
-rw-r--r--external/poky/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch35
-rw-r--r--external/poky/meta/recipes-graphics/drm/libdrm_2.4.101.bb (renamed from external/poky/meta/recipes-graphics/drm/libdrm_2.4.94.bb)9
-rw-r--r--external/poky/meta/recipes-graphics/eglinfo/eglinfo-fb_1.0.0.bb7
-rw-r--r--external/poky/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.0.bb13
-rw-r--r--external/poky/meta/recipes-graphics/eglinfo/eglinfo.inc38
-rw-r--r--external/poky/meta/recipes-graphics/eglinfo/files/0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch34
-rw-r--r--external/poky/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch31
-rwxr-xr-xexternal/poky/meta/recipes-graphics/eglinfo/files/waf169
-rw-r--r--external/poky/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fcxml.c-avoid-double-free-of-filename.patch28
-rw-r--r--external/poky/meta/recipes-graphics/fontconfig/fontconfig/revert-static-pkgconfig.patch12
-rw-r--r--external/poky/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb (renamed from external/poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb)20
-rw-r--r--external/poky/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch2
-rw-r--r--external/poky/meta/recipes-graphics/freetype/freetype_2.10.1.bb (renamed from external/poky/meta/recipes-graphics/freetype/freetype_2.9.1.bb)10
-rw-r--r--external/poky/meta/recipes-graphics/glew/glew_2.2.0.bb (renamed from external/poky/meta/recipes-graphics/glew/glew_2.1.0.bb)10
-rw-r--r--external/poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb46
-rw-r--r--external/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.4.bb41
-rw-r--r--external/poky/meta/recipes-graphics/images/core-image-clutter.bb2
-rw-r--r--external/poky/meta/recipes-graphics/images/core-image-weston.bb2
-rw-r--r--external/poky/meta/recipes-graphics/images/core-image-x11.bb4
-rw-r--r--external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch28
-rw-r--r--external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch119
-rw-r--r--external/poky/meta/recipes-graphics/jpeg/files/CVE-2020-13790.patch76
-rw-r--r--external/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.4.bb (renamed from external/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.0.bb)12
-rw-r--r--external/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch25
-rw-r--r--external/poky/meta/recipes-graphics/kmscube/kmscube_git.bb11
-rw-r--r--external/poky/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch26
-rw-r--r--external/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb22
-rw-r--r--external/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.4.bb43
-rw-r--r--external/poky/meta/recipes-graphics/libfakekey/libfakekey_git.bb2
-rw-r--r--external/poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb6
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch73
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch114
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch68
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch81
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch80
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch123
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch64
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch63
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch192
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch38
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch19
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch187
-rw-r--r--external/poky/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb81
-rw-r--r--external/poky/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch141
-rw-r--r--external/poky/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch37
-rw-r--r--external/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.12.bb (renamed from external/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb)22
-rw-r--r--external/poky/meta/recipes-graphics/libva/libva-utils_2.6.0.bb (renamed from external/poky/meta/recipes-graphics/libva/libva-utils_2.2.0.bb)14
-rw-r--r--external/poky/meta/recipes-graphics/libva/libva_2.6.1.bb (renamed from external/poky/meta/recipes-graphics/libva/libva_2.2.0.bb)13
-rw-r--r--external/poky/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb1
-rw-r--r--external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm/0001-Fix-build-with-gcc-10.patch41
-rw-r--r--external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb3
-rw-r--r--external/poky/meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch111
-rw-r--r--external/poky/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb (renamed from external/poky/meta/recipes-graphics/menu-cache/menu-cache_1.0.2.bb)10
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch39
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch27
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch43
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch46
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch34
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0003-Allow-enable-DRI-without-DRI-drivers.patch46
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch44
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch147
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch32
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch36
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch53
-rw-r--r--external/poky/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch37
-rw-r--r--external/poky/meta/recipes-graphics/mesa/libglu_9.0.1.bb (renamed from external/poky/meta/recipes-graphics/mesa/libglu_9.0.0.bb)8
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch26
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch20
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch20
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa-demos_8.4.0.bb (renamed from external/poky/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb)8
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb9
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa-gl_20.0.2.bb15
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa.inc161
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa_18.1.9.bb21
-rw-r--r--external/poky/meta/recipes-graphics/mesa/mesa_20.0.2.bb23
-rw-r--r--external/poky/meta/recipes-graphics/mx/mx.inc2
-rw-r--r--external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb2
-rw-r--r--external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb2
-rw-r--r--external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb2
-rw-r--r--external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb2
-rw-r--r--external/poky/meta/recipes-graphics/pango/pango/0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch147
-rw-r--r--external/poky/meta/recipes-graphics/pango/pango/0001-Fix-build-reproducibility.patch31
-rw-r--r--external/poky/meta/recipes-graphics/pango/pango/CVE-2019-1010238.patch38
-rw-r--r--external/poky/meta/recipes-graphics/pango/pango_1.44.7.bb (renamed from external/poky/meta/recipes-graphics/pango/pango_1.42.4.bb)38
-rw-r--r--external/poky/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch54
-rw-r--r--external/poky/meta/recipes-graphics/piglit/piglit_git.bb31
-rw-r--r--external/poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb2
-rw-r--r--external/poky/meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch108
-rw-r--r--external/poky/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb3
-rw-r--r--external/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb2
-rw-r--r--external/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb2
-rw-r--r--external/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch36
-rw-r--r--external/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch27
-rw-r--r--external/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb26
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/assimp/0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch68
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/assimp/0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch1664
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/assimp_5.0.1.bb (renamed from external/poky/meta/recipes-graphics/vulkan/assimp_4.1.0.bb)7
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch21
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb12
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.1.126.0.bb18
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.1.126.0.bb38
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.1.126.0.bb31
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch128
-rw-r--r--external/poky/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb37
-rw-r--r--external/poky/meta/recipes-graphics/waffle/waffle/0001-third_party-threads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch54
-rw-r--r--external/poky/meta/recipes-graphics/waffle/waffle_1.5.2.bb37
-rw-r--r--external/poky/meta/recipes-graphics/waffle/waffle_1.6.0.bb39
-rw-r--r--external/poky/meta/recipes-graphics/wayland/libinput/determinism.patch21
-rw-r--r--external/poky/meta/recipes-graphics/wayland/libinput_1.15.2.bb (renamed from external/poky/meta/recipes-graphics/wayland/libinput_1.11.3.bb)17
-rw-r--r--external/poky/meta/recipes-graphics/wayland/mtdev_1.1.6.bb (renamed from external/poky/meta/recipes-graphics/wayland/mtdev_1.1.5.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/wayland/wayland-protocols_1.20.bb (renamed from external/poky/meta/recipes-graphics/wayland/wayland-protocols_1.16.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch34
-rw-r--r--external/poky/meta/recipes-graphics/wayland/wayland/0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch115
-rw-r--r--external/poky/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch26
-rw-r--r--external/poky/meta/recipes-graphics/wayland/wayland/0002-meson.build-find-the-native-wayland-scanner-directly.patch27
-rw-r--r--external/poky/meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch32
-rw-r--r--external/poky/meta/recipes-graphics/wayland/wayland/run-ptest17
-rw-r--r--external/poky/meta/recipes-graphics/wayland/wayland_1.18.0.bb (renamed from external/poky/meta/recipes-graphics/wayland/wayland_1.16.0.bb)32
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-conf.bb35
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-init.bb38
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-init/71-weston-drm.rules2
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-init/qemuall/weston.ini2
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini0
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini0
-rwxr-xr-xexternal/poky/meta/recipes-graphics/wayland/weston-init/weston-start29
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-init/weston.env0
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-init/weston.ini75
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston-init/weston@.service (renamed from external/poky/meta/recipes-graphics/wayland/weston-init/weston.service)12
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch78
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch129
-rw-r--r--external/poky/meta/recipes-graphics/wayland/weston_8.0.0.bb (renamed from external/poky/meta/recipes-graphics/wayland/weston_5.0.0.bb)60
-rw-r--r--external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf2
-rwxr-xr-xexternal/poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm8
-rw-r--r--external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb9
-rw-r--r--external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/0001-calibrator.hh-Include-string-to-get-std-string.patch28
-rw-r--r--external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb22
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb)9
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/x11perf_1.6.0.bb)8
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xauth_1.1.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xauth_1.0.10.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.2.bb2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xev/diet-x11.patch133
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xev_1.2.3.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xev_1.2.2.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xhost_1.0.8.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xhost_1.0.7.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xinit/0001-Make-manpage-multilib-identical.patch28
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xinit_1.4.0.bb)6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xinput_1.6.3.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xinput_1.6.2.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.3.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb)6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xmodmap_1.0.10.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xmodmap_1.0.9.bb)5
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xorg-app-common.inc2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xprop_1.2.4.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xprop_1.2.3.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xrandr_1.5.1.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xrandr_1.5.0.bb)6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xset_1.2.4.bb2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xvinfo_1.1.4.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xvinfo_1.1.3.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.5.bb (renamed from external/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.29.0.bb (renamed from external/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.0.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics/64bit_time_t_support.patch51
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-Add-Coffeelake-PCI-IDs-for-S-Skus.patch116
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch25
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb9
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch52
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-font/encodings/nocompiler.patch23
-rw-r--r--external/poky/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb (renamed from external/poky/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb)7
-rw-r--r--external/poky/meta/recipes-graphics/xorg-font/font-util_1.3.2.bb (renamed from external/poky/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb)6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-font/xorg-font-common.inc2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/files/libx11-whitespace.patch56
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.4.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb)6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch149
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libice_1.0.10.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb)8
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libpciaccess/0004-Don-t-include-sys-io.h-on-arm.patch28
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.16.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb)5
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb)8
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11-compose-data/0001-Drop-x11-dependencies.patch86
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb36
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb19
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch28
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch536
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch33
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch31
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb14
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.9.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libx11.inc)11
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxcb/gcc-mips-pr68302-mips-workaround.patch22
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxcb_1.13.bb)10
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb)6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxcursor_1.1.15.bb)7
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.5.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb)7
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.3.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.4.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.4.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb)6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxft_2.3.3.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxft_2.3.2.bb)6
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.10.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb)5
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.10.0.bb27
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.bb22
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.1.0.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb)5
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxpm_3.5.12.bb)8
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.2.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxt/0001-libXt-util-don-t-link-makestrs-with-target-cflags.patch33
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch16
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxt_1.2.0.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb)11
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb1
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.12.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb19
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb19
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/pixman/asm_include.patch29
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/pixman_0.34.0.bb41
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/pixman_0.38.4.bb36
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/xcb-util.inc2
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.28.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.24.bb)7
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc3
-rw-r--r--external/poky/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb (renamed from external/poky/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb26
-rw-r--r--external/poky/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc26
-rw-r--r--external/poky/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch468
-rw-r--r--external/poky/meta/recipes-graphics/xorg-proto/xorgproto/legacy.patch97
-rw-r--r--external/poky/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb16
-rw-r--r--external/poky/meta/recipes-graphics/xorg-proto/xorgproto_2019.2.bb28
-rw-r--r--external/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.6.bb (renamed from external/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb)4
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf39
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf39
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc22
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-drmmode_display.c-add-missing-mi.h-include.patch23
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch36
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/CVE-2018-14665.patch62
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/musl-arm-inb-outb.patch18
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/sdksyms-no-build-path.patch50
-rw-r--r--external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.7.bb (renamed from external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.1.bb)17
-rw-r--r--external/poky/meta/recipes-graphics/xrestop/xrestop_0.4.bb2
-rw-r--r--external/poky/meta/recipes-graphics/xvideo-tests/xvideo-tests_git.bb18
250 files changed, 4797 insertions, 5365 deletions
diff --git a/external/poky/meta/recipes-graphics/cairo/cairo/0001-cairo-Fix-CVE-2017-9814.patch b/external/poky/meta/recipes-graphics/cairo/cairo/0001-cairo-Fix-CVE-2017-9814.patch
deleted file mode 100644
index 7d02ab94..00000000
--- a/external/poky/meta/recipes-graphics/cairo/cairo/0001-cairo-Fix-CVE-2017-9814.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 042421e9e3d266ad0bb7805132041ef51ad3234d Mon Sep 17 00:00:00 2001
-From: Adrian Johnson <ajohnson@redneon.com>
-Date: Wed, 16 Aug 2017 22:52:35 -0400
-Subject: [PATCH] cairo: Fix CVE-2017-9814
-
-The bug happens because in some scenarios the variable size can
-have a value of 0 at line 1288. And malloc(0) is not returning
-NULL as some people could expect:
-
- https://stackoverflow.com/questions/1073157/zero-size-malloc
-
-malloc(0) returns the smallest chunk possible. So the line 1290
-with the return is not execute. And the execution continues with
-an invalid map.
-
-Since the size is 0 the variable map is not initialized correctly
-at load_trutype_table. So, later when the variable map is accessed
-previous values from a freed chunk are used. This could allows an
-attacker to control the variable map.
-
-This patch have not merge in upstream now.
-
-Upstream-Status: Backport [https://bugs.freedesktop.org/show_bug.cgi?id=101547]
-CVE: CVE-2017-9814
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- src/cairo-truetype-subset.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/cairo-truetype-subset.c b/src/cairo-truetype-subset.c
-index e3449a0..f77d11c 100644
---- a/src/cairo-truetype-subset.c
-+++ b/src/cairo-truetype-subset.c
-@@ -1285,7 +1285,7 @@ _cairo_truetype_reverse_cmap (cairo_scaled_font_t *scaled_font,
- return CAIRO_INT_STATUS_UNSUPPORTED;
-
- size = be16_to_cpu (map->length);
-- map = malloc (size);
-+ map = _cairo_malloc (size);
- if (unlikely (map == NULL))
- return _cairo_error (CAIRO_STATUS_NO_MEMORY);
-
---
-2.8.1
-
diff --git a/external/poky/meta/recipes-graphics/cairo/cairo/CVE-2018-19876.patch b/external/poky/meta/recipes-graphics/cairo/cairo/CVE-2018-19876.patch
new file mode 100644
index 00000000..4252a566
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/cairo/cairo/CVE-2018-19876.patch
@@ -0,0 +1,34 @@
+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/external/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb b/external/poky/meta/recipes-graphics/cairo/cairo_1.16.0.bb
index 08026c46..8663dec4 100644
--- a/external/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb
+++ b/external/poky/meta/recipes-graphics/cairo/cairo_1.16.0.bb
@@ -10,12 +10,12 @@ 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 = "(MPL-1.1 | LGPLv2.1) & GPLv3+"
+LICENSE_${PN} = "MPL-1.1 | LGPLv2.1"
+LICENSE_${PN}-dev = "MPL-1.1 | LGPLv2.1"
+LICENSE_${PN}-doc = "MPL-1.1 | LGPLv2.1"
+LICENSE_${PN}-gobject = "MPL-1.1 | LGPLv2.1"
+LICENSE_${PN}-script-interpreter = "MPL-1.1 | LGPLv2.1"
LICENSE_${PN}-perf-utils = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77"
@@ -24,13 +24,13 @@ 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://0001-cairo-Fix-CVE-2017-9814.patch \
+ file://CVE-2018-19876.patch \
file://CVE-2019-6461.patch \
file://CVE-2019-6462.patch \
"
-SRC_URI[md5sum] = "9f0db9dbfca0966be8acd682e636d165"
-SRC_URI[sha256sum] = "8c90f00c500b2299c0a323dd9beead2a00353752b2092ead558139bd67f7bf16"
+SRC_URI[md5sum] = "f19e0353828269c22bd72e271243a552"
+SRC_URI[sha256sum] = "5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331"
inherit autotools pkgconfig upstream-version-is-even gtk-doc multilib_script
@@ -40,7 +40,8 @@ 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)}"
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'opengl', '', d)} \
+ trace"
PACKAGECONFIG[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}"
PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb"
@@ -49,6 +50,7 @@ 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"
+PACKAGECONFIG[trace] = "--enable-trace,--disable-trace"
EXTRA_OECONF += " \
${@bb.utils.contains('TARGET_FPU', 'soft', '--disable-some-floating-point', '', d)} \
@@ -66,6 +68,10 @@ do_install_append () {
rm -rf ${D}${libdir}/cairo/cairo-sphinx*
rm -rf ${D}${libdir}/cairo/.debug/cairo-fdr*
rm -rf ${D}${libdir}/cairo/.debug/cairo-sphinx*
+ [ ! -d ${D}${bindir} ] ||
+ rmdir -p --ignore-fail-on-non-empty ${D}${bindir}
+ [ ! -d ${D}${libdir}/cairo ] ||
+ rmdir -p --ignore-fail-on-non-empty ${D}${libdir}/cairo
}
PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils"
@@ -83,7 +89,8 @@ 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.*"
-FILES_${PN}-dev += "${libdir}/cairo/*.so"
+FILES_${PN}-perf-utils = "${bindir}/cairo-trace* ${libdir}/cairo/*.la ${libdir}/cairo/libcairo-trace.so"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_REGEX = "cairo-(?P<pver>\d+(\.\d+)+).tar.xz"
diff --git a/external/poky/meta/recipes-graphics/clutter/clutter-1.0.inc b/external/poky/meta/recipes-graphics/clutter/clutter-1.0.inc
index 6dbbf4d8..e0ac819e 100644
--- a/external/poky/meta/recipes-graphics/clutter/clutter-1.0.inc
+++ b/external/poky/meta/recipes-graphics/clutter/clutter-1.0.inc
@@ -1,8 +1,11 @@
SUMMARY = "Graphics library for creating hardware-accelerated user interfaces"
+DESCRIPTION = "Clutter is an Open GL based interactive canvas library, \
+designed for creating fast, mainly 2D single window applications such as media \
+box UIs, presentations, kiosk style applications and so on."
HOMEPAGE = "http://www.clutter-project.org/"
LICENSE = "LGPLv2.1+"
-inherit clutter ptest-gnome distro_features_check upstream-version-is-even gobject-introspection
+inherit clutter ptest-gnome features_check upstream-version-is-even gobject-introspection
# depends on cogl-1.0 which needs opengl
REQUIRED_DISTRO_FEATURES ?= "opengl"
@@ -21,11 +24,11 @@ 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[gdk] = "--enable-gdk-backend,--disable-gdk-backend,gtk+3"
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}"
@@ -34,7 +37,7 @@ PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,${E
PACKAGECONFIG[wayland-compositor] = "--enable-wayland-compositor,--disable-wayland-compositor,wayland"
# Default configuration, distros might want to override
-PACKAGECONFIG ??= "egl \
+PACKAGECONFIG ??= "egl gdk \
${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11', '', d)}"
diff --git a/external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0.inc b/external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0.inc
index 4c877982..fc3eade8 100644
--- a/external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0.inc
+++ b/external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0.inc
@@ -2,7 +2,7 @@ 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
+inherit clutter features_check upstream-version-is-even gobject-introspection
# depends on clutter-1.0 which depends on cogl-1.0
REQUIRED_DISTRO_FEATURES ?= "opengl"
diff --git a/external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.26.bb b/external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb
index 8a0dda54..35382453 100644
--- a/external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.26.bb
+++ b/external/poky/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb
@@ -3,5 +3,5 @@ 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] = "7809ca6ce9d1a3490597fd4a7375c389"
-SRC_URI[archive.sha256sum] = "d8618a6d9accec0f2a8574c5e1220051f8505fb82b20336c26bdbd482aa6cb3a"
+SRC_URI[archive.md5sum] = "2bf9d7ca146c9d71e86c45cd00e9a28e"
+SRC_URI[archive.sha256sum] = "fe69bd6c659d24ab30da3f091eb91cd1970026d431179b0724f13791e8ad9f9d"
diff --git a/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc b/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc
index 05c4e5f5..7bf22785 100644
--- a/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc
+++ b/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc
@@ -2,7 +2,9 @@ SUMMARY = "Library for embedding a Clutter canvas in a GTK+ application"
HOMEPAGE = "http://www.clutter-project.org/"
LICENSE = "LGPLv2+"
-inherit clutter distro_features_check upstream-version-is-even gobject-introspection
+CLUTTERBASEBUILDCLASS = "meson"
+inherit clutter 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
@@ -10,6 +12,7 @@ ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
DEPENDS = "clutter-1.0 gtk+3"
PACKAGES =+ "${PN}-examples"
-AUTOTOOLS_AUXDIR = "${S}/build"
+GTKDOC_MESON_OPTION = "enable_docs"
+GIR_MESON_OPTION = 'enable_gi'
diff --git a/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch b/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch
new file mode 100644
index 00000000..e21c6fd9
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch
@@ -0,0 +1,37 @@
+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/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb b/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb
index f0300c71..53948c89 100644
--- a/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb
+++ b/external/poky/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb
@@ -2,5 +2,6 @@ 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/external/poky/meta/recipes-graphics/cogl/cogl-1.0.inc b/external/poky/meta/recipes-graphics/cogl/cogl-1.0.inc
index 7a79aa78..d581ad1c 100644
--- a/external/poky/meta/recipes-graphics/cogl/cogl-1.0.inc
+++ b/external/poky/meta/recipes-graphics/cogl/cogl-1.0.inc
@@ -1,8 +1,12 @@
SUMMARY = "Modern 3D graphics API with associated utility APIs"
-HOMEPAGE = "http://wiki.clutter-project.org/wiki/Cogl"
+DESCRIPTION = "Cogl is a small open source library for using 3D graphics \
+hardware for rendering. The API departs from the flat state machine style of \
+OpenGL and is designed to make it easy to write orthogonal components that \
+can render without stepping on each others toes."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/cogl"
LICENSE = "MIT"
-inherit clutter distro_features_check upstream-version-is-even gobject-introspection
+inherit clutter features_check upstream-version-is-even gobject-introspection
# cogl-1.0 needs opengl to build
REQUIRED_DISTRO_FEATURES ?= "opengl"
@@ -17,8 +21,8 @@ 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"
+EDEPENDS_X11 = "virtual/libx11 libxcomposite libxdamage libxfixes libxrandr"
+EDEPENDS_WAYLAND = "virtual/egl virtual/libgles2 wayland"
# Extra RDEPENDS for PACKAGECONFIG
# This has to be explictly listed, because cogl dlopens the backends
@@ -31,6 +35,7 @@ EXTRA_OECONF += "--enable-examples-install \
--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}"
@@ -74,4 +79,6 @@ RPROVIDES_libcogl = "cogl-1.0"
RCONFLICTS_libcogl = "cogl-1.0"
RREPLACES_libcogl = "cogl-1.0"
+RDEPENDS_${PN}-dev = "libcogl"
+
COMPATIBLE_HOST_armv4 = 'null'
diff --git a/external/poky/meta/recipes-graphics/cogl/cogl-1.0/0001-Fix-an-incorrect-preprocessor-conditional.patch b/external/poky/meta/recipes-graphics/cogl/cogl-1.0/0001-Fix-an-incorrect-preprocessor-conditional.patch
deleted file mode 100644
index 2a9d8f82..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/cogl/cogl-1.0/test-backface-culling.c-fix-may-be-used-uninitialize.patch b/external/poky/meta/recipes-graphics/cogl/cogl-1.0/test-backface-culling.c-fix-may-be-used-uninitialize.patch
deleted file mode 100644
index 479a0ff4..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb b/external/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.2.bb
deleted file mode 100644
index 5901062a..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.4.bb b/external/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.4.bb
new file mode 100644
index 00000000..8e61c19f
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.4.bb
@@ -0,0 +1,6 @@
+require cogl-1.0.inc
+
+SRC_URI[archive.md5sum] = "31755015a865c4af51ac84f6e53af8ab"
+SRC_URI[archive.sha256sum] = "5217bf94cbca3df63268a3b79d017725382b9e592b891d1e7dc6212590ce0de0"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=1b1a508d91d25ca607c83f92f3e31c84"
diff --git a/external/poky/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch b/external/poky/meta/recipes-graphics/drm/libdrm/musl-ioctl.patch
deleted file mode 100644
index e3d6c5b8..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/drm/libdrm_2.4.94.bb b/external/poky/meta/recipes-graphics/drm/libdrm_2.4.101.bb
index d6542921..8ec566fa 100644
--- a/external/poky/meta/recipes-graphics/drm/libdrm_2.4.94.bb
+++ b/external/poky/meta/recipes-graphics/drm/libdrm_2.4.101.bb
@@ -10,10 +10,9 @@ LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c5
PROVIDES = "drm"
DEPENDS = "libpthread-stubs"
-SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.bz2 \
- file://musl-ioctl.patch"
-SRC_URI[md5sum] = "e9803233838007047f39eb385c70d9e0"
-SRC_URI[sha256sum] = "b73c59b0a3760502c428ba81de49cd4807657d26be5e697eba3a87dd021d16be"
+SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.xz"
+SRC_URI[md5sum] = "e6a6f1b88963210b3d62acd7310a1cc7"
+SRC_URI[sha256sum] = "ddf31baa8e49473624860bd166ce654dc349873f7a6c7b3305964249315c78a7"
inherit meson pkgconfig manpages
@@ -54,7 +53,7 @@ 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}-amdgpu = "${libdir}/libdrm_amdgpu.so.* ${datadir}/${PN}/amdgpu.ids"
FILES_${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*"
BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/eglinfo/eglinfo-fb_1.0.0.bb b/external/poky/meta/recipes-graphics/eglinfo/eglinfo-fb_1.0.0.bb
deleted file mode 100644
index cccdd207..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.0.bb b/external/poky/meta/recipes-graphics/eglinfo/eglinfo-x11_1.0.0.bb
deleted file mode 100644
index 48ab8805..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/eglinfo/eglinfo.inc b/external/poky/meta/recipes-graphics/eglinfo/eglinfo.inc
deleted file mode 100644
index 07ad0722..00000000
--- a/external/poky/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 = "4b317648ec6cf39556a9e5d8078f605bc0edd5de"
-
-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/external/poky/meta/recipes-graphics/eglinfo/files/0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch b/external/poky/meta/recipes-graphics/eglinfo/files/0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch
deleted file mode 100644
index ca9f55c1..00000000
--- a/external/poky/meta/recipes-graphics/eglinfo/files/0001-Add-STAGING_INCDIR-to-searchpath-for-egl-headers.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 94b1e6daf7d70550b0e32fbb269fcf6887948d3f 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 fcbb55b..cece8bf 100644
---- a/wscript
-+++ b/wscript
-@@ -163,9 +163,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.7.0
-
diff --git a/external/poky/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch b/external/poky/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch
deleted file mode 100644
index 0289ac22..00000000
--- a/external/poky/meta/recipes-graphics/eglinfo/files/0001-Check-for-libegl-using-pkg-config.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 58d51d941d3f4dfa38be18282d3e285d76d9020d 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>
----
- wscript | 1 +
- 1 file changed, 1 insertion(+)
-
-Index: git/wscript
-===================================================================
---- git.orig/wscript
-+++ git/wscript
-@@ -160,14 +160,9 @@ def configure_raspberrypi_device(conf, p
- conf.env['PLATFORM_USELIBS'] += ["X11"]
- elif platform == "fb":
- conf.env['PLATFORM_SOURCE'] = ['src/platform_fb_raspberrypi.cpp']
-- 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']
diff --git a/external/poky/meta/recipes-graphics/eglinfo/files/waf b/external/poky/meta/recipes-graphics/eglinfo/files/waf
deleted file mode 100755
index 04ddd9f6..00000000
--- a/external/poky/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$Ðu Uœ”“‹)%Â"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Âͯ¾ua lì|øÕ;*Ù´}…\[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{#*.Ój qa‡Ñ¡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…¾š*„Ϭèšhk sðù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©ÅG J7dæ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ØøçÖ}Y­N:Ã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ÊéQM­DSí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úm­lk_°*¥©¼+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~Y fµ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õ¼—E­eëç’ ³…Ç &®-éå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`¡)¨ÄÜר¿ô¡0­D‘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~w 6ô|Ü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;sWQ­c>#)ûÚÌ×@þ¦â¶åçÚ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•À~ê`Žg Y#*¥õÜ-=Ú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 {Ô#4 qvüÀ·æáÍ]ò´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,)œ*K Lx+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{5­bQ*dT{ø‡’¸ÿdó+T#4äý¨L8/]XÜÊ[!å#4Î#4 g3KF“÷è½™¿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°7 bQŽ‘ª"×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Œ¥Œîpw­b 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^£u m]”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Î$!Ù¡¬Kg 3L@g¡FÒå¿ïüÚ÷èS׺ "4VÙPïeȾoB¬3î*i#~FY@ƒMj´öäôçn¯ë»|µj¡IW€0Ѥ]iÝùjåð«às­b4Î=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 +‘ö†ËØ°4 wØú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Âq Fù\´!ó—`= ¸û‹¹à¯úü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Ýч^¢Ãû§èw MSÐ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‹P U£¤ÿ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)þq g—ʯ Îæ/»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¥ oHwa v1)â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ÐY V’¢Õƒ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ÜD rrØ€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ßïâ¸Ç¤…H­HzÝ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½½Š7 7X¹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Ü»ô»^ñ“#´ÎWY4 d9Xǵ÷\Š¼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ì)ÞÊJ RK¢¨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çñ€ˆÒê8d QÓ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¬S­Hšp¥ü’"§»ŒÒ>¢]vå(ˆí#*2#4êÃØ^Z¯Ð" ÎÁ-!{ˆ‰0&òW‘ÃMYÖÅÈ,îÌ £®È#4™)MŒ#42Ù¡ Œ1WH·/Šu­H’¥Ç˜àÔ)Õ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•Òºe­c½Ìò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üªòqB BAŠéà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"­%,/#4­1®¶«Í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ÌÙ¦Ñõ|{k O‹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>$«žUM g©„–'I@h­C\¡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§,!F­DÌ¿µö²¹Ç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Üðâl­4bì<­ó>H½)1NeNÒ!ÌÑVä&v”pÜRÍÈ« æ,‚VµGm¼—#ìÂNTßeÔU­QÇàÝ 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$„Q 5gïæ«®‘~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ê‚B­wxýöðû½ÎÑ‹÷_íÆ“Ùñ€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¢Þ Ô½ñ|#Ý^a­DŘ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©àf cÑ•øæ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ÂP G¡ª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ÀÁ¤8L5o bŸ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ÉǵúÁþ<žÌl 2ý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<>gV qd`Ù@â¦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£ƒ«•”×w­v#+=®÷]€Ë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 Ñ”ÓÌ z g±êÒ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 N w5k‘ ©Ì¢¦=ö˜¾-#)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¥#4 Fïå“Å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†r8­rÒÊ:ãÞ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 œ&I­jÌ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µl­f„ª9D0­A#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ž¥³öÍο[d²rÛî_ŽÆk}ìz×qݱ +jÅ´p:€)˜ÄåÍ@…¯[eÑþÝ!AŒ¼GVÞ9 0ZŽ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>ጥ×ßQ RôŒ@ïÝ-¸““› ó:-–=ø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¢c­Eã# ú¹Ž‰â#+©a†o߆ôÔñ]ƒàÀ„G¨Äûö­KˆbéÌàŸá¿\ÎKÿr’ú»«p5£6¶ y)£ïL9ƒ‹-Y 5ÅÌò죻Šµ{Ú£!\Þ¶û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~~a O•¬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Åù¥Þ´%Õ™‘U Fm|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Õ™ÍD R 1JLëlYµØ_µí ³¶¦ô‹œ!e˜W¯ñ‰í”Òª¤ä÷ úêNK»c\WPk#4`Ÿöü7=JøA8ù%©Œ$Ü!ùžråPoIõpnúÕ¢L&#4—¶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ñµR v@†®õÌ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ÒƒË4 n ‹Êá#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> ÆIt l·Ï©Ý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¥:*¦êT wîè®+ϾÙô<›|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>ï%ž¤­b j6ùŒ§`µ&+š;~³÷úÌÊä8‰Z¡O{ÊpZ­3Ø¡ç#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@i Y¦\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ã7W1U­lˆ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 •a­Ng›ÔÑ&#4о… 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:gc­c40Œ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Óž”¯…I­2•Û-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£œïò)7­Jæ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·}N cú~Ú#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"?}c­4É/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ù"A n›£©¨³è=Ž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Š3 H燂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­ªsT­QÜ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ºæÎF5­br3Ôè‰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‚c TÆù“Ê;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&#4:·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ÂN6 K¶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’`42 BÒ} û;ôÇ~€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ÿlx 0™þ*°º:\¤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˜¡ùûT­Pn5n·/’‰®~ï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#*ڨΌè„Vd h~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]ÕõP­O½¯À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Ÿ€Þ-l 9æÅæ¸ìÔñ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:÷J Lí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ª›ú uK Cb*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ÿD W\Ò½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›÷«Ùä&­#4nµÃ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åƃ Ûæ•ã+>r q »{ã#>È/}‘_œóèÌ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ÿ§êI K«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ät­XB±Œè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~&¥#äQIU TR”ö“ã]• 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?ÝæHX2lP­n1@ó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ŸâL­m•ŸÔ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³q O¸€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‘#40­9]ň*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[“ ûý¡8 pjî"¦1>£`¹í)¤N„•6ñËCAÛC8ĺƒGz7#)ŸŒ~·g H¬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éÎ1u Ia=±))+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Ö¡6­G3iLkÚ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÷(RQ ab?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“ Í±Ó[@k di«Ö«£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<ž´1n­Së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{äi jcY¿Â†qnU±*ï$Û”œâ9<ýÛ_äñí?›×ŸÞ#)èvû/¾<ùâ«ŠýÏì?ÿUìòˆ9/¡†ì¿<1\¹áÏ4 Jv`Ä<(M“ ,Ûl¸7“Ûöô#*Zs Ö˜å>¨ý|JaVŠbqcx'güÒžùšeëzt§®Þ}G’NÕ”Œ·jJµg*Ö+ÃZ[š:­=€)㳧“RÖ4úDå¼¾ru¥Ä]®s6púr­hp›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á\Å#4­H>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¼,z H/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/external/poky/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fcxml.c-avoid-double-free-of-filename.patch b/external/poky/meta/recipes-graphics/fontconfig/fontconfig/0001-src-fcxml.c-avoid-double-free-of-filename.patch
deleted file mode 100644
index 3ca9fde9..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/fontconfig/fontconfig/revert-static-pkgconfig.patch b/external/poky/meta/recipes-graphics/fontconfig/fontconfig/revert-static-pkgconfig.patch
index fca1e659..30d64230 100644
--- a/external/poky/meta/recipes-graphics/fontconfig/fontconfig/revert-static-pkgconfig.patch
+++ b/external/poky/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/external/poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb b/external/poky/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb
index cec52475..d0da419c 100644
--- a/external/poky/meta/recipes-graphics/fontconfig/fontconfig_2.12.6.bb
+++ b/external/poky/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb
@@ -14,19 +14,18 @@ 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"
+ file://src/fccache.c;beginline=1671;endline=1686;md5=0326cfeb4a7333dd4dd25fbbc4b9f27f"
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 \
"
-SRC_URI[md5sum] = "00e748c67fad11e7057a71ed385e8bdb"
-SRC_URI[sha256sum] = "064b9ebf060c9e77011733ac9dc0e2ce92870b574cca2405e11f5353a683c334"
+SRC_URI[md5sum] = "690c6cb840a92fa8908cdf462d19ec66"
+SRC_URI[sha256sum] = "9f0d852b39d75fc655f9f53850eb32555394f36104a044bb2b2fc9e66dbbfa7f"
UPSTREAM_CHECK_REGEX = "fontconfig-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
@@ -41,8 +40,15 @@ do_install_append_class-target() {
ln ${D}${bindir}/fc-cache ${D}${libexecdir}/${MLPREFIX}fc-cache
}
+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_${PN}-dev += "${datadir}/gettext/*"
FILES_fontconfig-utils = "${bindir}/* ${libexecdir}/*"
# Work around past breakage in debian.bbclass
@@ -51,7 +57,7 @@ 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"
@@ -61,4 +67,4 @@ FONTCONFIG_FONT_DIRS ?= "no"
EXTRA_OECONF = " --disable-docs --with-default-fonts=${datadir}/fonts --with-cache-dir=${FONTCONFIG_CACHE_DIR} --with-add-fonts=${FONTCONFIG_FONT_DIRS}"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch b/external/poky/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch
index 20838813..3368f7dd 100644
--- a/external/poky/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch
+++ b/external/poky/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch
@@ -11,4 +11,4 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
+++ 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@
++LIBTOOL := $(FT_LIBTOOL_DIR)/@LIBTOOL@ --tag CC
diff --git a/external/poky/meta/recipes-graphics/freetype/freetype_2.9.1.bb b/external/poky/meta/recipes-graphics/freetype/freetype_2.10.1.bb
index 1e6f66ee..d1c09305 100644
--- a/external/poky/meta/recipes-graphics/freetype/freetype_2.9.1.bb
+++ b/external/poky/meta/recipes-graphics/freetype/freetype_2.10.1.bb
@@ -12,16 +12,14 @@ LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=4af6221506f202774ef74f64932878a1
file://docs/FTL.TXT;md5=9f37b4e6afa3fef9dba8932b16bd3f97 \
file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec"
-SRC_URI = "${SOURCEFORGE_MIRROR}/freetype/freetype-${PV}.tar.bz2 \
+SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BP}.tar.xz \
file://use-right-libtool.patch \
"
+SRC_URI[md5sum] = "bd42e75127f8431923679480efb5ba8f"
+SRC_URI[sha256sum] = "16dbfa488a21fe827dc27eaf708f42f7aa3bb997d745d31a19781628c36ba26f"
-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 +27,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
diff --git a/external/poky/meta/recipes-graphics/glew/glew_2.1.0.bb b/external/poky/meta/recipes-graphics/glew/glew_2.2.0.bb
index be725e05..8948444e 100644
--- a/external/poky/meta/recipes-graphics/glew/glew_2.1.0.bb
+++ b/external/poky/meta/recipes-graphics/glew/glew_2.2.0.bb
@@ -8,21 +8,21 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ac251558de685c6b9478d89be3149c2"
SRC_URI = "${SOURCEFORGE_MIRROR}/project/glew/glew/${PV}/glew-${PV}.tgz \
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/external/poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb b/external/poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb
deleted file mode 100644
index b904d935..00000000
--- a/external/poky/meta/recipes-graphics/harfbuzz/harfbuzz_1.8.8.bb
+++ /dev/null
@@ -1,46 +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] = "81dbce82d6471ec2b2a627ce02d03e5d"
-SRC_URI[sha256sum] = "a8e5c86e4d99e1cc9865ec1b8e9b05b98e413c2a885cd11f8e9bb9502dd3e3a9"
-
-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 \
-"
-
-do_configure_prepend() {
- # This is ancient and can get used instead of the patched one we ship,
- # so delete it. In 1.8.9 this should be removed upstream.
- rm -f ${S}/m4/pkg.m4
-}
-
-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"
diff --git a/external/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.4.bb b/external/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.4.bb
new file mode 100644
index 00000000..ee08c12b
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.4.bb
@@ -0,0 +1,41 @@
+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=e11f5c3149cdec4bb309babb020b32b9 \
+ file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc"
+
+SRC_URI = "http://www.freedesktop.org/software/harfbuzz/release/${BP}.tar.xz"
+SRC_URI[md5sum] = "2b3a4dfdb3e5e50055f941978944da9f"
+SRC_URI[sha256sum] = "9413b8d96132d699687ef914ebb8c50440efc87b3f775d25856d7ec347c03c12"
+
+inherit autotools pkgconfig lib_package gtk-doc
+
+PACKAGECONFIG ??= "cairo fontconfig freetype glib icu"
+PACKAGECONFIG[cairo] = "--with-cairo,--without-cairo,cairo"
+PACKAGECONFIG[fontconfig] = "--with-fontconfig,--without-fontconfig,fontconfig"
+PACKAGECONFIG[freetype] = "--with-freetype,--without-freetype,freetype"
+PACKAGECONFIG[glib] = "--with-glib,--without-glib,glib-2.0"
+PACKAGECONFIG[graphite] = "--with-graphite2,--without-graphite2,graphite2"
+PACKAGECONFIG[icu] = "--with-icu,--without-icu,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 is
+ #still installed, so remove it to stop packaging wanings.
+ 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/external/poky/meta/recipes-graphics/images/core-image-clutter.bb b/external/poky/meta/recipes-graphics/images/core-image-clutter.bb
index b0f25cf1..a5944610 100644
--- a/external/poky/meta/recipes-graphics/images/core-image-clutter.bb
+++ b/external/poky/meta/recipes-graphics/images/core-image-clutter.bb
@@ -11,3 +11,5 @@ IMAGE_INSTALL = "\
"
inherit core-image
+
+QB_MEM = '${@bb.utils.contains("DISTRO_FEATURES", "opengl", "-m 512", "-m 256", d)}'
diff --git a/external/poky/meta/recipes-graphics/images/core-image-weston.bb b/external/poky/meta/recipes-graphics/images/core-image-weston.bb
index e36655ff..f5102e19 100644
--- a/external/poky/meta/recipes-graphics/images/core-image-weston.bb
+++ b/external/poky/meta/recipes-graphics/images/core-image-weston.bb
@@ -4,7 +4,7 @@ IMAGE_FEATURES += "splash package-management ssh-server-dropbear hwcodecs"
LICENSE = "MIT"
-inherit core-image distro_features_check
+inherit core-image features_check
REQUIRED_DISTRO_FEATURES = "wayland"
diff --git a/external/poky/meta/recipes-graphics/images/core-image-x11.bb b/external/poky/meta/recipes-graphics/images/core-image-x11.bb
index 8455bb8c..52407759 100644
--- a/external/poky/meta/recipes-graphics/images/core-image-x11.bb
+++ b/external/poky/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/external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch b/external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch
index 44c2c768..82fffe1e 100644
--- a/external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch
+++ b/external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch
@@ -1,4 +1,4 @@
-From 0a24f03a67425a7b58b3fd40d965c0c9801ae7a1 Mon Sep 17 00:00:00 2001
+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
@@ -10,23 +10,23 @@ 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 | 2 --
- 1 file changed, 2 deletions(-)
+ CMakeLists.txt | 4 ----
+ 1 file changed, 4 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 1719522..682cef1 100644
+index 2bc3458..ea3041e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -109,8 +109,6 @@ endif()
+@@ -189,10 +189,6 @@ endif()
+ report_option(ENABLE_SHARED "Shared libraries")
+ report_option(ENABLE_STATIC "Static libraries")
- include(cmakescripts/GNUInstallDirs.cmake)
-
--set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
+-if(ENABLE_SHARED)
+- set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
+-endif()
-
- macro(report_directory var)
- if(CMAKE_INSTALL_${var} STREQUAL CMAKE_INSTALL_FULL_${var})
- message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}}")
---
-2.7.4
-
+ if(WITH_12BIT)
+ set(WITH_ARITH_DEC 0)
+ set(WITH_ARITH_ENC 0)
diff --git a/external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch b/external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch
deleted file mode 100644
index 16767ebb..00000000
--- a/external/poky/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From d301019d0f23d12b9666d3d88b0859067a4ade77 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Thu, 30 Aug 2018 15:08:23 +0800
-Subject: [PATCH] libjpeg-turbo: fix wrongly defined define HAVE_STDLIB_H
-
-when change build system from autotools to cmake, below
-part is replace wrongly:
-
-"#undef HAVE_STDLIB_H"
-should be change to "#cmakedefine HAVE_STDLIB_H 1"
-not "#cmakedefine HAVE_STDLIB_H"
-
-otherwise, even if stdlib.h is found, output file
-of configure_file() will define like: #define HAVE_STDLIB_H
-but we need it as #define HAVE_STDLIB_H 1, since for
-different defination of HAVE_STDLIB_H will cause below error:
-error: "HAVE_STDLIB_H" redefined [-Werror]
-
-Upstream-Status: Submitted[https://github.com/libjpeg-turbo/libjpeg-turbo/pull/275]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- jconfig.h.in | 28 ++++++++++++++--------------
- jconfigint.h.in | 4 ++--
- 2 files changed, 16 insertions(+), 16 deletions(-)
-
-diff --git a/jconfig.h.in b/jconfig.h.in
-index 2842754..18a69a4 100644
---- a/jconfig.h.in
-+++ b/jconfig.h.in
-@@ -10,16 +10,16 @@
- #define LIBJPEG_TURBO_VERSION_NUMBER @LIBJPEG_TURBO_VERSION_NUMBER@
-
- /* Support arithmetic encoding */
--#cmakedefine C_ARITH_CODING_SUPPORTED
-+#cmakedefine C_ARITH_CODING_SUPPORTED 1
-
- /* Support arithmetic decoding */
--#cmakedefine D_ARITH_CODING_SUPPORTED
-+#cmakedefine D_ARITH_CODING_SUPPORTED 1
-
- /* Support in-memory source/destination managers */
--#cmakedefine MEM_SRCDST_SUPPORTED
-+#cmakedefine MEM_SRCDST_SUPPORTED 1
-
- /* Use accelerated SIMD routines. */
--#cmakedefine WITH_SIMD
-+#cmakedefine WITH_SIMD 1
-
- /*
- * Define BITS_IN_JSAMPLE as either
-@@ -33,37 +33,37 @@
- #define BITS_IN_JSAMPLE @BITS_IN_JSAMPLE@ /* use 8 or 12 */
-
- /* Define to 1 if you have the <locale.h> header file. */
--#cmakedefine HAVE_LOCALE_H
-+#cmakedefine HAVE_LOCALE_H 1
-
- /* Define to 1 if you have the <stddef.h> header file. */
--#cmakedefine HAVE_STDDEF_H
-+#cmakedefine HAVE_STDDEF_H 1
-
- /* Define to 1 if you have the <stdlib.h> header file. */
--#cmakedefine HAVE_STDLIB_H
-+#cmakedefine HAVE_STDLIB_H 1
-
- /* Define if you need to include <sys/types.h> to get size_t. */
--#cmakedefine NEED_SYS_TYPES_H
-+#cmakedefine NEED_SYS_TYPES_H 1
-
- /* Define if you have BSD-like bzero and bcopy in <strings.h> rather than
- memset/memcpy in <string.h>. */
--#cmakedefine NEED_BSD_STRINGS
-+#cmakedefine NEED_BSD_STRINGS 1
-
- /* Define to 1 if the system has the type `unsigned char'. */
--#cmakedefine HAVE_UNSIGNED_CHAR
-+#cmakedefine HAVE_UNSIGNED_CHAR 1
-
- /* Define to 1 if the system has the type `unsigned short'. */
--#cmakedefine HAVE_UNSIGNED_SHORT
-+#cmakedefine HAVE_UNSIGNED_SHORT 1
-
- /* Compiler does not support pointers to undefined structures. */
--#cmakedefine INCOMPLETE_TYPES_BROKEN
-+#cmakedefine INCOMPLETE_TYPES_BROKEN 1
-
- /* Define if your (broken) compiler shifts signed values as if they were
- unsigned. */
--#cmakedefine RIGHT_SHIFT_IS_UNSIGNED
-+#cmakedefine RIGHT_SHIFT_IS_UNSIGNED 1
-
- /* Define to 1 if type `char' is unsigned and you are not using gcc. */
- #ifndef __CHAR_UNSIGNED__
-- #cmakedefine __CHAR_UNSIGNED__
-+ #cmakedefine __CHAR_UNSIGNED__ 1
- #endif
-
- /* Define to empty if `const' does not conform to ANSI C. */
-diff --git a/jconfigint.h.in b/jconfigint.h.in
-index 55df053..6c898ac 100644
---- a/jconfigint.h.in
-+++ b/jconfigint.h.in
-@@ -17,10 +17,10 @@
- #define SIZEOF_SIZE_T @SIZE_T@
-
- /* Define if your compiler has __builtin_ctzl() and sizeof(unsigned long) == sizeof(size_t). */
--#cmakedefine HAVE_BUILTIN_CTZL
-+#cmakedefine HAVE_BUILTIN_CTZL 1
-
- /* Define to 1 if you have the <intrin.h> header file. */
--#cmakedefine HAVE_INTRIN_H
-+#cmakedefine HAVE_INTRIN_H 1
-
- #if defined(_MSC_VER) && defined(HAVE_INTRIN_H)
- #if (SIZEOF_SIZE_T == 8)
---
-2.7.4
-
diff --git a/external/poky/meta/recipes-graphics/jpeg/files/CVE-2020-13790.patch b/external/poky/meta/recipes-graphics/jpeg/files/CVE-2020-13790.patch
new file mode 100644
index 00000000..4617978b
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/jpeg/files/CVE-2020-13790.patch
@@ -0,0 +1,76 @@
+From 07caad7e0a9afb372e0608299fb3e832cc78495f Mon Sep 17 00:00:00 2001
+From: DRC <information@libjpeg-turbo.org>
+Date: Tue, 2 Jun 2020 14:15:37 -0500
+Subject: [PATCH] rdppm.c: Fix buf overrun caused by bad binary PPM
+
+This extends the fix in 1e81b0c3ea26f4ea8f56de05367469333de64a9f to
+include binary PPM files with maximum values < 255, thus preventing a
+malformed binary PPM input file with those specifications from
+triggering an overrun of the rescale array and potentially crashing
+cjpeg, TJBench, or any program that uses the tjLoadImage() function.
+
+Fixes #433
+
+Upstream-Status: Backport [https://github.com/libjpeg-turbo/libjpeg-turbo/commit/3de15e0c344d11d4b90f4a47136467053eb2d09a]
+CVE: CVE-2020-13790
+Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
+
+---
+ ChangeLog.md | 14 ++++++++++----
+ rdppm.c | 4 ++--
+ 2 files changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/ChangeLog.md b/ChangeLog.md
+index 4d1219e..af660ab 100644
+--- a/ChangeLog.md
++++ b/ChangeLog.md
+@@ -38,6 +38,12 @@ this issue did not likely pose a security risk.
+ separate read-only data section rather than in the text section, to support
+ execute-only memory layouts.
+
++3. Fixed an issue in the PPM reader that caused a buffer overrun in cjpeg,
++TJBench, or the `tjLoadImage()` function if one of the values in a binary
++PPM/PGM input file exceeded the maximum value defined in the file's header and
++that maximum value was less than 255. libjpeg-turbo 1.5.0 already included a
++similar fix for binary PPM/PGM files with maximum values greater than 255.
++
+
+ 2.0.3
+ =====
+@@ -562,10 +568,10 @@ application was linked against.
+
+ 3. Fixed a couple of issues in the PPM reader that would cause buffer overruns
+ in cjpeg if one of the values in a binary PPM/PGM input file exceeded the
+-maximum value defined in the file's header. libjpeg-turbo 1.4.2 already
+-included a similar fix for ASCII PPM/PGM files. Note that these issues were
+-not security bugs, since they were confined to the cjpeg program and did not
+-affect any of the libjpeg-turbo libraries.
++maximum value defined in the file's header and that maximum value was greater
++than 255. libjpeg-turbo 1.4.2 already included a similar fix for ASCII PPM/PGM
++files. Note that these issues were not security bugs, since they were confined
++to the cjpeg program and did not affect any of the libjpeg-turbo libraries.
+
+ 4. Fixed an issue whereby attempting to decompress a JPEG file with a corrupt
+ header using the `tjDecompressToYUV2()` function would cause the function to
+diff --git a/rdppm.c b/rdppm.c
+index 87bc330..a8507b9 100644
+--- a/rdppm.c
++++ b/rdppm.c
+@@ -5,7 +5,7 @@
+ * Copyright (C) 1991-1997, Thomas G. Lane.
+ * Modified 2009 by Bill Allombert, Guido Vollbeding.
+ * libjpeg-turbo Modifications:
+- * Copyright (C) 2015-2017, D. R. Commander.
++ * Copyright (C) 2015-2017, 2020, D. R. Commander.
+ * For conditions of distribution and use, see the accompanying README.ijg
+ * file.
+ *
+@@ -720,7 +720,7 @@ start_input_ppm(j_compress_ptr cinfo, cjpeg_source_ptr sinfo)
+ /* On 16-bit-int machines we have to be careful of maxval = 65535 */
+ source->rescale = (JSAMPLE *)
+ (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
+- (size_t)(((long)maxval + 1L) *
++ (size_t)(((long)MAX(maxval, 255) + 1L) *
+ sizeof(JSAMPLE)));
+ half_maxval = maxval / 2;
+ for (val = 0; val <= (long)maxval; val++) {
diff --git a/external/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.0.bb b/external/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.4.bb
index 282bf95e..3005a8a7 100644
--- a/external/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.0.bb
+++ b/external/poky/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.4.bb
@@ -12,10 +12,11 @@ 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 \
- file://0001-libjpeg-turbo-fix-wrongly-defined-define-HAVE_STDLIB.patch"
+ file://CVE-2020-13790.patch \
+ "
-SRC_URI[md5sum] = "b12a3fcf1d078db38410f27718a91b83"
-SRC_URI[sha256sum] = "778876105d0d316203c928fd2a0374c8c01f755d0a00b12a1c8934aeccff8868"
+SRC_URI[md5sum] = "d01d9e0c28c27bc0de9f4e2e8ff49855"
+SRC_URI[sha256sum] = "33dd8547efd5543639e890efbf2ef52d5a21df81faf41bb940657af916a23406"
UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/"
UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/"
@@ -29,8 +30,11 @@ RCONFLICTS_${PN} += "jpeg"
inherit cmake pkgconfig
+export NASMENV = "--debug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
+
# 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)}"
@@ -53,4 +57,4 @@ FILES_jpeg-tools = "${bindir}/*"
DESCRIPTION_libturbojpeg = "A SIMD-accelerated JPEG codec which provides only TurboJPEG APIs"
FILES_libturbojpeg = "${libdir}/libturbojpeg.so.*"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch b/external/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch
index 611e5415..a7a08f14 100644
--- a/external/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch
+++ b/external/poky/meta/recipes-graphics/kmscube/kmscube/detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch
@@ -1,7 +1,7 @@
-From 761bf993ca55095f46380c0238583791c1797295 Mon Sep 17 00:00:00 2001
+From a91c588b5a4122506e7fe949c37d530621bdd997 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)
+Subject: [PATCH] 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
@@ -18,6 +18,7 @@ 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]
+Signed-off-by: Zoltan Kuscsik <zoltan.kuscsik@solution57.com>
---
Makefile.am | 5 ++++-
configure.ac | 3 +++
@@ -26,7 +27,7 @@ Upstream-Status: Submitted [https://lists.freedesktop.org/archives/mesa-dev/2017
4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/Makefile.am b/Makefile.am
-index a36087d..ab4adbf 100644
+index ba064e4..3a0a50b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -43,7 +43,6 @@ kmscube_SOURCES = \
@@ -37,16 +38,16 @@ index a36087d..ab4adbf 100644
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
+@@ -68,3 +67,7 @@ texturator_SOURCES = \
+ drm-common.c \
+ drm-legacy.c \
+ texturator.c
+
+if ENABLE_GBM_MAP
+kmscube_SOURCES += cube-tex.c
+endif
diff --git a/configure.ac b/configure.ac
-index 8397f7b..c7f1f4d 100644
+index 6be6541..3d20121 100644
--- a/configure.ac
+++ b/configure.ac
@@ -49,5 +49,8 @@ if test "x$HAVE_GST" = "xyes"; then
@@ -59,7 +60,7 @@ index 8397f7b..c7f1f4d 100644
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
diff --git a/gst-decoder.c b/gst-decoder.c
-index 2d6d581..b84980e 100644
+index 5431014..0aa7a55 100644
--- a/gst-decoder.c
+++ b/gst-decoder.c
@@ -332,6 +332,7 @@ set_last_frame(struct decoder *dec, EGLImage frame, GstSample *samp)
@@ -96,10 +97,10 @@ index 2d6d581..b84980e 100644
if (dmabuf_fd < 0) {
GST_ERROR("could not obtain DMABUF FD");
diff --git a/kmscube.c b/kmscube.c
-index 3a2c4dd..276dc55 100644
+index 81803be..e93da67 100644
--- a/kmscube.c
+++ b/kmscube.c
-@@ -148,7 +148,11 @@ int main(int argc, char *argv[])
+@@ -166,7 +166,11 @@ int main(int argc, char *argv[])
else if (mode == VIDEO)
egl = init_cube_video(gbm, video, samples);
else
@@ -112,5 +113,5 @@ index 3a2c4dd..276dc55 100644
if (!egl) {
printf("failed to initialize EGL\n");
--
-2.7.4
+2.22.0
diff --git a/external/poky/meta/recipes-graphics/kmscube/kmscube_git.bb b/external/poky/meta/recipes-graphics/kmscube/kmscube_git.bb
index 46aeeb01..a1a295f6 100644
--- a/external/poky/meta/recipes-graphics/kmscube/kmscube_git.bb
+++ b/external/poky/meta/recipes-graphics/kmscube/kmscube_git.bb
@@ -2,17 +2,20 @@ DESCRIPTION = "Demo application to showcase 3D graphics using kms and gbm"
HOMEPAGE = "https://cgit.freedesktop.org/mesa/kmscube/"
LICENSE = "MIT"
SECTION = "graphics"
-DEPENDS = "virtual/libgles2 virtual/egl libdrm gstreamer1.0 gstreamer1.0-plugins-base"
+DEPENDS = "virtual/libgles2 virtual/egl libdrm"
LIC_FILES_CHKSUM = "file://kmscube.c;beginline=1;endline=23;md5=8b309d4ee67b7315ff7381270dd631fb"
-SRCREV = "9dcce71e603616ee7a54707e932f962cdf8fb20a"
-SRC_URI = "git://anongit.freedesktop.org/mesa/kmscube;branch=master;protocol=git \
+SRCREV = "76bb57d539cb43d267e561024c34e031bf351e04"
+SRC_URI = "git://gitlab.freedesktop.org/mesa/kmscube;branch=master;protocol=https \
file://detect-gst_bo_map-_unmap-and-use-it-or-avoid-it.patch"
UPSTREAM_CHECK_COMMITS = "1"
S = "${WORKDIR}/git"
-inherit autotools pkgconfig distro_features_check
+inherit meson pkgconfig features_check
REQUIRED_DISTRO_FEATURES = "opengl"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,gstreamer1.0 gstreamer1.0-plugins-base"
diff --git a/external/poky/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch b/external/poky/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch
new file mode 100644
index 00000000..72629451
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch
@@ -0,0 +1,26 @@
+From 6f15cc28d17cfdd86f5974f06ad97b8afedd5627 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 25 Oct 2019 11:09:34 +0000
+Subject: [PATCH] dispatch_common.h: define also EGL_NO_X11
+
+MESA_EGL_NO_X11_HEADERS was renamed to EGL_NO_X11 in:
+https://github.com/mesa3d/mesa/commit/6202a13b71e18dc31ba7e2f4ea915b67eacc1ddb
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Upstream-Status: Pending
+---
+ src/dispatch_common.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/dispatch_common.h b/src/dispatch_common.h
+index dcb3a35..c206253 100644
+--- a/src/dispatch_common.h
++++ b/src/dispatch_common.h
+@@ -52,6 +52,7 @@
+ * should do the same
+ */
+ # define MESA_EGL_NO_X11_HEADERS 1
++# define EGL_NO_X11 1
+ # endif
+ #include "epoxy/egl.h"
+ #endif
diff --git a/external/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb b/external/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb
deleted file mode 100644
index 10672122..00000000
--- a/external/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.2.bb
+++ /dev/null
@@ -1,22 +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] = "4a6b9e581da229dee74c2263c84b1eca"
-SRC_URI[sha256sum] = "a9562386519eb3fd7f03209f279f697a8cba520d3c155d6e253c3e138beca7d8"
-UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases"
-
-inherit meson pkgconfig distro_features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-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"
diff --git a/external/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.4.bb b/external/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.4.bb
new file mode 100644
index 00000000..af986740
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/libepoxy/libepoxy_1.5.4.bb
@@ -0,0 +1,43 @@
+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 = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz \
+ file://0001-dispatch_common.h-define-also-EGL_NO_X11.patch \
+ "
+SRC_URI[md5sum] = "00f47ad447321f9dc59f85bc1c9d0467"
+SRC_URI[sha256sum] = "0bd2cc681dfeffdef739cb29913f8c3caa47a88a451fd2bc6e606c02997289d2"
+UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases"
+
+inherit meson pkgconfig 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 -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"
+
+# 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/external/poky/meta/recipes-graphics/libfakekey/libfakekey_git.bb b/external/poky/meta/recipes-graphics/libfakekey/libfakekey_git.bb
index 4b803dba..ab6f5ac9 100644
--- a/external/poky/meta/recipes-graphics/libfakekey/libfakekey_git.bb
+++ b/external/poky/meta/recipes-graphics/libfakekey/libfakekey_git.bb
@@ -17,7 +17,7 @@ SRC_URI = "git://git.yoctoproject.org/${BPN}"
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/external/poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb b/external/poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
index ce45e481..1a316779 100644
--- a/external/poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
+++ b/external/poky/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
@@ -1,4 +1,8 @@
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/"
@@ -17,7 +21,7 @@ SRC_URI = "git://git.yoctoproject.org/${BPN}"
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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/0001-build-Pass-tag-CC-explictly-when-using-libtool.patch
deleted file mode 100644
index ec8c0fd4..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7572.patch
deleted file mode 100644
index c41c2de0..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7574.patch
deleted file mode 100644
index 9fd53da2..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7575.patch
deleted file mode 100644
index a3e8416d..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7576.patch
deleted file mode 100644
index d9a50521..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7577.patch
deleted file mode 100644
index 92e40aec..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7578.patch
deleted file mode 100644
index 70288903..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7635.patch
deleted file mode 100644
index 78af1b06..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7637.patch
deleted file mode 100644
index c95338e6..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/CVE-2019-7638.patch
deleted file mode 100644
index dab9aaeb..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/libsdl-1.2.15-xdata32.patch
deleted file mode 100644
index f98b9275..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch b/external/poky/meta/recipes-graphics/libsdl/libsdl-1.2.15/pkgconfig.patch
deleted file mode 100644
index 913baa92..00000000
--- a/external/poky/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, &micro) != 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/external/poky/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb b/external/poky/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb
deleted file mode 100644
index d61ee0f9..00000000
--- a/external/poky/meta/recipes-graphics/libsdl/libsdl_1.2.15.bb
+++ /dev/null
@@ -1,81 +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
-
-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/external/poky/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch b/external/poky/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch
deleted file mode 100644
index 9b32b378..00000000
--- a/external/poky/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From c215ba1d52a3d4ef03af3ab1a5baa1863f812aed Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Fri, 24 Aug 2018 23:10:25 +0200
-Subject: [PATCH] GLES2: Get sin/cos out of vertex shader
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The only place angle is activated and causes effect is RenderCopyEx. All other
-methods which use vertex shader, leave angle disabled and cause useless sin/cos
-calculation in shader.
-
-To get around shader's interface is changed to a vector that contains results
-of sin and cos. To behave properly when disabled, cos value is set with offset
--1.0 making 0.0 default when deactivated.
-
-As nice side effect it simplifies GLES2_UpdateVertexBuffer: All attributes are
-vectors now.
-
-Additional background:
-
-* On RaspberryPi it gives a performace win for operations. Tested with
- [1] numbers go down for 5-10% (not easy to estimate due to huge variation).
-* SDL_RenderCopyEx was tested with [2]
-* It works around left rotated display caused by low accuracy sin implemetation
- in RaspberryPi/VC4 [3]
-
-Upstream-Status: Accepted [4]
-
-[1] https://github.com/schnitzeltony/sdl2box
-[2] https://github.com/schnitzeltony/sdl2rendercopyex
-[3] https://github.com/anholt/mesa/issues/110
-[4] https://hg.libsdl.org/SDL/rev/e5a666405750
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- src/render/opengles2/SDL_render_gles2.c | 17 ++++++++++++-----
- src/render/opengles2/SDL_shaders_gles2.c | 14 +++++++++-----
- 2 files changed, 21 insertions(+), 10 deletions(-)
-
-diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c
-index 14671f7c8..7c54a7333 100644
---- a/src/render/opengles2/SDL_render_gles2.c
-+++ b/src/render/opengles2/SDL_render_gles2.c
-@@ -1530,7 +1530,7 @@ GLES2_UpdateVertexBuffer(SDL_Renderer *renderer, GLES2_Attribute attr,
- GLES2_DriverContext *data = (GLES2_DriverContext *)renderer->driverdata;
-
- #if !SDL_GLES2_USE_VBOS
-- data->glVertexAttribPointer(attr, attr == GLES2_ATTRIBUTE_ANGLE ? 1 : 2, GL_FLOAT, GL_FALSE, 0, vertexData);
-+ data->glVertexAttribPointer(attr, 2, GL_FLOAT, GL_FALSE, 0, vertexData);
- #else
- if (!data->vertex_buffers[attr]) {
- data->glGenBuffers(1, &data->vertex_buffers[attr]);
-@@ -1545,7 +1545,7 @@ GLES2_UpdateVertexBuffer(SDL_Renderer *renderer, GLES2_Attribute attr,
- data->glBufferSubData(GL_ARRAY_BUFFER, 0, dataSizeInBytes, vertexData);
- }
-
-- data->glVertexAttribPointer(attr, attr == GLES2_ATTRIBUTE_ANGLE ? 1 : 2, GL_FLOAT, GL_FALSE, 0, 0);
-+ data->glVertexAttribPointer(attr, 2, GL_FLOAT, GL_FALSE, 0, 0);
- #endif
-
- return 0;
-@@ -1853,6 +1853,8 @@ GLES2_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *s
- return GL_CheckError("", renderer);
- }
-
-+#define PI 3.14159265f
-+
- static int
- GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect,
- const SDL_FRect *dstrect, const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip)
-@@ -1861,8 +1863,9 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
- GLfloat vertices[8];
- GLfloat texCoords[8];
- GLfloat translate[8];
-- GLfloat fAngle[4];
-+ GLfloat fAngle[8];
- GLfloat tmp;
-+ float radian_angle;
-
- GLES2_ActivateRenderer(renderer);
-
-@@ -1872,7 +1875,11 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
-
- data->glEnableVertexAttribArray(GLES2_ATTRIBUTE_CENTER);
- data->glEnableVertexAttribArray(GLES2_ATTRIBUTE_ANGLE);
-- fAngle[0] = fAngle[1] = fAngle[2] = fAngle[3] = (GLfloat)(360.0f - angle);
-+
-+ radian_angle = PI * (360.0f - angle) / 180.f;
-+ fAngle[0] = fAngle[2] = fAngle[4] = fAngle[6] = (GLfloat)sin(radian_angle);
-+ /* render expects cos value - 1 (see GLES2_VertexSrc_Default_) */
-+ fAngle[1] = fAngle[3] = fAngle[5] = fAngle[7] = (GLfloat)cos(radian_angle) - 1.0f;
- /* Calculate the center of rotation */
- translate[0] = translate[2] = translate[4] = translate[6] = (center->x + dstrect->x);
- translate[1] = translate[3] = translate[5] = translate[7] = (center->y + dstrect->y);
-@@ -1901,7 +1908,7 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
- data->glVertexAttribPointer(GLES2_ATTRIBUTE_CENTER, 2, GL_FLOAT, GL_FALSE, 0, translate);
- data->glVertexAttribPointer(GLES2_ATTRIBUTE_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vertices);*/
-
-- GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_ANGLE, fAngle, 4 * sizeof(GLfloat));
-+ GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_ANGLE, fAngle, 8 * sizeof(GLfloat));
- GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_CENTER, translate, 8 * sizeof(GLfloat));
- GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_POSITION, vertices, 8 * sizeof(GLfloat));
-
-diff --git a/src/render/opengles2/SDL_shaders_gles2.c b/src/render/opengles2/SDL_shaders_gles2.c
-index b0bcdff25..f428a4945 100644
---- a/src/render/opengles2/SDL_shaders_gles2.c
-+++ b/src/render/opengles2/SDL_shaders_gles2.c
-@@ -30,20 +30,24 @@
- /*************************************************************************************************
- * Vertex/fragment shader source *
- *************************************************************************************************/
--
-+/* Notes on a_angle:
-+ * It is a vector containing sin and cos for rotation matrix
-+ * To get correct rotation for most cases when a_angle is disabled cos
-+ value is decremented by 1.0 to get proper output with 0.0 which is
-+ default value
-+*/
- static const Uint8 GLES2_VertexSrc_Default_[] = " \
- uniform mat4 u_projection; \
- attribute vec2 a_position; \
- attribute vec2 a_texCoord; \
-- attribute float a_angle; \
-+ attribute vec2 a_angle; \
- attribute vec2 a_center; \
- varying vec2 v_texCoord; \
- \
- void main() \
- { \
-- float angle = radians(a_angle); \
-- float c = cos(angle); \
-- float s = sin(angle); \
-+ float s = a_angle[0]; \
-+ float c = a_angle[1] + 1.0; \
- mat2 rotationMatrix = mat2(c, -s, s, c); \
- vec2 position = rotationMatrix * (a_position - a_center) + a_center; \
- v_texCoord = a_texCoord; \
---
-2.14.4
-
diff --git a/external/poky/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch b/external/poky/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch
index 29076bf6..8ca52ebd 100644
--- a/external/poky/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch
+++ b/external/poky/meta/recipes-graphics/libsdl2/libsdl2/more-gen-depends.patch
@@ -1,3 +1,8 @@
+From e0f4b6d18ce6f025c78773e909b9c395ad833c7a Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Mon, 29 Jul 2019 08:38:32 +0800
+Subject: [PATCH] configure: fix dependencies
+
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.
@@ -14,34 +19,42 @@ the primary objects.
Upstream-Status: Pending
Signed-off-by: Ross Burton <ross.burton@intel.com>
+[Moved to configure.ac]
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
-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'`
+diff --git a/configure.ac b/configure.ac
+index 9e782c6..997915a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -4061,7 +4061,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)\\\\
+-\\$(objects)/\\2.lo: \\1/\\2.$EXT \\$(objects)/.created\\\\
++\\$(objects)/\\2.lo: \\1/\\2.$EXT \\$(objects)/.created \\$(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`
+@@ -4078,14 +4078,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)\\\\
+-\\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created\\\\
++\\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created \\$(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)\\\\
+-\\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created\\\\
++\\$(objects)/\\2.lo: \\1/\\2.c \\$(objects)/.created \\$(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
+--
+2.7.4
+
diff --git a/external/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb b/external/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.12.bb
index 812a9abf..c1c941e4 100644
--- a/external/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb
+++ b/external/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.12.bb
@@ -8,21 +8,28 @@ BUGTRACKER = "http://bugzilla.libsdl.org/"
SECTION = "libs"
LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=02ee26814dd044bd7838ae24e05b880f"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=2d4af6adb4d89aad0cdedbcc18c9a32f"
+
+# 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 \
file://more-gen-depends.patch \
- file://0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch \
"
S = "${WORKDIR}/SDL2-${PV}"
-SRC_URI[md5sum] = "3800d705cef742c6a634f202c37f263f"
-SRC_URI[sha256sum] = "edc77c57308661d576e843344d8638e025a7818bff73f8fbfab09c3c5fd092ec"
+SRC_URI[md5sum] = "783b6f2df8ff02b19bb5ce492b99c8ff"
+SRC_URI[sha256sum] = "349268f695c02efbc9b9148a70b85e58cefbbf704abd3e91be654db7f1e2c863"
+
+inherit autotools lib_package binconfig-disabled pkgconfig
+
+BINCONFIG = "${bindir}/sdl2-config"
-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 \
@@ -31,6 +38,7 @@ EXTRA_OECONF = "--disable-oss --disable-esd --disable-arts \
--enable-sdl-dlopen \
--disable-rpath \
--disable-sndio \
+ --disable-fcitx --disable-ibus \
"
# opengl packageconfig factored out to make it easy for distros
@@ -43,10 +51,14 @@ PACKAGECONFIG ??= " \
${PACKAGECONFIG_GL} \
${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio x11', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland gles2', '', d)} \
+ ${@bb.utils.contains("TUNE_FEATURES", "neon","arm-neon","",d)} \
"
PACKAGECONFIG[alsa] = "--enable-alsa --disable-alsatest,--disable-alsa,alsa-lib,"
+PACKAGECONFIG[arm-neon] = "--enable-arm-neon,--disable-arm-neon"
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"
diff --git a/external/poky/meta/recipes-graphics/libva/libva-utils_2.2.0.bb b/external/poky/meta/recipes-graphics/libva/libva-utils_2.6.0.bb
index e35085cb..03b38027 100644
--- a/external/poky/meta/recipes-graphics/libva/libva-utils_2.2.0.bb
+++ b/external/poky/meta/recipes-graphics/libva/libva-utils_2.6.0.bb
@@ -14,19 +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"
-SRC_URI[md5sum] = "93b58aa5b14c16f4bace8a45dc255ec9"
-SRC_URI[sha256sum] = "ed7a6ed1fab657df4e83ea11f90310efcf31c27828f32d65351a28ca3c404dc0"
+SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.6-branch"
+SRCREV = "8ea1eba433dcbceb0e5dcb54b8e3f984987f7a17"
+S = "${WORKDIR}/git"
-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/external/poky/meta/recipes-graphics/libva/libva_2.2.0.bb b/external/poky/meta/recipes-graphics/libva/libva_2.6.1.bb
index 11e57e0e..92cea83b 100644
--- a/external/poky/meta/recipes-graphics/libva/libva_2.2.0.bb
+++ b/external/poky/meta/recipes-graphics/libva/libva_2.6.1.bb
@@ -18,23 +18,20 @@ 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] = "92d04ad1700136dc75b1e5f47516e704"
-SRC_URI[sha256sum] = "6f6ca04c785544d30d315ef130a6aeb9435b75f934d7fbe0e4e9ba6084ce4ef2"
+SRC_URI[md5sum] = "aef13eb48e01a47d1416d97462a22a11"
+SRC_URI[sha256sum] = "6c57eb642d828af2411aa38f55dc10111e8c98976dbab8fd62e48629401eaea5"
UPSTREAM_CHECK_URI = "https://github.com/intel/libva/releases"
DEPENDS = "libdrm virtual/mesa"
-inherit autotools pkgconfig distro_features_check
+inherit meson pkgconfig 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"
+PACKAGECONFIG[x11] = "-Dwith_x11=yes, -Dwith_x11=no,virtual/libx11 libxext libxfixes"
+PACKAGECONFIG[wayland] = "-Dwith_wayland=yes, -Dwith_wayland=no,wayland-native wayland"
PACKAGES =+ "${PN}-x11 ${PN}-glx ${PN}-wayland"
diff --git a/external/poky/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb b/external/poky/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb
index cbaf0543..57a3024e 100644
--- a/external/poky/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb
+++ b/external/poky/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb
@@ -1,4 +1,5 @@
SUMMARY = "Custom Matchbox session files"
+DESCRIPTION = "Very simple session manager for matchbox tools"
HOMEPAGE = "http://www.matchbox-project.org/"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
diff --git a/external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm/0001-Fix-build-with-gcc-10.patch b/external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm/0001-Fix-build-with-gcc-10.patch
new file mode 100644
index 00000000..541b5c9c
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm/0001-Fix-build-with-gcc-10.patch
@@ -0,0 +1,41 @@
+From 8a8f8446e803cad04d7bbceaab78ee45d9778c3c Mon Sep 17 00:00:00 2001
+From: Adrian Bunk <bunk@stusta.de>
+Date: Tue, 12 May 2020 09:44:05 +0300
+Subject: Fix build with gcc 10
+
+Upstream-Status: Pending
+Signed-off-by: Adrian Bunk <bunk@stusta.de>
+---
+ src/mbtheme.h | 2 +-
+ src/structs.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/mbtheme.h b/src/mbtheme.h
+index aa9a7c5..ad03bde 100644
+--- a/src/mbtheme.h
++++ b/src/mbtheme.h
+@@ -46,7 +46,7 @@ typedef struct _mb_theme_param
+
+ } MBThemeParam;
+
+-enum {
++typedef enum {
+ LAYER_GRADIENT_HORIZ = 1,
+ LAYER_GRADIENT_VERT,
+ LAYER_LABEL,
+diff --git a/src/structs.h b/src/structs.h
+index 24985e7..8f53e72 100644
+--- a/src/structs.h
++++ b/src/structs.h
+@@ -148,7 +148,7 @@
+
+ /* Atoms, if you change these check ewmh_init() first */
+
+-enum {
++typedef enum {
+ WM_STATE = 0,
+ WM_CHANGE_STATE,
+ WM_PROTOCOLS,
+--
+2.17.1
+
diff --git a/external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb b/external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb
index 815a75f3..a08eb252 100644
--- a/external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb
+++ b/external/poky/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb
@@ -13,11 +13,12 @@ DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification ex
# SRCREV tagged 1.2.2
SRCREV = "27da947e7fbdf9659f7e5bd1e92af92af6c03970"
SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager \
+ file://0001-Fix-build-with-gcc-10.patch \
file://kbdconfig"
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/external/poky/meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch b/external/poky/meta/recipes-graphics/menu-cache/files/0001-Support-gcc10-compilation.patch
new file mode 100644
index 00000000..aeae864c
--- /dev/null
+++ b/external/poky/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/external/poky/meta/recipes-graphics/menu-cache/menu-cache_1.0.2.bb b/external/poky/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb
index 71540cf1..fc4e0a4d 100644
--- a/external/poky/meta/recipes-graphics/menu-cache/menu-cache_1.0.2.bb
+++ b/external/poky/meta/recipes-graphics/menu-cache/menu-cache_1.1.0.bb
@@ -8,11 +8,13 @@ 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] = "8dde7a3f5bd9798d0129d1979a5d7640"
-SRC_URI[sha256sum] = "6f83edf2de34f83e701dcb52145d755250a5677580cd413476cc4d7f2d2012d5"
+SRC_URI[md5sum] = "99999a0bca48b980105208760c8fd893"
+SRC_URI[sha256sum] = "ed02eb459dcb398f69b9fa5bf4dd813020405afc84331115469cdf7be9273ec7"
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/lxde/files/menu-cache/1.0/"
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/lxde/files/menu-cache/1.1/"
inherit autotools gettext pkgconfig gtk-doc
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch b/external/poky/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch
deleted file mode 100644
index a50d2a2b..00000000
--- a/external/poky/meta/recipes-graphics/mesa/files/0001-Simplify-wayland-scanner-lookup.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 7e8e0f8a8ac2425e19a2f340c9e3da9345f25940 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 15 Nov 2016 15:20:49 +0200
-Subject: [PATCH 1/6] 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>
----
- configure.ac | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 14f1af2b2f..916d0bd207 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1825,12 +1825,7 @@ for plat in $platforms; do
- PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED])
- 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='')
-- 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.18.0
-
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch b/external/poky/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
new file mode 100644
index 00000000..15485feb
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/mesa/files/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
@@ -0,0 +1,27 @@
+From bb2f0bea553d51d659a9bc46f7ae186885405151 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 e4bffa8..58e1ddd 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>
+--
+2.24.1
+
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch b/external/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
new file mode 100644
index 00000000..08525432
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
@@ -0,0 +1,43 @@
+From 0d9ed002eff176b902da266d89829a9b0cb10946 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 898d025..09e3759 100644
+--- a/meson.build
++++ b/meson.build
+@@ -124,7 +124,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'].contains(host_machine.system())
++system_has_kms_drm = ['openbsd', 'netbsd', 'freebsd', 'dragonfly'].contains(host_machine.system()) or host_machine.system().startswith('linux')
+
+ dri_drivers = get_option('dri-drivers')
+ if dri_drivers.contains('auto')
+@@ -884,7 +884,7 @@ if cc.compiles('__uint128_t foo(void) { return 0; }',
+ endif
+
+ # TODO: this is very incomplete
+-if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd'].contains(host_machine.system())
++if ['cygwin', 'gnu', 'gnu/kfreebsd'].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/external/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch b/external/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
new file mode 100644
index 00000000..cd35a1f8
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
@@ -0,0 +1,46 @@
+From df835389699b32bb6610b39972502e323f8e09e5 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair@alistair23.me>
+Date: Thu, 14 Nov 2019 13:08:31 -0800
+Subject: [PATCH] meson.build: make TLS ELF optional
+
+USE_ELF_TLS has replaced GLX_USE_TLS so this patch is the original "make
+TLS GLX optional again" patch updated to the latest mesa.
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Alistair Francis <alistair@alistair23.me>
+
+---
+ meson.build | 2 +-
+ meson_options.txt | 6 ++++++
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 09e3759..a954118 100644
+--- a/meson.build
++++ b/meson.build
+@@ -387,7 +387,7 @@ if with_egl and not (with_platform_drm or with_platform_surfaceless or with_plat
+ endif
+
+ # Android uses emutls for versions <= P/28. For USE_ELF_TLS we need ELF TLS.
+-if host_machine.system() != 'windows' and (not with_platform_android or get_option('platform-sdk-version') >= 29)
++if (not with_platform_android or get_option('platform-sdk-version') >= 29) and get_option('elf-tls')
+ pre_args += '-DUSE_ELF_TLS'
+ endif
+
+diff --git a/meson_options.txt b/meson_options.txt
+index 626baf3..637ff14 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -341,6 +341,12 @@ option(
+ value : true,
+ description : 'Enable direct rendering in GLX and EGL for DRI',
+ )
++option(
++ 'elf-tls',
++ type : 'boolean',
++ value : true,
++ description : 'Enable TLS support in ELF',
++)
+ option(
+ 'I-love-half-baked-turnips',
+ type : 'boolean',
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch b/external/poky/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch
deleted file mode 100644
index ffb3bf7a..00000000
--- a/external/poky/meta/recipes-graphics/mesa/files/0002-winsys-svga-drm-Include-sys-types.h.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 7792f228991744a0396b8bf811e281dca86165d3 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/6] 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>
----
- 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 f21cabb51f..4c972fdaa9 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.18.0
-
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0003-Allow-enable-DRI-without-DRI-drivers.patch b/external/poky/meta/recipes-graphics/mesa/files/0003-Allow-enable-DRI-without-DRI-drivers.patch
new file mode 100644
index 00000000..a0536c87
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/mesa/files/0003-Allow-enable-DRI-without-DRI-drivers.patch
@@ -0,0 +1,46 @@
+From 7eaa21a79ce6d6e92f6bf98c28b68e3fcb4d7874 Mon Sep 17 00:00:00 2001
+From: Fabio Berton <fabio.berton@ossystems.com.br>
+Date: Wed, 12 Jun 2019 14:18:31 -0300
+Subject: [PATCH] Allow enable DRI without DRI drivers
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+
+---
+ meson.build | 2 +-
+ meson_options.txt | 6 ++++++
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index a954118..62864c6 100644
+--- a/meson.build
++++ b/meson.build
+@@ -154,7 +154,7 @@ with_dri_r200 = dri_drivers.contains('r200')
+ with_dri_nouveau = dri_drivers.contains('nouveau')
+ with_dri_swrast = dri_drivers.contains('swrast')
+
+-with_dri = dri_drivers.length() != 0 and dri_drivers != ['']
++with_dri = get_option('dri') or (dri_drivers.length() != 0 and dri_drivers != [''])
+
+ gallium_drivers = get_option('gallium-drivers')
+ if gallium_drivers.contains('auto')
+diff --git a/meson_options.txt b/meson_options.txt
+index 637ff14..700c34c 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -35,6 +35,12 @@ option(
+ choices : ['auto', 'true', 'false'],
+ description : 'enable support for dri3'
+ )
++option(
++ 'dri',
++ type : 'boolean',
++ value : false,
++ description : 'enable support for dri'
++)
+ option(
+ 'dri-drivers',
+ type : 'array',
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch b/external/poky/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch
deleted file mode 100644
index 5e735ca1..00000000
--- a/external/poky/meta/recipes-graphics/mesa/files/0003-Properly-get-LLVM-version-when-using-LLVM-Git-releas.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 8b42fb47138f91d9378439ab716bac7701e4e326 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/6] 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>
----
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 916d0bd207..dd172f1ebe 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1090,7 +1090,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`
-@@ -2808,7 +2808,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.18.0
-
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch b/external/poky/meta/recipes-graphics/mesa/files/0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch
new file mode 100644
index 00000000..8d614e57
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/mesa/files/0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch
@@ -0,0 +1,147 @@
+From 41cd8836d785c79381764e7de59319f87959a5cf Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair@alistair23.me>
+Date: Thu, 14 Nov 2019 09:06:02 -0800
+Subject: [PATCH] Revert "mesa: Enable asm unconditionally, now that
+ gen_matypes is gone."
+
+This reverts commit 20294dceebc23236e33b22578245f7e6f41b6997.
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Alistair Francis <alistair@alistair23.me>
+
+---
+ meson.build | 94 ++++++++++++++++++++++++++++++-----------------
+ meson_options.txt | 6 +++
+ 2 files changed, 67 insertions(+), 33 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 62864c6..b53be8d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -49,6 +49,7 @@ with_vulkan_icd_dir = get_option('vulkan-icd-dir')
+ with_tests = get_option('build-tests')
+ with_valgrind = get_option('valgrind')
+ with_libunwind = get_option('libunwind')
++with_asm = get_option('asm')
+ with_glx_read_only_text = get_option('glx-read-only-text')
+ with_glx_direct = get_option('glx-direct')
+ with_osmesa = get_option('osmesa')
+@@ -1093,41 +1094,68 @@ dep_ws2_32 = cc.find_library('ws2_32', required : with_platform_windows)
+
+ # TODO: shared/static? Is this even worth doing?
+
++# When cross compiling we generally need to turn off the use of assembly,
++# because mesa's assembly relies on building an executable for the host system,
++# and running it to get information about struct sizes. There is at least one
++# case of cross compiling where we can use asm, and that's x86_64 -> x86 when
++# host OS == build OS, since in that case the build machine can run the host's
++# binaries.
++if with_asm and meson.is_cross_build()
++ if build_machine.system() != host_machine.system()
++ # TODO: It may be possible to do this with an exe_wrapper (like wine).
++ message('Cross compiling from one OS to another, disabling assembly.')
++ with_asm = false
++ elif not (build_machine.cpu_family().startswith('x86') and host_machine.cpu_family() == 'x86')
++ # FIXME: Gentoo always sets -m32 for x86_64 -> x86 builds, resulting in an
++ # x86 -> x86 cross compile. We use startswith rather than == to handle this
++ # case.
++ # TODO: There may be other cases where the 64 bit version of the
++ # architecture can run 32 bit binaries (aarch64 and armv7 for example)
++ message('''
++ Cross compiling to different architectures, and the host cannot run
++ the build machine's binaries. Disabling assembly.
++ ''')
++ with_asm = false
++ endif
++endif
++
+ with_asm_arch = ''
+-if host_machine.cpu_family() == 'x86'
+- if system_has_kms_drm or host_machine.system() == 'gnu'
+- with_asm_arch = 'x86'
+- pre_args += ['-DUSE_X86_ASM', '-DUSE_MMX_ASM', '-DUSE_3DNOW_ASM',
+- '-DUSE_SSE_ASM']
+-
+- if with_glx_read_only_text
+- pre_args += ['-DGLX_X86_READONLY_TEXT']
++if with_asm
++ if host_machine.cpu_family() == 'x86'
++ if system_has_kms_drm or host_machine.system() == 'gnu'
++ with_asm_arch = 'x86'
++ pre_args += ['-DUSE_X86_ASM', '-DUSE_MMX_ASM', '-DUSE_3DNOW_ASM',
++ '-DUSE_SSE_ASM']
++
++ if with_glx_read_only_text
++ pre_args += ['-DGLX_X86_READONLY_TEXT']
++ endif
++ endif
++ elif host_machine.cpu_family() == 'x86_64'
++ if system_has_kms_drm
++ with_asm_arch = 'x86_64'
++ pre_args += ['-DUSE_X86_64_ASM']
++ endif
++ elif host_machine.cpu_family() == 'arm'
++ if system_has_kms_drm
++ with_asm_arch = 'arm'
++ pre_args += ['-DUSE_ARM_ASM']
++ endif
++ elif host_machine.cpu_family() == 'aarch64'
++ if system_has_kms_drm
++ with_asm_arch = 'aarch64'
++ pre_args += ['-DUSE_AARCH64_ASM']
++ endif
++ elif host_machine.cpu_family() == 'sparc64'
++ if system_has_kms_drm
++ with_asm_arch = 'sparc'
++ pre_args += ['-DUSE_SPARC_ASM']
++ endif
++ elif host_machine.cpu_family().startswith('ppc64') and host_machine.endian() == 'little'
++ if system_has_kms_drm
++ with_asm_arch = 'ppc64le'
++ pre_args += ['-DUSE_PPC64LE_ASM']
+ endif
+- endif
+-elif host_machine.cpu_family() == 'x86_64'
+- if system_has_kms_drm
+- with_asm_arch = 'x86_64'
+- pre_args += ['-DUSE_X86_64_ASM']
+- endif
+-elif host_machine.cpu_family() == 'arm'
+- if system_has_kms_drm
+- with_asm_arch = 'arm'
+- pre_args += ['-DUSE_ARM_ASM']
+- endif
+-elif host_machine.cpu_family() == 'aarch64'
+- if system_has_kms_drm
+- with_asm_arch = 'aarch64'
+- pre_args += ['-DUSE_AARCH64_ASM']
+- endif
+-elif host_machine.cpu_family() == 'sparc64'
+- if system_has_kms_drm
+- with_asm_arch = 'sparc'
+- pre_args += ['-DUSE_SPARC_ASM']
+- endif
+-elif host_machine.cpu_family().startswith('ppc64') and host_machine.endian() == 'little'
+- if system_has_kms_drm
+- with_asm_arch = 'ppc64le'
+- pre_args += ['-DUSE_PPC64LE_ASM']
+ endif
+ endif
+
+diff --git a/meson_options.txt b/meson_options.txt
+index 700c34c..62e8472 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -241,6 +241,12 @@ option(
+ value : false,
+ description : 'Enable GLVND support.'
+ )
++option(
++ 'asm',
++ type : 'boolean',
++ value : true,
++ description : 'Build assembly code if possible'
++)
+ option(
+ 'glx-read-only-text',
+ type : 'boolean',
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch b/external/poky/meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch
deleted file mode 100644
index 8953c4a1..00000000
--- a/external/poky/meta/recipes-graphics/mesa/files/0004-Use-Python-3-to-execute-the-scripts.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From ebe6077a1d74e56b28249f71e8760295fa846ed2 Mon Sep 17 00:00:00 2001
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Fri, 29 Dec 2017 10:27:59 -0200
-Subject: [PATCH 4/6] Use Python 3 to execute the scripts
-Organization: O.S. Systems Software LTDA.
-
-The MESA build system uses Python 2 but as OE-Core has moved away from
-it, we change it to use Python 3 instead.
-
-Upstream-Status: Inappropriate [ configuration ]
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index dd172f1ebe..40cac36ac2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -122,7 +122,7 @@ AM_PROG_CC_C_O
- AC_PROG_NM
- AM_PROG_AS
- AX_CHECK_GNU_MAKE
--AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
-+AC_CHECK_PROGS([PYTHON2], [python3.5 python3 python])
- AC_PROG_SED
- AC_PROG_MKDIR_P
-
---
-2.18.0
-
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch b/external/poky/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch
deleted file mode 100644
index d40e7b58..00000000
--- a/external/poky/meta/recipes-graphics/mesa/files/0005-dri-i965-Add-missing-time.h-include.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 9e0368af471af3a36e0eb526453f892598120065 Mon Sep 17 00:00:00 2001
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Wed, 6 Jun 2018 09:50:35 -0300
-Subject: [PATCH 5/6] dri: i965: Add missing time.h include
-Organization: O.S. Systems Software LTDA.
-
-This fixes a build error when using musl:
-
-,----
-| In file included from .../src/mesa/drivers/dri/i965/intel_upload.c:33:0:
-| .../src/mesa/drivers/dri/i965/brw_bufmgr.h:132:4: error: unknown type name 'time_t'
-| time_t free_time;
-| ^~~~~~
-`----
-
-Upstream-Status: Backport [3c288da5eec81ee58b85927df18d9194ead8f5c2]
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- src/mesa/drivers/dri/i965/brw_bufmgr.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.h b/src/mesa/drivers/dri/i965/brw_bufmgr.h
-index 68f5e0c2c8..5b60a23763 100644
---- a/src/mesa/drivers/dri/i965/brw_bufmgr.h
-+++ b/src/mesa/drivers/dri/i965/brw_bufmgr.h
-@@ -37,6 +37,7 @@
- #include <stdbool.h>
- #include <stdint.h>
- #include <stdio.h>
-+#include <time.h>
- #include "util/u_atomic.h"
- #include "util/list.h"
-
---
-2.18.0
-
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch b/external/poky/meta/recipes-graphics/mesa/files/0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch
new file mode 100644
index 00000000..901feca5
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/mesa/files/0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch
@@ -0,0 +1,53 @@
+From 38a313474e127d61e749866423e708fc86ed9ec5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 4 Dec 2019 14:15:28 -0800
+Subject: [PATCH] vc4: use intmax_t for formatted output of timespec members
+
+32bit architectures which have 64bit time_t does not fit the assumption
+of time_t being same as system long int
+
+Fixes
+error: format specifies type 'long' but the argument has type 'time_t' (aka 'long long') [-Werror,-Wformat]
+ time.tv_sec);
+ ^~~~~~~~~~~
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2966]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/gallium/drivers/v3d/v3d_bufmgr.c | 4 ++--
+ src/gallium/drivers/vc4/vc4_bufmgr.c | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/gallium/drivers/v3d/v3d_bufmgr.c b/src/gallium/drivers/v3d/v3d_bufmgr.c
+index b3e4d053cc0..c514bf00bf0 100644
+--- a/src/gallium/drivers/v3d/v3d_bufmgr.c
++++ b/src/gallium/drivers/v3d/v3d_bufmgr.c
+@@ -80,8 +80,8 @@ v3d_bo_dump_stats(struct v3d_screen *screen)
+
+ struct timespec time;
+ clock_gettime(CLOCK_MONOTONIC, &time);
+- fprintf(stderr, " now: %ld\n",
+- time.tv_sec);
++ fprintf(stderr, " now: %jd\n",
++ (intmax_t)time.tv_sec);
+ }
+ }
+
+diff --git a/src/gallium/drivers/vc4/vc4_bufmgr.c b/src/gallium/drivers/vc4/vc4_bufmgr.c
+index 5ec360934c0..bf05f6cadd6 100644
+--- a/src/gallium/drivers/vc4/vc4_bufmgr.c
++++ b/src/gallium/drivers/vc4/vc4_bufmgr.c
+@@ -107,8 +107,8 @@ vc4_bo_dump_stats(struct vc4_screen *screen)
+
+ struct timespec time;
+ clock_gettime(CLOCK_MONOTONIC, &time);
+- fprintf(stderr, " now: %ld\n",
+- time.tv_sec);
++ fprintf(stderr, " now: %jd\n",
++ (intmax_t)time.tv_sec);
+ }
+ }
+
+--
+2.24.0
+
diff --git a/external/poky/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch b/external/poky/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch
deleted file mode 100644
index 0212922c..00000000
--- a/external/poky/meta/recipes-graphics/mesa/files/0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 754ccf89a732fc3da6e9bc62ebd6b28686ff3d26 Mon Sep 17 00:00:00 2001
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Wed, 29 Aug 2018 22:10:30 -0300
-Subject: [PATCH 6/6] 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.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 40cac36ac2..728bbdcbc4 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1823,7 +1823,7 @@ for plat in $platforms; do
- PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= $WAYLAND_REQUIRED])
- PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED])
- PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED])
-- WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
-+ PKG_CHECK_VAR([WAYLAND_PROTOCOLS_DATADIR], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], pkgdatadir)
-
- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
-
---
-2.18.0
-
diff --git a/external/poky/meta/recipes-graphics/mesa/libglu_9.0.0.bb b/external/poky/meta/recipes-graphics/mesa/libglu_9.0.1.bb
index eeb898fd..703f131f 100644
--- a/external/poky/meta/recipes-graphics/mesa/libglu_9.0.0.bb
+++ b/external/poky/meta/recipes-graphics/mesa/libglu_9.0.1.bb
@@ -12,16 +12,16 @@ LIC_FILES_CHKSUM = "file://include/GL/glu.h;endline=29;md5=6b79c570f644363b35645
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.gz"
-SRC_URI[md5sum] = "be9249132ff49275461cf92039083030"
-SRC_URI[sha256sum] = "1f7ad0d379a722fcbd303aa5650c6d7d5544fde83196b42a73d1193568a4df12"
+SRC_URI[md5sum] = "5599a0e0a97335e10239d9165aced60d"
+SRC_URI[sha256sum] = "f6f484cfcd51e489afe88031afdea1e173aa652697e4c19ddbcb8260579a10f7"
S = "${WORKDIR}/glu-${PV}"
DEPENDS = "virtual/libgl"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# Requires libGL.so which is provided by mesa when x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11 opengl"
diff --git a/external/poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch b/external/poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch
index 6b676cdd..b27d9eaf 100644
--- a/external/poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch
+++ b/external/poky/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch
@@ -1,4 +1,4 @@
-From c59e286fa4e818ca015dd40e4725636309970ea8 Mon Sep 17 00:00:00 2001
+From 2e0367a941445a862ab99c54ec85d1357d0f73c0 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
@@ -8,27 +8,28 @@ 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(-)
+ src/egl/opengl/Makefile.am | 3 +--
+ src/egl/openvg/Makefile.am | 2 +-
+ 2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/egl/opengl/Makefile.am b/src/egl/opengl/Makefile.am
-index fe7faa9..3e48141 100644
+index 6d184ff6..ab09d028 100644
--- a/src/egl/opengl/Makefile.am
+++ b/src/egl/opengl/Makefile.am
-@@ -50,7 +50,7 @@ endif
- endif
+@@ -57,8 +57,7 @@ endif
if HAVE_EGL
+ bin_PROGRAMS = \
+- eglinfo
-noinst_PROGRAMS = \
-+bin_PROGRAMS = \
- eglinfo \
++ eglinfo \
peglgears \
$(EGL_DRM_DEMOS) \
+ $(EGL_X11_DEMOS) \
diff --git a/src/egl/openvg/Makefile.am b/src/egl/openvg/Makefile.am
-index b0f1212..5fd1cf8 100644
+index b0f1212f..5fd1cf83 100644
--- a/src/egl/openvg/Makefile.am
+++ b/src/egl/openvg/Makefile.am
@@ -49,7 +49,7 @@ endif
@@ -40,6 +41,3 @@ index b0f1212..5fd1cf8 100644
$(EGL_X11_DEMOS)
endif
endif
---
-2.1.4
-
diff --git a/external/poky/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch b/external/poky/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch
index a6085754..a6d16817 100644
--- a/external/poky/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch
+++ b/external/poky/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch
@@ -1,12 +1,13 @@
-From 0b6f95f9b8ece22e9856c150e4be29fd86eaf546 Mon Sep 17 00:00:00 2001
+From 894add34c2b5e6b4ccc78996bf681d7ec7bc9e36 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
+Subject: [PATCH] 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 ++++++++--
@@ -15,7 +16,7 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/fpglsl/Makefile.am b/src/fpglsl/Makefile.am
-index 47c1039..fd43c91 100644
+index 47c1039f..fd43c919 100644
--- a/src/fpglsl/Makefile.am
+++ b/src/fpglsl/Makefile.am
@@ -39,10 +39,12 @@ noinst_PROGRAMS = \
@@ -32,7 +33,7 @@ index 47c1039..fd43c91 100644
mov-imm.glsl \
simpleif.glsl \
diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am
-index 4faa8db..079a29d 100644
+index 4faa8dbf..079a29d8 100644
--- a/src/glsl/Makefile.am
+++ b/src/glsl/Makefile.am
@@ -37,7 +37,7 @@ AM_LDFLAGS = \
@@ -71,13 +72,13 @@ index 4faa8db..079a29d 100644
+ skinning.vert \
toyball.shtest
diff --git a/src/perf/Makefile.am b/src/perf/Makefile.am
-index 5363c58..c5cca8d 100644
+index f0031fea..60069396 100644
--- a/src/perf/Makefile.am
+++ b/src/perf/Makefile.am
-@@ -57,3 +57,9 @@ bin_PROGRAMS = \
- endif
+@@ -59,3 +59,9 @@ endif
glslstateschange_LDADD = libperf.la ../util/libutil.la
+ glsl_compile_time_LDADD = ../util/libutil.la
+
+EXTRA_DIST = \
+ glslstateschange1.frag \
@@ -85,7 +86,7 @@ index 5363c58..c5cca8d 100644
+ glslstateschange2.frag \
+ glslstateschange2.vert
diff --git a/src/vpglsl/Makefile.am b/src/vpglsl/Makefile.am
-index 4a85ed4..48b08f4 100644
+index 4a85ed40..48b08f48 100644
--- a/src/vpglsl/Makefile.am
+++ b/src/vpglsl/Makefile.am
@@ -44,6 +44,7 @@ EXTRA_DIST = \
@@ -96,6 +97,3 @@ index 4a85ed4..48b08f4 100644
mov.glsl \
nestedifs.glsl \
nestedswizzle.glsl \
---
-2.0.0
-
diff --git a/external/poky/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch b/external/poky/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch
index 1262dee2..8a98ba60 100644
--- a/external/poky/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch
+++ b/external/poky/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch
@@ -1,10 +1,11 @@
-From c8c3de5417d6b6c7d7579c528c0cab718f4bfdb6 Mon Sep 17 00:00:00 2001
+From 477ab6d90a17d8e4d3935be6ce8b8e154db0e3e5 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
+Subject: [PATCH] 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 ++-
@@ -13,7 +14,7 @@ Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
4 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/fpglsl/Makefile.am b/src/fpglsl/Makefile.am
-index fd43c91..2bf51de 100644
+index fd43c919..2bf51de4 100644
--- a/src/fpglsl/Makefile.am
+++ b/src/fpglsl/Makefile.am
@@ -38,7 +38,8 @@ noinst_PROGRAMS = \
@@ -27,7 +28,7 @@ index fd43c91..2bf51de 100644
dowhile2.glsl \
dowhile.glsl \
diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am
-index 079a29d..f66ec29 100644
+index 079a29d8..f66ec299 100644
--- a/src/glsl/Makefile.am
+++ b/src/glsl/Makefile.am
@@ -118,7 +118,8 @@ vert_or_frag_only_LDADD = ../util/libutil.la
@@ -41,12 +42,12 @@ index 079a29d..f66ec29 100644
CH06-brick.vert \
CH11-bumpmap.frag \
diff --git a/src/perf/Makefile.am b/src/perf/Makefile.am
-index c5cca8d..140256d 100644
+index 60069396..469bdf45 100644
--- a/src/perf/Makefile.am
+++ b/src/perf/Makefile.am
-@@ -58,7 +58,8 @@ endif
-
+@@ -60,7 +60,8 @@ endif
glslstateschange_LDADD = libperf.la ../util/libutil.la
+ glsl_compile_time_LDADD = ../util/libutil.la
-EXTRA_DIST = \
+demosdatadir=$(datadir)/$(PACKAGE)/
@@ -55,7 +56,7 @@ index c5cca8d..140256d 100644
glslstateschange1.vert \
glslstateschange2.frag \
diff --git a/src/vpglsl/Makefile.am b/src/vpglsl/Makefile.am
-index 48b08f4..5526867 100644
+index 48b08f48..55268675 100644
--- a/src/vpglsl/Makefile.am
+++ b/src/vpglsl/Makefile.am
@@ -38,7 +38,8 @@ noinst_PROGRAMS = \
@@ -68,6 +69,3 @@ index 48b08f4..5526867 100644
for.glsl \
func.glsl \
func2.glsl \
---
-2.0.0
-
diff --git a/external/poky/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb b/external/poky/meta/recipes-graphics/mesa/mesa-demos_8.4.0.bb
index bae3b18b..38bdbded 100644
--- a/external/poky/meta/recipes-graphics/mesa/mesa-demos_8.3.0.bb
+++ b/external/poky/meta/recipes-graphics/mesa/mesa-demos_8.4.0.bb
@@ -9,7 +9,7 @@ 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 \
+SRC_URI = "https://mesa.freedesktop.org/archive/demos/${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 \
@@ -19,10 +19,10 @@ SRC_URI = "https://mesa.freedesktop.org/archive/demos/${PV}/${BPN}-${PV}.tar.bz2
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"
+SRC_URI[md5sum] = "6b65a02622765522176d00f553086fa3"
+SRC_URI[sha256sum] = "01e99c94a0184e63e796728af89bfac559795fb2a0d6f506fa900455ca5fff7d"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
# depends on virtual/egl, virtual/libgl ...
REQUIRED_DISTRO_FEATURES = "opengl x11"
diff --git a/external/poky/meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb b/external/poky/meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb
deleted file mode 100644
index 73267eb4..00000000
--- a/external/poky/meta/recipes-graphics/mesa/mesa-gl_18.1.9.bb
+++ /dev/null
@@ -1,9 +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)}"
diff --git a/external/poky/meta/recipes-graphics/mesa/mesa-gl_20.0.2.bb b/external/poky/meta/recipes-graphics/mesa/mesa-gl_20.0.2.bb
new file mode 100644
index 00000000..c7897cda
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/mesa/mesa-gl_20.0.2.bb
@@ -0,0 +1,15 @@
+require mesa_${PV}.bb
+
+SUMMARY += " (OpenGL only, no EGL/GLES)"
+
+PROVIDES = "virtual/libgl virtual/mesa"
+
+S = "${WORKDIR}/mesa-${PV}"
+
+# At least one DRI rendering engine is required to build mesa.
+# When no X11 is available, use osmesa for the rendering engine.
+PACKAGECONFIG ??= "opengl dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa', d)}"
+PACKAGECONFIG_class-target = "opengl dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa', d)}"
+
+# When NOT using X11, we need to make sure we have swrast available.
+DRIDRIVERS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', ',swrast', d)}"
diff --git a/external/poky/meta/recipes-graphics/mesa/mesa.inc b/external/poky/meta/recipes-graphics/mesa/mesa.inc
index f47f1aa2..b7ef496f 100644
--- a/external/poky/meta/recipes-graphics/mesa/mesa.inc
+++ b/external/poky/meta/recipes-graphics/mesa/mesa.inc
@@ -10,11 +10,11 @@ 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.html;md5=c1843d93c460bbf778d6037ce324f9f7"
PE = "2"
-DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native"
+DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native"
EXTRANATIVEPATH += "chrpath-native"
PROVIDES = " \
${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \
@@ -24,97 +24,144 @@ PROVIDES = " \
virtual/mesa \
"
-inherit autotools pkgconfig python3native gettext distro_features_check
+inherit meson pkgconfig python3native gettext features_check
-ANY_OF_DISTRO_FEATURES = "opengl vulkan"
+# Unset these to stop python trying to report the target Python setup
+_PYTHON_SYSCONFIGDATA_NAME[unexport] = "1"
+STAGING_INCDIR[unexport] = "1"
+STAGING_LIBDIR[unexport] = "1"
+
+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}'"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland vulkan', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm dri', '', d)} \
+export LLVM_CONFIG = "${STAGING_BINDIR_NATIVE}/llvm-config${MESA_LLVM_RELEASE}"
+export WANT_LLVM_RELEASE = "${MESA_LLVM_RELEASE}"
+
+MESA_LLVM_RELEASE ?= "${LLVMVERSION}"
+
+# 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=true \
+ -Dgallium-opencl=disabled \
+ -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 virgl', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11 dri3', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \
+ elf-tls \
"
+PACKAGECONFIG_class-native ?= "gbm dri egl opengl elf-tls"
+PACKAGECONFIG_class-nativesdk ?= "gbm dri egl opengl elf-tls"
+
+PACKAGECONFIG_remove_libc-musl = "elf-tls"
# "gbm" requires "dri", "opengl"
-PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm"
+PACKAGECONFIG[gbm] = "-Dgbm=true,-Dgbm=false"
-X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes"
+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[elf-tls] = "-Delf-tls=true, -Delf-tls=false"
+PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=true,-Dgallium-xvmc=false,libxvmc"
PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols"
-DRIDRIVERS = "swrast"
-DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915"
-DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915"
+DRIDRIVERS_class-native = "swrast"
+DRIDRIVERS_class-nativesdk = "swrast"
+DRIDRIVERS_append_x86_class-target = ",r100,r200,nouveau,i965,i915"
+DRIDRIVERS_append_x86-64_class-target = ",r100,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[dri] = "-Ddri=true -Ddri-drivers=${DRIDRIVERS}, -Ddri=false -Ddri-drivers='', xorgproto libdrm"
+PACKAGECONFIG[dri3] = "-Ddri3=true, -Ddri3=false, xorgproto libxshmfence"
# Vulkan drivers need dri3 enabled
# radeon could be enabled as well but requires gallium-llvm with llvm >= 3.9
VULKAN_DRIVERS = ""
-VULKAN_DRIVERS_append_x86 = ",intel"
-VULKAN_DRIVERS_append_x86-64 = ",intel"
-PACKAGECONFIG[vulkan] = "--with-vulkan-drivers=${VULKAN_DRIVERS}, --without-vulkan-drivers, python3-mako-native"
+VULKAN_DRIVERS_append_x86_class-target = ",intel"
+VULKAN_DRIVERS_append_x86-64_class-target = ",intel"
+PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${VULKAN_DRIVERS}, -Dvulkan-drivers='',"
-PACKAGECONFIG[opengl] = "--enable-opengl, --disable-opengl"
+PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false"
# "gles" requires "opengl"
-PACKAGECONFIG[gles] = "--enable-gles1 --enable-gles2, --disable-gles1 --disable-gles2"
+PACKAGECONFIG[gles] = "-Dgles1=true -Dgles2=true, -Dgles1=false -Dgles2=false"
# "egl" requires "dri", "opengl"
-PACKAGECONFIG[egl] = "--enable-egl, --disable-egl"
+PACKAGECONFIG[egl] = "-Degl=true, -Degl=false"
PACKAGECONFIG[etnaviv] = ""
-PACKAGECONFIG[imx] = ""
+PACKAGECONFIG[freedreno] = ""
+PACKAGECONFIG[kmsro] = ""
+PACKAGECONFIG[vc4] = ""
+PACKAGECONFIG[v3d] = ""
GALLIUMDRIVERS = "swrast"
+# gallium swrast was found to crash Xorg on startup in x32 qemu
+GALLIUMDRIVERS_x86-x32 = ""
+
GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}"
-GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'imx', ',imx', '', d)}"
-GALLIUMDRIVERS_LLVM33 = "${@bb.utils.contains('PACKAGECONFIG', 'r600', 'radeonsi,r600', '', d)}"
-PACKAGECONFIG[r600] = ""
+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)}"
+
+# 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_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}"
-GALLIUMDRIVERS_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}"
-GALLIUMDRIVERS_append_x86 = ",virgl"
-GALLIUMDRIVERS_append_x86-64 = ",virgl"
-# keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers
-PACKAGECONFIG[gallium] = "--enable-texture-float --with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers"
-MESA_LLVM_RELEASE ?= "6.0"
-PACKAGECONFIG[gallium-llvm] = "--enable-llvm --enable-llvm-shared-libs, --disable-llvm, llvm${MESA_LLVM_RELEASE} llvm-native \
+
+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 = "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}"
+
+PACKAGECONFIG[gallium] = "-Dgallium-drivers=${GALLIUMDRIVERS}, -Dgallium-drivers=''"
+PACKAGECONFIG[gallium-llvm] = "-Dllvm=true -Dshared-llvm=true, -Dllvm=false, 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[xa] = "-Dgallium-xa=true, -Dgallium-xa=false"
+
+PACKAGECONFIG[lima] = ""
+GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}"
-OSMESA = "${@bb.utils.contains('PACKAGECONFIG', 'gallium', 'gallium-osmesa', 'osmesa', d)}"
-PACKAGECONFIG[osmesa] = "--enable-${OSMESA},--disable-${OSMESA}"
+PACKAGECONFIG[panfrost] = ""
+GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
-PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind"
+OSMESA = "${@bb.utils.contains('PACKAGECONFIG', 'gallium', 'gallium', 'classic', d)}"
+PACKAGECONFIG[osmesa] = "-Dosmesa=${OSMESA},-Dosmesa=none"
-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[unwind] = "-Dlibunwind=true,-Dlibunwind=false,libunwind"
+
+# mesa tries to run cross-built gen_matypes on build machine to get struct size information
+EXTRA_OEMESON_append = " -Dasm=false"
# llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2)
FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer"
CFLAGS_append_armv5 = " -DMISSING_64BIT_ATOMICS"
-EXTRA_OEMAKE += "WAYLAND_PROTOCOLS_DATADIR=${STAGING_DATADIR}/wayland-protocols"
+CFLAGS_append_armv6 = " -DMISSING_64BIT_ATOMICS"
# Remove the mesa dependency on mesa-dev, as mesa is empty
RDEPENDS_${PN}-dev = ""
@@ -141,12 +188,12 @@ do_install_append () {
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
}
# For the packages that make up the OpenGL interfaces, inject variables so that
@@ -192,7 +239,7 @@ python mesa_populate_packages() {
dri_pkgs = os.listdir(dri_drivers_root)
lib_name = d.expand("${MLPREFIX}mesa-megadriver")
for p in dri_pkgs:
- m = re.match('^(.*)_dri\.so$', p)
+ 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)
@@ -200,15 +247,14 @@ python mesa_populate_packages() {
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, '^pipe_(.*)\.so$', 'mesa-driver-pipe-%s', 'Mesa %s pipe driver', extra_depends='')
+ 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 "
PACKAGES_DYNAMIC += "^mesa-driver-.*"
-FILES_${PN} = ""
-FILES_mesa-megadriver = "${libdir}/dri/* ${sysconfdir}"
+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.*"
@@ -231,3 +277,8 @@ FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/GL/osmesa.h ${libdir}
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"
+
+# Fix upgrade path from mesa to mesa-megadriver
+RREPLACES_mesa-megadriver = "mesa"
+RCONFLICTS_mesa-megadriver = "mesa"
+RPROVIDES_mesa-megadriver = "mesa"
diff --git a/external/poky/meta/recipes-graphics/mesa/mesa_18.1.9.bb b/external/poky/meta/recipes-graphics/mesa/mesa_18.1.9.bb
deleted file mode 100644
index 86d6a6bf..00000000
--- a/external/poky/meta/recipes-graphics/mesa/mesa_18.1.9.bb
+++ /dev/null
@@ -1,21 +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-Python-3-to-execute-the-scripts.patch \
- file://0005-dri-i965-Add-missing-time.h-include.patch \
- file://0006-use-PKG_CHECK_VAR-for-defining-WAYLAND_PROTOCOLS_DAT.patch \
-"
-
-SRC_URI[md5sum] = "2f8d2098ab478bc3907e42130577b54a"
-SRC_URI[sha256sum] = "55f5778d58a710a63d6635f000535768faf7db9e8144dc0f4fd1989f936c1a83"
-
-#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/external/poky/meta/recipes-graphics/mesa/mesa_20.0.2.bb b/external/poky/meta/recipes-graphics/mesa/mesa_20.0.2.bb
new file mode 100644
index 00000000..ee0260e0
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/mesa/mesa_20.0.2.bb
@@ -0,0 +1,23 @@
+require ${BPN}.inc
+
+SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
+ file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \
+ file://0002-meson.build-make-TLS-ELF-optional.patch \
+ file://0003-Allow-enable-DRI-without-DRI-drivers.patch \
+ file://0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch \
+ file://0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch \
+ file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
+ "
+
+SRC_URI[md5sum] = "31ca59cd92c38cb8e1a58b62b01c3e08"
+SRC_URI[sha256sum] = "aa54f1cb669550606aab8ceb475105d15aeb814fca5a778ce70d0fd10e98e86f"
+
+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() {
+ if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; 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
+}
diff --git a/external/poky/meta/recipes-graphics/mx/mx.inc b/external/poky/meta/recipes-graphics/mx/mx.inc
index d3048374..714a06f0 100644
--- a/external/poky/meta/recipes-graphics/mx/mx.inc
+++ b/external/poky/meta/recipes-graphics/mx/mx.inc
@@ -1,7 +1,7 @@
SUMMARY = "Clutter based UI widget library"
LICENSE = "LGPLv2.1"
-inherit clutter autotools distro_features_check gobject-introspection gtk-doc
+inherit clutter autotools features_check gobject-introspection gtk-doc
# depends on clutter-1.0 which depends on cogl-1.0
REQUIRED_DISTRO_FEATURES = "opengl"
diff --git a/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb b/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
index 87c700e0..2e7b47dd 100644
--- a/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
+++ b/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
@@ -6,7 +6,7 @@ SUMMARY = "Clutter package groups"
PR = "r6"
-inherit packagegroup distro_features_check
+inherit packagegroup features_check
# rdepends on clutter-*
REQUIRED_DISTRO_FEATURES = "opengl"
diff --git a/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb b/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
index 7ea72d55..9ca2705a 100644
--- a/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
+++ b/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
@@ -2,7 +2,7 @@ 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"
diff --git a/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb b/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
index 97dcac5f..a0b944a6 100644
--- a/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
+++ b/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
@@ -7,7 +7,7 @@ PR = "r40"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-inherit packagegroup distro_features_check
+inherit packagegroup features_check
# rdepends on XSERVER
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb b/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
index 001db9e5..cddf1932 100644
--- a/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
+++ b/external/poky/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
@@ -4,7 +4,7 @@
PR = "r40"
-inherit packagegroup distro_features_check
+inherit packagegroup features_check
REQUIRED_DISTRO_FEATURES = "x11"
PACKAGES = "${PN} ${PN}-utils"
diff --git a/external/poky/meta/recipes-graphics/pango/pango/0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch b/external/poky/meta/recipes-graphics/pango/pango/0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch
deleted file mode 100644
index 6784a105..00000000
--- a/external/poky/meta/recipes-graphics/pango/pango/0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 526a6a9fc9a1cfe75c521c8bb39b61754fe42fe8 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 2 Sep 2016 14:00:24 +0300
-Subject: [PATCH] Enforce recreation of docs/pango.types; it is build
- configuration-specific.
-
-In particular, it needs to exclude references to PangoXft if Xft is not available.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- docs/Makefile.am | 17 ++++--------
- docs/pango.types | 80 --------------------------------------------------------
- 2 files changed, 5 insertions(+), 92 deletions(-)
- delete mode 100644 docs/pango.types
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index f5f1317..8947a99 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -49,6 +49,10 @@ IGNORE_HFILES= \
- pangocoretext-private.h \
- pangoatsui-private.h
-
-+if !HAVE_XFT
-+IGNORE_HFILES += pangoxft pangoxft-render.h
-+endif
-+
- # CFLAGS and LDFLAGS for compiling scan program. Only needed
- # if $(DOC_MODULE).types is non-empty.
- INCLUDES = \
-@@ -103,16 +107,6 @@ include $(top_srcdir)/gtk-doc.make
- # This line really belongs in gtk-doc.mk
- $(REPORT_FILES): sgml-build.stamp
-
--pango.types:
-- @echo "Rebuilding $@"
-- @LANG=C; LIST=$$(grep 'pango_[_a-zA-Z0-9]*_get_type' $(HFILE_GLOB) | grep -v '\(private\|atsui\|core_text\|win32\)' | sed 's/\([^:]*:\).*\(pango[_a-zA-Z0-9]*_get_type\).*/\1\2/') && \
-- echo "$$LIST" | sed 's/.*\/\(pango\/.*\):.*/#include <\1>/' | sort -u > $@.tmp && \
-- echo >> $@.tmp && \
-- echo "$$LIST" | cut -d : -f 2 | sort -u >> $@.tmp && \
-- mv $@.tmp $@
--
--BUILT_SOURCES = pango.types
--
- ########################################################################
-
- MAINTAINERCLEANFILES = $(BUILT_SOURCES)
-@@ -120,8 +114,7 @@ EXTRA_DIST += \
- layout.fig \
- layout.eps \
- version.xml.in \
-- check.docs \
-- pango.types
-+ check.docs
-
- # force doc rebulid after configure
- dist-hook-local: dist-local-check-no-cross-references all-local
-diff --git a/docs/pango.types b/docs/pango.types
-deleted file mode 100644
-index 7d93cda..0000000
---- a/docs/pango.types
-+++ /dev/null
-@@ -1,80 +0,0 @@
--#include <pango/pango-attributes.h>
--#include <pango/pango-context.h>
--#include <pango/pango-engine.h>
--#include <pango/pango-enum-types.h>
--#include <pango/pango-font.h>
--#include <pango/pango-fontmap.h>
--#include <pango/pango-fontset.h>
--#include <pango/pango-glyph-item.h>
--#include <pango/pango-glyph.h>
--#include <pango/pango-item.h>
--#include <pango/pango-language.h>
--#include <pango/pango-layout.h>
--#include <pango/pango-matrix.h>
--#include <pango/pango-ot.h>
--#include <pango/pango-renderer.h>
--#include <pango/pango-tabs.h>
--#include <pango/pangocairo-fc.h>
--#include <pango/pangocairo.h>
--#include <pango/pangofc-decoder.h>
--#include <pango/pangofc-font.h>
--#include <pango/pangofc-fontmap.h>
--#include <pango/pangoft2.h>
--#include <pango/pangoxft-render.h>
--#include <pango/pangoxft.h>
--
--pango_alignment_get_type
--pango_attr_list_get_type
--pango_attr_type_get_type
--pango_bidi_type_get_type
--pango_cairo_fc_font_map_get_type
--pango_cairo_font_get_type
--pango_cairo_font_map_get_type
--pango_color_get_type
--pango_context_get_type
--pango_coverage_level_get_type
--pango_direction_get_type
--pango_ellipsize_mode_get_type
--pango_engine_get_type
--pango_engine_lang_get_type
--pango_engine_shape_get_type
--pango_fc_decoder_get_type
--pango_fc_font_get_type
--pango_fc_font_map_get_type
--pango_font_description_get_type
--pango_font_face_get_type
--pango_font_family_get_type
--pango_font_get_type
--pango_font_map_get_type
--pango_font_mask_get_type
--pango_font_metrics_get_type
--pango_fontset_get_type
--pango_fontset_simple_get_type
--pango_ft2_font_map_get_type
--pango_glyph_item_get_type
--pango_glyph_item_iter_get_type
--pango_glyph_string_get_type
--pango_gravity_get_type
--pango_gravity_hint_get_type
--pango_item_get_type
--pango_language_get_type
--pango_layout_get_type
--pango_layout_iter_get_type
--pango_layout_line_get_type
--pango_matrix_get_type
--pango_ot_info_get_type
--pango_ot_ruleset_get_type
--pango_render_part_get_type
--pango_renderer_get_type
--pango_script_get_type
--pango_stretch_get_type
--pango_style_get_type
--pango_tab_align_get_type
--pango_tab_array_get_type
--pango_underline_get_type
--pango_variant_get_type
--pango_weight_get_type
--pango_wrap_mode_get_type
--pango_xft_font_get_type
--pango_xft_font_map_get_type
--pango_xft_renderer_get_type
---
-2.9.3
-
diff --git a/external/poky/meta/recipes-graphics/pango/pango/0001-Fix-build-reproducibility.patch b/external/poky/meta/recipes-graphics/pango/pango/0001-Fix-build-reproducibility.patch
new file mode 100644
index 00000000..03abf876
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/pango/pango/0001-Fix-build-reproducibility.patch
@@ -0,0 +1,31 @@
+From f8b32901981a06a8db4169b82a704dcf7e8b6560 Mon Sep 17 00:00:00 2001
+From: Joshua Watt <JPEWhacker@gmail.com>
+Date: Wed, 20 Nov 2019 15:43:57 -0600
+Subject: [PATCH] Fix build reproducibility
+
+Changes the comment in pango-enum-types.c to reference the file basename
+instead of the full path. This ensures that the generated file is
+reproducible when it is included in source packages meant for debugging.
+
+Upstream-Status: Pending [https://gitlab.gnome.org/GNOME/pango/merge_requests/159]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+---
+ pango/pango-enum-types.c.template | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pango/pango-enum-types.c.template b/pango/pango-enum-types.c.template
+index d922c691..0d55ef74 100644
+--- a/pango/pango-enum-types.c.template
++++ b/pango/pango-enum-types.c.template
+@@ -6,7 +6,7 @@
+ /*** END file-header ***/
+
+ /*** BEGIN file-production ***/
+-/* enumerations from "@filename@" */
++/* enumerations from "@basename@" */
+ /*** END file-production ***/
+
+ /*** BEGIN value-header ***/
+--
+2.23.0
+
diff --git a/external/poky/meta/recipes-graphics/pango/pango/CVE-2019-1010238.patch b/external/poky/meta/recipes-graphics/pango/pango/CVE-2019-1010238.patch
deleted file mode 100644
index 5b0c342f..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/pango/pango_1.42.4.bb b/external/poky/meta/recipes-graphics/pango/pango_1.44.7.bb
index f6a3a5ac..0ee8abcc 100644
--- a/external/poky/meta/recipes-graphics/pango/pango_1.42.4.bb
+++ b/external/poky/meta/recipes-graphics/pango/pango_1.44.7.bb
@@ -11,37 +11,39 @@ 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://0001-Enforce-recreation-of-docs-pango.types-it-is-build-c.patch \
- file://CVE-2019-1010238.patch \
- "
-
-SRC_URI[archive.md5sum] = "deb171a31a3ad76342d5195a1b5bbc7c"
-SRC_URI[archive.sha256sum] = "1d2b74cd63e8bd41961f2f8d952355aa0f9be6002b52c8aa7699d9f5da597c9d"
+ file://0001-Fix-build-reproducibility.patch"
+SRC_URI[archive.md5sum] = "c75cc5b833d934d98e83343832e20e5d"
+SRC_URI[archive.sha256sum] = "66a5b6cc13db73efed67b8e933584509f8ddb7b10a8a40c3850ca4a985ea1b1f"
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] = "--with-xft,--without-xft,virtual/libx11 libxft"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
+ ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-LEAD_SONAME = "libpango-1.0*"
-LIBV = "1.8.0"
+PACKAGECONFIG[x11] = ",,virtual/libx11 libxft"
+PACKAGECONFIG[tests] = "-Dinstall-tests=true, -Dinstall-tests=false"
+PACKAGECONFIG[thai] = ",,libthai"
-# This binary needs to be compiled for the host architecture. This isn't pretty!
-do_compile_prepend_class-target () {
- if ${@bb.utils.contains('PTEST_ENABLED', '1', 'true', 'false', d)}; then
- make CC="${BUILD_CC}" CFLAGS="" LDFLAGS="${BUILD_LDFLAGS}" AM_CPPFLAGS="$(pkg-config-native --cflags glib-2.0)" gen_all_unicode_LDADD="$(pkg-config-native --libs glib-2.0)" -C ${B}/tests gen-all-unicode
- fi
+GTKDOC_MESON_OPTION = "gtk_doc"
+GIR_MESON_OPTION = 'introspection'
+
+do_configure_prepend_toolchain-clang() {
+ sed -i -e "/Werror=implicit-fallthrough/d" ${S}/meson.build
}
+LEAD_SONAME = "libpango-1.0*"
+
FILES_${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}"
-FILES_${PN}-dev += "${libdir}/pango/${LIBV}/modules/*.la"
-RDEPENDS_${PN}-ptest += "liberation-fonts cantarell-fonts"
+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"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch b/external/poky/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch
deleted file mode 100644
index f851a92c..00000000
--- a/external/poky/meta/recipes-graphics/piglit/piglit/0001-tests-Use-FE_UPWARD-only-if-its-defined-in-fenv.h.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 0fc2c2932699cfd68be96c820fddfdd79b48b788 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: Use FE_UPWARD only if its defined in fenv.h
-
-On ARM, musl does not define FE_* when arch does not have
-VFP, (which is right interpretation), therefore check if
-its defined before using it
-
-Fixes errors like
-
-tests/general/roundmode-pixelstore.c:82:19: error: 'FE_UPWARD' undeclared (first use in this function)
- ret = fesetround(FE_UPWARD);
- ^~~~~~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- tests/general/roundmode-getintegerv.c | 2 ++
- tests/general/roundmode-pixelstore.c | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/tests/general/roundmode-getintegerv.c b/tests/general/roundmode-getintegerv.c
-index 28ecfaf..5c27579 100644
---- a/tests/general/roundmode-getintegerv.c
-+++ b/tests/general/roundmode-getintegerv.c
-@@ -81,7 +81,9 @@ piglit_init(int argc, char **argv)
- {
- int ret;
- bool pass = true;
-+#ifdef FE_UPWARD
- ret = fesetround(FE_UPWARD);
-+#endif
- if (ret != 0) {
- printf("Couldn't set rounding mode\n");
- piglit_report_result(PIGLIT_SKIP);
-diff --git a/tests/general/roundmode-pixelstore.c b/tests/general/roundmode-pixelstore.c
-index 9284f43..3fcb396 100644
---- a/tests/general/roundmode-pixelstore.c
-+++ b/tests/general/roundmode-pixelstore.c
-@@ -79,7 +79,9 @@ piglit_init(int argc, char **argv)
- {
- int ret;
- bool pass = true;
-+#ifdef FE_UPWARD
- ret = fesetround(FE_UPWARD);
-+#endif
- if (ret != 0) {
- printf("Couldn't set rounding mode\n");
- piglit_report_result(PIGLIT_SKIP);
---
-1.8.3.1
-
diff --git a/external/poky/meta/recipes-graphics/piglit/piglit_git.bb b/external/poky/meta/recipes-graphics/piglit/piglit_git.bb
index 1f7c6f96..58d10d6b 100644
--- a/external/poky/meta/recipes-graphics/piglit/piglit_git.bb
+++ b/external/poky/meta/recipes-graphics/piglit/piglit_git.bb
@@ -1,26 +1,27 @@
SUMMARY = "OpenGL driver testing framework"
+DESCRIPTION = "Piglit is an open-source test suite for OpenGL and OpenCL \
+implementations."
LICENSE = "MIT & LGPLv2+ & GPLv3 & GPLv2+ & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=b2beded7103a3d8a442a2a0391d607b0"
-SRC_URI = "git://anongit.freedesktop.org/piglit \
+SRC_URI = "git://gitlab.freedesktop.org/mesa/piglit.git;protocol=https \
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 \
"
UPSTREAM_CHECK_COMMITS = "1"
-# From 2018-08-13
-SRCREV = "57859e15dc8ba4034348b04d0b72f213b74d6347"
+SRCREV = "6126c2d4e476c7770d216ffa1932c10e2a5a7813"
# (when PV goes above 1.0 remove the trailing r)
PV = "1.0+gitr${SRCPV}"
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 virtual/libgl 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"
@@ -31,8 +32,10 @@ REQUIRED_DISTRO_FEATURES += "opengl"
export TEMP = "${B}/temp/"
do_compile[dirs] =+ "${B}/temp/"
-PACKAGECONFIG ??= ""
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
PACKAGECONFIG[freeglut] = "-DPIGLIT_USE_GLUT=1,-DPIGLIT_USE_GLUT=0,freeglut,"
+PACKAGECONFIG[x11] = "-DPIGLIT_BUILD_GL_TESTS=ON,-DPIGLIT_BUILD_GL_TESTS=OFF,${X11_DEPS}, ${X11_RDEPS}"
+
do_configure_prepend() {
if [ "${@bb.utils.contains('PACKAGECONFIG', 'freeglut', 'yes', 'no', d)}" = "no" ]; then
@@ -41,13 +44,21 @@ do_configure_prepend() {
fi
}
+# Forcibly strip because Piglit is *huge*
OECMAKE_TARGET_INSTALL = "install/strip"
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"
+
+# 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/external/poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb b/external/poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
index cdfe38a2..c3c237ee 100644
--- a/external/poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
+++ b/external/poky/meta/recipes-graphics/pong-clock/pong-clock_1.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "A clock combined with a game of pong"
LICENSE = "GPLv2+"
DEPENDS = "virtual/libx11 xdmcp xau"
-inherit distro_features_check pkgconfig
+inherit features_check pkgconfig
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/poky/meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch b/external/poky/meta/recipes-graphics/startup-notification/startup-notification-0.12/time_t.patch
new file mode 100644
index 00000000..e5dff007
--- /dev/null
+++ b/external/poky/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/external/poky/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb b/external/poky/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
index 6c1b93cd..d10bddb5 100644
--- a/external/poky/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
+++ b/external/poky/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
@@ -17,12 +17,13 @@ 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/external/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb b/external/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb
index 412da487..f5df9efa 100644
--- a/external/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb
+++ b/external/poky/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb
@@ -37,3 +37,5 @@ do_install () {
PACKAGES = "${PN}"
FILES_${PN} += "${sysconfdir} ${datadir}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb b/external/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
index 70b32cf8..3e1ba196 100644
--- a/external/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
+++ b/external/poky/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
@@ -9,7 +9,7 @@ LICENSE = "BitstreamVera"
LIC_FILES_CHKSUM = "file://COPYRIGHT.TXT;md5=27d7484b1e18d0ee4ce538644a3f04be"
PR = "r7"
-inherit fontcache
+inherit allarch fontcache
FONT_PACKAGES = "${PN}"
diff --git a/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch b/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch
new file mode 100644
index 00000000..a0ac3aef
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch
@@ -0,0 +1,36 @@
+From 3d30df8d8ccb919733b5339b2a82474305b83998 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 6 Aug 2019 01:19:48 +0000
+Subject: [PATCH] gallium: Expand libc check to be platform OS check
+
+endianness on musl based systems can also be detected in same way as
+glibc, therefore check for __linux__ define instead of __GLIBC__
+
+Fixes build on musl/mips
+
+| ../../../../git/src/gallium/include/pipe/p_config.h:171:2: error: #error Unknown Endianness
+| #error Unknown Endianness
+| ^~~~~
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/gallium/include/pipe/p_config.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gallium/include/pipe/p_config.h b/src/gallium/include/pipe/p_config.h
+index d603681..71cdf49 100644
+--- a/src/gallium/include/pipe/p_config.h
++++ b/src/gallium/include/pipe/p_config.h
+@@ -130,7 +130,7 @@
+ * Endian detection.
+ */
+
+-#ifdef __GLIBC__
++#ifdef __linux__
+ #include <endian.h>
+
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
+--
+2.17.1
+
diff --git a/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch b/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch
new file mode 100644
index 00000000..0fd1d511
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch
@@ -0,0 +1,27 @@
+From 63788c63ed39a3ce9994f4315d8997e1a9300d4d 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 682d7c8..19d2eae 100644
+--- a/meson.build
++++ b/meson.build
+@@ -60,7 +60,7 @@ foreach w : warnings
+ endif
+ endforeach
+
+-prog_python = import('python').find_installation('python3')
++prog_python = 'python3'
+
+ libdrm_dep = dependency('libdrm', version : '>=2.4.50')
+ thread_dep = dependency('threads')
diff --git a/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb b/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb
new file mode 100644
index 00000000..1046b850
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb
@@ -0,0 +1,26 @@
+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 mesa libepoxy"
+SRCREV = "7d204f3927be65fb3365dce01dbcd04d447a4985"
+SRC_URI = "git://anongit.freedesktop.org/virglrenderer \
+ file://0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch \
+ file://0001-meson.build-use-python3-directly-for-python.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig features_check
+
+BBCLASSEXTEND = "native nativesdk"
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+REQUIRED_DISTRO_FEATURES_class-native = ""
+REQUIRED_DISTRO_FEATURES_class-nativesdk = ""
diff --git a/external/poky/meta/recipes-graphics/vulkan/assimp/0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch b/external/poky/meta/recipes-graphics/vulkan/assimp/0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch
new file mode 100644
index 00000000..34c5bfa8
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/vulkan/assimp/0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch
@@ -0,0 +1,68 @@
+From 58f576d6f240b08957a402960cdf06c74201ac7b Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 12 Dec 2019 22:16:15 -0800
+Subject: [PATCH] Use ASSIMP_LIB_INSTALL_DIR to search library
+
+Use ASSIMP_LIB_INSTALL_DIR rather than hardcoded /lib to search library
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+---
+ assimpTargets-release.cmake.in | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/assimpTargets-release.cmake.in b/assimpTargets-release.cmake.in
+index f3db8f1..b8a066a 100644
+--- a/assimpTargets-release.cmake.in
++++ b/assimpTargets-release.cmake.in
+@@ -42,11 +42,11 @@ if(MSVC)
+ # Import target "assimp::assimp" for configuration "Release"
+ set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/${importLibraryName}"
++ IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${importLibraryName}"
+ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/${sharedLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${importLibraryName}")
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${importLibraryName}")
+ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" )
+ else()
+ set(staticLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_STATIC_LIBRARY_SUFFIX@")
+@@ -54,10 +54,10 @@ if(MSVC)
+ # Import target "assimp::assimp" for configuration "Release"
+ set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${staticLibraryName}"
++ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${staticLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${staticLibraryName}")
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${staticLibraryName}")
+ endif()
+
+ else()
+@@ -70,17 +70,17 @@ else()
+ endif()
+ set_target_properties(assimp::assimp PROPERTIES
+ IMPORTED_SONAME_RELEASE "${sharedLibraryName}"
+- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${sharedLibraryName}"
++ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${sharedLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" )
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${sharedLibraryName}" )
+ else()
+ set(staticLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_STATIC_LIBRARY_SUFFIX@")
+ set_target_properties(assimp::assimp PROPERTIES
+- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${staticLibraryName}"
++ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${staticLibraryName}"
+ )
+ list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
+- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${staticLibraryName}" )
++ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${staticLibraryName}" )
+ endif()
+ endif()
+
diff --git a/external/poky/meta/recipes-graphics/vulkan/assimp/0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch b/external/poky/meta/recipes-graphics/vulkan/assimp/0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch
new file mode 100644
index 00000000..87a16587
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/vulkan/assimp/0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch
@@ -0,0 +1,1664 @@
+From 7fc220b2350d78942fb3935cad0b1564418ebe8f Mon Sep 17 00:00:00 2001
+From: Kim Kulling <kim.kulling@googlemail.com>
+Date: Tue, 19 Nov 2019 20:30:40 +0100
+Subject: [PATCH] closes https://github.com/assimp/assimp/issues/2733: update
+ of zlip to fix gcc build for v9.2.0 32 bit
+
+Upstream-Status: Backport [https://github.com/assimp/assimp/commit/f78446b14aff46db2ef27d062a275b6a01fd68b1]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ contrib/zip/.gitignore | 2 +
+ contrib/zip/CMakeLists.txt | 83 +++++-
+ contrib/zip/README.md | 12 +-
+ contrib/zip/appveyor.yml | 2 +-
+ contrib/zip/src/miniz.h | 457 ++++++++++++++++++++++++++++----
+ contrib/zip/src/zip.c | 62 +++--
+ contrib/zip/src/zip.h | 457 ++++++++++++++++----------------
+ contrib/zip/test/CMakeLists.txt | 27 +-
+ contrib/zip/test/test.c | 38 ++-
+ contrib/zip/test/test_miniz.c | 25 +-
+ 10 files changed, 821 insertions(+), 344 deletions(-)
+
+diff --git a/contrib/zip/.gitignore b/contrib/zip/.gitignore
+index a7904a1e..49b2cb2f 100644
+--- a/contrib/zip/.gitignore
++++ b/contrib/zip/.gitignore
+@@ -1,6 +1,7 @@
+ /build/
+ /test/build/
+ /xcodeproj/
++.vscode/
+
+ # Object files
+ *.o
+@@ -54,3 +55,4 @@ zip.dir/
+ test/test.exe.vcxproj.filters
+ test/test.exe.vcxproj
+ test/test.exe.dir/
++
+diff --git a/contrib/zip/CMakeLists.txt b/contrib/zip/CMakeLists.txt
+index b46dbb1d..77916d2e 100644
+--- a/contrib/zip/CMakeLists.txt
++++ b/contrib/zip/CMakeLists.txt
+@@ -1,10 +1,14 @@
+-cmake_minimum_required(VERSION 2.8)
+-project(zip)
+-enable_language(C)
++cmake_minimum_required(VERSION 3.0)
++
++project(zip
++ LANGUAGES C
++ VERSION "0.1.15")
+ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
+
++option(CMAKE_DISABLE_TESTING "Disable test creation" OFF)
++
+ if (MSVC)
+- # Use secure functions by defaualt and suppress warnings about "deprecated" functions
++ # Use secure functions by default and suppress warnings about "deprecated" functions
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_NONSTDC_NO_WARNINGS=1 /D _CRT_SECURE_NO_WARNINGS=1")
+@@ -12,28 +16,80 @@ elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR
+ "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
+ "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra -Werror -pedantic")
++ if(ENABLE_COVERAGE)
++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
++ endif()
+ endif (MSVC)
+
+ # zip
+ set(SRC src/miniz.h src/zip.h src/zip.c)
+ add_library(${PROJECT_NAME} ${SRC})
+-target_include_directories(${PROJECT_NAME} INTERFACE src)
++target_include_directories(${PROJECT_NAME} PUBLIC
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
++ $<INSTALL_INTERFACE:include>
++)
+
+ # test
+ if (NOT CMAKE_DISABLE_TESTING)
+ enable_testing()
+ add_subdirectory(test)
+ find_package(Sanitizers)
+- add_sanitizers(${PROJECT_NAME} test.exe)
+- add_sanitizers(${PROJECT_NAME} test_miniz.exe)
++ add_sanitizers(${PROJECT_NAME} ${test_out} ${test_miniz_out})
+ endif()
+
++####
++# Installation (https://github.com/forexample/package-example) {
++
++set(CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}")
++set(INCLUDE_INSTALL_DIR "include")
++
++set(GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
++
++# Configuration
++set(VERSION_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
++set(PROJECT_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}Config.cmake")
++set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
++set(NAMESPACE "${PROJECT_NAME}::")
++
++# Include module with fuction 'write_basic_package_version_file'
++include(CMakePackageConfigHelpers)
++
++# Note: PROJECT_VERSION is used as a VERSION
++write_basic_package_version_file(
++ "${VERSION_CONFIG}" COMPATIBILITY SameMajorVersion
++)
++
++# Use variables:
++# * TARGETS_EXPORT_NAME
++# * PROJECT_NAME
++configure_package_config_file(
++ "cmake/Config.cmake.in"
++ "${PROJECT_CONFIG}"
++ INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}"
++)
++
++install(
++ FILES "${PROJECT_CONFIG}" "${VERSION_CONFIG}"
++ DESTINATION "${CONFIG_INSTALL_DIR}"
++)
++
++install(
++ EXPORT "${TARGETS_EXPORT_NAME}"
++ NAMESPACE "${NAMESPACE}"
++ DESTINATION "${CONFIG_INSTALL_DIR}"
++)
++
++# }
++
+ install(TARGETS ${PROJECT_NAME}
++ EXPORT ${TARGETS_EXPORT_NAME}
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+- COMPONENT library)
+-install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION include)
++ INCLUDES DESTINATION ${INCLUDE_INSTALL_DIR}
++)
++install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION ${INCLUDE_INSTALL_DIR}/zip)
+
+ # uninstall target (https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake)
+ if(NOT TARGET uninstall)
+@@ -45,3 +101,12 @@ if(NOT TARGET uninstall)
+ add_custom_target(uninstall
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake)
+ endif()
++
++find_package(Doxygen)
++if(DOXYGEN_FOUND)
++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
++ add_custom_target(doc
++ ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
++ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
++ COMMENT "Generating API documentation with Doxygen" VERBATIM)
++endif()
+diff --git a/contrib/zip/README.md b/contrib/zip/README.md
+index d5fb8cd2..14eb9a34 100644
+--- a/contrib/zip/README.md
++++ b/contrib/zip/README.md
+@@ -71,7 +71,7 @@ int arg = 2;
+ zip_extract("foo.zip", "/tmp", on_extract_entry, &arg);
+ ```
+
+-* Extract a zip entry into memory.
++* Extract a zip entry into memory.
+ ```c
+ void *buf = NULL;
+ size_t bufsize;
+@@ -89,7 +89,7 @@ zip_close(zip);
+ free(buf);
+ ```
+
+-* Extract a zip entry into memory (no internal allocation).
++* Extract a zip entry into memory (no internal allocation).
+ ```c
+ unsigned char *buf;
+ size_t bufsize;
+@@ -110,7 +110,7 @@ zip_close(zip);
+ free(buf);
+ ```
+
+-* Extract a zip entry into memory using callback.
++* Extract a zip entry into memory using callback.
+ ```c
+ struct buffer_t {
+ char *data;
+@@ -144,7 +144,7 @@ free(buf.data);
+ ```
+
+
+-* Extract a zip entry into a file.
++* Extract a zip entry into a file.
+ ```c
+ struct zip_t *zip = zip_open("foo.zip", 0, 'r');
+ {
+@@ -157,7 +157,7 @@ struct zip_t *zip = zip_open("foo.zip", 0, 'r');
+ zip_close(zip);
+ ```
+
+-* List of all zip entries
++* List of all zip entries
+ ```c
+ struct zip_t *zip = zip_open("foo.zip", 0, 'r');
+ int i, n = zip_total_entries(zip);
+@@ -174,7 +174,7 @@ for (i = 0; i < n; ++i) {
+ zip_close(zip);
+ ```
+
+-## Bindings
++# Bindings
+ Compile zip library as a dynamic library.
+ ```shell
+ $ mkdir build
+diff --git a/contrib/zip/appveyor.yml b/contrib/zip/appveyor.yml
+index 0be6373c..ea17f5de 100644
+--- a/contrib/zip/appveyor.yml
++++ b/contrib/zip/appveyor.yml
+@@ -1,4 +1,4 @@
+-version: zip-0.1.9.{build}
++version: zip-0.1.15.{build}
+ build_script:
+ - cmd: >-
+ cd c:\projects\zip
+diff --git a/contrib/zip/src/miniz.h b/contrib/zip/src/miniz.h
+index 2c27a94d..c4fcfb83 100644
+--- a/contrib/zip/src/miniz.h
++++ b/contrib/zip/src/miniz.h
+@@ -221,6 +221,7 @@
+ #ifndef MINIZ_HEADER_INCLUDED
+ #define MINIZ_HEADER_INCLUDED
+
++#include <stdint.h>
+ #include <stdlib.h>
+
+ // Defines to completely disable specific portions of miniz.c:
+@@ -284,7 +285,8 @@
+ /* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */
+ #if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
+ #if MINIZ_X86_OR_X64_CPU
+-/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */
++/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient
++ * integer loads and stores from unaligned addresses. */
+ #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
+ #define MINIZ_UNALIGNED_USE_MEMCPY
+ #else
+@@ -354,6 +356,44 @@ enum {
+ MZ_FIXED = 4
+ };
+
++/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or
++ * modify this enum. */
++typedef enum {
++ MZ_ZIP_NO_ERROR = 0,
++ MZ_ZIP_UNDEFINED_ERROR,
++ MZ_ZIP_TOO_MANY_FILES,
++ MZ_ZIP_FILE_TOO_LARGE,
++ MZ_ZIP_UNSUPPORTED_METHOD,
++ MZ_ZIP_UNSUPPORTED_ENCRYPTION,
++ MZ_ZIP_UNSUPPORTED_FEATURE,
++ MZ_ZIP_FAILED_FINDING_CENTRAL_DIR,
++ MZ_ZIP_NOT_AN_ARCHIVE,
++ MZ_ZIP_INVALID_HEADER_OR_CORRUPTED,
++ MZ_ZIP_UNSUPPORTED_MULTIDISK,
++ MZ_ZIP_DECOMPRESSION_FAILED,
++ MZ_ZIP_COMPRESSION_FAILED,
++ MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE,
++ MZ_ZIP_CRC_CHECK_FAILED,
++ MZ_ZIP_UNSUPPORTED_CDIR_SIZE,
++ MZ_ZIP_ALLOC_FAILED,
++ MZ_ZIP_FILE_OPEN_FAILED,
++ MZ_ZIP_FILE_CREATE_FAILED,
++ MZ_ZIP_FILE_WRITE_FAILED,
++ MZ_ZIP_FILE_READ_FAILED,
++ MZ_ZIP_FILE_CLOSE_FAILED,
++ MZ_ZIP_FILE_SEEK_FAILED,
++ MZ_ZIP_FILE_STAT_FAILED,
++ MZ_ZIP_INVALID_PARAMETER,
++ MZ_ZIP_INVALID_FILENAME,
++ MZ_ZIP_BUF_TOO_SMALL,
++ MZ_ZIP_INTERNAL_ERROR,
++ MZ_ZIP_FILE_NOT_FOUND,
++ MZ_ZIP_ARCHIVE_TOO_LARGE,
++ MZ_ZIP_VALIDATION_FAILED,
++ MZ_ZIP_WRITE_CALLBACK_FAILED,
++ MZ_ZIP_TOTAL_ERRORS
++} mz_zip_error;
++
+ // Method
+ #define MZ_DEFLATED 8
+
+@@ -696,6 +736,7 @@ typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs,
+ void *pBuf, size_t n);
+ typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs,
+ const void *pBuf, size_t n);
++typedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque);
+
+ struct mz_zip_internal_state_tag;
+ typedef struct mz_zip_internal_state_tag mz_zip_internal_state;
+@@ -707,13 +748,27 @@ typedef enum {
+ MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3
+ } mz_zip_mode;
+
+-typedef struct mz_zip_archive_tag {
++typedef enum {
++ MZ_ZIP_TYPE_INVALID = 0,
++ MZ_ZIP_TYPE_USER,
++ MZ_ZIP_TYPE_MEMORY,
++ MZ_ZIP_TYPE_HEAP,
++ MZ_ZIP_TYPE_FILE,
++ MZ_ZIP_TYPE_CFILE,
++ MZ_ZIP_TOTAL_TYPES
++} mz_zip_type;
++
++typedef struct {
+ mz_uint64 m_archive_size;
+ mz_uint64 m_central_directory_file_ofs;
+- mz_uint m_total_files;
++
++ /* We only support up to UINT32_MAX files in zip64 mode. */
++ mz_uint32 m_total_files;
+ mz_zip_mode m_zip_mode;
++ mz_zip_type m_zip_type;
++ mz_zip_error m_last_error;
+
+- mz_uint m_file_offset_alignment;
++ mz_uint64 m_file_offset_alignment;
+
+ mz_alloc_func m_pAlloc;
+ mz_free_func m_pFree;
+@@ -722,6 +777,7 @@ typedef struct mz_zip_archive_tag {
+
+ mz_file_read_func m_pRead;
+ mz_file_write_func m_pWrite;
++ mz_file_needs_keepalive m_pNeeds_keepalive;
+ void *m_pIO_opaque;
+
+ mz_zip_internal_state *m_pState;
+@@ -1263,6 +1319,9 @@ mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits,
+ int strategy);
+ #endif // #ifndef MINIZ_NO_ZLIB_APIS
+
++#define MZ_UINT16_MAX (0xFFFFU)
++#define MZ_UINT32_MAX (0xFFFFFFFFU)
++
+ #ifdef __cplusplus
+ }
+ #endif
+@@ -1311,6 +1370,11 @@ typedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1];
+ ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U))
+ #endif
+
++#define MZ_READ_LE64(p) \
++ (((mz_uint64)MZ_READ_LE32(p)) | \
++ (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32))) \
++ << 32U))
++
+ #ifdef _MSC_VER
+ #define MZ_FORCEINLINE __forceinline
+ #elif defined(__GNUC__)
+@@ -4160,6 +4224,17 @@ enum {
+ MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30,
+ MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46,
+ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22,
++
++ /* ZIP64 archive identifier and record sizes */
++ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06064b50,
++ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50,
++ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE = 56,
++ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE = 20,
++ MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID = 0x0001,
++ MZ_ZIP_DATA_DESCRIPTOR_ID = 0x08074b50,
++ MZ_ZIP_DATA_DESCRIPTER_SIZE64 = 24,
++ MZ_ZIP_DATA_DESCRIPTER_SIZE32 = 16,
++
+ // Central directory header record offsets
+ MZ_ZIP_CDH_SIG_OFS = 0,
+ MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4,
+@@ -4199,6 +4274,31 @@ enum {
+ MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12,
+ MZ_ZIP_ECDH_CDIR_OFS_OFS = 16,
+ MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20,
++
++ /* ZIP64 End of central directory locator offsets */
++ MZ_ZIP64_ECDL_SIG_OFS = 0, /* 4 bytes */
++ MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS = 4, /* 4 bytes */
++ MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS = 8, /* 8 bytes */
++ MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS = 16, /* 4 bytes */
++
++ /* ZIP64 End of central directory header offsets */
++ MZ_ZIP64_ECDH_SIG_OFS = 0, /* 4 bytes */
++ MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS = 4, /* 8 bytes */
++ MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS = 12, /* 2 bytes */
++ MZ_ZIP64_ECDH_VERSION_NEEDED_OFS = 14, /* 2 bytes */
++ MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS = 16, /* 4 bytes */
++ MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS = 20, /* 4 bytes */
++ MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 24, /* 8 bytes */
++ MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS = 32, /* 8 bytes */
++ MZ_ZIP64_ECDH_CDIR_SIZE_OFS = 40, /* 8 bytes */
++ MZ_ZIP64_ECDH_CDIR_OFS_OFS = 48, /* 8 bytes */
++ MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID = 0,
++ MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG = 0x10,
++ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED = 1,
++ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG = 32,
++ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION = 64,
++ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED = 8192,
++ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8 = 1 << 11
+ };
+
+ typedef struct {
+@@ -4211,7 +4311,24 @@ struct mz_zip_internal_state_tag {
+ mz_zip_array m_central_dir;
+ mz_zip_array m_central_dir_offsets;
+ mz_zip_array m_sorted_central_dir_offsets;
++
++ /* The flags passed in when the archive is initially opened. */
++ uint32_t m_init_flags;
++
++ /* MZ_TRUE if the archive has a zip64 end of central directory headers, etc.
++ */
++ mz_bool m_zip64;
++
++ /* MZ_TRUE if we found zip64 extended info in the central directory (m_zip64
++ * will also be slammed to true too, even if we didn't find a zip64 end of
++ * central dir header, etc.) */
++ mz_bool m_zip64_has_extended_info_fields;
++
++ /* These fields are used by the file, FILE, memory, and memory/heap read/write
++ * helpers. */
+ MZ_FILE *m_pFile;
++ mz_uint64 m_file_archive_start_ofs;
++
+ void *m_pMem;
+ size_t m_mem_size;
+ size_t m_mem_capacity;
+@@ -4363,6 +4480,13 @@ static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time,
+ #endif /* #ifndef MINIZ_NO_STDIO */
+ #endif /* #ifndef MINIZ_NO_TIME */
+
++static MZ_FORCEINLINE mz_bool mz_zip_set_error(mz_zip_archive *pZip,
++ mz_zip_error err_num) {
++ if (pZip)
++ pZip->m_last_error = err_num;
++ return MZ_FALSE;
++}
++
+ static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip,
+ mz_uint32 flags) {
+ (void)flags;
+@@ -4480,127 +4604,346 @@ mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) {
+ }
+ }
+
+-static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip,
+- mz_uint32 flags) {
+- mz_uint cdir_size, num_this_disk, cdir_disk_index;
+- mz_uint64 cdir_ofs;
++static mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip,
++ mz_uint32 record_sig,
++ mz_uint32 record_size,
++ mz_int64 *pOfs) {
+ mz_int64 cur_file_ofs;
+- const mz_uint8 *p;
+ mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];
+ mz_uint8 *pBuf = (mz_uint8 *)buf_u32;
+- mz_bool sort_central_dir =
+- ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);
+- // Basic sanity checks - reject files which are too small, and check the first
+- // 4 bytes of the file to make sure a local header is there.
+- if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
++
++ /* Basic sanity checks - reject files which are too small */
++ if (pZip->m_archive_size < record_size)
+ return MZ_FALSE;
+- // Find the end of central directory record by scanning the file from the end
+- // towards the beginning.
++
++ /* Find the record by scanning the file from the end towards the beginning. */
+ cur_file_ofs =
+ MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0);
+ for (;;) {
+ int i,
+ n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs);
++
+ if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n)
+ return MZ_FALSE;
+- for (i = n - 4; i >= 0; --i)
+- if (MZ_READ_LE32(pBuf + i) == MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)
+- break;
++
++ for (i = n - 4; i >= 0; --i) {
++ mz_uint s = MZ_READ_LE32(pBuf + i);
++ if (s == record_sig) {
++ if ((pZip->m_archive_size - (cur_file_ofs + i)) >= record_size)
++ break;
++ }
++ }
++
+ if (i >= 0) {
+ cur_file_ofs += i;
+ break;
+ }
++
++ /* Give up if we've searched the entire file, or we've gone back "too far"
++ * (~64kb) */
+ if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >=
+- (0xFFFF + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)))
++ (MZ_UINT16_MAX + record_size)))
+ return MZ_FALSE;
++
+ cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0);
+ }
+- // Read and verify the end of central directory record.
++
++ *pOfs = cur_file_ofs;
++ return MZ_TRUE;
++}
++
++static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip,
++ mz_uint flags) {
++ mz_uint cdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0,
++ cdir_disk_index = 0;
++ mz_uint64 cdir_ofs = 0;
++ mz_int64 cur_file_ofs = 0;
++ const mz_uint8 *p;
++
++ mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];
++ mz_uint8 *pBuf = (mz_uint8 *)buf_u32;
++ mz_bool sort_central_dir =
++ ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);
++ mz_uint32 zip64_end_of_central_dir_locator_u32
++ [(MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + sizeof(mz_uint32) - 1) /
++ sizeof(mz_uint32)];
++ mz_uint8 *pZip64_locator = (mz_uint8 *)zip64_end_of_central_dir_locator_u32;
++
++ mz_uint32 zip64_end_of_central_dir_header_u32
++ [(MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) /
++ sizeof(mz_uint32)];
++ mz_uint8 *pZip64_end_of_central_dir =
++ (mz_uint8 *)zip64_end_of_central_dir_header_u32;
++
++ mz_uint64 zip64_end_of_central_dir_ofs = 0;
++
++ /* Basic sanity checks - reject files which are too small, and check the first
++ * 4 bytes of the file to make sure a local header is there. */
++ if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
++ return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
++
++ if (!mz_zip_reader_locate_header_sig(
++ pZip, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG,
++ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE, &cur_file_ofs))
++ return mz_zip_set_error(pZip, MZ_ZIP_FAILED_FINDING_CENTRAL_DIR);
++
++ /* Read and verify the end of central directory record. */
+ if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf,
+ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) !=
+ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
+- return MZ_FALSE;
+- if ((MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) !=
+- MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) ||
+- ((pZip->m_total_files =
+- MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS)) !=
+- MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS)))
+- return MZ_FALSE;
++ return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
++
++ if (MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) !=
++ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)
++ return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
++
++ if (cur_file_ofs >= (MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE +
++ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) {
++ if (pZip->m_pRead(pZip->m_pIO_opaque,
++ cur_file_ofs - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE,
++ pZip64_locator,
++ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) ==
++ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) {
++ if (MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_SIG_OFS) ==
++ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG) {
++ zip64_end_of_central_dir_ofs = MZ_READ_LE64(
++ pZip64_locator + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS);
++ if (zip64_end_of_central_dir_ofs >
++ (pZip->m_archive_size - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE))
++ return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
++
++ if (pZip->m_pRead(pZip->m_pIO_opaque, zip64_end_of_central_dir_ofs,
++ pZip64_end_of_central_dir,
++ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) ==
++ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) {
++ if (MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIG_OFS) ==
++ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG) {
++ pZip->m_pState->m_zip64 = MZ_TRUE;
++ }
++ }
++ }
++ }
++ }
+
++ pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS);
++ cdir_entries_on_this_disk =
++ MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);
+ num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS);
+ cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS);
++ cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS);
++ cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);
++
++ if (pZip->m_pState->m_zip64) {
++ mz_uint32 zip64_total_num_of_disks =
++ MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS);
++ mz_uint64 zip64_cdir_total_entries = MZ_READ_LE64(
++ pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS);
++ mz_uint64 zip64_cdir_total_entries_on_this_disk = MZ_READ_LE64(
++ pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);
++ mz_uint64 zip64_size_of_end_of_central_dir_record = MZ_READ_LE64(
++ pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS);
++ mz_uint64 zip64_size_of_central_directory =
++ MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_SIZE_OFS);
++
++ if (zip64_size_of_end_of_central_dir_record <
++ (MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - 12))
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
++
++ if (zip64_total_num_of_disks != 1U)
++ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
++
++ /* Check for miniz's practical limits */
++ if (zip64_cdir_total_entries > MZ_UINT32_MAX)
++ return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);
++
++ pZip->m_total_files = (mz_uint32)zip64_cdir_total_entries;
++
++ if (zip64_cdir_total_entries_on_this_disk > MZ_UINT32_MAX)
++ return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);
++
++ cdir_entries_on_this_disk =
++ (mz_uint32)zip64_cdir_total_entries_on_this_disk;
++
++ /* Check for miniz's current practical limits (sorry, this should be enough
++ * for millions of files) */
++ if (zip64_size_of_central_directory > MZ_UINT32_MAX)
++ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);
++
++ cdir_size = (mz_uint32)zip64_size_of_central_directory;
++
++ num_this_disk = MZ_READ_LE32(pZip64_end_of_central_dir +
++ MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS);
++
++ cdir_disk_index = MZ_READ_LE32(pZip64_end_of_central_dir +
++ MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS);
++
++ cdir_ofs =
++ MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_OFS_OFS);
++ }
++
++ if (pZip->m_total_files != cdir_entries_on_this_disk)
++ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
++
+ if (((num_this_disk | cdir_disk_index) != 0) &&
+ ((num_this_disk != 1) || (cdir_disk_index != 1)))
+- return MZ_FALSE;
++ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
+
+- if ((cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS)) <
+- pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)
+- return MZ_FALSE;
++ if (cdir_size < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
+
+- cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);
+ if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size)
+- return MZ_FALSE;
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
+
+ pZip->m_central_directory_file_ofs = cdir_ofs;
+
+ if (pZip->m_total_files) {
+ mz_uint i, n;
+-
+- // Read the entire central directory into a heap block, and allocate another
+- // heap block to hold the unsorted central dir file record offsets, and
+- // another to hold the sorted indices.
++ /* Read the entire central directory into a heap block, and allocate another
++ * heap block to hold the unsorted central dir file record offsets, and
++ * possibly another to hold the sorted indices. */
+ if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size,
+ MZ_FALSE)) ||
+ (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets,
+ pZip->m_total_files, MZ_FALSE)))
+- return MZ_FALSE;
++ return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
+
+ if (sort_central_dir) {
+ if (!mz_zip_array_resize(pZip,
+ &pZip->m_pState->m_sorted_central_dir_offsets,
+ pZip->m_total_files, MZ_FALSE))
+- return MZ_FALSE;
++ return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
+ }
+
+ if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs,
+ pZip->m_pState->m_central_dir.m_p,
+ cdir_size) != cdir_size)
+- return MZ_FALSE;
++ return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
+
+- // Now create an index into the central directory file records, do some
+- // basic sanity checking on each record, and check for zip64 entries (which
+- // are not yet supported).
++ /* Now create an index into the central directory file records, do some
++ * basic sanity checking on each record */
+ p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p;
+ for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) {
+- mz_uint total_header_size, comp_size, decomp_size, disk_index;
++ mz_uint total_header_size, disk_index, bit_flags, filename_size,
++ ext_data_size;
++ mz_uint64 comp_size, decomp_size, local_header_ofs;
++
+ if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) ||
+ (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG))
+- return MZ_FALSE;
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
++
+ MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32,
+ i) =
+ (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p);
++
+ if (sort_central_dir)
+ MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets,
+ mz_uint32, i) = i;
++
+ comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);
+ decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);
+- if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) &&
+- (decomp_size != comp_size)) ||
+- (decomp_size && !comp_size) || (decomp_size == 0xFFFFFFFF) ||
+- (comp_size == 0xFFFFFFFF))
+- return MZ_FALSE;
++ local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS);
++ filename_size = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);
++ ext_data_size = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS);
++
++ if ((!pZip->m_pState->m_zip64_has_extended_info_fields) &&
++ (ext_data_size) &&
++ (MZ_MAX(MZ_MAX(comp_size, decomp_size), local_header_ofs) ==
++ MZ_UINT32_MAX)) {
++ /* Attempt to find zip64 extended information field in the entry's extra
++ * data */
++ mz_uint32 extra_size_remaining = ext_data_size;
++
++ if (extra_size_remaining) {
++ const mz_uint8 *pExtra_data;
++ void *buf = NULL;
++
++ if (MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + ext_data_size >
++ n) {
++ buf = MZ_MALLOC(ext_data_size);
++ if (buf == NULL)
++ return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
++
++ if (pZip->m_pRead(pZip->m_pIO_opaque,
++ cdir_ofs + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
++ filename_size,
++ buf, ext_data_size) != ext_data_size) {
++ MZ_FREE(buf);
++ return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
++ }
++
++ pExtra_data = (mz_uint8 *)buf;
++ } else {
++ pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size;
++ }
++
++ do {
++ mz_uint32 field_id;
++ mz_uint32 field_data_size;
++
++ if (extra_size_remaining < (sizeof(mz_uint16) * 2)) {
++ MZ_FREE(buf);
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
++ }
++
++ field_id = MZ_READ_LE16(pExtra_data);
++ field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));
++
++ if ((field_data_size + sizeof(mz_uint16) * 2) >
++ extra_size_remaining) {
++ MZ_FREE(buf);
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
++ }
++
++ if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) {
++ /* Ok, the archive didn't have any zip64 headers but it uses a
++ * zip64 extended information field so mark it as zip64 anyway
++ * (this can occur with infozip's zip util when it reads
++ * compresses files from stdin). */
++ pZip->m_pState->m_zip64 = MZ_TRUE;
++ pZip->m_pState->m_zip64_has_extended_info_fields = MZ_TRUE;
++ break;
++ }
++
++ pExtra_data += sizeof(mz_uint16) * 2 + field_data_size;
++ extra_size_remaining =
++ extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size;
++ } while (extra_size_remaining);
++
++ MZ_FREE(buf);
++ }
++ }
++
++ /* I've seen archives that aren't marked as zip64 that uses zip64 ext
++ * data, argh */
++ if ((comp_size != MZ_UINT32_MAX) && (decomp_size != MZ_UINT32_MAX)) {
++ if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) &&
++ (decomp_size != comp_size)) ||
++ (decomp_size && !comp_size))
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
++ }
++
+ disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS);
+- if ((disk_index != num_this_disk) && (disk_index != 1))
+- return MZ_FALSE;
+- if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) +
+- MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)
+- return MZ_FALSE;
++ if ((disk_index == MZ_UINT16_MAX) ||
++ ((disk_index != num_this_disk) && (disk_index != 1)))
++ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
++
++ if (comp_size != MZ_UINT32_MAX) {
++ if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) +
++ MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
++ }
++
++ bit_flags = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);
++ if (bit_flags & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED)
++ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);
++
+ if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
+ MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) +
+ MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) +
+ MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) >
+ n)
+- return MZ_FALSE;
++ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
++
+ n -= total_header_size;
+ p += total_header_size;
+ }
+diff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c
+index ff3a8fe1..1abcfd8f 100644
+--- a/contrib/zip/src/zip.c
++++ b/contrib/zip/src/zip.c
+@@ -24,7 +24,6 @@
+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) && \
+ (P)[1] == ':')
+ #define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE(P) ? 2 : 0)
+-#define ISSLASH(C) ((C) == '/' || (C) == '\\')
+
+ #else
+
+@@ -48,7 +47,7 @@ int symlink(const char *target, const char *linkpath); // needed on Linux
+ #endif
+
+ #ifndef ISSLASH
+-#define ISSLASH(C) ((C) == '/')
++#define ISSLASH(C) ((C) == '/' || (C) == '\\')
+ #endif
+
+ #define CLEANUP(ptr) \
+@@ -78,26 +77,34 @@ static const char *base_name(const char *name) {
+ return base;
+ }
+
+-static int mkpath(const char *path) {
+- char const *p;
++static int mkpath(char *path) {
++ char *p;
+ char npath[MAX_PATH + 1];
+ int len = 0;
+ int has_device = HAS_DEVICE(path);
+
+ memset(npath, 0, MAX_PATH + 1);
+-
+-#ifdef _WIN32
+- // only on windows fix the path
+- npath[0] = path[0];
+- npath[1] = path[1];
+- len = 2;
+-#endif // _WIN32
+-
++ if (has_device) {
++ // only on windows
++ npath[0] = path[0];
++ npath[1] = path[1];
++ len = 2;
++ }
+ for (p = path + len; *p && len < MAX_PATH; p++) {
+ if (ISSLASH(*p) && ((!has_device && len > 0) || (has_device && len > 2))) {
+- if (MKDIR(npath) == -1)
+- if (errno != EEXIST)
++#if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) || \
++ defined(__MINGW32__)
++#else
++ if ('\\' == *p) {
++ *p = '/';
++ }
++#endif
++
++ if (MKDIR(npath) == -1) {
++ if (errno != EEXIST) {
+ return -1;
++ }
++ }
+ }
+ npath[len++] = *p;
+ }
+@@ -279,7 +286,14 @@ int zip_entry_open(struct zip_t *zip, const char *entryname) {
+ zip->entry.header_offset = zip->archive.m_archive_size;
+ memset(zip->entry.header, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE * sizeof(mz_uint8));
+ zip->entry.method = 0;
++
++ // UNIX or APPLE
++#if MZ_PLATFORM == 3 || MZ_PLATFORM == 19
++ // regular file with rw-r--r-- persmissions
++ zip->entry.external_attr = (mz_uint32)(0100644) << 16;
++#else
+ zip->entry.external_attr = 0;
++#endif
+
+ num_alignment_padding_bytes =
+ mz_zip_writer_compute_padding_needed_for_file_alignment(pzip);
+@@ -660,7 +674,7 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {
+ }
+
+ if (!mz_zip_reader_extract_to_mem_no_alloc(pzip, (mz_uint)zip->entry.index,
+- buf, bufsize, 0, NULL, 0)) {
++ buf, bufsize, 0, NULL, 0)) {
+ return -1;
+ }
+
+@@ -670,10 +684,7 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {
+ int zip_entry_fread(struct zip_t *zip, const char *filename) {
+ mz_zip_archive *pzip = NULL;
+ mz_uint idx;
+-#if defined(_MSC_VER)
+-#else
+ mz_uint32 xattr = 0;
+-#endif
+ mz_zip_archive_file_stat info;
+
+ if (!zip) {
+@@ -875,12 +886,19 @@ int zip_extract(const char *zipname, const char *dir,
+ goto out;
+ }
+
+- if ((((info.m_version_made_by >> 8) == 3) || ((info.m_version_made_by >> 8) == 19)) // if zip is produced on Unix or macOS (3 and 19 from section 4.4.2.2 of zip standard)
+- && info.m_external_attr & (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40 is directory)
++ if ((((info.m_version_made_by >> 8) == 3) ||
++ ((info.m_version_made_by >> 8) ==
++ 19)) // if zip is produced on Unix or macOS (3 and 19 from
++ // section 4.4.2.2 of zip standard)
++ && info.m_external_attr &
++ (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40
++ // is directory)
+ #if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) || \
+ defined(__MINGW32__)
+-#else
+- if (info.m_uncomp_size > MAX_PATH || !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to, MAX_PATH, 0, NULL, 0)) {
++#else
++ if (info.m_uncomp_size > MAX_PATH ||
++ !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to,
++ MAX_PATH, 0, NULL, 0)) {
+ goto out;
+ }
+ symlink_to[info.m_uncomp_size] = '\0';
+diff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h
+index 5f39df50..a48d64d6 100644
+--- a/contrib/zip/src/zip.h
++++ b/contrib/zip/src/zip.h
+@@ -20,241 +20,240 @@ extern "C" {
+ #endif
+
+ #if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) && \
+- !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(__ssize_t_defined)
+-#define _SSIZE_T
++ !defined(__DEFINED_ssize_t) && !defined(__ssize_t_defined) && \
++ !defined(_SSIZE_T) && !defined(_SSIZE_T_)
++
+ // 64-bit Windows is the only mainstream platform
+ // where sizeof(long) != sizeof(void*)
+ #ifdef _WIN64
+-typedef long long ssize_t; /* byte count or error */
++typedef long long ssize_t; /* byte count or error */
+ #else
+-typedef long ssize_t; /* byte count or error */
++typedef long ssize_t; /* byte count or error */
+ #endif
++
++#define _SSIZE_T_DEFINED
++#define _SSIZE_T_DEFINED_
++#define __DEFINED_ssize_t
++#define __ssize_t_defined
++#define _SSIZE_T
++#define _SSIZE_T_
++
+ #endif
+
+ #ifndef MAX_PATH
+ #define MAX_PATH 32767 /* # chars in a path name including NULL */
+ #endif
+
++/**
++ * @mainpage
++ *
++ * Documenation for @ref zip.
++ */
++
++/**
++ * @addtogroup zip
++ * @{
++ */
++
++/**
++ * Default zip compression level.
++ */
++
+ #define ZIP_DEFAULT_COMPRESSION_LEVEL 6
+
+-/*
+- This data structure is used throughout the library to represent zip archive
+- - forward declaration.
+-*/
++/**
++ * @struct zip_t
++ *
++ * This data structure is used throughout the library to represent zip archive -
++ * forward declaration.
++ */
+ struct zip_t;
+
+-/*
+- Opens zip archive with compression level using the given mode.
+-
+- Args:
+- zipname: zip archive file name.
+- level: compression level (0-9 are the standard zlib-style levels).
+- mode: file access mode.
+- 'r': opens a file for reading/extracting (the file must exists).
+- 'w': creates an empty file for writing.
+- 'a': appends to an existing archive.
+-
+- Returns:
+- The zip archive handler or NULL on error
+-*/
++/**
++ * Opens zip archive with compression level using the given mode.
++ *
++ * @param zipname zip archive file name.
++ * @param level compression level (0-9 are the standard zlib-style levels).
++ * @param mode file access mode.
++ * - 'r': opens a file for reading/extracting (the file must exists).
++ * - 'w': creates an empty file for writing.
++ * - 'a': appends to an existing archive.
++ *
++ * @return the zip archive handler or NULL on error
++ */
+ extern struct zip_t *zip_open(const char *zipname, int level, char mode);
+
+-/*
+- Closes the zip archive, releases resources - always finalize.
+-
+- Args:
+- zip: zip archive handler.
+-*/
++/**
++ * Closes the zip archive, releases resources - always finalize.
++ *
++ * @param zip zip archive handler.
++ */
+ extern void zip_close(struct zip_t *zip);
+
+-/*
+- Opens an entry by name in the zip archive.
+- For zip archive opened in 'w' or 'a' mode the function will append
+- a new entry. In readonly mode the function tries to locate the entry
+- in global dictionary.
+-
+- Args:
+- zip: zip archive handler.
+- entryname: an entry name in local dictionary.
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
+-*/
++/**
++ * Opens an entry by name in the zip archive.
++ *
++ * For zip archive opened in 'w' or 'a' mode the function will append
++ * a new entry. In readonly mode the function tries to locate the entry
++ * in global dictionary.
++ *
++ * @param zip zip archive handler.
++ * @param entryname an entry name in local dictionary.
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
++ */
+ extern int zip_entry_open(struct zip_t *zip, const char *entryname);
+
+-/*
+- Opens a new entry by index in the zip archive.
+- This function is only valid if zip archive was opened in 'r' (readonly) mode.
+-
+- Args:
+- zip: zip archive handler.
+- index: index in local dictionary.
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
+-*/
++/**
++ * Opens a new entry by index in the zip archive.
++ *
++ * This function is only valid if zip archive was opened in 'r' (readonly) mode.
++ *
++ * @param zip zip archive handler.
++ * @param index index in local dictionary.
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
++ */
+ extern int zip_entry_openbyindex(struct zip_t *zip, int index);
+
+-/*
+- Closes a zip entry, flushes buffer and releases resources.
+-
+- Args:
+- zip: zip archive handler.
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
+-*/
++/**
++ * Closes a zip entry, flushes buffer and releases resources.
++ *
++ * @param zip zip archive handler.
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
++ */
+ extern int zip_entry_close(struct zip_t *zip);
+
+-/*
+- Returns a local name of the current zip entry.
+- The main difference between user's entry name and local entry name
+- is optional relative path.
+- Following .ZIP File Format Specification - the path stored MUST not contain
+- a drive or device letter, or a leading slash.
+- All slashes MUST be forward slashes '/' as opposed to backwards slashes '\'
+- for compatibility with Amiga and UNIX file systems etc.
+-
+- Args:
+- zip: zip archive handler.
+-
+- Returns:
+- The pointer to the current zip entry name, or NULL on error.
+-*/
++/**
++ * Returns a local name of the current zip entry.
++ *
++ * The main difference between user's entry name and local entry name
++ * is optional relative path.
++ * Following .ZIP File Format Specification - the path stored MUST not contain
++ * a drive or device letter, or a leading slash.
++ * All slashes MUST be forward slashes '/' as opposed to backwards slashes '\'
++ * for compatibility with Amiga and UNIX file systems etc.
++ *
++ * @param zip: zip archive handler.
++ *
++ * @return the pointer to the current zip entry name, or NULL on error.
++ */
+ extern const char *zip_entry_name(struct zip_t *zip);
+
+-/*
+- Returns an index of the current zip entry.
+-
+- Args:
+- zip: zip archive handler.
+-
+- Returns:
+- The index on success, negative number (< 0) on error.
+-*/
++/**
++ * Returns an index of the current zip entry.
++ *
++ * @param zip zip archive handler.
++ *
++ * @return the index on success, negative number (< 0) on error.
++ */
+ extern int zip_entry_index(struct zip_t *zip);
+
+-/*
+- Determines if the current zip entry is a directory entry.
+-
+- Args:
+- zip: zip archive handler.
+-
+- Returns:
+- The return code - 1 (true), 0 (false), negative number (< 0) on error.
+-*/
++/**
++ * Determines if the current zip entry is a directory entry.
++ *
++ * @param zip zip archive handler.
++ *
++ * @return the return code - 1 (true), 0 (false), negative number (< 0) on
++ * error.
++ */
+ extern int zip_entry_isdir(struct zip_t *zip);
+
+-/*
+- Returns an uncompressed size of the current zip entry.
+-
+- Args:
+- zip: zip archive handler.
+-
+- Returns:
+- The uncompressed size in bytes.
+-*/
++/**
++ * Returns an uncompressed size of the current zip entry.
++ *
++ * @param zip zip archive handler.
++ *
++ * @return the uncompressed size in bytes.
++ */
+ extern unsigned long long zip_entry_size(struct zip_t *zip);
+
+-/*
+- Returns CRC-32 checksum of the current zip entry.
+-
+- Args:
+- zip: zip archive handler.
+-
+- Returns:
+- The CRC-32 checksum.
+-*/
++/**
++ * Returns CRC-32 checksum of the current zip entry.
++ *
++ * @param zip zip archive handler.
++ *
++ * @return the CRC-32 checksum.
++ */
+ extern unsigned int zip_entry_crc32(struct zip_t *zip);
+
+-/*
+- Compresses an input buffer for the current zip entry.
+-
+- Args:
+- zip: zip archive handler.
+- buf: input buffer.
+- bufsize: input buffer size (in bytes).
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
+-*/
++/**
++ * Compresses an input buffer for the current zip entry.
++ *
++ * @param zip zip archive handler.
++ * @param buf input buffer.
++ * @param bufsize input buffer size (in bytes).
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
++ */
+ extern int zip_entry_write(struct zip_t *zip, const void *buf, size_t bufsize);
+
+-/*
+- Compresses a file for the current zip entry.
+-
+- Args:
+- zip: zip archive handler.
+- filename: input file.
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
+-*/
++/**
++ * Compresses a file for the current zip entry.
++ *
++ * @param zip zip archive handler.
++ * @param filename input file.
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
++ */
+ extern int zip_entry_fwrite(struct zip_t *zip, const char *filename);
+
+-/*
+- Extracts the current zip entry into output buffer.
+- The function allocates sufficient memory for a output buffer.
+-
+- Args:
+- zip: zip archive handler.
+- buf: output buffer.
+- bufsize: output buffer size (in bytes).
+-
+- Note:
+- - remember to release memory allocated for a output buffer.
+- - for large entries, please take a look at zip_entry_extract function.
+-
+- Returns:
+- The return code - the number of bytes actually read on success.
+- Otherwise a -1 on error.
+-*/
++/**
++ * Extracts the current zip entry into output buffer.
++ *
++ * The function allocates sufficient memory for a output buffer.
++ *
++ * @param zip zip archive handler.
++ * @param buf output buffer.
++ * @param bufsize output buffer size (in bytes).
++ *
++ * @note remember to release memory allocated for a output buffer.
++ * for large entries, please take a look at zip_entry_extract function.
++ *
++ * @return the return code - the number of bytes actually read on success.
++ * Otherwise a -1 on error.
++ */
+ extern ssize_t zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize);
+
+-/*
+- Extracts the current zip entry into a memory buffer using no memory
+- allocation.
+-
+- Args:
+- zip: zip archive handler.
+- buf: preallocated output buffer.
+- bufsize: output buffer size (in bytes).
+-
+- Note:
+- - ensure supplied output buffer is large enough.
+- - zip_entry_size function (returns uncompressed size for the current entry)
+- can be handy to estimate how big buffer is needed.
+- - for large entries, please take a look at zip_entry_extract function.
+-
+- Returns:
+- The return code - the number of bytes actually read on success.
+- Otherwise a -1 on error (e.g. bufsize is not large enough).
+-*/
+-extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize);
+-
+-/*
+- Extracts the current zip entry into output file.
+-
+- Args:
+- zip: zip archive handler.
+- filename: output file.
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
+-*/
++/**
++ * Extracts the current zip entry into a memory buffer using no memory
++ * allocation.
++ *
++ * @param zip zip archive handler.
++ * @param buf preallocated output buffer.
++ * @param bufsize output buffer size (in bytes).
++ *
++ * @note ensure supplied output buffer is large enough.
++ * zip_entry_size function (returns uncompressed size for the current
++ * entry) can be handy to estimate how big buffer is needed. for large
++ * entries, please take a look at zip_entry_extract function.
++ *
++ * @return the return code - the number of bytes actually read on success.
++ * Otherwise a -1 on error (e.g. bufsize is not large enough).
++ */
++extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf,
++ size_t bufsize);
++
++/**
++ * Extracts the current zip entry into output file.
++ *
++ * @param zip zip archive handler.
++ * @param filename output file.
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
++ */
+ extern int zip_entry_fread(struct zip_t *zip, const char *filename);
+
+-/*
+- Extracts the current zip entry using a callback function (on_extract).
+-
+- Args:
+- zip: zip archive handler.
+- on_extract: callback function.
+- arg: opaque pointer (optional argument,
+- which you can pass to the on_extract callback)
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
++/**
++ * Extracts the current zip entry using a callback function (on_extract).
++ *
++ * @param zip zip archive handler.
++ * @param on_extract callback function.
++ * @param arg opaque pointer (optional argument, which you can pass to the
++ * on_extract callback)
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
+ */
+ extern int
+ zip_entry_extract(struct zip_t *zip,
+@@ -262,53 +261,49 @@ zip_entry_extract(struct zip_t *zip,
+ const void *data, size_t size),
+ void *arg);
+
+-/*
+- Returns the number of all entries (files and directories) in the zip archive.
+-
+- Args:
+- zip: zip archive handler.
+-
+- Returns:
+- The return code - the number of entries on success,
+- negative number (< 0) on error.
+-*/
++/**
++ * Returns the number of all entries (files and directories) in the zip archive.
++ *
++ * @param zip zip archive handler.
++ *
++ * @return the return code - the number of entries on success, negative number
++ * (< 0) on error.
++ */
+ extern int zip_total_entries(struct zip_t *zip);
+
+-/*
+- Creates a new archive and puts files into a single zip archive.
+-
+- Args:
+- zipname: zip archive file.
+- filenames: input files.
+- len: number of input files.
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
+-*/
++/**
++ * Creates a new archive and puts files into a single zip archive.
++ *
++ * @param zipname zip archive file.
++ * @param filenames input files.
++ * @param len: number of input files.
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
++ */
+ extern int zip_create(const char *zipname, const char *filenames[], size_t len);
+
+-/*
+- Extracts a zip archive file into directory.
+-
+- If on_extract_entry is not NULL, the callback will be called after
+- successfully extracted each zip entry.
+- Returning a negative value from the callback will cause abort and return an
+- error. The last argument (void *arg) is optional, which you can use to pass
+- data to the on_extract_entry callback.
+-
+- Args:
+- zipname: zip archive file.
+- dir: output directory.
+- on_extract_entry: on extract callback.
+- arg: opaque pointer.
+-
+- Returns:
+- The return code - 0 on success, negative number (< 0) on error.
+-*/
++/**
++ * Extracts a zip archive file into directory.
++ *
++ * If on_extract_entry is not NULL, the callback will be called after
++ * successfully extracted each zip entry.
++ * Returning a negative value from the callback will cause abort and return an
++ * error. The last argument (void *arg) is optional, which you can use to pass
++ * data to the on_extract_entry callback.
++ *
++ * @param zipname zip archive file.
++ * @param dir output directory.
++ * @param on_extract_entry on extract callback.
++ * @param arg opaque pointer.
++ *
++ * @return the return code - 0 on success, negative number (< 0) on error.
++ */
+ extern int zip_extract(const char *zipname, const char *dir,
+ int (*on_extract_entry)(const char *filename, void *arg),
+ void *arg);
+
++/** @} */
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/contrib/zip/test/CMakeLists.txt b/contrib/zip/test/CMakeLists.txt
+index 9b2a8db1..cc060b00 100644
+--- a/contrib/zip/test/CMakeLists.txt
++++ b/contrib/zip/test/CMakeLists.txt
+@@ -1,19 +1,16 @@
+ cmake_minimum_required(VERSION 2.8)
+
+-if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
+- if(ENABLE_COVERAGE)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g ")
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs")
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftest-coverage")
+- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
+- endif()
+-endif ()
+-
+ # test
+-include_directories(../src)
+-add_executable(test.exe test.c ../src/zip.c)
+-add_executable(test_miniz.exe test_miniz.c)
++set(test_out test.out)
++set(test_miniz_out test_miniz.out)
++
++add_executable(${test_out} test.c)
++target_link_libraries(${test_out} zip)
++add_executable(${test_miniz_out} test_miniz.c)
++target_link_libraries(${test_miniz_out} zip)
++
++add_test(NAME ${test_out} COMMAND ${test_out})
++add_test(NAME ${test_miniz_out} COMMAND ${test_miniz_out})
+
+-add_test(NAME test COMMAND test.exe)
+-add_test(NAME test_miniz COMMAND test_miniz.exe)
++set(test_out ${test_out} PARENT_SCOPE)
++set(test_miniz_out ${test_miniz_out} PARENT_SCOPE)
+diff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c
+index 45443053..a9b2ddab 100644
+--- a/contrib/zip/test/test.c
++++ b/contrib/zip/test/test.c
+@@ -29,6 +29,8 @@
+ #define XFILE "7.txt\0"
+ #define XMODE 0100777
+
++#define UNIXMODE 0100644
++
+ #define UNUSED(x) (void)x
+
+ static int total_entries = 0;
+@@ -102,7 +104,8 @@ static void test_read(void) {
+ assert(0 == zip_entry_close(zip));
+ free(buf);
+ buf = NULL;
+-
++ bufsize = 0;
++
+ assert(0 == zip_entry_open(zip, "test/test-2.txt"));
+ assert(strlen(TESTDATA2) == zip_entry_size(zip));
+ assert(CRC32DATA2 == zip_entry_crc32(zip));
+@@ -131,7 +134,8 @@ static void test_read(void) {
+ assert(0 == zip_entry_close(zip));
+ free(buf);
+ buf = NULL;
+-
++ bufsize = 0;
++
+ buftmp = strlen(TESTDATA1);
+ buf = calloc(buftmp, sizeof(char));
+ assert(0 == zip_entry_open(zip, "test/test-1.txt"));
+@@ -433,6 +437,35 @@ static void test_mtime(void) {
+ remove(ZIPNAME);
+ }
+
++static void test_unix_permissions(void) {
++#if defined(_WIN64) || defined(_WIN32) || defined(__WIN32__)
++#else
++ // UNIX or APPLE
++ struct MZ_FILE_STAT_STRUCT file_stats;
++
++ remove(ZIPNAME);
++
++ struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w');
++ assert(zip != NULL);
++
++ assert(0 == zip_entry_open(zip, RFILE));
++ assert(0 == zip_entry_write(zip, TESTDATA1, strlen(TESTDATA1)));
++ assert(0 == zip_entry_close(zip));
++
++ zip_close(zip);
++
++ remove(RFILE);
++
++ assert(0 == zip_extract(ZIPNAME, ".", NULL, NULL));
++
++ assert(0 == MZ_FILE_STAT(RFILE, &file_stats));
++ assert(UNIXMODE == file_stats.st_mode);
++
++ remove(RFILE);
++ remove(ZIPNAME);
++#endif
++}
++
+ int main(int argc, char *argv[]) {
+ UNUSED(argc);
+ UNUSED(argv);
+@@ -453,6 +486,7 @@ int main(int argc, char *argv[]) {
+ test_write_permissions();
+ test_exe_permissions();
+ test_mtime();
++ test_unix_permissions();
+
+ remove(ZIPNAME);
+ return 0;
+diff --git a/contrib/zip/test/test_miniz.c b/contrib/zip/test/test_miniz.c
+index ebc0564d..babcaecd 100644
+--- a/contrib/zip/test/test_miniz.c
++++ b/contrib/zip/test/test_miniz.c
+@@ -23,16 +23,39 @@ int main(int argc, char *argv[]) {
+ uint step = 0;
+ int cmp_status;
+ uLong src_len = (uLong)strlen(s_pStr);
+- uLong cmp_len = compressBound(src_len);
+ uLong uncomp_len = src_len;
++ uLong cmp_len;
+ uint8 *pCmp, *pUncomp;
++ size_t sz;
+ uint total_succeeded = 0;
+ (void)argc, (void)argv;
+
+ printf("miniz.c version: %s\n", MZ_VERSION);
+
+ do {
++ pCmp = (uint8 *)tdefl_compress_mem_to_heap(s_pStr, src_len, &cmp_len, 0);
++ if (!pCmp) {
++ printf("tdefl_compress_mem_to_heap failed\n");
++ return EXIT_FAILURE;
++ }
++ if (src_len <= cmp_len) {
++ printf("tdefl_compress_mem_to_heap failed: from %u to %u bytes\n",
++ (mz_uint32)uncomp_len, (mz_uint32)cmp_len);
++ free(pCmp);
++ return EXIT_FAILURE;
++ }
++
++ sz = tdefl_compress_mem_to_mem(pCmp, cmp_len, s_pStr, src_len, 0);
++ if (sz != cmp_len) {
++ printf("tdefl_compress_mem_to_mem failed: expected %u, got %u\n",
++ (mz_uint32)cmp_len, (mz_uint32)sz);
++ free(pCmp);
++ return EXIT_FAILURE;
++ }
++
+ // Allocate buffers to hold compressed and uncompressed data.
++ free(pCmp);
++ cmp_len = compressBound(src_len);
+ pCmp = (mz_uint8 *)malloc((size_t)cmp_len);
+ pUncomp = (mz_uint8 *)malloc((size_t)src_len);
+ if ((!pCmp) || (!pUncomp)) {
diff --git a/external/poky/meta/recipes-graphics/vulkan/assimp_4.1.0.bb b/external/poky/meta/recipes-graphics/vulkan/assimp_5.0.1.bb
index 194cbe33..5a8c62e6 100644
--- a/external/poky/meta/recipes-graphics/vulkan/assimp_4.1.0.bb
+++ b/external/poky/meta/recipes-graphics/vulkan/assimp_5.0.1.bb
@@ -8,10 +8,13 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=2119edef0916b0bd511cb3c731076271"
DEPENDS = "zlib"
-SRC_URI = "git://github.com/assimp/assimp.git"
+SRC_URI = "git://github.com/assimp/assimp.git;branch=assimp_5.0_release \
+ file://0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch \
+ file://0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch \
+ "
UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(\d+(\.\d+)+))"
-SRCREV = "80799bdbf90ce626475635815ee18537718a05b1"
+SRCREV = "8f0c6b04b2257a520aaab38421b2e090204b69df"
S = "${WORKDIR}/git"
diff --git a/external/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch b/external/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch
index 93bcfbf8..76240610 100644
--- a/external/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch
+++ b/external/poky/meta/recipes-graphics/vulkan/vulkan-demos/0001-Don-t-build-demos-with-questionably-licensed-data.patch
@@ -1,4 +1,4 @@
-From 0a27144d43b70121f57f6036514d069ca9d2b971 Mon Sep 17 00:00:00 2001
+From 0cbf9c9831f773e0da66209be9a6ff28d57c2321 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
@@ -33,16 +33,17 @@ 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
+index e07918c..08b6e23 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
-@@ -47,18 +47,12 @@ set(EXAMPLES
- computeshader
+@@ -55,18 +55,12 @@ set(EXAMPLES
+ conditionalrender
conservativeraster
debugmarker
- deferred
@@ -57,10 +58,10 @@ index 8eee3a4..698d3b3 100644
- hdr
- imgui
- indirectdraw
+ inlineuniformblocks
inputattachments
instancing
- mesh
-@@ -70,8 +64,6 @@ set(EXAMPLES
+@@ -83,23 +77,16 @@ set(EXAMPLES
parallaxmapping
particlefire
pbrbasic
@@ -69,9 +70,8 @@ index 8eee3a4..698d3b3 100644
pipelines
pipelinestatistics
pushconstants
-@@ -79,15 +71,10 @@ set(EXAMPLES
+ pushdescriptors
radialblur
- raytracing
renderheadless
- scenerendering
screenshot
@@ -85,7 +85,7 @@ index 8eee3a4..698d3b3 100644
stencilbuffer
subpasses
terraintessellation
-@@ -101,7 +88,6 @@ set(EXAMPLES
+@@ -113,7 +100,6 @@ set(EXAMPLES
texturesparseresidency
triangle
viewportarray
@@ -93,6 +93,3 @@ index 8eee3a4..698d3b3 100644
)
buildExamples()
---
-2.4.0
-
diff --git a/external/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb b/external/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
index bf30c980..c94e768b 100644
--- a/external/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
+++ b/external/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
@@ -5,23 +5,23 @@ 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"
+SRCREV_glm = "1ad55c5016339b83b7eec98c31007e0aee57d2bf"
+SRCREV_gli = "7da5f50931225e9819a26d5cb323c5f42da50bcd"
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"
+SRCREV = "6d63dc32c320a49be0a56c365151c8f2f176bc59"
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"
+inherit cmake features_check
+DEPENDS = "vulkan-loader assimp wayland-protocols wayland-native"
do_install_append () {
# Remove assets that have uncertain licenses
diff --git a/external/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.1.126.0.bb b/external/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.1.126.0.bb
new file mode 100644
index 00000000..72c29a72
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/vulkan/vulkan-headers_1.1.126.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Vulkan Header files and API registry"
+HOMEPAGE = "https://www.khronos.org/vulkan/"
+BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Headers"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=sdk-1.1.126"
+
+SRCREV = "5bc459e2921304c32568b73edaac8d6df5f98b84"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+FILES_${PN} += "${datadir}/vulkan"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/external/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.1.126.0.bb b/external/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.1.126.0.bb
new file mode 100644
index 00000000..504cf85a
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/vulkan/vulkan-loader_1.1.126.0.bb
@@ -0,0 +1,38 @@
+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=sdk-1.1.126"
+SRCREV = "4adad4ff705fa76f9edb2d37cb57e593decb60ed"
+
+S = "${WORKDIR}/git"
+
+REQUIRED_DISTRO_FEATURES = "vulkan"
+
+inherit cmake features_check
+ANY_OF_DISTRO_FEATURES = "x11 wayland"
+
+DEPENDS += "vulkan-headers"
+
+EXTRA_OECMAKE = "\
+ -DBUILD_TESTS=OFF \
+ -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
+ -DASSEMBLER_WORKS=FALSE \
+ "
+
+# 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"
+
+RRECOMMENDS_${PN} = "mesa-vulkan-drivers"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/external/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.1.126.0.bb b/external/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.1.126.0.bb
new file mode 100644
index 00000000..2fd61c98
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/vulkan/vulkan-tools_1.1.126.0.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Vulkan Utilities and Tools"
+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=sdk-1.1.126"
+SRCREV = "09695dfc5dbe54f869aeaff8db93bb7bb6a220e0"
+
+S = "${WORKDIR}/git"
+
+inherit cmake features_check
+ANY_OF_DISTRO_FEATURES = "x11 wayland"
+REQUIRED_DISTRO_FEATURES = "vulkan"
+
+DEPENDS += "vulkan-headers vulkan-loader"
+
+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"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/external/poky/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch b/external/poky/meta/recipes-graphics/vulkan/vulkan/demos-Don-t-build-tri-or-cube.patch
deleted file mode 100644
index b0b9fc4e..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb b/external/poky/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb
deleted file mode 100644
index 5496f539..00000000
--- a/external/poky/meta/recipes-graphics/vulkan/vulkan_1.1.73.0.bb
+++ /dev/null
@@ -1,37 +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-LoaderAndValidationLayers"
-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-LoaderAndValidationLayers.git;branch=sdk-1.1.73 \
- 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"
diff --git a/external/poky/meta/recipes-graphics/waffle/waffle/0001-third_party-threads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch b/external/poky/meta/recipes-graphics/waffle/waffle/0001-third_party-threads-Use-PTHREAD_MUTEX_RECURSIVE-by-d.patch
deleted file mode 100644
index a0c826ed..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/waffle/waffle_1.5.2.bb b/external/poky/meta/recipes-graphics/waffle/waffle_1.5.2.bb
deleted file mode 100644
index 43c3edc0..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/waffle/waffle_1.6.0.bb b/external/poky/meta/recipes-graphics/waffle/waffle_1.6.0.bb
new file mode 100644
index 00000000..a6202959
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/waffle/waffle_1.6.0.bb
@@ -0,0 +1,39 @@
+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"
+SRC_URI[md5sum] = "61bfc1a478e840825f33ddb4057115e7"
+SRC_URI[sha256sum] = "d9c899f710c50cfdd00f5f4cdfeaef0687d8497362239bdde93bed6c909c81d7"
+
+UPSTREAM_CHECK_URI = "http://www.waffle-gl.org/releases.html"
+
+inherit meson features_check lib_package bash-completion
+
+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)} \
+ surfaceless-egl gbm"
+
+# 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"
+
+# I say virtual/libgl, actually wants wayland-egl.pc, egl.pc, and the wayland
+# DISTRO_FEATURE.
+PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,virtual/${MLPREFIX}libgl wayland"
+
+# I say virtual/libgl, actually wants gbm.pc egl.pc
+PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled,virtual/${MLPREFIX}libgl udev"
+
+# I say virtual/libgl, actually wants egl.pc
+PACKAGECONFIG[x11-egl] = "-Dx11_egl=enabled,-Dx11_egl=disabled,virtual/${MLPREFIX}libgl libxcb"
+PACKAGECONFIG[surfaceless-egl] = "-Dsurfaceless_egl=enabled,-Dsurfaceless_egl=disabled,virtual/${MLPREFIX}libgl"
+
+# TODO: optionally build manpages and examples
diff --git a/external/poky/meta/recipes-graphics/wayland/libinput/determinism.patch b/external/poky/meta/recipes-graphics/wayland/libinput/determinism.patch
new file mode 100644
index 00000000..cb554030
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/libinput/determinism.patch
@@ -0,0 +1,21 @@
+This finds our outer git tree and that version information breaks
+determinism of this recipe. Disable it.
+
+RP 2020/2/6
+
+Upstream-Status: Pending
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: libinput-1.14.3/meson.build
+===================================================================
+--- libinput-1.14.3.orig/meson.build
++++ libinput-1.14.3/meson.build
+@@ -387,7 +387,7 @@ pkgconfig.generate(
+ libraries : lib_libinput
+ )
+
+-git_version_h = vcs_tag(command : ['git', 'describe'],
++git_version_h = vcs_tag(command : ['false'],
+ fallback : 'unknown',
+ input : 'src/libinput-git-version.h.in',
+ output :'libinput-git-version.h')
diff --git a/external/poky/meta/recipes-graphics/wayland/libinput_1.11.3.bb b/external/poky/meta/recipes-graphics/wayland/libinput_1.15.2.bb
index 12e2091c..81053277 100644
--- a/external/poky/meta/recipes-graphics/wayland/libinput_1.11.3.bb
+++ b/external/poky/meta/recipes-graphics/wayland/libinput_1.15.2.bb
@@ -1,4 +1,9 @@
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"
@@ -8,11 +13,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=1f2ea9ebff3a2c6d458faf58492efb63"
DEPENDS = "libevdev udev mtdev"
SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \
+ file://determinism.patch \
"
-SRC_URI[md5sum] = "df6e877f11de4a9793511e9abfe7ef01"
-SRC_URI[sha256sum] = "f31191d96e425b4f16319842279d65946d9d983dcd3d9e466ae1206aa10ecb06"
+SRC_URI[md5sum] = "eb6bd2907ad33d53954d70dfb881a643"
+SRC_URI[sha256sum] = "971c3fbfb624f95c911adeb2803c372e4e3647d1b98f278f660051f834597747"
UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
+
inherit meson pkgconfig lib_package
PACKAGECONFIG ??= ""
@@ -21,9 +28,13 @@ 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"
+EXTRA_OEMESON += "-Dudev-dir=${UDEVDIR} \
+ -Ddocumentation=false \
+ -Dtests=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"
+
diff --git a/external/poky/meta/recipes-graphics/wayland/mtdev_1.1.5.bb b/external/poky/meta/recipes-graphics/wayland/mtdev_1.1.6.bb
index ccd0ebbf..7c1cb5e4 100644
--- a/external/poky/meta/recipes-graphics/wayland/mtdev_1.1.5.bb
+++ b/external/poky/meta/recipes-graphics/wayland/mtdev_1.1.6.bb
@@ -12,7 +12,7 @@ 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[md5sum] = "bf8ef2482e84a00b5db8fbd3ce00e249"
+SRC_URI[sha256sum] = "15d7b28da8ac71d8bc8c9287c2045fd174267bc740bec10cfda332dc1204e0e0"
inherit autotools pkgconfig
diff --git a/external/poky/meta/recipes-graphics/wayland/wayland-protocols_1.16.bb b/external/poky/meta/recipes-graphics/wayland/wayland-protocols_1.20.bb
index fc4b7111..3fb78f65 100644
--- a/external/poky/meta/recipes-graphics/wayland/wayland-protocols_1.16.bb
+++ b/external/poky/meta/recipes-graphics/wayland/wayland-protocols_1.20.bb
@@ -11,8 +11,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
"
-SRC_URI[md5sum] = "e0b523ff162e30bab46be1d65d527683"
-SRC_URI[sha256sum] = "6b1485951fdcd36a960c870c46f28b03a3e5121fb46246916333ed07f78c98c5"
+SRC_URI[md5sum] = "b0836533a3f2dc6585b1dae00341157f"
+SRC_URI[sha256sum] = "9782b7a1a863d82d7c92478497d13c758f52e7da4f197aa16443f73de77e4de7"
UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
diff --git a/external/poky/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch b/external/poky/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch
new file mode 100644
index 00000000..c2ceae4a
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch
@@ -0,0 +1,34 @@
+From e6783c99f051c6d8252db5f388d805cef0e16357 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
+
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/wayland/merge_requests/63]
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/meson.build
++++ b/meson.build
+@@ -36,11 +36,11 @@ have_funcs = [
+ 'posix_fallocate',
+ 'prctl',
+ 'memfd_create',
+- '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'))
+
+ if get_option('libraries')
+ ffi_dep = dependency('libffi')
diff --git a/external/poky/meta/recipes-graphics/wayland/wayland/0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch b/external/poky/meta/recipes-graphics/wayland/wayland/0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch
new file mode 100644
index 00000000..61de0e04
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/wayland/0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch
@@ -0,0 +1,115 @@
+From b2c74f6a3dbe0aee2413800837314136947a4985 Mon Sep 17 00:00:00 2001
+From: Jan Beich <jbeich@FreeBSD.org>
+Date: Sat, 15 Feb 2020 02:03:45 +0000
+Subject: [PATCH] meson/tests: add missing dependencies on protocol headers
+
+In file included from ../tests/connection-test.c:43:
+In file included from ../tests/test-compositor.h:30:
+../src/wayland-client.h:40:10: fatal error: 'wayland-client-protocol.h' file not found
+ #include "wayland-client-protocol.h"
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~
+In file included from ../tests/display-test.c:45:
+In file included from ../src/wayland-server.h:104:
+src/wayland-server-protocol.h:4454:2: error: unterminated /* comment
+ /**
+ ^
+In file included from ../tests/cpp-compile-test.cpp:2:
+In file included from src/wayland-server-protocol.h:8:
+In file included from ../src/wayland-server.h:104:
+src/wayland-server-protocol.h:3:2: error: unterminated conditional directive
+ #ifndef WAYLAND_SERVER_PROTOCOL_H
+ ^
+../tests/headers-protocol-test.c:33:2: error: including wayland-server-protocol.h did not include wayland-server.h!
+ #error including wayland-server-protocol.h did not include wayland-server.h!
+ ^
+In file included from ../tests/headers-protocol-test.c:26:
+In file included from src/wayland-client-protocol.h:8:
+In file included from ../src/wayland-client.h:40:
+src/wayland-client-protocol.h:1358:2: error: unterminated conditional directive
+ #ifndef WL_SHM_FORMAT_ENUM
+ ^
+In file included from ../tests/protocol-logger-test.c:34:
+In file included from ../src/wayland-client.h:40:
+src/wayland-client-protocol.h:2613:1: error: unterminated /* comment
+/**
+^
+../tests/resources-test.c:49:36: error: use of undeclared identifier 'wl_seat_interface'
+ res = wl_resource_create(client, &wl_seat_interface, 4, 0);
+ ^
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ tests/meson.build | 26 ++++++++++++++++++--------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/tests/meson.build b/tests/meson.build
+index c28a2a3..f1af7b4 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -69,7 +69,7 @@ test(
+ executable(
+ 'cpp-compile-test',
+ 'cpp-compile-test.cpp',
+- wayland_server_protocol_core_h,
++ wayland_server_protocol_h,
+ include_directories: src_inc
+ )
+ )
+@@ -91,17 +91,25 @@ tests = {
+ 'array-test': [],
+ 'client-test': [ wayland_server_protocol_h ],
+ 'display-test': [
++ wayland_client_protocol_h,
++ wayland_server_protocol_h,
+ tests_server_protocol_h,
+ tests_client_protocol_c,
+ tests_protocol_c,
+ ],
+- 'connection-test': [ wayland_server_protocol_h ],
++ 'connection-test': [
++ wayland_client_protocol_h,
++ wayland_server_protocol_h,
++ ],
+ 'event-loop-test': [ wayland_server_protocol_h ],
+ 'fixed-test': [],
+ 'interface-test': [ wayland_client_protocol_h ],
+ 'list-test': [],
+ 'map-test': [],
+- 'sanity-test' : [ wayland_server_protocol_h ],
++ 'sanity-test' : [
++ wayland_client_protocol_h,
++ wayland_server_protocol_h,
++ ],
+ 'socket-test': [
+ wayland_client_protocol_h,
+ wayland_server_protocol_h,
+@@ -116,7 +124,7 @@ tests = {
+ files('../src/wayland-server.c'),
+ wayland_server_protocol_h,
+ ],
+- 'resources-test': [ wayland_server_protocol_core_h ],
++ 'resources-test': [ wayland_server_protocol_h ],
+ 'message-test': [
+ wayland_client_protocol_h,
+ wayland_server_protocol_h,
+@@ -126,14 +134,16 @@ tests = {
+ wayland_server_protocol_h,
+ ],
+ 'protocol-logger-test': [
+- wayland_server_protocol_core_h,
+- wayland_client_protocol_core_h,
++ wayland_client_protocol_h,
++ wayland_server_protocol_h,
+ ],
+ 'headers-test': [
++ wayland_client_protocol_h,
++ wayland_server_protocol_h,
+ 'headers-protocol-test.c',
+- 'headers-protocol-core-test.c',
+- wayland_server_protocol_core_h,
+ wayland_client_protocol_core_h,
++ wayland_server_protocol_core_h,
++ 'headers-protocol-core-test.c',
+ ],
+ 'os-wrappers-test': [],
+ }
diff --git a/external/poky/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch b/external/poky/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch
new file mode 100644
index 00000000..2199548b
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch
@@ -0,0 +1,26 @@
+From cbb28635a1079d68e62dbaa1e21791a20dbbbaf4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 17 Feb 2020 21:46:18 +0100
+Subject: [PATCH] Do not hardcode the path to wayland-scanner
+
+This results in host contamination during builds.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/meson.build b/src/meson.build
+index 294aee0..7e410fa 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -49,7 +49,7 @@ pkgconfig.generate(
+ 'datarootdir=' + join_paths('${prefix}', get_option('datadir')),
+ 'pkgdatadir=' + join_paths('${datarootdir}', meson.project_name()),
+ 'bindir=' + join_paths('${prefix}', get_option('bindir')),
+- 'wayland_scanner=${bindir}/wayland-scanner'
++ 'wayland_scanner=wayland-scanner'
+ ],
+ filebase: 'wayland-scanner'
+ )
diff --git a/external/poky/meta/recipes-graphics/wayland/wayland/0002-meson.build-find-the-native-wayland-scanner-directly.patch b/external/poky/meta/recipes-graphics/wayland/wayland/0002-meson.build-find-the-native-wayland-scanner-directly.patch
new file mode 100644
index 00000000..f98037a8
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/wayland/0002-meson.build-find-the-native-wayland-scanner-directly.patch
@@ -0,0 +1,27 @@
+From 2582d2653ba80917d7bc47088e1a5f49530fddaa Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sun, 16 Feb 2020 16:29:53 +0100
+Subject: [PATCH] meson.build: find the native wayland-scanner directly in PATH
+
+Otherwise, meson attempts to use the target pkg-config and fails.
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/meson.build | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/meson.build b/src/meson.build
+index 3e8c9bf..294aee0 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -55,8 +55,7 @@ pkgconfig.generate(
+ )
+
+ if meson.is_cross_build()
+- scanner_dep = dependency('wayland-scanner', native: true, version: '>=1.14.0')
+- wayland_scanner_for_build = find_program(scanner_dep.get_pkgconfig_variable('wayland_scanner'))
++ wayland_scanner_for_build = find_program('wayland-scanner')
+ else
+ wayland_scanner_for_build = wayland_scanner
+ endif
diff --git a/external/poky/meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch b/external/poky/meta/recipes-graphics/wayland/wayland/fixpathinpcfiles.patch
deleted file mode 100644
index ad3526d9..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/wayland/wayland/run-ptest b/external/poky/meta/recipes-graphics/wayland/wayland/run-ptest
new file mode 100644
index 00000000..7e8d9de0
--- /dev/null
+++ b/external/poky/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/external/poky/meta/recipes-graphics/wayland/wayland_1.16.0.bb b/external/poky/meta/recipes-graphics/wayland/wayland_1.18.0.bb
index 112ee1a2..00be3aac 100644
--- a/external/poky/meta/recipes-graphics/wayland/wayland_1.16.0.bb
+++ b/external/poky/meta/recipes-graphics/wayland/wayland_1.18.0.bb
@@ -10,20 +10,27 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \
file://src/wayland-server.c;endline=24;md5=b8e046164a766bb1ede8ba38e9dcd7ce"
-DEPENDS = "expat libxml2 libffi wayland-native"
+DEPENDS = "expat libffi wayland-native"
SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
- file://fixpathinpcfiles.patch \
+ file://run-ptest \
+ file://0002-meson.build-find-the-native-wayland-scanner-directly.patch \
+ file://0002-Do-not-hardcode-the-path-to-wayland-scanner.patch \
+ file://0001-build-Fix-strndup-detection-on-MinGW.patch \
+ file://0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch \
"
-SRC_URI[md5sum] = "0c215e53de71d6fb26f7102cdc6432d3"
-SRC_URI[sha256sum] = "4e72c2b56109ccfb6610d776e465f4ca0af2280c9c2f7d5cc23f0ed2548752f5"
+SRC_URI[md5sum] = "23317697b6e3ff2e1ac8c5ba3ed57b65"
+SRC_URI[sha256sum] = "4675a79f091020817a98fd0484e7208c8762242266967f55a67776936c2e294d"
UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
-inherit autotools pkgconfig
+inherit meson pkgconfig ptest
-EXTRA_OECONF = "--disable-documentation --with-host-scanner"
-EXTRA_OECONF_class-native = "--disable-documentation --disable-libraries"
+PACKAGECONFIG ??= "dtd-validation"
+PACKAGECONFIG[dtd-validation] = "-Ddtd_validation=true,-Ddtd_validation=false,libxml2,,"
+
+EXTRA_OEMESON = "-Ddocumentation=false"
+EXTRA_OEMESON_class-native = "-Ddocumentation=false -Dlibraries=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.
@@ -33,6 +40,15 @@ do_install_append_class-native() {
-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/
@@ -42,3 +58,5 @@ FILES_${PN} = "${libdir}/*${SOLIBS}"
FILES_${PN}-dev += "${bindir} ${datadir}/wayland"
BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS_${PN}-ptest += "binutils sed"
diff --git a/external/poky/meta/recipes-graphics/wayland/weston-conf.bb b/external/poky/meta/recipes-graphics/wayland/weston-conf.bb
deleted file mode 100644
index f52200c4..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/wayland/weston-init.bb b/external/poky/meta/recipes-graphics/wayland/weston-init.bb
index 22ba5f3f..40aa7629 100644
--- a/external/poky/meta/recipes-graphics/wayland/weston-init.bb
+++ b/external/poky/meta/recipes-graphics/wayland/weston-init.bb
@@ -2,23 +2,45 @@ 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.service \
+ file://weston.env \
+ file://weston.ini \
+ file://weston@.service \
+ file://71-weston-drm.rules \
file://weston-start"
S = "${WORKDIR}"
do_install() {
install -Dm755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/weston
- install -Dm0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}/weston.service
-
+ install -D -p -m0644 ${WORKDIR}/weston.ini ${D}${sysconfdir}/xdg/weston/weston.ini
+ install -Dm644 ${WORKDIR}/weston.env ${D}${sysconfdir}/default/weston
+
+ # Install Weston systemd service and accompanying udev rule
+ install -D -p -m0644 ${WORKDIR}/weston@.service ${D}${systemd_system_unitdir}/weston@.service
+ sed -i -e s:/etc:${sysconfdir}:g \
+ -e s:/usr/bin:${bindir}:g \
+ -e s:/var:${localstatedir}:g \
+ ${D}${systemd_unitdir}/system/weston@.service
+ install -D -p -m0644 ${WORKDIR}/71-weston-drm.rules \
+ ${D}${sysconfdir}/udev/rules.d/71-weston-drm.rules
# 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
}
-inherit allarch update-rc.d distro_features_check systemd
+do_install_append_libc-musl_qemux86() {
+ echo "WESTON_DISABLE_ATOMIC=Y" >> ${D}${sysconfdir}/default/weston
+}
+
+do_install_append_libc-musl_qemux86-64() {
+ echo "WESTON_DISABLE_ATOMIC=Y" >> ${D}${sysconfdir}/default/weston
+}
+
+inherit update-rc.d features_check systemd
# rdepends on weston which depends on virtual/egl
REQUIRED_DISTRO_FEATURES = "opengl"
@@ -28,4 +50,10 @@ 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 ${systemd_system_unitdir}/weston@.service ${sysconfdir}/default/weston"
+
+CONFFILES_${PN} += "${sysconfdir}/xdg/weston/weston.ini ${sysconfdir}/default/weston"
+
+SYSTEMD_SERVICE_${PN} = "weston@%i.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
diff --git a/external/poky/meta/recipes-graphics/wayland/weston-init/71-weston-drm.rules b/external/poky/meta/recipes-graphics/wayland/weston-init/71-weston-drm.rules
new file mode 100644
index 00000000..1a1b8bbd
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/weston-init/71-weston-drm.rules
@@ -0,0 +1,2 @@
+ACTION=="add", SUBSYSTEM=="graphics", KERNEL=="fb0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="weston@root.service"
+ACTION=="add", SUBSYSTEM=="drm", KERNEL=="card0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="weston@root.service"
diff --git a/external/poky/meta/recipes-graphics/wayland/weston-init/qemuall/weston.ini b/external/poky/meta/recipes-graphics/wayland/weston-init/qemuall/weston.ini
new file mode 100644
index 00000000..17ebd7fd
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/weston-init/qemuall/weston.ini
@@ -0,0 +1,2 @@
+[core]
+backend=fbdev-backend.so
diff --git a/external/poky/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini b/external/poky/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/weston-init/qemux86-64/weston.ini
diff --git a/external/poky/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini b/external/poky/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/weston-init/qemux86/weston.ini
diff --git a/external/poky/meta/recipes-graphics/wayland/weston-init/weston-start b/external/poky/meta/recipes-graphics/wayland/weston-init/weston-start
index e72fbaaa..ccc70934 100755
--- a/external/poky/meta/recipes-graphics/wayland/weston-init/weston-start
+++ b/external/poky/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 [<openvt arguments>] [-- <weston options>]
EOF
}
@@ -27,10 +27,19 @@ 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 "$WESTON_USER" ]; then
+ if [ -z "$WESTON_TTY" ]; then
+ echo "ERROR: If you have WESTON_USER variable set, you also need WESTON_TTY."
+ exit 1
+ fi
+ weston_args_user="-u $WESTON_USER -t $WESTON_TTY"
+fi
+
if [ -n "$DISPLAY" ]; then
launcher="weston"
else
- launcher="weston-launch --"
+ launcher="weston-launch $weston_args_user --"
fi
openvt_args="-s"
@@ -59,11 +68,15 @@ if [ -d "$modules_dir" ]; then
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_USER $XDG_RUNTIME_DIR
+ fi
fi
exec openvt $openvt_args -- $launcher $weston_args --log=@LOCALSTATEDIR@/log/weston.log
diff --git a/external/poky/meta/recipes-graphics/wayland/weston-init/weston.env b/external/poky/meta/recipes-graphics/wayland/weston-init/weston.env
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/wayland/weston-init/weston.env
diff --git a/external/poky/meta/recipes-graphics/wayland/weston-init/weston.ini b/external/poky/meta/recipes-graphics/wayland/weston-init/weston.ini
new file mode 100644
index 00000000..1e6dff68
--- /dev/null
+++ b/external/poky/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/lib/weston/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/external/poky/meta/recipes-graphics/wayland/weston-init/weston.service b/external/poky/meta/recipes-graphics/wayland/weston-init/weston@.service
index 18f72626..39e19301 100644
--- a/external/poky/meta/recipes-graphics/wayland/weston-init/weston.service
+++ b/external/poky/meta/recipes-graphics/wayland/weston-init/weston@.service
@@ -1,13 +1,15 @@
[Unit]
Description=Weston Wayland Compositor
RequiresMountsFor=/run
+Conflicts=plymouth-quit.service
+After=systemd-user-sessions.service plymouth-quit-wait.service
[Service]
-User=root
+User=%i
PAMName=login
EnvironmentFile=-/etc/default/weston
-ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS
-
-[Install]
-WantedBy=multi-user.target
+StandardError=journal
+PermissionsStartOnly=true
+IgnoreSIGPIPE=no
+ExecStart=/usr/bin/weston-start -v -e -- $OPTARGS
diff --git a/external/poky/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch b/external/poky/meta/recipes-graphics/wayland/weston/0001-make-error-portable.patch
deleted file mode 100644
index 09ec1559..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/external/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
index d648538b..62b864c1 100644
--- a/external/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
+++ b/external/poky/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
@@ -1,7 +1,8 @@
-From b98b9dbda902225cdd972b5bff6a641c36cc7e90 Mon Sep 17 00:00:00 2001
+From 5f2d71998eb77068cbaee2d468cbb296a42d5739 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
+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.
@@ -14,46 +15,49 @@ 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>
+Signed-off-by: Ming Liu <ming.liu@toradex.com>
---
- configure.ac | 9 +++++++--
- libweston/weston-launch.c | 20 ++++++++++++++++++++
- 2 files changed, 27 insertions(+), 2 deletions(-)
+ libweston/meson.build | 16 ++++++++++++----
+ libweston/weston-launch.c | 21 +++++++++++++++++++++
+ meson_options.txt | 7 +++++++
+ 3 files changed, 40 insertions(+), 4 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/meson.build b/libweston/meson.build
+index 08d23ec..cb9fd3f 100644
+--- a/libweston/meson.build
++++ b/libweston/meson.build
+@@ -216,16 +216,24 @@ dep_vertex_clipping = declare_dependency(
+ )
+
+ if get_option('weston-launch')
+- dep_pam = cc.find_library('pam')
++ deps_weston_launch = [systemd_dep, dep_libdrm]
+
+- if not cc.has_function('pam_open_session', dependencies: dep_pam)
+- error('pam_open_session not found for weston-launch')
++ if get_option('pam')
++ dep_pam = cc.find_library('pam')
++ if not cc.has_function('pam_open_session', dependencies: dep_pam)
++ error('pam_open_session not found for weston-launch')
++ endif
++
++ if dep_pam.found()
++ deps_weston_launch += dep_pam
++ config_h.set('HAVE_PAM', '1')
++ endif
+ endif
+
+ executable(
+ 'weston-launch',
+ 'weston-launch.c',
+- dependencies: [dep_pam, systemd_dep, dep_libdrm],
++ dependencies: deps_weston_launch,
+ include_directories: common_inc,
+ install: true
+ )
diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c
-index 166bf3b..6fb9232 100644
+index 8a711b4..54c567a 100644
--- a/libweston/weston-launch.c
+++ b/libweston/weston-launch.c
@@ -51,7 +51,9 @@
@@ -66,7 +70,7 @@ index 166bf3b..6fb9232 100644
#ifdef HAVE_SYSTEMD_LOGIN
#include <systemd/sd-login.h>
-@@ -101,8 +103,10 @@ drmSetMaster(int drm_fd)
+@@ -100,8 +102,10 @@ drmSetMaster(int drm_fd)
#endif
struct weston_launch {
@@ -77,7 +81,7 @@ index 166bf3b..6fb9232 100644
int tty;
int ttynr;
int sock[2];
-@@ -189,6 +193,7 @@ weston_launch_allowed(struct weston_launch *wl)
+@@ -192,6 +196,7 @@ weston_launch_allowed(struct weston_launch *wl)
return false;
}
@@ -85,7 +89,7 @@ index 166bf3b..6fb9232 100644
static int
pam_conversation_fn(int msg_count,
const struct pam_message **messages,
-@@ -229,6 +234,7 @@ setup_pam(struct weston_launch *wl)
+@@ -232,6 +237,7 @@ setup_pam(struct weston_launch *wl)
return 0;
}
@@ -93,7 +97,7 @@ index 166bf3b..6fb9232 100644
static int
setup_launcher_socket(struct weston_launch *wl)
-@@ -422,6 +428,7 @@ quit(struct weston_launch *wl, int status)
+@@ -431,6 +437,7 @@ quit(struct weston_launch *wl, int status)
close(wl->signalfd);
close(wl->sock[0]);
@@ -101,7 +105,7 @@ index 166bf3b..6fb9232 100644
if (wl->new_user) {
err = pam_close_session(wl->ph, 0);
if (err)
-@@ -429,6 +436,7 @@ quit(struct weston_launch *wl, int status)
+@@ -438,6 +445,7 @@ quit(struct weston_launch *wl, int status)
err, pam_strerror(wl->ph, err));
pam_end(wl->ph, err);
}
@@ -109,7 +113,7 @@ index 166bf3b..6fb9232 100644
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)
+@@ -666,6 +674,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
setenv("HOME", wl->pw->pw_dir, 1);
setenv("SHELL", wl->pw->pw_shell, 1);
@@ -117,7 +121,7 @@ index 166bf3b..6fb9232 100644
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)
+@@ -674,6 +683,7 @@ setup_session(struct weston_launch *wl, char **child_argv)
}
free(env);
}
@@ -125,7 +129,7 @@ index 166bf3b..6fb9232 100644
/*
* We open a new session, so it makes sense
-@@ -683,8 +693,10 @@ static void
+@@ -745,8 +755,10 @@ static void
help(const char *name)
{
fprintf(stderr, "Usage: %s [args...] [-- [weston args..]]\n", name);
@@ -136,7 +140,7 @@ index 166bf3b..6fb9232 100644
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[])
+@@ -760,7 +772,9 @@ main(int argc, char *argv[])
int i, c;
char *tty = NULL;
struct option opts[] = {
@@ -146,21 +150,24 @@ index 166bf3b..6fb9232 100644
{ "tty", required_argument, NULL, 't' },
{ "verbose", no_argument, NULL, 'v' },
{ "help", no_argument, NULL, 'h' },
-@@ -710,9 +724,13 @@ main(int argc, char *argv[])
+@@ -772,11 +786,16 @@ 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");
+ if (getuid() != 0) {
+ fprintf(stderr, "weston: Permission denied. -u allowed for root only\n");
+ exit(EXIT_FAILURE);
+ }
+#else
-+ error(1, 0, "-u is unsupported in this weston-launch build");
++ fprintf(stderr, "weston: -u is unsupported in this weston-launch build\n");
++ exit(EXIT_FAILURE);
+#endif
break;
case 't':
tty = optarg;
-@@ -753,8 +771,10 @@ main(int argc, char *argv[])
+@@ -828,8 +847,10 @@ main(int argc, char *argv[])
if (setup_tty(&wl, tty) < 0)
exit(EXIT_FAILURE);
@@ -171,3 +178,21 @@ index 166bf3b..6fb9232 100644
if (setup_launcher_socket(&wl) < 0)
exit(EXIT_FAILURE);
+diff --git a/meson_options.txt b/meson_options.txt
+index c862ecc..73ef2c3 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -73,6 +73,13 @@ option(
+ )
+
+ option(
++ 'pam',
++ type: 'boolean',
++ value: true,
++ description: 'Define if PAM is available'
++)
++
++option(
+ 'xwayland',
+ type: 'boolean',
+ value: true,
diff --git a/external/poky/meta/recipes-graphics/wayland/weston_5.0.0.bb b/external/poky/meta/recipes-graphics/wayland/weston_8.0.0.bb
index e5171092..f8e9e15f 100644
--- a/external/poky/meta/recipes-graphics/wayland/weston_5.0.0.bb
+++ b/external/poky/meta/recipes-graphics/wayland/weston_8.0.0.bb
@@ -8,16 +8,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d79ee9e66bb0f95d3386a7acae780b70 \
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"
+SRC_URI[md5sum] = "53e4810d852df0601d01fd986a5b22b3"
+SRC_URI[sha256sum] = "7518b49b2eaa1c3091f24671bdcc124fd49fc8f1af51161927afa4329c027848"
UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
-inherit autotools pkgconfig useradd distro_features_check
+inherit meson pkgconfig useradd features_check
# depends on virtual/egl
REQUIRED_DISTRO_FEATURES = "opengl"
@@ -26,48 +25,48 @@ 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)} \
+EXTRA_OEMESON += "-Dbackend-default=auto -Dbackend-rdp=false -Dpipewire=false"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl clients', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \
${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd x11', d)} \
- clients launch"
+ ${@bb.utils.contains_any('DISTRO_FEATURES', 'wayland x11', '', 'headless', d)} \
+ launch"
#
# Compositor choices
#
# Weston on KMS
-PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm udev virtual/mesa virtual/libgbm mtdev"
+PACKAGECONFIG[kms] = "-Dbackend-drm=true,-Dbackend-drm=false,drm udev virtual/egl virtual/libgles2 virtual/libgbm mtdev"
# Weston on Wayland (nested Weston)
-PACKAGECONFIG[wayland] = "--enable-wayland-compositor,--disable-wayland-compositor,virtual/mesa"
+PACKAGECONFIG[wayland] = "-Dbackend-wayland=true,-Dbackend-wayland=false,virtual/egl virtual/libgles2"
# Weston on X11
-PACKAGECONFIG[x11] = "--enable-x11-compositor,--disable-x11-compositor,virtual/libx11 libxcb libxcb libxcursor cairo"
+PACKAGECONFIG[x11] = "-Dbackend-x11=true,-Dbackend-x11=false,virtual/libx11 libxcb libxcb libxcursor cairo"
# Headless Weston
-PACKAGECONFIG[headless] = "--enable-headless-compositor,--disable-headless-compositor"
+PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false"
# Weston on framebuffer
-PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor,--disable-fbdev-compositor,udev mtdev"
+PACKAGECONFIG[fbdev] = "-Dbackend-fbdev=true,-Dbackend-fbdev=false,udev mtdev"
# weston-launch
-PACKAGECONFIG[launch] = "--enable-weston-launch,--disable-weston-launch,drm"
+PACKAGECONFIG[launch] = "-Dweston-launch=true,-Dweston-launch=false,drm"
# VA-API desktop recorder
-PACKAGECONFIG[vaapi] = "--enable-vaapi-recorder,--disable-vaapi-recorder,libva"
+PACKAGECONFIG[vaapi] = "-Dbackend-drm-screencast-vaapi=true,-Dbackend-drm-screencast-vaapi=false,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"
+PACKAGECONFIG[egl] = "-Drenderer-gl=true,-Drenderer-gl=false,virtual/egl"
# Weston with lcms support
-PACKAGECONFIG[lcms] = "--enable-lcms,--disable-lcms,lcms"
+PACKAGECONFIG[lcms] = "-Dcolor-management-lcms=true,-Dcolor-management-lcms=false,lcms"
# Weston with webp support
-PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
+PACKAGECONFIG[webp] = "-Dimage-webp=true,-Dimage-webp=false,libwebp"
# Weston with systemd-login support
-PACKAGECONFIG[systemd] = "--enable-systemd-login,--disable-systemd-login,systemd dbus"
+PACKAGECONFIG[systemd] = "-Dsystemd=true -Dlauncher-logind=true,-Dsystemd=false -Dlauncher-logind=false,systemd dbus"
# Weston with Xwayland support (requires X11 and Wayland)
-PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland"
+PACKAGECONFIG[xwayland] = "-Dxwayland=true,-Dxwayland=false"
# colord CMS support
-PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord"
+PACKAGECONFIG[colord] = "-Dcolor-management-colord=true,-Dcolor-management-colord=false,colord"
# Clients support
-PACKAGECONFIG[clients] = "--enable-clients --enable-simple-clients --enable-demo-clients-install,--disable-clients --disable-simple-clients"
+PACKAGECONFIG[clients] = "-Dsimple-clients=all -Ddemo-clients=true,-Dsimple-clients= -Ddemo-clients=false"
+# Virtual remote output with GStreamer on DRM backend
+PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer-1.0"
# Weston with PAM support
-PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
+PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam"
do_install_append() {
# Weston doesn't need the .la files to load modules, so wipe them
@@ -85,12 +84,17 @@ do_install_append() {
if [ "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'yes', 'no', d)}" = "yes" ]; then
install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland
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} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so ${datadir}"
+FILES_${PN}-dev += "${libdir}/${BPN}/libexec_weston.so"
+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'."
@@ -101,7 +105,7 @@ 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} = "weston-init liberation-fonts"
RRECOMMENDS_${PN}-dev += "wayland-protocols"
USERADD_PACKAGES = "${PN}"
diff --git a/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf b/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf
new file mode 100644
index 00000000..7ab74608
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf
@@ -0,0 +1,2 @@
+cap_sys_admin @USER@
+none *
diff --git a/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm b/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
index 6c548551..116bb278 100755
--- a/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm
+++ b/external/poky/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/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb b/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb
index a77c5644..c2995f99 100644
--- a/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb
+++ b/external/poky/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb
@@ -10,6 +10,7 @@ SRC_URI = "file://xserver-nodm \
file://gplv2-license.patch \
file://xserver-nodm.service.in \
file://xserver-nodm.conf.in \
+ file://capability.conf \
"
S = "${WORKDIR}"
@@ -17,9 +18,9 @@ S = "${WORKDIR}"
# 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"
@@ -60,7 +63,7 @@ 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 ."
diff --git a/external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/0001-calibrator.hh-Include-string-to-get-std-string.patch b/external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/0001-calibrator.hh-Include-string-to-get-std-string.patch
new file mode 100644
index 00000000..37617600
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator/0001-calibrator.hh-Include-string-to-get-std-string.patch
@@ -0,0 +1,28 @@
+From 79bc507b48d4acd3dec8a85ab6b341b872d44a05 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 29 Jan 2019 22:40:24 -0800
+Subject: [PATCH] calibrator.hh: Include <string> to get std::string
+
+Found with libc++
+
+Upstream-Status: Submitted [https://github.com/tias/xinput_calibrator/pull/76]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/calibrator.hh | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/calibrator.hh b/src/calibrator.hh
+index a6f9504..e75bcef 100644
+--- a/src/calibrator.hh
++++ b/src/calibrator.hh
+@@ -29,6 +29,7 @@
+ #include <X11/Xlib.h>
+ #include <stdio.h>
+ #include <vector>
++#include <string>
+
+ // XXX: we currently don't handle lines that are longer than this
+ #define MAX_LINE_LEN 1024
+--
+2.20.1
+
diff --git a/external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb b/external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
index 68e62ea6..4f831932 100644
--- a/external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
+++ b/external/poky/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
@@ -7,14 +7,16 @@ DEPENDS = "virtual/libx11 libxi libxrandr"
PV = "0.7.5+git${SRCPV}"
PR = "r6"
-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 \
file://30xinput_calibrate.sh \
- file://Allow-xinput_calibrator_pointercal.sh-to-be-run-as-n.patch"
+ file://Allow-xinput_calibrator_pointercal.sh-to-be-run-as-n.patch \
+ file://0001-calibrator.hh-Include-string-to-get-std-string.patch \
+ "
S = "${WORKDIR}/git"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb b/external/poky/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb
deleted file mode 100644
index a453e248..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb b/external/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
index 2a6bec16..a767ee84 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.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=99b1e1269aba5179139b9e4380fc0934"
-SRC_URI[md5sum] = "987c438e79f5ddb84a9c5726a1610819"
-SRC_URI[sha256sum] = "1e98df69ee5f4542d711e140e1d93e2c3f2775407ccbb7849110d52b91782a6a"
+SRC_URI[md5sum] = "215940de158b1a3d8b3f8b442c606e2f"
+SRC_URI[sha256sum] = "ca0495eb974a179dd742bfa6199d561bda1c8da4a0c5a667f21fd82aaab6bac7"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/x11perf_1.6.0.bb b/external/poky/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb
index a06aa269..c4d443bf 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/x11perf_1.6.0.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb
@@ -13,11 +13,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=428ca4d67a41fcd4fc3283dce9bbda7e \
PE = "1"
+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/*"
-SRC_URI[md5sum] = "f0b24e4d8beb622a419e8431e1c03cd7"
-SRC_URI[sha256sum] = "e87098dec1947572d70c62697a7b70bde1ab5668237d4660080eade6bc096751"
+SRC_URI[md5sum] = "e96b56756990c56c24d2d02c2964456b"
+SRC_URI[sha256sum] = "1c7e0b8ffc2794b4ccf11e04d551823abe0ea47b4f7db0637390db6fbe817c34"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xauth_1.0.10.bb b/external/poky/meta/recipes-graphics/xorg-app/xauth_1.1.bb
index 0e90ffd6..24ad9606 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xauth_1.0.10.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xauth_1.1.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[md5sum] = "e50587c1bb832aafd1a19d91a0890a0b"
+SRC_URI[sha256sum] = "6d1dd1b79dd185107c5b0fdd22d1d791ad749ad6e288d0cdf80964c4ffa7530c"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.2.bb b/external/poky/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.2.bb
index af04bb6e..2d10b7ac 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.2.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xdpyinfo_1.3.2.bb
@@ -9,7 +9,7 @@ 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 libdmx libxau libxcomposite"
PE = "1"
SRC_URI += "file://disable-xkb.patch"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xev/diet-x11.patch b/external/poky/meta/recipes-graphics/xorg-app/xev/diet-x11.patch
index 6130959f..53c0ac2e 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xev/diet-x11.patch
+++ b/external/poky/meta/recipes-graphics/xorg-app/xev/diet-x11.patch
@@ -4,79 +4,106 @@ Upstream-Status: Inappropriate [disable feature]
xev.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
-Index: xev-1.2.0/xev.c
+Index: xev-1.2.3/xev.c
===================================================================
---- xev-1.2.0.orig/xev.c
-+++ xev-1.2.0/xev.c
-@@ -116,7 +116,7 @@ do_KeyPress (XEvent *eventp)
- nbytes = XLookupString (e, str, 256, &ks, NULL);
+--- 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) {
-+ /*if (e->type == KeyPress && xic) {
- do {
- nmbbytes = XmbLookupString (xic, e, buf, bsize - 1, &ks, &status);
- buf[nmbbytes] = '\0';
-@@ -126,7 +126,7 @@ do_KeyPress (XEvent *eventp)
- buf = realloc (buf, bsize);
- }
- } while (status == XBufferOverflow);
+- 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";
-@@ -156,7 +156,7 @@ do_KeyPress (XEvent *eventp)
+ 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) {
-+ /*if (e->type == KeyPress && xic) {
- printf (" XmbLookupString gives %d bytes: ", nmbbytes);
- if (nmbbytes > 0) {
- dump (buf, nmbbytes);
-@@ -164,7 +164,7 @@ do_KeyPress (XEvent *eventp)
- } else {
- printf ("\n");
+- 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;
}
- }
-+ } */
++ }
- printf (" XFilterEvent returns: %s\n",
- XFilterEvent (eventp, e->window) ? "True" : "False");
-@@ -1015,7 +1015,7 @@ main (int argc, char **argv)
- fprintf (stderr, "%s: XSetLocaleModifiers failed\n", ProgramName);
+ 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);
-+ /*xim = XOpenIM (dpy, NULL, NULL, NULL);
- if (xim == NULL) {
- fprintf (stderr, "%s: XOpenIM failed\n", ProgramName);
- }
-@@ -1042,7 +1042,7 @@ main (int argc, char **argv)
- }
- XFree (xim_styles);
- }
+- xim = XOpenIM(dpy, NULL, NULL, NULL);
+- if (xim == NULL) {
+- fprintf(stderr, "%s: XOpenIM failed\n", ProgramName);
- }
-+ }*/
-
- screen = DefaultScreen (dpy);
+-
+- 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);
-@@ -1109,7 +1109,7 @@ main (int argc, char **argv)
- printf ("Outer window is 0x%lx, inner window is 0x%lx\n", w, subw);
+ 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) {
-+ /*if (xim && xim_style) {
- xic = XCreateIC (xim,
- XNInputStyle, xim_style,
- XNClientWindow, w,
-@@ -1119,7 +1119,7 @@ main (int argc, char **argv)
- if (xic == NULL) {
- fprintf (stderr, "XCreateIC failed\n");
- }
+- 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);
+-
+ have_rr = XRRQueryExtension(dpy, &rr_event_base, &rr_error_base);
if (have_rr) {
+ int rr_major, rr_minor;
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xev_1.2.2.bb b/external/poky/meta/recipes-graphics/xorg-app/xev_1.2.3.bb
index 0705b7f7..6a69e747 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xev_1.2.2.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xev_1.2.3.bb
@@ -14,5 +14,5 @@ DEPENDS += "libxrandr xorgproto"
SRC_URI += "file://diet-x11.patch"
-SRC_URI[md5sum] = "249bdde90f01c0d861af52dc8fec379e"
-SRC_URI[sha256sum] = "d94ae62a6c1af56c2961d71f5782076ac4116f0fa4e401420ac7e0db33dc314f"
+SRC_URI[md5sum] = "eec82a5d4b599736f0fa637e96136746"
+SRC_URI[sha256sum] = "66bc4f1cfa1946d62612737815c34164e4ce40fcebd2c9e1d7e7a1117ad3ad09"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xhost_1.0.7.bb b/external/poky/meta/recipes-graphics/xorg-app/xhost_1.0.8.bb
index 77490f54..26bec3f0 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xhost_1.0.7.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xhost_1.0.8.bb
@@ -13,8 +13,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=8fbed71dddf48541818cef8079124199"
DEPENDS += "libxmu libxau"
PE = "1"
-SRC_URI[md5sum] = "f5d490738b148cb7f2fe760f40f92516"
-SRC_URI[sha256sum] = "93e619ee15471f576cfb30c663e18f5bc70aca577a63d2c2c03f006a7837c29a"
+SRC_URI[md5sum] = "a48c72954ae6665e0616f6653636da8c"
+SRC_URI[sha256sum] = "a2dc3c579e13674947395ef8ccc1b3763f89012a216c2cc6277096489aadc396"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xinit/0001-Make-manpage-multilib-identical.patch b/external/poky/meta/recipes-graphics/xorg-app/xinit/0001-Make-manpage-multilib-identical.patch
new file mode 100644
index 00000000..64990557
--- /dev/null
+++ b/external/poky/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/external/poky/meta/recipes-graphics/xorg-app/xinit_1.4.0.bb b/external/poky/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb
index dc2a06b5..c9e28d9b 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xinit_1.4.0.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb
@@ -12,8 +12,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=18f01e7b39807bebe2b8df101a039b68"
PE = "1"
-SRC_URI[md5sum] = "2da154b2f80ca9637b1a17b13af0880c"
-SRC_URI[sha256sum] = "230835eef2f5978a1e1344928168119373f6df1d0a32c09515e545721ee582ef"
+SRC_URI += "file://0001-Make-manpage-multilib-identical.patch"
+
+SRC_URI[md5sum] = "6d506ab2efc17a08e87778654e099d37"
+SRC_URI[sha256sum] = "de9b8f617b68a70f6caf87da01fcf0ebd2b75690cdcba9c921d0ef54fa54abb9"
EXTRA_OECONF = "ac_cv_path_MCOOKIE=${bindir}/mcookie"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xinput_1.6.2.bb b/external/poky/meta/recipes-graphics/xorg-app/xinput_1.6.3.bb
index 25cd047b..ff1f1c91 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xinput_1.6.2.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xinput_1.6.3.bb
@@ -8,5 +8,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=881525f89f99cad39c9832bcb72e6fa5"
DEPENDS += " libxi libxrandr libxinerama"
-SRC_URI[md5sum] = "6a889412eff2e3c1c6bb19146f6fe84c"
-SRC_URI[sha256sum] = "3694d29b4180952fbf13c6d4e59541310cbb11eef5bf888ff3d8b7f4e3aee5c4"
+SRC_URI[md5sum] = "ac6b7432726008b2f50eba82b0e2dbe4"
+SRC_URI[sha256sum] = "35a281dd3b9b22ea85e39869bb7670ba78955d5fec17c6ef7165d61e5aeb66ed"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb b/external/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.3.bb
index eaf8eaaf..2fa79c84 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.2.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xkbcomp_1.4.3.bb
@@ -13,5 +13,7 @@ DEPENDS += "libxkbfile"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "12610df19df2af3797f2c130ee2bce97"
-SRC_URI[sha256sum] = "6dd8bcb9be7e85bd7294abe261b8c7b0539d2fc93e41b80fb8bd013767ce8424"
+EXTRA_OECONF += "--disable-selective-werror"
+
+SRC_URI[md5sum] = "6e4751d99373f85d459ab4dff28893f5"
+SRC_URI[sha256sum] = "06242c169fc11caf601cac46d781d467748c6a330e15b36dce46520b8ac8d435"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xmodmap_1.0.9.bb b/external/poky/meta/recipes-graphics/xorg-app/xmodmap_1.0.10.bb
index 2deac6a0..7dedb03a 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xmodmap_1.0.9.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xmodmap_1.0.10.bb
@@ -12,6 +12,5 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=272c17e96370e1e74773fa22d9989621"
PE = "1"
-
-SRC_URI[md5sum] = "723f02d3a5f98450554556205f0a9497"
-SRC_URI[sha256sum] = "b7b0e5cc5f10d0fb6d2d6ea4f00c77e8ac0e847cc5a73be94cd86139ac4ac478"
+SRC_URI[md5sum] = "51f1d30a525e9903280ffeea2744b1f6"
+SRC_URI[sha256sum] = "473f0941d7439d501bb895ff358832b936ec34c749b9704c37a15e11c318487c"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xorg-app-common.inc b/external/poky/meta/recipes-graphics/xorg-app/xorg-app-common.inc
index 3529cb26..101b3dff 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xorg-app-common.inc
+++ b/external/poky/meta/recipes-graphics/xorg-app/xorg-app-common.inc
@@ -12,6 +12,6 @@ INC_PR = "r8"
SRC_URI = "${XORG_MIRROR}/individual/app/${BPN}-${PV}.tar.bz2"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
FILES_${PN} += " ${libdir}/X11/${BPN} ${datadir}/X11/app-defaults/"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xprop_1.2.3.bb b/external/poky/meta/recipes-graphics/xorg-app/xprop_1.2.4.bb
index ca58d475..3280813e 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xprop_1.2.3.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xprop_1.2.4.bb
@@ -14,5 +14,5 @@ DEPENDS += "libxmu"
PE = "1"
-SRC_URI[md5sum] = "4becb3ddc4674d741487189e4ce3d0b6"
-SRC_URI[sha256sum] = "d22afb28c86d85fff10a50156a7d0fa930c80ae865d70b26d805fd28a17a521b"
+SRC_URI[md5sum] = "cc369c28383a5d7144e7197ee7d30bfa"
+SRC_URI[sha256sum] = "8c77fb096e46c60032b7e2bde9492c3ffcc18734f50b395085a5f10bfd3cf753"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xrandr_1.5.0.bb b/external/poky/meta/recipes-graphics/xorg-app/xrandr_1.5.1.bb
index ea689794..6583ea23 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xrandr_1.5.0.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xrandr_1.5.1.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 = "${XORG_MIRROR}/individual/app/${BPN}-${PV}.tar.xz"
+
+SRC_URI[md5sum] = "fe40f7a4fd39dd3a02248d3e0b1972e4"
+SRC_URI[sha256sum] = "7bc76daf9d72f8aff885efad04ce06b90488a1a169d118dea8a2b661832e8762"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xset_1.2.4.bb b/external/poky/meta/recipes-graphics/xorg-app/xset_1.2.4.bb
index 5748837f..e21120e7 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xset_1.2.4.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xset_1.2.4.bb
@@ -7,7 +7,7 @@ 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"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xvinfo_1.1.3.bb b/external/poky/meta/recipes-graphics/xorg-app/xvinfo_1.1.4.bb
index 2965ef7f..a913ae11 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xvinfo_1.1.3.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xvinfo_1.1.4.bb
@@ -10,5 +10,5 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b664101ad7a1dc758a4c4109bf978e68"
DEPENDS += " libxv"
PE = "1"
-SRC_URI[md5sum] = "558360176b718dee3c39bc0648c0d10c"
-SRC_URI[sha256sum] = "9fba8b68daf53863e66d5004fa9c703fcecf69db4d151ea2d3d885d621e6e5eb"
+SRC_URI[md5sum] = "b13afec137b9b331814a9824ab03ec80"
+SRC_URI[sha256sum] = "0353220d6606077ba42363db65f50410759f9815352f77adc799e2adfa76e73f"
diff --git a/external/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb b/external/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.5.bb
index 1fb90dd2..ec9f0826 100644
--- a/external/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.4.bb
+++ b/external/poky/meta/recipes-graphics/xorg-app/xwininfo_1.1.5.bb
@@ -11,5 +11,5 @@ DEPENDS += "libxext libxmu gettext-native"
PE = "0"
-SRC_URI[md5sum] = "9a505b91ae7160bbdec360968d060c83"
-SRC_URI[sha256sum] = "839498aa46b496492a5c65cd42cd2e86e0da88149b0672e90cb91648f8cd5b01"
+SRC_URI[md5sum] = "26d46f7ef0588d3392da3ad5802be420"
+SRC_URI[sha256sum] = "7a405441dfc476666c744f5fcd1bc8a75abf8b5b1d85db7b88b370982365080e"
diff --git a/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.0.bb b/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.29.0.bb
index 5853b5b5..f87083e5 100644
--- a/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.28.0.bb
+++ b/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.29.0.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=5e6b20ea2ef94a998145f0ea3f788ee0"
DEPENDS += "libinput"
-SRC_URI[md5sum] = "2d7519ac0e39d4c88f3be32e81a637aa"
-SRC_URI[sha256sum] = "21994d065fc26e85d1c3fc87d8479b9c22699ed5a0119df98fbe0000e84630a1"
+SRC_URI[md5sum] = "d600e8e2e30747b8ce49ec5294ff0ab6"
+SRC_URI[sha256sum] = "c28b56a21754b972db31798e6a4cf4dc9d69208d08f8fe41701a94def5e94bee"
FILES_${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics/64bit_time_t_support.patch b/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics/64bit_time_t_support.patch
new file mode 100644
index 00000000..4bb7fb3e
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics/64bit_time_t_support.patch
@@ -0,0 +1,51 @@
+This patch avoids using time field of input_event structure which is not available
+on 32bit arches supporting 64bit time_t structs, Patch makes it compatible with new
+and keeps old input.h implementation functional as well.
+
+See https://sourceware.org/glibc/wiki/Y2038ProofnessDesign
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/src/eventcomm.c
++++ b/src/eventcomm.c
+@@ -575,10 +575,12 @@ SynapticsReadEvent(InputInfoPtr pInfo, s
+ ev->type = EV_SYN;
+ ev->code = SYN_REPORT;
+ ev->value = 0;
+- ev->time = last_event_time;
+- } else if (ev->type == EV_SYN)
+- last_event_time = ev->time;
+-
++ ev->input_event_sec = last_event_time.tv_sec;
++ ev->input_event_usec = last_event_time.tv_usec;
++ } else if (ev->type == EV_SYN) {
++ last_event_time.tv_sec = ev->input_event_sec;
++ last_event_time.tv_usec = ev->input_event_usec;
++ }
+ return TRUE;
+ }
+
+@@ -725,7 +727,7 @@ EventReadHwState(InputInfoPtr pInfo,
+ case SYN_REPORT:
+ hw->numFingers = count_fingers(pInfo, comm);
+ if (proto_data->have_monotonic_clock)
+- hw->millis = 1000 * ev.time.tv_sec + ev.time.tv_usec / 1000;
++ hw->millis = 1000 * ev.input_event_sec + ev.input_event_usec / 1000;
+ else
+ hw->millis = GetTimeInMillis();
+ SynapticsCopyHwState(hwRet, hw);
+--- a/src/eventcomm.h
++++ b/src/eventcomm.h
+@@ -34,6 +34,11 @@
+ #include <xf86Xinput.h>
+ #include "synproto.h"
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ /* for auto-dev: */
+ #define DEV_INPUT_EVENT "/dev/input"
+ #define EVENT_DEV_NAME "event"
diff --git a/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb b/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb
index dc31890f..388350c9 100644
--- a/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb
+++ b/external/poky/meta/recipes-graphics/xorg-driver/xf86-input-synaptics_1.9.1.bb
@@ -10,6 +10,8 @@ advanced features of the touchpad to become available."
LIC_FILES_CHKSUM = "file://COPYING;md5=55aacd3535a741824955c5eb8f061398"
+SRC_URI += "file://64bit_time_t_support.patch"
+
SRC_URI[md5sum] = "cfb79d3c975151f9bbf30b727c260cb9"
SRC_URI[sha256sum] = "7af83526eff1c76e8b9e1553b34245c203d029028d8044dd9dcf71eef1001576"
diff --git a/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-Add-Coffeelake-PCI-IDs-for-S-Skus.patch b/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-Add-Coffeelake-PCI-IDs-for-S-Skus.patch
deleted file mode 100644
index 06ef1050..00000000
--- a/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-Add-Coffeelake-PCI-IDs-for-S-Skus.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 96d4e8e7b8a699f0ef77fa7b210d4de5f1c703d0 Mon Sep 17 00:00:00 2001
-From: Liwei Song <liwei.song@windriver.com>
-Date: Wed, 22 Nov 2017 08:59:03 +0000
-Subject: [PATCH] Add Coffeelake PCI IDs for S Skus
-
-Add the Coffeelake PCI IDs based on the following kernel patches:
-
-commit b056f8f3d6b900e8afd19f312719160346d263b4
-Author: Anusha Srivatsa <anusha.srivatsa@intel.com>
-Date: Thu Jun 8 16:41:05 2017 -0700
-
- drm/i915/cfl: Add Coffee Lake PCI IDs for S Skus.
-
-Upstream-Status: Submitted [https://patchwork.kernel.org/patch/10139905]
-
-Signed-off-by: Liwei Song <liwei.song@windriver.com>
----
- src/i915_pciids.h | 7 +++++++
- src/intel_module.c | 13 +++++++++++++
- src/sna/gen9_render.c | 12 ++++++++++++
- 3 files changed, 32 insertions(+)
-
-diff --git a/src/i915_pciids.h b/src/i915_pciids.h
-index 0370f830c541..11ccfa9c047a 100644
---- a/src/i915_pciids.h
-+++ b/src/i915_pciids.h
-@@ -340,4 +340,11 @@
- INTEL_VGA_DEVICE(0x3184, info), \
- INTEL_VGA_DEVICE(0x3185, info)
-
-+#define INTEL_CFL_S_IDS(info) \
-+ INTEL_VGA_DEVICE(0x3E90, info), /* SRV GT1 */ \
-+ INTEL_VGA_DEVICE(0x3E93, info), /* SRV GT1 */ \
-+ INTEL_VGA_DEVICE(0x3E91, info), /* SRV GT2 */ \
-+ INTEL_VGA_DEVICE(0x3E92, info), /* SRV GT2 */ \
-+ INTEL_VGA_DEVICE(0x3E96, info) /* SRV GT2 */
-+
- #endif /* _I915_PCIIDS_H */
-diff --git a/src/intel_module.c b/src/intel_module.c
-index 6b04857e2853..4827a67255f0 100644
---- a/src/intel_module.c
-+++ b/src/intel_module.c
-@@ -138,6 +138,10 @@ static const struct intel_device_info intel_geminilake_info = {
- .gen = 0113,
- };
-
-+static const struct intel_device_info intel_coffeelake_info = {
-+ .gen = 0114,
-+};
-+
- static const SymTabRec intel_chipsets[] = {
- {PCI_CHIP_I810, "i810"},
- {PCI_CHIP_I810_DC100, "i810-dc100"},
-@@ -303,6 +307,13 @@ static const SymTabRec intel_chipsets[] = {
- {0x5916, "HD Graphics 620"},
- {0x591E, "HD Graphics 615"},
-
-+ /*Coffeelake*/
-+ {0x3E90, "HD Graphics"},
-+ {0x3E93, "HD Graphics"},
-+ {0x3E91, "HD Graphics"},
-+ {0x3E92, "HD Graphics"},
-+ {0x3E96, "HD Graphics"},
-+
- /* When adding new identifiers, also update:
- * 1. intel_identify()
- * 2. man/intel.man
-@@ -368,6 +379,8 @@ static const struct pci_id_match intel_device_match[] = {
-
- INTEL_GLK_IDS(&intel_geminilake_info),
-
-+ INTEL_CFL_S_IDS(&intel_coffeelake_info),
-+
- INTEL_VGA_DEVICE(PCI_MATCH_ANY, &intel_generic_info),
- #endif
-
-diff --git a/src/sna/gen9_render.c b/src/sna/gen9_render.c
-index e5f12c723956..7f49052c5ec1 100644
---- a/src/sna/gen9_render.c
-+++ b/src/sna/gen9_render.c
-@@ -245,6 +245,11 @@ static const struct gt_info glk_gt_info = {
- .urb = { .max_vs_entries = 320 },
- };
-
-+static const struct gt_info cfl_gt_info = {
-+ .name = "Coffeelake (gen9)",
-+ .urb = { .max_vs_entries = 960 },
-+};
-+
- static bool is_skl(struct sna *sna)
- {
- return sna->kgem.gen == 0110;
-@@ -265,6 +270,11 @@ static bool is_glk(struct sna *sna)
- return sna->kgem.gen == 0113;
- }
-
-+static bool is_cfl(struct sna *sna)
-+{
-+ return sna->kgem.gen == 0114;
-+}
-+
-
- static inline bool too_large(int width, int height)
- {
-@@ -4040,6 +4050,8 @@ static bool gen9_render_setup(struct sna *sna)
- state->info = &kbl_gt_info;
- if (is_glk(sna))
- state->info = &glk_gt_info;
-+ if (is_cfl(sna))
-+ state->info = &cfl_gt_info;
-
- sna_static_stream_init(&general);
-
---
-2.13.3
-
diff --git a/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch b/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch
deleted file mode 100644
index ada9eb5e..00000000
--- a/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel/glibc.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Add a missing include needed for glibc 2.28 to avoid:
-
-| ../../git/tools/backlight_helper.c: In function 'main':
-| ../../git/tools/backlight_helper.c:54:34: error: implicit declaration of function 'major' [-Werror=implicit-function-declaration]
-| if (fd < 0 || fstat(fd, &st) || major(st.st_dev))
-| ^~~~~
-| ../../git/tools/backlight_helper.c:54:34: warning: nested extern declaration of 'major' [-Wnested-externs]
-| cc1: some warnings being treated as errors
-| Makefile:666: recipe for target 'backlight_helper.o' failed
-
-Upstream-Status: Pending
-RP 2018/8/12
-
-Index: git/tools/backlight_helper.c
-===================================================================
---- git.orig/tools/backlight_helper.c
-+++ git/tools/backlight_helper.c
-@@ -8,6 +8,7 @@
-
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <sys/sysmacros.h>
-
- #if MAJOR_IN_MKDEV
- #include <sys/mkdev.h>
diff --git a/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb b/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
index 655fd4dc..553840dd 100644
--- a/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
+++ b/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
@@ -9,20 +9,17 @@ Infrastructure (DRI)."
LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e"
-SRCREV = "e4fe79cf0d9a05ee3f3a027148ef0aeb2b1b34e1"
+SRCREV = "f66d39544bb8339130c96d282a80f87ca1606caf"
PV = "2.99.917+git${SRCPV}"
S = "${WORKDIR}/git"
-SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel \
- file://0001-Add-Coffeelake-PCI-IDs-for-S-Skus.patch \
- file://glibc.patch \
- "
+SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
DEPENDS += "virtual/libx11 drm libpciaccess pixman"
-PACKAGECONFIG ??= "xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri2 dri3', '', d)}"
+PACKAGECONFIG ??= "sna xvmc uxa udev ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri dri2 dri3', '', d)}"
PACKAGECONFIG[dri] = "--enable-dri,--disable-dri"
PACKAGECONFIG[dri1] = "--enable-dri1,--disable-dri1"
diff --git a/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch b/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch
new file mode 100644
index 00000000..9e017706
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa/0001-Refuse-to-run-on-UEFI-machines.patch
@@ -0,0 +1,52 @@
+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/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb b/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb
index 9a110148..f6aa5445 100644
--- a/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb
+++ b/external/poky/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.4.0.bb
@@ -17,3 +17,7 @@ RRECOMMENDS_${PN} += "xserver-xorg-module-libint10"
SRC_URI[md5sum] = "8134201beaf6f77150c7809c3cc802e6"
SRC_URI[sha256sum] = "bf443c94d7bf6cd4e248f8a3147f4647be04dc4c80250d9405006263bbdee38c"
+
+SRC_URI += " \
+ file://0001-Refuse-to-run-on-UEFI-machines.patch \
+ "
diff --git a/external/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc b/external/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
index e657c65b..e30f0447 100644
--- a/external/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
+++ b/external/poky/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
@@ -13,7 +13,9 @@ SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}.tar.bz2"
FILES_${PN} += " ${libdir}/xorg/modules/drivers/*.so"
-inherit autotools pkgconfig distro_features_check
+XORGBUILDCLASS ??= "autotools"
+inherit ${XORGBUILDCLASS} pkgconfig features_check
+
# depends on virtual/xserver
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/poky/meta/recipes-graphics/xorg-font/encodings/nocompiler.patch b/external/poky/meta/recipes-graphics/xorg-font/encodings/nocompiler.patch
index f330c185..ec7c7d80 100644
--- a/external/poky/meta/recipes-graphics/xorg-font/encodings/nocompiler.patch
+++ b/external/poky/meta/recipes-graphics/xorg-font/encodings/nocompiler.patch
@@ -1,23 +1,32 @@
+From b08c43a0842076e0a94e88ad6456a9326cd7ffc9 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 17 May 2011 23:03:02 +0000
+Subject: [PATCH] Improve handling of 'all' architecture recipes and their
+
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
+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 @@
+---
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 622c27b..5ee84ed 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -3,12 +3,12 @@ AC_INIT([encodings], [1.0.5],
+ [https://gitlab.freedesktop.org/xorg/font/encodings/issues])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
- AM_MAINTAINER_MODE
-# Require xorg-macros: XORG_DEFAULT_OPTIONS
m4_ifndef([XORG_MACROS_VERSION],
diff --git a/external/poky/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb b/external/poky/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
index 36766f2f..74014ff9 100644
--- a/external/poky/meta/recipes-graphics/xorg-font/encodings_1.0.4.bb
+++ b/external/poky/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
@@ -13,10 +13,13 @@ DEPENDS = "mkfontscale-native mkfontdir-native font-util-native"
RDEPENDS_${PN} = ""
SRC_URI += "file://nocompiler.patch"
+SRC_URI[md5sum] = "bbae4f247b88ccde0e85ed6a403da22a"
+SRC_URI[sha256sum] = "bd96e16143a044b19e87f217cf6a3763a70c561d1076aad6f6d862ec41774a31"
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/external/poky/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb b/external/poky/meta/recipes-graphics/xorg-font/font-util_1.3.2.bb
index 34646ff9..ebe7a603 100644
--- a/external/poky/meta/recipes-graphics/xorg-font/font-util_1.3.1.bb
+++ b/external/poky/meta/recipes-graphics/xorg-font/font-util_1.3.2.bb
@@ -12,11 +12,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=5df208ec65eb84ce5bb8d82d8f3b9675 \
DEPENDS = "encodings util-macros"
DEPENDS_class-native = "util-macros-native"
RDEPENDS_${PN} = "mkfontdir mkfontscale encodings"
-RDEPENDS_${PN}_class-native = "mkfontdir-native mkfontscale-native"
+RDEPENDS_${PN}_class-native = ""
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "23756dab809f9ec5011bb27fb2c3c7d6"
-SRC_URI[sha256sum] = "aa7ebdb0715106dd255082f2310dbaa2cd7e225957c2a77d719720c7cc92b921"
+SRC_URI[md5sum] = "3d6adb76fdd072db8c8fae41b40855e8"
+SRC_URI[sha256sum] = "3ad880444123ac06a7238546fa38a2a6ad7f7e0cc3614de7e103863616522282"
SYSROOT_DIRS_BLACKLIST_remove = "${datadir}/fonts"
diff --git a/external/poky/meta/recipes-graphics/xorg-font/xorg-font-common.inc b/external/poky/meta/recipes-graphics/xorg-font/xorg-font-common.inc
index cdbebcf7..f18c8aef 100644
--- a/external/poky/meta/recipes-graphics/xorg-font/xorg-font-common.inc
+++ b/external/poky/meta/recipes-graphics/xorg-font/xorg-font-common.inc
@@ -14,7 +14,7 @@ INC_PR = "r2"
SRC_URI = "${XORG_MIRROR}/individual/font/${XORG_PN}-${PV}.tar.bz2"
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"
diff --git a/external/poky/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb b/external/poky/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
index 9bcd1b2f..1ea08a6c 100644
--- a/external/poky/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
+++ b/external/poky/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
@@ -13,7 +13,7 @@ SRC_URI = "file://misc"
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"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/files/libx11-whitespace.patch b/external/poky/meta/recipes-graphics/xorg-lib/files/libx11-whitespace.patch
new file mode 100644
index 00000000..3f971430
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-lib/files/libx11-whitespace.patch
@@ -0,0 +1,56 @@
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/lib/libx11/merge_requests/33]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From b41469c5f08b1f3365667ff3c430b104c9b8e25f Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Wed, 22 Jan 2020 17:11:23 +0000
+Subject: [PATCH libX11] cpprules.in: squash whitespace in generated files
+
+CPP is used to generate files, but as cpp reads files from the build host the
+output has a number of blank lines at the beginning which varies depending on
+what GCC and friends is used.
+
+Pathalogical example:
+
+ $ cpp -undef -traditional /dev/null
+ # 1 "/dev/null"
+ # 1 "<built-in>"
+ # 1 "<command-line>"
+ # 31 "<command-line>"
+ # 1 "/usr/include/stdc-predef.h" 1 3 4
+
+ # 17 "/usr/include/stdc-predef.h" 3 4
+
+ [ 40 blank line ]
+
+ # 32 "<command-line>" 2
+ # 1 "/dev/null"
+
+So depending on the content of stdc-predef.h and what other headers CPP will
+load, the amount of whitespace in the generates files varies. This can result in
+differences in reproducible environments, and file conflicts in multilib
+environments.
+
+As whitespace is irrelevant to these machine-readable files, extend the sed to
+just delete blank lines.
+---
+ cpprules.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/cpprules.in b/cpprules.in
+index 03d6701e..ce6b3c98 100644
+--- a/cpprules.in
++++ b/cpprules.in
+@@ -23,7 +23,8 @@ CPP_SED_MAGIC = $(SED) -e '/^\# *[0-9][0-9]* *.*$$/d' \
+ -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \
+ -e '/^[ ]*XHASH/s/XHASH/\#/' \
+ -e 's,X11_LOCALEDATADIR,$(X11_LOCALEDATADIR),g' \
+- -e '/\@\@$$/s/\@\@$$/\\/'
++ -e '/\@\@$$/s/\@\@$$/\\/' \
++ -e '/^$$/d'
+
+ .pre:
+ @$(MKDIR_P) $(@D)
+--
+2.20.1
+
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb b/external/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.4.bb
index 34d5fc44..1fc74b19 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.3.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libfontenc_1.1.4.bb
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=96254c20ab81c63e65b26f0dbcd4a1c1"
DEPENDS += "zlib xorgproto font-util"
PE = "1"
-BBCLASSEXTEND = "native"
+SRC_URI[md5sum] = "6447db6a689fb530c218f0f8328c3abc"
+SRC_URI[sha256sum] = "2cfcce810ddd48f2e5dc658d28c1808e86dcf303eaff16728b9aa3dbc0092079"
-SRC_URI[md5sum] = "0920924c3a9ebc1265517bdd2f9fde50"
-SRC_URI[sha256sum] = "70588930e6fc9542ff38e0884778fbc6e6febf21adbab92fd8f524fe60aefd21"
+BBCLASSEXTEND = "native"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch b/external/poky/meta/recipes-graphics/xorg-lib/libice/CVE-2017-2626.patch
deleted file mode 100644
index 20c6dda2..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb b/external/poky/meta/recipes-graphics/xorg-lib/libice_1.0.10.bb
index 999434ee..6a6316f3 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libice_1.0.9.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libice_1.0.10.bb
@@ -18,12 +18,10 @@ PE = "1"
XORG_PN = "libICE"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
-SRC_URI[md5sum] = "addfb1e897ca8079531669c7c7711726"
-SRC_URI[sha256sum] = "8f7032f2c1c64352b5423f6b48a8ebdc339cc63064af34d66a6c9aa79759e202"
-
-SRC_URI += "file://CVE-2017-2626.patch"
+SRC_URI[md5sum] = "76d77499ee7120a56566891ca2c0dbcf"
+SRC_URI[sha256sum] = "6f86dce12cf4bcaf5c37dddd8b1b64ed2ddf1ef7b218f22b9942595fb747c348"
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/external/poky/meta/recipes-graphics/xorg-lib/libpciaccess/0004-Don-t-include-sys-io.h-on-arm.patch b/external/poky/meta/recipes-graphics/xorg-lib/libpciaccess/0004-Don-t-include-sys-io.h-on-arm.patch
deleted file mode 100644
index f5328582..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb b/external/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.16.bb
index d030c31b..b58cb80d 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.14.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libpciaccess_0.16.bb
@@ -6,11 +6,10 @@ 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"
+SRC_URI[md5sum] = "b34e2cbdd6aa8f9cc3fa613fd401a6d6"
+SRC_URI[sha256sum] = "214c9d0d884fdd7375ec8da8dcb91a8d3169f263294c9a90c575bf1938b9f489"
LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=277aada5222b9a22fbf3471ff3687068"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb b/external/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb
index fdc693be..49df690f 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.2.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libsm_1.2.3.bb
@@ -22,10 +22,10 @@ PE = "1"
XORG_PN = "libSM"
-BBCLASSEXTEND = "native"
-
-SRC_URI[md5sum] = "499a7773c65aba513609fe651853c5f3"
-SRC_URI[sha256sum] = "0baca8c9f5d934450a70896c4ad38d06475521255ca63b717a6510fdb6e287bd"
+SRC_URI[md5sum] = "87c7fad1c1813517979184c8ccd76628"
+SRC_URI[sha256sum] = "2d264499dcb05f56438dee12a1b4b71d76736ce7ba7aa6efbf15ebb113769cbb"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libx11-compose-data/0001-Drop-x11-dependencies.patch b/external/poky/meta/recipes-graphics/xorg-lib/libx11-compose-data/0001-Drop-x11-dependencies.patch
new file mode 100644
index 00000000..46a53a17
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libx11-compose-data/0001-Drop-x11-dependencies.patch
@@ -0,0 +1,86 @@
+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>
+---
+ configure.ac | 44 --------------------------------------------
+ 1 file changed, 44 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index a5fd706..b42488c 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.17 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])
+@@ -237,30 +218,6 @@ AC_SUBST(XTHREAD_CFLAGS)
+
+ 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*]),
+@@ -340,7 +297,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/external/poky/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb b/external/poky/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb
new file mode 100644
index 00000000..3d97ad78
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb
@@ -0,0 +1,36 @@
+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 & MIT-style & BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=172255dee66bb0151435b2d5d709fcf7"
+
+SRC_URI[md5sum] = "c5fa5a86a20e3591bed6c046498d4b8f"
+SRC_URI[sha256sum] = "b289a845c189e251e0e884cc0f9269bbe97c238df3741e854ec4c17c21e473d5"
+
+SRC_URI += "file://0001-Drop-x11-dependencies.patch \
+ file://libx11-whitespace.patch"
+
+XORG_PN = "libX11"
+
+EXTRA_OECONF += "--disable-xkb"
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${datadir}/X11/locale ${libdir}/X11/locale"
+
+do_compile() {
+ oe_runmake -C nls
+}
+
+do_install() {
+ oe_runmake DESTDIR=${D} -C nls install
+}
+
+REQUIRED_DISTRO_FEATURES = ""
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb b/external/poky/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb
deleted file mode 100644
index a4ba4e54..00000000
--- a/external/poky/meta/recipes-graphics/xorg-lib/libx11-diet_1.6.6.bb
+++ /dev/null
@@ -1,19 +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"
-
-SRC_URI[md5sum] = "6b0f83e851b3b469dd660f3a95ac3e42"
-SRC_URI[sha256sum] = "65fe181d40ec77f45417710c6a67431814ab252d21c2e85c75dd1ed568af414f"
-
-EXTRA_OECONF += "--disable-xlocale"
-
-PACKAGECONFIG ??= ""
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch b/external/poky/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch
index 897882b8..2a723b7e 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch
@@ -17,19 +17,19 @@ 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(-)
-diff --git a/src/xcb_io.c b/src/xcb_io.c
-index 5987329..c64eb04 100644
---- a/src/xcb_io.c
-+++ b/src/xcb_io.c
-@@ -609,22 +609,17 @@ Status _XReply(Display *dpy, xReply *rep, int extra, Bool discard)
- * letting anyone else process this sequence number, we
- * need to process any events that should have come
- * earlier. */
--
+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;
@@ -42,6 +42,9 @@ index 5987329..c64eb04 100644
- 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. */
@@ -49,12 +52,7 @@ index 5987329..c64eb04 100644
+ {
+ while((event = poll_for_response(dpy)))
+ handle_response(dpy, event, True);
- }
-- while((event = poll_for_event(dpy)))
-- handle_response(dpy, event, True);
++ }
}
req->reply_waiter = 0;
---
-2.10.1
-
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch b/external/poky/meta/recipes-graphics/xorg-lib/libx11/X18NCMSstubs.patch
deleted file mode 100644
index c1172147..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch b/external/poky/meta/recipes-graphics/xorg-lib/libx11/fix-disable-xlocale.patch
deleted file mode 100644
index 09cf74ff..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch b/external/poky/meta/recipes-graphics/xorg-lib/libx11/fix-utf8-wrong-define.patch
deleted file mode 100644
index 0b57e0b0..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb b/external/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb
deleted file mode 100644
index 0fee1a90..00000000
--- a/external/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.6.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require libx11.inc
-inherit gettext
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI += "file://disable_tests.patch \
- file://Fix-hanging-issue-in-_XReply.patch \
- "
-do_configure_append () {
- sed -i -e "/X11_CFLAGS/d" ${B}/src/util/Makefile
-}
-
-SRC_URI[md5sum] = "6b0f83e851b3b469dd660f3a95ac3e42"
-SRC_URI[sha256sum] = "65fe181d40ec77f45417710c6a67431814ab252d21c2e85c75dd1ed568af414f"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libx11.inc b/external/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.9.bb
index 36c950ad..ff60a424 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libx11.inc
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libx11_1.6.9.bb
@@ -10,6 +10,13 @@ FILESEXTRAPATHS =. "${FILE_DIRNAME}/libx11:"
PE = "1"
+SRC_URI += "file://Fix-hanging-issue-in-_XReply.patch \
+ file://disable_tests.patch \
+ file://libx11-whitespace.patch"
+
+SRC_URI[md5sum] = "55adbfb6d4370ecac5e70598c4e7eed2"
+SRC_URI[sha256sum] = "9cc7e8d000d6193fa5af580d50d689380b8287052270f5bb26a5fb6b58b2bed1"
+
PROVIDES = "virtual/libx11"
XORG_PN = "libX11"
@@ -30,6 +37,10 @@ CPPFLAGS_FOR_BUILD += "-D_GNU_SOURCE"
PACKAGES =+ "${PN}-xcb"
+inherit gettext
+
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/external/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb
index 8c52475b..dcfc6665 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.8.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxau_1.0.9.bb
@@ -20,5 +20,5 @@ XORG_PN = "libXau"
BBCLASSEXTEND = "native nativesdk"
-SRC_URI[md5sum] = "685f8abbffa6d145c0f930f00703b21b"
-SRC_URI[sha256sum] = "fdd477320aeb5cdd67272838722d6b7d544887dfe7de46e1e7cc0c27c2bea4f2"
+SRC_URI[md5sum] = "c5f16288f2da9f071b29111d68797480"
+SRC_URI[sha256sum] = "ccf8cbf0dbf676faa2ea0a6d64bcc3b6746064722b606c8c52917ed00dcb73ec"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxcb/gcc-mips-pr68302-mips-workaround.patch b/external/poky/meta/recipes-graphics/xorg-lib/libxcb/gcc-mips-pr68302-mips-workaround.patch
deleted file mode 100644
index 698d038f..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libxcb_1.13.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb
index a8e0307e..9befc51b 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxcb_1.13.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxcb_1.13.1.bb
@@ -12,11 +12,10 @@ 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[md5sum] = "c2b6cf928afa16b0047c974e7aaa783f"
-SRC_URI[sha256sum] = "188c8752193c50ff2dbe89db4554c63df2e26a2e47b0fa415a70918b5b851daa"
+SRC_URI[md5sum] = "f33cdfc67346f7217a9326c0d8679975"
+SRC_URI[sha256sum] = "a89fb7af7a11f43d2ce84a844a4b38df688c092bf4b67683aef179cdf2a647c4"
BBCLASSEXTEND = "native nativesdk"
@@ -26,14 +25,13 @@ PACKAGES_DYNAMIC = "^libxcb-.*"
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}', '^libxcb-(.*)\.so\..*$', 'libxcb-%s', 'XCB library module for %s', allow_links=True)
+ do_split_packages(d, '${libdir}', r'^libxcb-(.*)\.so\..*$', 'libxcb-%s', 'XCB library module for %s', allow_links=True)
}
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb
index 73e29484..3ef3ddb8 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.4.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxcomposite_0.4.5.bb
@@ -16,7 +16,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3f2907aad541f6f226fbc58cc1b3cdf1"
DEPENDS += " xorgproto virtual/libx11 libxfixes libxext"
PROVIDES = "xcomposite"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
PE = "1"
@@ -24,5 +24,5 @@ XORG_PN = "libXcomposite"
SRC_URI += " file://change-include-order.patch"
-SRC_URI[md5sum] = "f7a218dcbf6f0848599c6c36fc65c51a"
-SRC_URI[sha256sum] = "ede250cd207d8bee4a338265c3007d7a68d5aca791b6ac41af18e9a2aeb34178"
+SRC_URI[md5sum] = "3fa0841ea89024719b20cd702a9b54e0"
+SRC_URI[sha256sum] = "b3218a2c15bab8035d16810df5b8251ffc7132ff3aa70651a1fba0bfe9634e8f"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxcursor_1.1.15.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb
index dc9af233..2df7a3a4 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxcursor_1.1.15.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxcursor_1.2.0.bb
@@ -12,11 +12,12 @@ LICENSE = "MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=8902e6643f7bcd7793b23dcd5d8031a4"
DEPENDS += "libxrender libxfixes"
-BBCLASSEXTEND = "native nativesdk"
PE = "1"
XORG_PN = "libXcursor"
-SRC_URI[md5sum] = "58fe3514e1e7135cf364101e714d1a14"
-SRC_URI[sha256sum] = "294e670dd37cd23995e69aae626629d4a2dfe5708851bbc13d032401b7a3df6b"
+SRC_URI[md5sum] = "9b9be0e289130fb820aedf67705fc549"
+SRC_URI[sha256sum] = "3ad3e9f8251094af6fe8cb4afcf63e28df504d46bfa5a5529db74a505d628782"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.5.bb
index 6d6ffadf..b201124d 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.4.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxdamage_1.1.5.bb
@@ -18,11 +18,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=9fe101f30dd24134cf43146863241868"
DEPENDS += "virtual/libx11 xorgproto libxfixes"
PROVIDES = "xdamage"
-BBCLASSEXTEND = "native"
PE = "1"
XORG_PN = "libXdamage"
-SRC_URI[md5sum] = "0cf292de2a9fa2e9a939aefde68fd34f"
-SRC_URI[sha256sum] = "7c3fe7c657e83547f4822bfde30a90d84524efb56365448768409b77f05355ad"
+SRC_URI[md5sum] = "e3f554267a7a04b042dc1f6352bd6d99"
+SRC_URI[sha256sum] = "b734068643cac3b5f3d2c8279dd366b5bf28c7219d9e9d8717e1383995e0ea45"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.3.bb
index 466f3491..d43a146f 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.2.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxdmcp_1.1.3.bb
@@ -22,8 +22,8 @@ XORG_PN = "libXdmcp"
BBCLASSEXTEND = "native nativesdk"
-SRC_URI[md5sum] = "18aa5c1279b01f9d18e3299969665b2e"
-SRC_URI[sha256sum] = "81fe09867918fff258296e1e1e159f0dc639cb30d201c53519f25ab73af4e4e2"
+SRC_URI[md5sum] = "115c5c12ecce0e749cd91d999a5fd160"
+SRC_URI[sha256sum] = "20523b44aaa513e17c009e873ad7bbc301507a3224c232610ce2e099011c6529"
PACKAGECONFIG ??= ""
PACKAGECONFIG[arc4] = "ac_cv_lib_bsd_arc4random_buf=yes,ac_cv_lib_bsd_arc4random_buf=no,libbsd"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.4.bb
index aae8f2af..9493111a 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.3.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxext_1.3.4.bb
@@ -22,5 +22,5 @@ XORG_PN = "libXext"
BBCLASSEXTEND = "native nativesdk"
-SRC_URI[md5sum] = "52df7c4c1f0badd9f82ab124fb32eb97"
-SRC_URI[sha256sum] = "b518d4d332231f313371fdefac59e3776f4f0823bcb23cf7c7305bfb57b16e35"
+SRC_URI[md5sum] = "f5b48bb76ba327cd2a8dc7a383532a95"
+SRC_URI[sha256sum] = "59ad6fcce98deaecc14d39a672cf218ca37aba617c9a0f691cac3bcd28edf82b"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.4.bb
index 2b72d675..1c9cc0a2 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.3.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxfont2_2.0.4.bb
@@ -15,8 +15,10 @@ XORG_PN = "libXfont2"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "b7ca87dfafeb5205b28a1e91ac3efe85"
-SRC_URI[sha256sum] = "0e8ab7fd737ccdfe87e1f02b55f221f0bd4503a1c5f28be4ed6a54586bac9c4e"
+SRC_URI[md5sum] = "00516bed7ec1453d56974560379fff2f"
+SRC_URI[sha256sum] = "6d151b3368e5035efede4b6264c0fdc6662c1c99dbc2de425e3480cababc69e6"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
+CVE_PRODUCT = "libxfont libxfont2"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxft_2.3.2.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxft_2.3.3.bb
index b4547819..65bd9ae4 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxft_2.3.2.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxft_2.3.3.bb
@@ -20,12 +20,12 @@ PROVIDES = "xft"
PE = "1"
-SRC_URI[md5sum] = "331b3a2a3a1a78b5b44cfbd43f86fcfe"
-SRC_URI[sha256sum] = "f5a3c824761df351ca91827ac221090943ef28b248573486050de89f4bfcdc4c"
+SRC_URI[md5sum] = "4a433c24627b4ff60a4dd403a0990796"
+SRC_URI[sha256sum] = "225c68e616dd29dbb27809e45e9eadf18e4d74c50be43020ef20015274529216"
XORG_PN = "libXft"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
python () {
if d.getVar('DEBIAN_NAMES'):
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.10.bb
index 08381d9c..5a08e073 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.9.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxi_1.7.10.bb
@@ -17,6 +17,7 @@ PE = "1"
XORG_PN = "libXi"
-SRC_URI[md5sum] = "1f0f2719c020655a60aee334ddd26d67"
-SRC_URI[sha256sum] = "c2e6b8ff84f9448386c1b5510a5cf5a16d788f76db018194dacdc200180faf45"
+SRC_URI[md5sum] = "62c4af0839072024b4b1c8cbe84216c7"
+SRC_URI[sha256sum] = "36a30d8f6383a72e7ce060298b4b181fd298bc3a135c8e201b7ca847f5f81061"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.10.0.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.10.0.bb
new file mode 100644
index 00000000..16d9c36e
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.10.0.bb
@@ -0,0 +1,27 @@
+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] = "2d9ad3a46b317138b5e72a91cf105451"
+SRC_URI[sha256sum] = "57c3630cdc38fb4734cd57fa349e92244f5ae3862813e533cedbd86721a0b6f2"
+
+UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON = "-Denable-docs=false"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)}"
+PACKAGECONFIG[x11] = "-Denable-x11=true,-Denable-x11=false,libxcb xkeyboard-config,"
+PACKAGECONFIG[wayland] = "-Denable-wayland=true,-Denable-wayland=false,wayland-native wayland wayland-protocols,"
+
+# 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)}"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.bb
deleted file mode 100644
index 8cf508b0..00000000
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.2.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] = "5f7f8533f907ebcfb1cf8dceb9501264"
-SRC_URI[sha256sum] = "7ab8c4b3403d89d01898066b72cb6069bddeb5af94905a65368f671a026ed58c"
-
-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/external/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.1.0.bb
index f5c18607..3a6c50ca 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.0.9.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxkbfile_1.1.0.bb
@@ -14,5 +14,5 @@ PE = "1"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "4a4cfeaf24dab1b991903455d6d7d404"
-SRC_URI[sha256sum] = "51817e0530961975d9513b773960b4edd275f7d5c72293d5a151ed4f42aeb16a"
+SRC_URI[md5sum] = "dd7e1e946def674e78c0efbc5c7d5b3b"
+SRC_URI[sha256sum] = "758dbdaa20add2db4902df0b1b7c936564b7376c02a0acd1f2a331bd334b38c7"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb
index 4740c157..dc3179f5 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.2.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb
@@ -7,7 +7,6 @@ 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"
@@ -28,8 +27,8 @@ FILES_libxmuu = "${libdir}/libXmuu.so.*"
BBCLASSEXTEND = "native"
-SRC_URI[md5sum] = "41d92ab627dfa06568076043f3e089e4"
-SRC_URI[sha256sum] = "756edc7c383254eef8b4e1b733c3bf1dc061b523c9f9833ac7058378b8349d0b"
+SRC_URI[md5sum] = "ac774cff8b493f566088a255dbf91201"
+SRC_URI[sha256sum] = "9c343225e7c3dc0904f2122b562278da5fed639b1b5e880d25111561bac5b731"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxpm_3.5.12.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb
index 13a1b919..fda8e32d 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxpm_3.5.12.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb
@@ -10,9 +10,9 @@ 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"
+LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=51f4270b012ecd4ab1a164f5f4ed6cf7"
-DEPENDS += "libxext libsm libxt"
+DEPENDS += "libxext libsm libxt gettext-native"
PE = "1"
XORG_PN = "libXpm"
@@ -21,7 +21,7 @@ PACKAGES =+ "sxpm cxpm"
FILES_cxpm = "${bindir}/cxpm"
FILES_sxpm = "${bindir}/sxpm"
-SRC_URI[md5sum] = "20f4627672edb2bd06a749f11aa97302"
-SRC_URI[sha256sum] = "fd6a6de3da48de8d1bb738ab6be4ad67f7cb0986c39bd3f7d51dd24f7854bdec"
+SRC_URI[md5sum] = "6f0ecf8d103d528cfc803aa475137afa"
+SRC_URI[sha256sum] = "9cd1da57588b6cb71450eff2273ef6b657537a9ac4d02d0014228845b935ac25"
BBCLASSEXTEND = "native"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.2.bb
index b90ebc62..53a8335d 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.1.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxrandr_1.5.2.bb
@@ -19,5 +19,5 @@ XORG_PN = "libXrandr"
BBCLASSEXTEND = "native nativesdk"
-SRC_URI[md5sum] = "28e486f1d491b757173dd85ba34ee884"
-SRC_URI[sha256sum] = "1ff9e7fa0e4adea912b16a5f0cfa7c1d35b0dcda0e216831f7715c8a3abcf51a"
+SRC_URI[md5sum] = "18f3b20d522f45e4dadd34afb5bea048"
+SRC_URI[sha256sum] = "8aea0ebe403d62330bb741ed595b53741acf45033d3bda1792f1d4cc3daee023"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
index 85a48e4c..cc456965 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
@@ -11,6 +11,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=47e508ca280fde97906eacb77892c3ac"
DEPENDS += "virtual/libx11"
+EXTRA_OECONF += "--with-shared-memory-dir=/dev/shm"
+
BBCLASSEXTEND = "native nativesdk"
SRC_URI[md5sum] = "42dda8016943dc12aff2c03a036e0937"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxt/0001-libXt-util-don-t-link-makestrs-with-target-cflags.patch b/external/poky/meta/recipes-graphics/xorg-lib/libxt/0001-libXt-util-don-t-link-makestrs-with-target-cflags.patch
deleted file mode 100644
index 1a691a3d..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch b/external/poky/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch
index ffc2c15d..ff8c675d 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxt/libxt_fix_for_x32.patch
+++ b/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxt_1.2.0.bb
index f8d94a2f..42df4350 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxt_1.1.5.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxt_1.2.0.bb
@@ -13,8 +13,7 @@ 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"
-
+LIC_FILES_CHKSUM = "file://COPYING;md5=73d55cea4d27ca1a09a5d23378b3ecf8"
DEPENDS += "util-linux libxcb libsm virtual/libx11 xorgproto libxdmcp"
PROVIDES = "xt"
@@ -24,12 +23,10 @@ PE = "1"
XORG_PN = "libXt"
SRC_URI += "file://libxt_fix_for_x32.patch \
- file://0001-libXt-util-don-t-link-makestrs-with-target-cflags.patch \
"
+SRC_URI[md5sum] = "a9019421d3ee8b4937b6afd9025f018a"
+SRC_URI[sha256sum] = "b31df531dabed9f4611fc8980bc51d7782967e2aff44c4105251a1acb5a77831"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
EXTRA_OECONF += "--disable-xkb"
-
-SRC_URI[md5sum] = "8f5b5576fbabba29a05f3ca2226f74d3"
-SRC_URI[sha256sum] = "46eeb6be780211fdd98c5109286618f6707712235fdd19df4ce1e6954f349f1a"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb
index 266bd1ca..7837f69d 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxtst_1.2.3.bb
@@ -19,3 +19,4 @@ XORG_PN = "libXtst"
SRC_URI[md5sum] = "ef8c2c1d16a00bd95b9fdcef63b8a2ca"
SRC_URI[sha256sum] = "4655498a1b8e844e3d6f21f3b2c4e2b571effb5fd83199d428a6ba7ea4bf5204"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.12.bb
index 7e49a98d..29ed0c43 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.10.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/libxvmc_1.0.12.bb
@@ -15,5 +15,5 @@ PE = "1"
XORG_PN = "libXvMC"
-SRC_URI[md5sum] = "4cbe1c1def7a5e1b0ed5fce8e512f4c6"
-SRC_URI[sha256sum] = "e501a079b5dfaef0897c56152770c77e05e362065cec58910289aa567277ee2e"
+SRC_URI[md5sum] = "3569ff7f3e26864d986d6a21147eaa58"
+SRC_URI[sha256sum] = "6b3da7977b3f7eaf4f0ac6470ab1e562298d82c4e79077765787963ab7966dcd"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxxf86dga_1.1.4.bb
deleted file mode 100644
index 626199e0..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb b/external/poky/meta/recipes-graphics/xorg-lib/libxxf86misc_1.0.4.bb
deleted file mode 100644
index 45b0673e..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch b/external/poky/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch
index 782c1db0..23cbf53a 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch
+++ b/external/poky/meta/recipes-graphics/xorg-lib/pixman/0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch
@@ -7,7 +7,7 @@ Some architectures e.g. nios2 do not support all exceptions
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
-Upstream-Status: Submitted
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/pixman/pixman/merge_requests/24]
test/utils.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/pixman/asm_include.patch b/external/poky/meta/recipes-graphics/xorg-lib/pixman/asm_include.patch
deleted file mode 100644
index b52a5707..00000000
--- a/external/poky/meta/recipes-graphics/xorg-lib/pixman/asm_include.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Fixes errors like
-
-Assembler messages:
-Fatal error: can't create .libs/pixman-mips-dspr2-asm.o: No such file or directory
-
-it works with glibc because it uses gcc fixed-headers but thats not right.
-
-We move the include under C block
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-Index: pixman-0.32.6/pixman/pixman-private.h
-===================================================================
---- pixman-0.32.6.orig/pixman/pixman-private.h
-+++ pixman-0.32.6/pixman/pixman-private.h
-@@ -1,4 +1,3 @@
--#include <float.h>
-
- #ifndef PIXMAN_PRIVATE_H
- #define PIXMAN_PRIVATE_H
-@@ -17,6 +16,8 @@
-
- #ifndef __ASSEMBLER__
-
-+#include <float.h>
-+
- #ifndef PACKAGE
- # error config.h must be included before pixman-private.h
- #endif
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/pixman_0.34.0.bb b/external/poky/meta/recipes-graphics/xorg-lib/pixman_0.34.0.bb
deleted file mode 100644
index c290fa46..00000000
--- a/external/poky/meta/recipes-graphics/xorg-lib/pixman_0.34.0.bb
+++ /dev/null
@@ -1,41 +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://asm_include.patch \
- file://0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch \
-"
-
-SRC_URI[md5sum] = "002a4fcb644ddfcb4b0e4191576a0d59"
-SRC_URI[sha256sum] = "39ba3438f3d17c464b0cb8be006dacbca0ab5aee97ebde69fec7ecdbf85794a0"
-
-REQUIRED_DISTRO_FEATURES = ""
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/pixman_0.38.4.bb b/external/poky/meta/recipes-graphics/xorg-lib/pixman_0.38.4.bb
new file mode 100644
index 00000000..22e19ba0
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-lib/pixman_0.38.4.bb
@@ -0,0 +1,36 @@
+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 \
+ file://0001-test-utils-Check-for-FE_INVALID-definition-before-us.patch \
+ "
+SRC_URI[md5sum] = "267a7af290f93f643a1bc74490d9fdd1"
+SRC_URI[sha256sum] = "da66d6fd6e40aee70f7bd02e4f8f76fc3f006ec879d346bae6a723025cfbdde7"
+
+# 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 & 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 \
+ "
+
+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"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/xcb-util.inc b/external/poky/meta/recipes-graphics/xorg-lib/xcb-util.inc
index 99d04f9d..0e5ab70b 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/xcb-util.inc
+++ b/external/poky/meta/recipes-graphics/xorg-lib/xcb-util.inc
@@ -18,6 +18,6 @@ DEPENDS += "gperf-native"
SRC_URI = "http://xcb.freedesktop.org/dist/${BPN}-${PV}.tar.bz2"
-inherit autotools pkgconfig distro_features_check
+inherit autotools pkgconfig features_check
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.24.bb b/external/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.28.bb
index 7d0e608e..7a3d694b 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.24.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.28.bb
@@ -13,12 +13,11 @@ LICENSE = "MIT & MIT-style"
LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "74c4bdf52382127cb5802c3f2ab441e0"
-SRC_URI[sha256sum] = "91b18580f46b4e4ea913707f6c8d68ab5286879c3a6591462f3b9e760d3ac4d7"
+SRC_URI[md5sum] = "5a968ab77846ff85a04242410b2a61de"
+SRC_URI[sha256sum] = "69adb25b0fc64e4075f8ec0eab8d869892419f474f91fb69db1713de2062bdce"
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"
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc b/external/poky/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc
index 6f4e4445..a566eaa4 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc
+++ b/external/poky/meta/recipes-graphics/xorg-lib/xorg-lib-common.inc
@@ -11,7 +11,7 @@ SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.bz2"
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"
@@ -24,4 +24,3 @@ UNKNOWN_CONFIGURE_WHITELIST += "--enable-malloc0returnsnull --disable-malloc0ret
"
REQUIRED_DISTRO_FEATURES ?= "x11"
-REQUIRED_DISTRO_FEATURES_class-native = ""
diff --git a/external/poky/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb b/external/poky/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb
index 200716fb..5bf134b5 100644
--- a/external/poky/meta/recipes-graphics/xorg-lib/xtrans_1.3.5.bb
+++ b/external/poky/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb
@@ -22,5 +22,5 @@ inherit gettext
BBCLASSEXTEND = "native nativesdk"
-SRC_URI[md5sum] = "c5ba432dd1514d858053ffe9f4737dd8"
-SRC_URI[sha256sum] = "adbd3b36932ce4c062cd10f57d78a156ba98d618bdb6f50664da327502bc8301"
+SRC_URI[md5sum] = "ce2fb8100c6647ee81451ebe388b17ad"
+SRC_URI[sha256sum] = "377c4491593c417946efcd2c7600d1e62639f7a8bbca391887e2c4679807d773"
diff --git a/external/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb b/external/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb
index d5037868..74670909 100644
--- a/external/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb
+++ b/external/poky/meta/recipes-graphics/xorg-proto/xcb-proto_1.13.bb
@@ -12,40 +12,18 @@ 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"
-inherit autotools pkgconfig
-
-# Force the use of Python 3 and a specific library path so we don't need to
-# depend on python3-native
-CACHED_CONFIGUREVARS += "PYTHON=python3 am_cv_python_pythondir=${libdir}/xcb-proto"
+inherit autotools pkgconfig python3native
PACKAGES += "python-xcbgen"
FILES_${PN} = ""
FILES_${PN}-dev += "${datadir}/xcb/*.xml ${datadir}/xcb/*.xsd"
-FILES_python-xcbgen = "${libdir}/xcb-proto"
+FILES_python-xcbgen = "${PYTHON_SITEPACKAGES_DIR}"
RDEPENDS_${PN}-dev = ""
RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
BBCLASSEXTEND = "native nativesdk"
-
-# Need to do this dance because we're forcing the use of host Python above and
-# if xcb-proto is built with Py3.5 and then re-used from sstate on a host with
-# Py3.6 the second build will write new cache files into the sysroot which won't
-# be listed in the manifest so won't be deleted, resulting in an error on
-# rebuilds. Solve this by deleting the entire cache directory when this package
-# is removed from the sysroot.
-SSTATEPOSTINSTFUNCS += "xcb_sstate_postinst"
-xcb_sstate_postinst() {
- if [ "${BB_CURRENTTASK}" = "populate_sysroot" -o "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
- then
- cat <<EOF >${SSTATE_INST_POSTRM}
-#!/bin/sh
-rm -rf ${libdir}/xcb-proto/xcbgen/__pycache__
-EOF
- fi
-}
diff --git a/external/poky/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc b/external/poky/meta/recipes-graphics/xorg-proto/xorg-proto-common.inc
deleted file mode 100644
index 7a417c97..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch b/external/poky/meta/recipes-graphics/xorg-proto/xorgproto/0001-Remove-libdir-specification.patch
deleted file mode 100644
index 48296f78..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-proto/xorgproto/legacy.patch b/external/poky/meta/recipes-graphics/xorg-proto/xorgproto/legacy.patch
new file mode 100644
index 00000000..e25db04b
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-proto/xorgproto/legacy.patch
@@ -0,0 +1,97 @@
+These headers should be legacy to ensure autotools/meson intall the same files.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/proto/xorgproto/merge_requests/12]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+diff --git a/include/X11/extensions/meson.build b/include/X11/extensions/meson.build
+index 1d85cf8..d1ac281 100644
+--- a/include/X11/extensions/meson.build
++++ b/include/X11/extensions/meson.build
+@@ -65,8 +65,6 @@ install_headers(
+ 'xf86dga.h',
+ 'xf86dgaproto.h',
+ 'xf86dgastr.h',
+- 'xf86misc.h',
+- 'xf86mscstr.h',
+ 'xf86vm.h',
+ 'xf86vmproto.h',
+ 'xf86vmstr.h',
+@@ -85,13 +83,6 @@ install_headers(
+ 'xtestext1const.h',
+ 'xtestext1proto.h',
+ 'xtestproto.h',
+- 'xtrapbits.h',
+- 'xtrapddmi.h',
+- 'xtrapdi.h',
+- 'xtrapemacros.h',
+- 'xtraplib.h',
+- 'xtraplibp.h',
+- 'xtrapproto.h',
+ 'Xv.h',
+ 'XvMC.h',
+ 'XvMCproto.h',
+@@ -113,7 +104,16 @@ if get_option('legacy') == true
+ 'windowswmstr.h',
+ 'xcalibrateproto.h',
+ 'xcalibratewire.h',
++ 'xtrapbits.h',
++ 'xtrapddmi.h',
++ 'xtrapdi.h',
++ 'xtrapemacros.h',
++ 'xtraplib.h',
++ 'xtraplibp.h',
++ 'xtrapproto.h',
+ 'Xeviestr.h',
++ 'xf86misc.h',
++ 'xf86mscstr.h',
+ 'xf86rush.h',
+ 'xf86rushstr.h',
+ 'XKBgeom.h',
+diff --git a/include/X11/meson.build b/include/X11/meson.build
+index 1c33c64..a4b022e 100644
+--- a/include/X11/meson.build
++++ b/include/X11/meson.build
+@@ -59,4 +59,6 @@ install_headers(
+ subdir('dri')
+ subdir('extensions')
+ subdir('fonts')
+-subdir('PM')
++if get_option('legacy') == true
++ subdir('PM')
++endif
+diff --git a/meson.build b/meson.build
+index cfbaa2c..68e622a 100644
+--- a/meson.build
++++ b/meson.build
+@@ -42,18 +42,15 @@ pcs = [
+ ['renderproto', '0.11.1'],
+ ['resourceproto', '1.2.0'],
+ ['scrnsaverproto', '1.2.2'],
+- ['trapproto', '3.4.3'],
+ ['videoproto', '2.3.3'],
+ ['xcmiscproto', '1.2.2'],
+ ['xextproto', '7.3.0'],
+ ['xf86bigfontproto', '1.2.0'],
+ ['xf86dgaproto', '2.1'],
+ ['xf86driproto', '2.1.1'],
+- ['xf86miscproto', '0.9.3'],
+ ['xf86vidmodeproto', '2.3.1'],
+ ['xineramaproto', '1.2.1'],
+ ['xproto', '7.0.32'],
+- ['xproxymngproto', '1.0.3'],
+ ]
+
+ foreach pc : pcs
+@@ -78,9 +75,12 @@ if get_option('legacy') == true
+ ['fontcacheproto', '0.1.3'],
+ ['lg3dproto', '5.0'],
+ ['printproto', '1.0.5'],
++ ['trapproto', '3.4.3'],
+ ['windowswmproto', '1.0.4'],
+ ['xcalibrateproto', '0.1.0'],
++ ['xf86miscproto', '0.9.3'],
+ ['xf86rushproto', '1.2.2'],
++ ['xproxymngproto', '1.0.3'],
+ ]
+ foreach pc : legacy_pcs
+ pkg.generate(
diff --git a/external/poky/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb b/external/poky/meta/recipes-graphics/xorg-proto/xorgproto_2018.4.bb
deleted file mode 100644
index cec6e875..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-proto/xorgproto_2019.2.bb b/external/poky/meta/recipes-graphics/xorg-proto/xorgproto_2019.2.bb
new file mode 100644
index 00000000..c0785ccd
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-proto/xorgproto_2019.2.bb
@@ -0,0 +1,28 @@
+
+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-style"
+LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=b9e051107d5628966739a0b2e9b32676"
+
+SRC_URI = "${XORG_MIRROR}/individual/proto/${BP}.tar.bz2 \
+ file://legacy.patch"
+SRC_URI[md5sum] = "a02dcaff48b4141b949ac99dfc344d86"
+SRC_URI[sha256sum] = "46ecd0156c561d41e8aa87ce79340910cdf38373b759e737fcbba5df508e7b8e"
+
+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
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/external/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb b/external/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.6.bb
index 727ab549..2760edd1 100644
--- a/external/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.5.bb
+++ b/external/poky/meta/recipes-graphics/xorg-util/makedepend_1.0.6.bb
@@ -17,5 +17,5 @@ BBCLASSEXTEND = "native"
LIC_FILES_CHKSUM = "file://COPYING;md5=43a6eda34b48ee821b3b66f4f753ce4f"
-SRC_URI[md5sum] = "efb2d7c7e22840947863efaedc175747"
-SRC_URI[sha256sum] = "503903d41fb5badb73cb70d7b3740c8b30fe1cc68c504d3b6a85e6644c4e5004"
+SRC_URI[md5sum] = "8a583055c84914060c35b6c2f963fc07"
+SRC_URI[sha256sum] = "845f6708fc850bf53f5b1d0fb4352c4feab3949f140b26f71b22faba354c3365"
diff --git a/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips/xorg.conf
deleted file mode 100644
index 1d3c64f6..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xf86-config/qemumips64/xorg.conf
deleted file mode 100644
index 03b94dc3..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index 489a4285..b4f07601 100644
--- a/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -18,16 +18,17 @@ INC_PR = "r8"
XORG_PN = "xorg-server"
SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2"
+CVE_PRODUCT = "xorg-server"
+
S = "${WORKDIR}/${XORG_PN}-${PV}"
inherit autotools 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"
+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:
@@ -116,28 +117,30 @@ EXTRA_OECONF += "--with-fop=no \
--sysconfdir=/etc/X11 \
--localstatedir=/var \
--with-xkb-output=/var/lib/xkb \
+ --with-os-name=Linux \
"
OPENGL_PKGCONFIGS = "dri glx glamor dri3 xshmfence"
-PACKAGECONFIG ??= "dri2 udev ${XORG_CRYPTO} \
+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)} \
"
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"
+PACKAGECONFIG[dga] = "--enable-dga,--disable-dga"
+PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,virtual/mesa"
+PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2"
# 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[dri3] = "--enable-dri3,--disable-dri3"
+PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,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[xinerama] = "--enable-xinerama,--disable-xinerama"
PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland,wayland wayland-native wayland-protocols libepoxy"
# Xorg requires a SHA1 implementation, pick one
@@ -149,6 +152,7 @@ PACKAGECONFIG[gcrypt] = "--with-sha1=libgcrypt,,libgcrypt"
do_install_append () {
# Its assumed base-files creates this for us
rmdir ${D}${localstatedir}/log/
+ 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,
diff --git a/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-drmmode_display.c-add-missing-mi.h-include.patch b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-drmmode_display.c-add-missing-mi.h-include.patch
new file mode 100644
index 00000000..4b8e43f1
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-drmmode_display.c-add-missing-mi.h-include.patch
@@ -0,0 +1,23 @@
+From 84338444179cab7ede1252a11b66e3b8f657e6a4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 7 Feb 2020 20:36:45 +0100
+Subject: [PATCH] drmmode_display.c: add missing mi.h include
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ hw/xfree86/drivers/modesetting/drmmode_display.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
+index e18cc37..3445cce 100644
+--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
++++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
+@@ -46,6 +46,7 @@
+ #include "xf86Crtc.h"
+ #include "drmmode_display.h"
+ #include "present.h"
++#include "mi.h"
+
+ #include <cursorstr.h>
+
diff --git a/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch
new file mode 100644
index 00000000..c0c24281
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch
@@ -0,0 +1,36 @@
+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/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/CVE-2018-14665.patch b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/CVE-2018-14665.patch
deleted file mode 100644
index 7f6235b4..00000000
--- a/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/CVE-2018-14665.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Incorrect command-line parameter validation in the Xorg X server can lead to
-privilege elevation and/or arbitrary files overwrite, when the X server is
-running with elevated privileges (ie when Xorg is installed with the setuid bit
-set and started by a non-root user). The -modulepath argument can be used to
-specify an insecure path to modules that are going to be loaded in the X server,
-allowing to execute unprivileged code in the privileged process. The -logfile
-argument can be used to overwrite arbitrary files in the file system, due to
-incorrect checks in the parsing of the option.
-
-CVE: CVE-2018-14665
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 50c0cf885a6e91c0ea71fb49fa8f1b7c86fe330e Mon Sep 17 00:00:00 2001
-From: Matthieu Herrb <matthieu@herrb.eu>
-Date: Tue, 23 Oct 2018 21:29:08 +0200
-Subject: [PATCH] Disable -logfile and -modulepath when running with elevated
- privileges
-
-Could cause privilege elevation and/or arbitrary files overwrite, when
-the X server is running with elevated privileges (ie when Xorg is
-installed with the setuid bit set and started by a non-root user).
-
-CVE-2018-14665
-
-Issue reported by Narendra Shinde and Red Hat.
-
-Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
-Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
-Reviewed-by: Adam Jackson <ajax@redhat.com>
----
- hw/xfree86/common/xf86Init.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
-index 6c25eda73..0f57efa86 100644
---- a/hw/xfree86/common/xf86Init.c
-+++ b/hw/xfree86/common/xf86Init.c
-@@ -935,14 +935,18 @@ ddxProcessArgument(int argc, char **argv, int i)
- /* First the options that are not allowed with elevated privileges */
- if (!strcmp(argv[i], "-modulepath")) {
- CHECK_FOR_REQUIRED_ARGUMENT();
-- xf86CheckPrivs(argv[i], argv[i + 1]);
-+ if (xf86PrivsElevated())
-+ FatalError("\nInvalid argument -modulepath "
-+ "with elevated privileges\n");
- xf86ModulePath = argv[i + 1];
- xf86ModPathFrom = X_CMDLINE;
- return 2;
- }
- if (!strcmp(argv[i], "-logfile")) {
- CHECK_FOR_REQUIRED_ARGUMENT();
-- xf86CheckPrivs(argv[i], argv[i + 1]);
-+ if (xf86PrivsElevated())
-+ FatalError("\nInvalid argument -logfile "
-+ "with elevated privileges\n");
- xf86LogFile = argv[i + 1];
- xf86LogFileFrom = X_CMDLINE;
- return 2;
---
-2.18.1
diff --git a/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/musl-arm-inb-outb.patch b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/musl-arm-inb-outb.patch
deleted file mode 100644
index 4be441fb..00000000
--- a/external/poky/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/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/sdksyms-no-build-path.patch b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/sdksyms-no-build-path.patch
new file mode 100644
index 00000000..be198ece
--- /dev/null
+++ b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg/sdksyms-no-build-path.patch
@@ -0,0 +1,50 @@
+Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/merge_requests/253]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+From ca832598d38ba55a001088b57d73c6d7261dc9a7 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 1 Aug 2019 15:24:51 +0100
+Subject: [PATCH] sdksyms.sh: don't embed the build path
+
+This script generates a header that has a comment containing the build path for
+no real reason. As this source can end up deployed on targets in debug packages
+this means there is both potentially sensitive information leakage about the
+build environment, and a source of change for reproducible builds.
+---
+ hw/xfree86/sdksyms.sh | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh
+index 39e33711d..bdf47a71a 100755
+--- a/hw/xfree86/sdksyms.sh
++++ b/hw/xfree86/sdksyms.sh
+@@ -302,13 +302,16 @@ LC_ALL=C
+ export LC_ALL
+ ${CPP:-cpp} "$@" sdksyms.c > /dev/null || exit $?
+ ${CPP:-cpp} "$@" sdksyms.c | ${AWK:-awk} -v topdir=$topdir '
++function basename(file) {
++ sub(".*/", "", file)
++ return file
++}
+ BEGIN {
+ sdk = 0;
+ print("/*");
+ print(" * These symbols are referenced to ensure they");
+ print(" * will be available in the X Server binary.");
+ print(" */");
+- printf("/* topdir=%s */\n", topdir);
+ print("_X_HIDDEN void *xorg_symbols[] = {");
+
+ printf("sdksyms.c:") > "sdksyms.dep";
+@@ -337,7 +340,7 @@ BEGIN {
+ # remove quotes
+ gsub(/"/, "", $3);
+ line = $2;
+- header = $3;
++ header = basename($3);
+ if (! headers[$3]) {
+ printf(" \\\n %s", $3) >> "sdksyms.dep";
+ headers[$3] = 1;
+--
+2.20.1
+
diff --git a/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.1.bb b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.7.bb
index 9fd2e8d8..998b98a7 100644
--- a/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.1.bb
+++ b/external/poky/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.7.bb
@@ -1,12 +1,15 @@
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://CVE-2018-14665.patch \
- "
-SRC_URI[md5sum] = "e525846d1d0af5732ba835f2e2ec066d"
-SRC_URI[sha256sum] = "59c99fe86fe75b8164c6567bfc6e982aecc2e4a51e6fbac1b842d5d00549e918"
+SRC_URI += "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 \
+ file://sdksyms-no-build-path.patch \
+ file://0001-drmmode_display.c-add-missing-mi.h-include.patch \
+ "
+SRC_URI[md5sum] = "d2e96355ad47244c675bce38db2b48a9"
+SRC_URI[sha256sum] = "bd5986f010f34f5b3d6bc99fe395ecb1e0dead15a26807e0c832701809a06ea1"
+
+CFLAGS += "-fcommon"
# These extensions are now integrated into the server, so declare the migration
# path for in-place upgrades.
diff --git a/external/poky/meta/recipes-graphics/xrestop/xrestop_0.4.bb b/external/poky/meta/recipes-graphics/xrestop/xrestop_0.4.bb
index ce5df039..c7b8716f 100644
--- a/external/poky/meta/recipes-graphics/xrestop/xrestop_0.4.bb
+++ b/external/poky/meta/recipes-graphics/xrestop/xrestop_0.4.bb
@@ -19,6 +19,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/external/poky/meta/recipes-graphics/xvideo-tests/xvideo-tests_git.bb b/external/poky/meta/recipes-graphics/xvideo-tests/xvideo-tests_git.bb
deleted file mode 100644
index 1d275a00..00000000
--- a/external/poky/meta/recipes-graphics/xvideo-tests/xvideo-tests_git.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Simple XVideo test application"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://src/test-xvideo.c;beginline=1;endline=20;md5=6ae3b4c3c2ff9e51dbbc35bb237afa00"
-DEPENDS = "libxv"
-
-SRCREV = "7d38b881e99eb74169d292b40f7164e461a65092"
-PV = "0.1+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/test-xvideo"
-UPSTREAM_CHECK_COMMITS = "1"
-
-S = "${WORKDIR}/git"
-
-inherit autotools distro_features_check
-
-# The libxv requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"