Age | Commit message (Collapse) | Author |
|
Boost.URL is a library for manipulating Uniform Resource Identifiers
(URIs) and Locators (URLs).
Signed-off-by: Christian Eggers <ceggers@arri.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
bjam's logic to find icu during build time tries to poke at /usr/ for
various files and it succeeds for 32bit target build on my host and it adds
-I/usr/inclue to search paths because I do have icu installed on build
host in /usr/lib and /usr/include but does not succeed
for 64-bit target builds because its searching for same in /usr/lib64
on 32-bit log_dompile shows
- icu : yes [5]
on 64 bit
- icu : no [2]
On 64bit its getting lucky because the test is failing due to mismatches
in size of 'uintptr_t' since its reading half the headers from build
host and remaining from target C++ library.
In file included from /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/boost/1.80.0-r0/boost_1_80_0/libs/locale/build/has_icu_test.cpp:7:
In file included from /usr/include/unicode/locid.h:38:
In file included from /usr/include/unicode/bytestream.h:45:
In file included from /usr/include/unicode/std_string.h:37:
In file included from /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/boost/1.80.0-r0/recipe-sysroot/usr/include/c++/v1/string:549:
In file included from /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/boost/1.80.0-r0/recipe-sysroot/usr/include/c++/v1/memory:853:
In file included from /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/boost/1.80.0-r0/recipe-sysroot/usr/include/c++/v1/__memory/compressed_pair.h:16:
In file included from /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/boost/1.80.0-r0/recipe-sysroot/usr/include/c++/v1/tuple:226:
/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/boost/1.80.0-r0/recipe-sysroot/usr/include/c++/v1/typeinfo:247:14: error: cast from pointer to smaller type 'std::__type_info_implementations::__non_unique_arm_rtti_bit_impl::__type_name_t' (aka 'unsigned int') loses information
return reinterpret_cast<__type_name_t>(__v);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Therefore, help bjam avoid peeking into build system includes entirely.
now if ICU is staged in sysroot it will look there for all headers.
Look into libs/locale/build/Jamfile.v2 after 'Xlocale' section if
you seek further information
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Add the json lib which provides containers and algorithms
that implement JavaScript Object Notation, or simply "JSON",
a lightweight data-interchange format.
Signed-off-by: Matthias Klein <matthias@extraklein.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
This is the result of automated script conversion:
scripts/contrib/convert-overrides.py <oe-core directory>
converting the metadata to use ":" as the override character instead of "_".
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Fixes: [YOCTO #13471]
Signed-off-by: Ida Delphine <idadelm@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Native recipes have been special and they don't have packages generated
from them. The RDEPENDS/RPROVIDES and other runtime package specific
variables can contain important data about dependencies recipes need
though and currently it is required to write this information explicitly
in the native case.
We now delete the packaging tasks for native recipes which removes the
need to clear PACKAGES. The next step to improve the metadata is to
stop clearing it and ensure any entries in these variables are remapped
appropriately. The R* variables were already being processed by the class
extension code but the implementation was suboptimal.
This patch stops clearing PACKAGES and PACKAGES_DYNAMIC and fixes the places
where that caused issues in OE-Core, for example PACKAGES additions in anonymous
python without the "-native" suffix and a case where the included classes
caused a self reference in DEPENDS which would once have been removed by
the previous code.
The implementation uses datastore/parser parameters to ensure that the
variable overrides are not overwritten when calling setVar which is appropriate
for a function as close to the core as this one is.
Some now unneeded code in python3-setuptools is dropped, there are further
changes like this which can follow.
This change was verified with OE-Core by comparing task-depends.dot generated
by "bitbake world -g" before and after the change, the files were identical.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Add some new libraries to the list (fiber, headers, type_erasure).
Move context/coroutine to the list instead of using overrides as it
builds everywhere I can test it.
Remove the mips16e override for wave as Boost fails so dramatically with
mips16e enabled that this isn't even close to a fix. Someone who cares
can fix this properly.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
There's no need to specify an ancient GCC version here as Boost will
probe it.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Boost is a huge unirepo made from multiple submodules. To bootstrap it we
need boost.build (previously bjam) which is also available as a solo
repository. This smaller repository can unpack/build/package faster than
the Boost unirepo can unpack.
Rename the recipe to the current name of Boost.Build that installs a b2
binary, use the solo repository, and update the Boost recipe to use
the b2 binary instead of bjam.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Instead of manually creating and deleting build directories, follow the idioms
by setting B to WORKDIR/build, setting do_configure[cleandirs], and using ${B}
where appropriate.
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
There are issues with multilib due to the ordering of events where some
functions see the remapped multilib dependencies and some do not. A significant
problem is that the multilib class needs to make some changes before key expansion
and some afterwards but by using existing event handlers, some code sees things
in a partially translated state, leading to bugs.
This patch changes things to use a new event handler from bitbake which makes the
ordering of the changes explcit.
The challenge in doing this is that it breaks some existing anonymous python and
dyanmic assignments. In some cases these used to be translated and no longer are,
meaning MLPREFIX has to be added. In some cases these are now translated and the
MLPREFIX can be removed.
This change does now make it very clear when MLPREFIX is required and when it is
not, its just the migration path which is harder. The patch changes the small number
of cases where fixes are needed.
In particular, where a variable like RDEPENDS is conditionally extended (e.g.
with an override), MLPREFIX is now required.
This patch also reverts:
base: Revert 'base.bbclass: considering multilib when setting LICENSE_EXCLUSION'
This reverts 6597130256a1609c3e05ec5891aceaf549c37985 as the changes
to multilib datastore handling mean its no longer necessary.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
fix cmake file references of image dir path
Signed-off-by: Jeremy A. Puhlman <jpuhlman@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Some notes:
- bjam bootstrap scripts were changed, and the patch for that had to be
adjusted. tools/build/src/engine/build.sh now supports an --debug option
which the bjam-native recipe can use to get the debug build of b2.
- a related patch was added to address a speed regression with the debug
version of bjam
- gcc.jam patch had to be refreshed because boost added more "cpu-flags"
lines.
- since 1.70.0, boost includes new cmake config files which are packaged
in ${PN}-dev now so they make it into the SDK. (although 1.71.0 is needed
to fix some bugs in them)
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Like for ARM bjam need some hints about the ABI to properly build on
aarch64. While at it also enable context and coroutine as these are
supported on aarch64.
Signed-off-by: Alban Bedel <alban.bedel@aerq.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
There's a Boost module for Drupal.
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Drop upstreamed reproducibility-add-file-directive-to-assembler.patch
Drop signals library as upstream has removed it:
https://www.boost.org/users/history/version_1_69_0.html
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
When cross-compiling for arm architecture, bjam fails to properly
detect the abi, which causes a failed conditional to omit the
assembly code that supports the platform.
Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Add the contract lib which implements contract
programming (a.k.a., Design by Contract or DbC) [1]
for the C++ programming language.
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
* Remove the backported patch 0001-Fix-a-strange-assert-typo-how-was-this-released-with.patch
* Remove the patch 0002-Don-t-set-up-m32-m64-we-do-that-ourselves.patch
as it already rewritten gcc to use toolset.flags again
as below:
commit 12decb3ce680031b915f69902795eec47224fc7d
Author: Steven Watanabe <steven@providere-consulting.com>
Date: Mon Jan 1 12:51:43 2018 -0700
Rewrite gcc to use toolset.flags again.
* Remove the hardcoded parallel build limit as the
mechanism already changed as below commit:
commit 316e26ca718afc65d6170029284521392524e4f8
Author: Steven Watanabe <steven@providere-consulting.com>
Date: Wed Apr 26 14:22:06 2017 -0600
Remove fixed limit to -j. Fixes #189.
* execunix.c: Replace select with poll.
* execnt.c: Use RegisterWaitForSingleObject when the number of jobs exceeds MAXIMUM_WAIT_OBJECTS.
Reference: https://github.com/boostorg/build/commit/316e26ca718afc65d6170029284521392524e4f8#diff-c88fe8afebc632d0bef2bd5985137af2
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
The code to extract the integer number of parallel build threads and
construct a new argument from them has started to be copied in multiple
locations, so create two new helper utilities to aid recipes.
The first helper (parallel_make()) extracts the integer number of
parallel build threads from PARALLEL_MAKE. The second
(parallel_make_argument()) does the same and then puts the result back
into a format string, optionally clamping it to some maximum value.
Additionally, rework the oe-core recipes that were manually doing this
to use the new helper utilities.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Make sure that boost picks up correct address model value
for x32 even when musl is enabled.
Fixes [YOCTO #12119]
Suggested-by: Ovidiu Panait <ovidiu.panait@windriver.com>
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
We want to provide python libs by default, and some other
popular Linux distributions like redhat/fedora does the same.
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Re-order some assignments to be logically arranged.
Remove the set -ex statements as they serve no purpose.
Pass --debug-configuration to see what configuration steps boost is taking.
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
As Python 3 is the default Python version, change Boost to build against Python
3 instead of Python 2 if enabled. It's not simple to support both, so this
means that support for building boost-python against Python 2 has been removed.
This involves backporting a number of patches upstream to fix Python 3 support,
and telling Boost precisely where to find the Python headers and libraries so
that it doesn't try to invoke the host Python to determine these values.
[ YOCTO #11104 ]
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
boost was adding -march/-mcpu itself, and adding -m32/-m64 itself as well.
Patch that behavior out, apply another similar patch from elsewhere, and
adjust BJAM_OPTS to fix the x32 build.
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
getVar() now defaults to expanding by default, thus remove the True
option from getVar() calls with a regex search and replace.
Search made with the following regex: getVar ?\(( ?[^,()]*), True\)
Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
This doesn't compile, see
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77757#c2
Signed-off-by: André Draszik <adraszik@tycoint.com>
Acked-by: Sylvain Lemieux <slemieux@tycoint.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
When building boost-native on i686, the x86 override isn't applied
unless the target also happens to be x86. Similarly the x86_64 override
is only applied on 64 bit target machines.
Avoid various problems by removing the new problematic configure options
in the native case.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
* Added libs:
- container
- context
- coroutine
- exception
- graph_parallel
- locale
- math
- mpi
- wave
* Add PACKAGECONFIG to add proper dependencies for:
graph_parallel, locale, and mpi.
* boost-mpi depends on mpich which is in meta-oe,
and boost-graph_parallel depends on boost-mpi,
so they are disabled by default, but can be enabled
in a distro that needs them.
* context and coroutine are added only for x86 and powerpc.
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Instead of adding a custom task (do_boostconfig) simply use the existing
do_configure.
Ensure that there are no relative paths in do_configure.
Instead of editing the user-config.jam sample file in the source tree (which is
entirely comments) and extending it on every build, create a new user-config.jam
in ${WORKDIR}.
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
If there is an existing build directory when do enter do_compile() then delete
it, as it contains the previous build. If the rebuild was caused because
dependencies have changed we want to ensure that a rebuild actually happens.
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
The correct syntax is --build-dir ( --builddir is silently ignored ).
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
The default build output is very terse. Add -d+2 (ie "Show commands
as they are executed") to BJAM_OPTS to make the do_compile logs more
informative.
Also add -q (ie "Stop at first error") to BJAM_OPTS and fix typo in
comments.
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
The original over-ride dates back to 2009:
http://git.openembedded.org/openembedded-core/commit/?id=43e94412c45b4b79485a64010c76d89b245bb235
There are no obvious issues seen now when building boost in thumb2
for Cortex A15.
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
Due to the version update to 1.59.0, the two patches previously
backported in this recipe are now dropped. The actual status of
the arm-intrinsics.patch (reported with Upstream-Status: Backport)
is unknown to the committer, and hence, that patch is kept in the
recipe, even if it is possibly not required anymore. A deeper
analysis is required to determine need and status of that patch.
Second, boost 1.59.0 provides a new library, called timer,
which is packaged as further library in the boost recipe. The
update to boost 1.60.0 required no further changes beyond
changing the checksum hashes.
Third, on PPC architectures, qemuppc & mpc8315e-rdb [1] (tested
by Ross Burton), the boost test library with the vanilla
version 1.60.0 fails with:
| gcc.compile.c++ bin.v2/libs/test/build/aca09349fdb84d131321425f6c3a38ed/execution_monitor.o
| In file included from [...]/tmp/sysroots/mpc8315e-rdb/usr/include/fenv.h:114:0,
| from [...]/tmp/sysroots/mpc8315e-rdb/usr/include/c++/5.3.0/fenv.h:36,
| from ./boost/detail/fenv.hpp:97,
| from ./boost/test/execution_monitor.hpp:64,
| from ./boost/test/impl/execution_monitor.ipp:31,
| from libs/test/src/execution_monitor.cpp:16:
| ./boost/test/impl/execution_monitor.ipp: In function 'unsigned int boost::fpe::enable(unsigned int)':
| ./boost/test/impl/execution_monitor.ipp:1383:7: error: expected id-expression before '(' token
| ::feclearexcept(BOOST_FPE_ALL);
| ^
| ./boost/test/impl/execution_monitor.ipp: In function 'unsigned int boost::fpe::disable(unsigned int)':
| ./boost/test/impl/execution_monitor.ipp:1420:7: error: expected id-expression before '(' token
| ::feclearexcept(BOOST_FPE_ALL);
| ^
The commit f50e7bc9fed323c5705c0ed992c03e80eeec1dd6 from the
boostorg/test github repository (branch: develop) [2] addresses
that issue, but it was not merged in the 1.60.0 release. This
commit adds this upstream-accepted patch, which was created by:
`git checkout f50e7bc9fed323c5705c0ed992c03e80eeec1dd6 && git format-patch -1`
[1] http://lists.openembedded.org/pipermail/openembedded-core/2016-January/114844.html
[2] https://github.com/boostorg/test/commit/f50e7bc9fed323c5705c0ed992c03e80eeec1dd6
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
To ensure that boost remains an empty metapackage after version
updates, we explicitly require boost files to be empty. If new
libraries exist after a version update of the boost recipe,
bitbake will emit a warning at the do_package task. For example,
at the version update from 1.58.0 to 1.59.0, the new timer
library is indicated with:
WARNING: QA Issue: boost: Files/directories were installed but not shipped in any package:
/usr/lib/libboost_timer.so.1.59.0
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
boost: 1 installed and not shipped files. [installed-vs-shipped]
Ross Burton suggested this improvement on the openembedded-core
mailing list during review of the boost recipe version update [1].
[1] http://lists.openembedded.org/pipermail/openembedded-core/2015-December/114314.html
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
When using `PACKAGECONFIG = "python"` in the boost recipe, `bitbake boost`
fails at do_compile with:
./boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory
compilation terminated.
This issue is due to the recent version upgrade from python 3.4 to 3.5:
701ec1977ced1bb08461e6de98b4f63d21cba8a6 python3: Upgrade from 3.4.3 to 3.5
The boost.inc file modifies the boost build configuration with a path
containing the python3 major version, which is hard-coded in the boost.inc
file. Hence after the python3 update, the path points to the outdated
location and it needs to be updated to the new location.
This issue was unrevealed by an internal continuous integration system
for the meta-ros application layer. Further manual bisecting lead to the
critical commit 701ec1977ced1bb08461e6de98b4f63d21cba8a6.
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
The bb parameter seems to have been accidentally left behind after:
http://git.openembedded.org/openembedded-core/commit/?id=1ff36aaec25a7ee89514366fe484345e8d1d7b64
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
* Both - python/python3 - libs are build by adding 'python' to PACKAGECONFIG
but are packed into separate packages
* Indention was wrong in __anonymous()
Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
The boostconfig task expects to run in ${S} so make that explicit.
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
* it was partially fixed in:
commit 291e20a51544c640d07767d1dc32d762f4370f41
Author: Venkata ramana gollamudi <ramana.gollamudi@huawei.com>
Date: Fri Apr 13 11:42:46 2012 +0000
Subject: boost: fix re-execution of task
but with disadvantage that when CXX or *FLAGS variables were changed
it was continuing to use old values
* just remove the line before appending it with current values to fix
that
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
When run <make universe.fetchall>, the make will be broken because
nativesdk-boost and nativesdk-libxslt don't exist.
nativesdk-boost is depended by nativesdk-curlpp.
nativesdk-libxslt is depended by nativesdk-python-lxml.
In condition that meta-openembedded is compiled in.
Add nativesdk building for boost and libxslt.
Signed-off-by: Li Zhou <li.zhou@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Signed-off-by: Fabien Proriol <fabien.proriol@jdsu.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
|
Inspection of buildhistory shows no existing libraries changed and
the atmoic and chrono libraries are packaged individually.
Signed-off-by: Philip Balister <philip@balister.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
The '-l' option which is valid for GNU make (--> limit by load) has a
different meaning in bjam (--> limit maximum execution time) and will
break very likely the build.
Keep only the the '-l' option when passing PARALLEL_MAKE options to
bjam.
Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
|
|
Rebase boostconfig to handle moved user-config file
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
The base_contains is kept as a compatibility method and we ought to
not use it in OE-Core so we can remove it from base metadata in
future.
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
The compileflags and linkflags do_boostconfig puts into user-config.jam are
having no effect. According to
http://www.boost.org/boost-build2/doc/html/bbv2/reference/tools.html the
correct syntax would be <compileflags>"the flags" <linkflags>"the flags".
Since the flags specified were having no effect they can't be necessary and
can be safely removed. We should be passing ${CFLAGS}, ${CXXFLAGS} and
${LDFLAGS} instead so that users of the recipe can pass arbitrary flags as
they choose.
Signed-off-by: Mike Crowe <mac@mcrowe.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|