Changelog:
Fix loading of local plugins to account for newly released versions of a dependency
(From OE-Core rev: f372bcf6d530bb0627fe2ed49e52e7ae279bf77f)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Bugfix:
---------
Fixed parsing issue where attempting to render a single percent sign %
using an escaped percent %% would not function correctly if the escaped
percent were not the first character on a line.
License-Update: Copyright year updated to 2024.
(From OE-Core rev: 6cc0e19da1259b4461e6b9c7014ab041b9d60fa4)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
License-Update: Copyright year updated to 2024.
(From OE-Core rev: 3752a33ce9490d8fc9d59a0e952faa47c0abba71)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Changelog:
===========
- Remove Sphinx as a required dependency, as circular dependencies may cause
failure with package managers that expect a directed acyclic graph (DAG)
of dependencies.
(From OE-Core rev: d82e4f1f571e90adc2290eb819f4c8b6ebaa3d1a)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Upstream is in the process of migrating testing to pytest, backport
test_dump_load.py (the legacy_tests were throwing Errors and Failures).
We don't really need to run upstream's test suite, but we do need to verify
that our runtime is functional.
a98fd6088e
(From OE-Core rev: b0fdf0688109ba6b87840a0837bebee3d9a27089)
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
For some time now, we have probably been susceptible to host contamination
or at least non-deterministic behavior when libyaml was available in the
build environment.
The symptom is:
ERROR: python3-pyyaml-6.0-r0 do_package_qa: QA Issue:
/usr/lib/python3.11/site-packages/yaml/_yaml.cpython-311-aarch64-linux-gnu.so
contained in package python3-pyyaml requires libyaml-0.so.2()(64bit), but no
providers found in RDEPENDS:python3-pyyaml? [file-rdeps]
>From the documentation:
"""
By default, the setup.py script checks whether LibYAML is installed and
if so, builds and installs LibYAML bindings. To skip the check and force
installation of LibYAML bindings, use the option --with-libyaml:
python setup.py --with-libyaml install
To disable the check and skip building and installing LibYAML bindings,
use --without-libyaml:
python setup.py --without-libyaml install
"""
Instead of leaving this to chance, add PACKAGECONFIG and by default build
with the faster libyaml bindings.
(From OE-Core rev: dfde9526f9183907b2bc47fde4f59ab3a5848d90)
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The opkg-utils HOMEPAGE value should follow the yocto opkg fork - which
has been moved off of Google Code and is now centralized on yocto git
infrastructure.
(From OE-Core rev: 6ff8b43e08840582ee8d88261cbaffd33c2304f9)
Signed-off-by: Alex Stewart <alex.stewart@ni.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The opkg internal sat-solver is marked for deprecation in a future
release.
Add a recipe QA check to warn users who have the internal solver
configured.
(From OE-Core rev: c8405b86c6c3f9054810914105de5d70c4b7800b)
Signed-off-by: Alex Stewart <alex.stewart@ni.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
When debugging a C++ program on target using libcstdc++, gdb does not
find the pretty printer python support, this is because the init file is
installed into /usr/lib which is excluded from gdb's default list of
directories to load config's from, where as defaults to load from
datadir is still on, it therefore does not load this file
warning: File "/usr/lib/libstdc++.so.6.0.33-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
This leaves the libstdc++ pretty-printers disabled even though added via
IMAGE_INSTALL += "gcc-runtime-dbg"
Comment on adding missing runtime dependency on datetime python module for the pretty
printer to work/load successfully.
Once the pretty-printer gdb file is moved out of libdir, it may become
empty therefore delete it if its empty.
(From OE-Core rev: d24e16d192f21aa68b5274496efaba1d913f37c2)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
syslinux has vendored copy of ext2fs/ext2_fs.h but uses ext2fs/ext2fs.h
from e2fsprogs package, however, ext2fs/ext2fs.h has dependencies on
ext2fs/ext2_fs.h coming from e2fsprogs package as these both headers
come from same package, here syslinux uses ext2fs.h from e2fsprogs but
supplies its own copy of ext2_fs.h which maybe out of sync and that
results in warnings about implicit implicit-function-declarations
e.g.
recipe-sysroot/usr/include/ext2fs/ext2fs.h:727:16: error: implicit declaration of function 'ext2fs_has_feature_gdt_csum' [-Wimplicit-function-declaration]
| 727 | ext2fs_has_feature_gdt_csum(fs->super);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
ext2fs_has_feature_gdt_csum here comes from newer version of
ext2fs/ext2_fs.h but missing from vendored copy, hence the warning.
With gcc-14 this warning is treated as error by default, which breaks
the build, so lets treat it as warning only.
All these functions are never used in syslinux, so functionality-wise we
are fine.
(From OE-Core rev: a2b30108055e68b62fdad7319d7d569bc38a07b4)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This was a bugfix release containing several important fixes according to upstream.
Drop a backported patch.
(From OE-Core rev: 1715d0907d372e787c054a5509690a2719acfed0)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This helps working with native qemu recipes with devtool, since devtool
inserts an internal class called devtool-source resulting in
ERROR: QA Issue: qemu-system-native: native/nativesdk class is not inherited last, this can result in unexpected behaviour. Classes i
nherited after native/nativesdk: devtool-source.bbclass [native-last]
ERROR: Fatal QA errors were found, failing task.
ERROR: Parsing halted due to errors, see error messages above
ERROR: Command execution failed:
(From OE-Core rev: 6754387d7bd397700cef029ae6df86ff8cb3a4af)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Move away from the outdated setuptools to more modern build
classes.
(From OE-Core rev: dd0de1f1dcbbc389ceb1a032c393e5148e01ad98)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Note that 2.1.4 broke python3-jinja2 so skip to 2.1.5 which doesn't.
(From OE-Core rev: 697a249f27d16adeeee074d0baad83ad67c7a9e6)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Drop CheckLib.pm patch; no longer applies
* Change to CPAN_MIRROR for SRC_URI
* Drop SRC_URI[md5sum]
* Drop redundant ptest-perl/run-ptest; ptest-perl inherit does this
* Drop sed for Expat/Makefile; no longer shipped
* Inherit pkgconfig to find expat lib
* Patch Makefile.PL to not try to load host expat
License-Update: Use LICENSE file; change to Artistic-2.0
https://metacpan.org/dist/XML-Parser/changes
2.47 2023-12-28 (by Todd Rinaldo)
- #84 use $fh instead of $foo
- #85 Fix typo in documentation
- #89 Devel::CheckLib to from 0.99 -> 1.14
- Devel::CheckLibn 1.16
- #91 POD fix for verbatim text
- #97 Add a LICENSE file
- #94 Don't ship Expat/Makefile
- Various github workflow improvements. Windows is still not working.
(From OE-Core rev: 5c51810772a6611a37b2c1b0a32d9558007c4cf7)
Signed-off-by: Tim Orling <tim.orling@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Changelog:
===========
* Do not flatten the solver solution into the original world used as
input to the solver.
* Fix warnings with GCC 14 -Walloc-size.
* Add --solution to the pkgconf CLI to dump the solver state.
* Improve the --digraph output to clarify cancelled edges in a given
solution.
* Demote requires dependencies to requires.private when a parent
dependency is pulled in via requires.private.
* Trim trailing whitespace when processing package arguments.
* Avoid strncmp() in --modversion version comparison.
* Update autoconf compile flag checking macro.
* Add system default path configuration to Meson.
* Fix order of PKG_CONFIG_LIBDIR and PKG_CONFIG_PATH element processing.
(From OE-Core rev: eacbec50fab40dd5c6b16b018806800526dfbfab)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Changelog:
==============
- cache scheme so it never attempt to load it again
- Really revert "use Scalar::Util::reftype instead of ref to check for
ARRAY"
- Revert the reftype change introduced in 5.22 as it causes warnings.
- Use Scalar::Util::reftype instead of ref to check for ARRAY
(From OE-Core rev: 84fb221f02abb8e34a3fc8efab7c2725e6c1d144)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Changelog:
============
- add Test2 compatibility in the test triggered by done_testing();
- new long-awaited feature (!!!) "allow_patterns", to either
temporarily or globally exempt particular warning patterns
(From OE-Core rev: ed3940f403ea4b9b2d875595953863dd28d94b8b)
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
rpm 4.19 now builds with LFS64 support enabled by default,
so it calls statvfs64() to get the space available on the
filesystem it is installing packages into. This is not
getting caught by pseudo, so rpm is checking the host's
root filesystem, rather than the filesystem where the
build is happening.
Merge in that fix and a gcc14 fix.
(From OE-Core rev: f6d021c860b2b99f46c604149317b326f493022d)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
The dependency `ima-evm-utils` of package config `imaevm` has been
removed during rpm upgrade. Add it back, otherwise it fails to run
do_configure when the package config `imaevm` enabled.
(From OE-Core rev: 15df110b79bfa2428f70453aa6aabe7239f8e25a)
Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Linux kernel 4.17 introduced two new mmap flags, MAP_FIXED_NOREPLACE and
MAP_SHARED_VALIDATE. Starting with QEMU 8.1, these flags are now used
and required for proper system operation. In order to build and run on a
system older then 4.17, we need to emulate this new behavior.
Not having a newer kernel could result in the mmap memory being allocated
in a way that will cause failures without QEMU checking for these
conditions. Note, memory allocation issues are rare in my experience so
this is more of a 'just-in-case' behavior.
SDK_OLDEST_KERNEL is currently set to 3.2.0, the only way this can claim
that qemu works in an SDK is by checking the return values to emulate
the expected behavior.
(From OE-Core rev: 4eb0a83c7851e2eb6d7890a130dfe50f37ff8ac9)
Signed-off-by: Mark Hatle <mark.hatle@amd.com>
Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* with ccache inheritted, the BUILD_CC is 'ccache gcc', but because of missing
quote it ends passing just ccache to host-cc which gets stripped and then
it calls compiler[0] on empty compiler variable and breaks meson as shown in:
http://errors.yoctoproject.org/Errors/Details/751436/
python version: Python 3.12.1
Traceback (most recent call last):
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/mesonmain.py", line 194, in run
return options.run_func(options)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/msetup.py", line 358, in run
app.generate()
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/msetup.py", line 181, in generate
return self._generate(env, capture, vslite_ctx)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/msetup.py", line 203, in _generate
intr = interpreter.Interpreter(b, user_defined_options=user_defined_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 331, in __init__
self.parse_project()
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 132, in parse_project
self.evaluate_codeblock(self.ast, end=1)
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 198, in evaluate_codeblock
raise e
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
self.evaluate_statement(cur)
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 204, in evaluate_statement
return self.function_call(cur)
^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 530, in function_call
res = func(node, func_args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/decorators.py", line 260, in wrapper
return f(*nargs, **wrapped_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreterbase/decorators.py", line 579, in wrapper
return f(*wrapped_args, **wrapped_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 1309, in func_project
self.add_languages(proj_langs, False, MachineChoice.BUILD)
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 1476, in add_languages
success = self.add_languages_for(args, required, for_machine)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/interpreter/interpreter.py", line 1519, in add_languages_for
comp = compilers.detect_compiler_for(self.environment, lang, for_machine, skip_sanity_check)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/compilers/detect.py", line 115, in detect_compiler_for
comp = compiler_from_language(env, lang, for_machine)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/compilers/detect.py", line 112, in compiler_from_language
return lang_map[lang](env, for_machine) if lang in lang_map else None
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/compilers/detect.py", line 614, in detect_c_compiler
return _detect_c_or_cpp_compiler(env, 'c', for_machine)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot-native/usr/lib/python3.12/site-packages/mesonbuild/compilers/detect.py", line 286, in _detect_c_or_cpp_compiler
compiler_name = os.path.basename(compiler[0])
~~~~~~~~^^^
IndexError: list index out of range
...
Project name: qemu
Project version: 8.2.0
C compiler for the host machine: ccache x86_64-oe-linux-clang -target x86_64-oe-linux -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -mlittle-endian --dyld-prefix=/usr -Qunused-arguments --sysroot=TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot -m64 -mcx16 (clang 17.0.6 "clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)")
C linker for the host machine: x86_64-oe-linux-clang -target x86_64-oe-linux -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -mlittle-endian --dyld-prefix=/usr -Qunused-arguments --sysroot=TOPDIR/tmp-glibc/work/core2-64-oe-linux/qemu/8.2.0/recipe-sysroot -m64 -mcx16 ld.lld 17.0.6
../qemu-8.2.0/meson.build:1:0: ERROR: Unhandled python exception
This is a Meson bug and should be reported!
ERROR: meson setup failed
(From OE-Core rev: 7e55102cff9ddecb4f0acbb3bcafa703dd9808fd)
Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Fixes a build issue seen with latest gcc trunk.
Fixes
| ../../elfutils-0.189/tests/elfstrmerge.c: In function 'main':
| ../../elfutils-0.189/tests/elfstrmerge.c:450:32: error: 'calloc' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args]
| 450 | newscnbufs = calloc (sizeof (void *), newshnums);
| | ^~~~
| ../../elfutils-0.189/tests/elfstrmerge.c:450:32: note: earlier argument should specify number of elements, later size of each element
| cc1: all warnings being treated as errors
(From OE-Core rev: 3817ac3130e8858b3445872ff74b39c21969822a)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Upstream has replaced autoconf with cmake, which necessitates a rewrite of the
recipe and available options, and a rebase to cmake of
0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
Correct a mistake in 0001-Do-not-read-config-files-from-HOME.patch :
the patch was removing the NULL marker at the end of function arguments,
and 0002-Add-support-for-prefixing-etc-from-RPM_ETCCONFIGDIR-.patch
was restoring it (in addition to the actual change the patch was making).
Now both patches preserve the NULL terminator.
(From OE-Core rev: 38549d462b399e3a63335f60a44c8bbced98639a)
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This was supposed to always be the case from upstream but was exposed
by the 64-bit-time QA checker when file function scanning was enabled.
(From OE-Core rev: 3d556e59f658ac29615fb7a14b6ea48533122ff6)
Signed-off-by: Ola x Nilsson <olani@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Ensure that it can still access the native-sysroot for dependencies,
use ORIGIN to indicate this relative its install location, this also
helps in this not getting into the output of llvm-config which could
otherwise provide incorrect library paths
target rust recipe builds ( cross compile ) calls llvm-config from
target sysroot which works ok as long as C++ runtime it needs is
available on build host e.g. libstdc++ etc. which is commonly the
case, however when using clang and llvm runtime this falters since
it should be using libc++ from native sysroot and if this does not
exist on build machine this fails to find libc++ shared object and
llvm-config fails to run. This ensures that llvm-config version in
use is correctly relocated and can use shared libraries from native
sysroot correctly. Adding ORIGIN to sysroot will look for the .so in
same dir as the binary and there is the libc++.so.1 copied in place
Fixes rust build with clang compiler.
| /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/rust/1.74.1/recipe-sysroot/usr/lib/llvm-rust/bin/llvm-config: error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or director
y
| thread 'main' panicked at llvm.rs:551:19:
| command did not execute successfully: "/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/rust/1.74.1/recipe-sysroot/usr/lib/llvm-rust/bin/llvm-config" "--version"
| expected success, got: exit status: 127
(From OE-Core rev: 178ad50bf36f244f96159bb2f94e0d8849487931)
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>