conf/layer.conf: add BBFILES_DYNAMIC and dynamic layers

some recipes under meta-oe have dependency on meta-python,
and test_world of yocto-check-layer will failed with error
like:

ERROR: test_world (common.CommonCheckLayer)
ERROR: Nothing PROVIDES 'python3-pytoml-native' (but
/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs_60.9.0.bb
DEPENDS on or otherwise requires it). Close matches:
  python3-numpy-native
  python3-pycairo-native
  python3-rpm-native
ERROR: Required build target 'meta-world-pkgdata' has no buildable
providers.
Missing or unbuildable dependency chain was: ['meta-world-pkgdata',
'mozjs', 'python3-pytoml-native']

fix by make these recipes only active when identified layers are
present

Signed-off-by: Changqing Li <changqing.li@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Changqing Li
2020-03-11 16:42:05 +08:00
committed by Khem Raj
parent f5d2bf55a8
commit d178745cbf
50 changed files with 5 additions and 0 deletions
@@ -0,0 +1,35 @@
From 97914aeab52b4d0ea0ab9e5ff985a1c5cddb0fa1 Mon Sep 17 00:00:00 2001
From: Vincent Prince <vincent.prince.fr@gmail.com>
Date: Mon, 16 Sep 2019 13:41:39 +0200
Subject: [PATCH 06/10] IntelRDFPMathLib20U1: Check for __DEFINED_wchar_t
This is defined by musl if wchar_t is already defined
avoids errors like
src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h:46:15: error: typedef redefinition with different types
('int' vs 'unsigned int')
typedef int wchar_t;
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
---
src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h b/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
index 56775bc..be96a85 100755
--- a/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
+++ b/src/third_party/IntelRDFPMathLib20U1/LIBRARY/src/bid_functions.h
@@ -43,7 +43,7 @@
#if 0 // MongoDB Modification -- just `#include <stddef.h>`
// Fix system header issue on Sun solaris and define required type by ourselves
-#if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED) && !defined(__QNX__)
+#if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED) && !defined(__QNX__) && !defined(__DEFINED_wchar_t)
typedef int wchar_t;
#endif
#else
--
2.7.4
@@ -0,0 +1,31 @@
From ca004968b8d2149f72d4edcfe029489a8c5e10ca Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 23 Sep 2019 12:31:31 -0700
Subject: [PATCH] Mark one of strerror_r implementation glibc specific
glibc has two incompatible strerror_r definitions, one of them is
specific to glibc, mark this one so
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/mongo/util/errno_util.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/mongo/util/errno_util.cpp b/src/mongo/util/errno_util.cpp
index 564c0071ea..4f7e1d3a38 100644
--- a/src/mongo/util/errno_util.cpp
+++ b/src/mongo/util/errno_util.cpp
@@ -61,7 +61,7 @@ std::string errnoWithDescription(int errNumber) {
char buf[kBuflen];
char* msg{nullptr};
-#if defined(__GNUC__) && defined(_GNU_SOURCE) && \
+#if defined(__GNUC__) && defined(_GNU_SOURCE) && defined(__GLIBC__) && \
(!defined(__ANDROID_API__) || !(__ANDROID_API__ <= 22)) && !defined(EMSCRIPTEN)
msg = strerror_r(errNumber, buf, kBuflen);
#elif defined(_WIN32)
--
2.23.0
@@ -0,0 +1,33 @@
From 8d035e84c2edb44461ef4df9cdef0a6dfce0a1d7 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 24 Aug 2018 12:56:22 -0700
Subject: [PATCH 07/10] Support deprecated resolver functions
Needed for musl libc
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/mongo/util/dns_query_posix-impl.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/mongo/util/dns_query_posix-impl.h b/src/mongo/util/dns_query_posix-impl.h
index a5e3629..fb29d2d 100644
--- a/src/mongo/util/dns_query_posix-impl.h
+++ b/src/mongo/util/dns_query_posix-impl.h
@@ -54,6 +54,12 @@
#include <boost/noncopyable.hpp>
+#ifndef res_ninit
+#define res_nclose(arg)
+#define res_ninit(arg) res_init()
+#define res_nsearch(sta, nam, clas, typ, ans, alen) res_search(nam, clas, typ, ans, alen)
+#endif
+
namespace mongo {
namespace dns {
// The anonymous namespace is safe, in this header, as it is not really a header. It is only used
--
2.7.4
@@ -0,0 +1,56 @@
From 1b2e24e14ee72e54e466be2512c78272f62d60b4 Mon Sep 17 00:00:00 2001
From: Vincent Prince <vincent.prince.fr@gmail.com>
Date: Mon, 16 Sep 2019 13:21:44 +0200
Subject: [PATCH 01/10] Tell scons to use build settings from environment
variables
Signed-off-by: Sven Ebenfeld <sven.ebenfeld@gmail.com>
Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
---
SConstruct | 8 ++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/SConstruct b/SConstruct
index 7ebbcbc..e63cf15 100644
--- a/SConstruct
+++ b/SConstruct
@@ -608,6 +608,7 @@ def variable_arch_converter(val):
'amd64': 'x86_64',
'emt64': 'x86_64',
'x86': 'i386',
+ 'aarch64': 'arm64',
}
val = val.lower()
@@ -695,7 +696,8 @@ env_vars.Add(
)
env_vars.Add('CC',
- help='Select the C compiler to use')
+ help='Select the C compiler to use',
+ default=os.getenv('CC'))
env_vars.Add('CCFLAGS',
help='Sets flags for the C and C++ compiler',
@@ -715,7 +717,8 @@ env_vars.Add('CPPPATH',
converter=variable_shlex_converter)
env_vars.Add('CXX',
- help='Select the C++ compiler to use')
+ help='Select the C++ compiler to use',
+ default=os.getenv('CXX'))
env_vars.Add('CXXFLAGS',
help='Sets flags for the C++ compiler',
@@ -1018,6 +1021,7 @@ envDict = dict(BUILD_ROOT=buildDir,
)
env = Environment(variables=env_vars, **envDict)
+env.PrependENVPath('PATH', os.getenv('PATH'))
del envDict
for var in ['CC', 'CXX']:
--
2.7.4
@@ -0,0 +1,41 @@
From d701ceeb15662038435b80ba556a80c17f76d2dc Mon Sep 17 00:00:00 2001
From: Vincent Prince <vincent.prince.fr@gmail.com>
Date: Mon, 16 Sep 2019 13:30:13 +0200
Subject: [PATCH 03/10] Use __GLIBC__ to control use of gnu_get_libc_version
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
---
src/mongo/util/processinfo_linux.cpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp
index cccb91c..45c4b7d 100644
--- a/src/mongo/util/processinfo_linux.cpp
+++ b/src/mongo/util/processinfo_linux.cpp
@@ -44,10 +44,10 @@
#include <unistd.h>
#ifdef __BIONIC__
#include <android/api-level.h>
-#elif __UCLIBC__
-#include <features.h>
-#else
+#elif defined(__GLIBC__) && !defined(__UCLIBC__)
#include <gnu/libc-version.h>
+#else
+#include <features.h>
#endif
#include <boost/filesystem.hpp>
@@ -546,7 +546,7 @@ void ProcessInfo::SystemInfo::collectSystemInfo() {
std::stringstream ss;
ss << "uClibc-" << __UCLIBC_MAJOR__ << "." << __UCLIBC_MINOR__ << "." << __UCLIBC_SUBLEVEL__;
bExtra.append("libcVersion", ss.str());
-#else
+#elif defined(__GLIBC__)
bExtra.append("libcVersion", gnu_get_libc_version());
#endif
if (!verSig.empty())
--
2.7.4
@@ -0,0 +1,66 @@
From 20fcbf2a05ee6542aba942f6006d149db70fb9ce Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Sep 2017 10:03:37 -0700
Subject: [PATCH 02/10] Use long long instead of int64_t
Fixes
error: call to member function 'appendNumber' is ambiguous
since this function expects long long as parameter and not int64_t
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/mongo/util/procparser.cpp | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/mongo/util/procparser.cpp b/src/mongo/util/procparser.cpp
index c574a3f..5ea66b7 100644
--- a/src/mongo/util/procparser.cpp
+++ b/src/mongo/util/procparser.cpp
@@ -261,7 +261,7 @@ Status parseProcStat(const std::vector<StringData>& keys,
StringData stringValue((*partIt).begin(), (*partIt).end() - (*partIt).begin());
- uint64_t value;
+ long long value;
if (!parseNumberFromString(stringValue, &value).isOK()) {
value = 0;
@@ -273,7 +273,7 @@ Status parseProcStat(const std::vector<StringData>& keys,
} else {
StringData stringValue((*partIt).begin(), (*partIt).end() - (*partIt).begin());
- uint64_t value;
+ long long value;
if (!parseNumberFromString(stringValue, &value).isOK()) {
value = 0;
@@ -366,7 +366,7 @@ Status parseProcMemInfo(const std::vector<StringData>& keys,
StringData stringValue((*partIt).begin(), (*partIt).end());
- uint64_t value;
+ long long value;
if (!parseNumberFromString(stringValue, &value).isOK()) {
value = 0;
@@ -522,7 +522,7 @@ Status parseProcDiskStats(const std::vector<StringData>& disks,
StringData data,
BSONObjBuilder* builder) {
bool foundKeys = false;
- std::vector<uint64_t> stats;
+ std::vector<long long> stats;
stats.reserve(kDiskFieldCount);
using string_split_iterator = boost::split_iterator<StringData::const_iterator>;
@@ -597,7 +597,7 @@ Status parseProcDiskStats(const std::vector<StringData>& disks,
StringData stringValue((*partIt).begin(), (*partIt).end());
- uint64_t value;
+ long long value;
if (!parseNumberFromString(stringValue, &value).isOK()) {
value = 0;
--
2.7.4
@@ -0,0 +1,29 @@
From 097e8a66930cfa28ac8bfa35f62d0a9ee3b74488 Mon Sep 17 00:00:00 2001
From: Vincent Prince <vincent.prince.fr@gmail.com>
Date: Mon, 16 Sep 2019 13:46:52 +0200
Subject: [PATCH 10/10] asio: Dont use experimental with clang
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
---
src/third_party/asio-master/asio/include/asio/detail/string_view.hpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/third_party/asio-master/asio/include/asio/detail/string_view.hpp b/src/third_party/asio-master/asio/include/asio/detail/string_view.hpp
index f09cebc..fa307b5 100644
--- a/src/third_party/asio-master/asio/include/asio/detail/string_view.hpp
+++ b/src/third_party/asio-master/asio/include/asio/detail/string_view.hpp
@@ -33,8 +33,8 @@ namespace asio {
using std::basic_string_view;
using std::string_view;
#elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
-using std::experimental::basic_string_view;
-using std::experimental::string_view;
+using std::basic_string_view;
+using std::string_view;
#endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
} // namespace asio
--
2.7.4
@@ -0,0 +1,35 @@
From 73c6374ceb0c062e91210cc9ef3e0e9fa30ee514 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Sep 2017 12:42:30 -0700
Subject: [PATCH 04/10] Add a definition for the macro __ELF_NATIVE_CLASS
It depends on the native arch's word size.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/mongo/util/stacktrace_posix.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/mongo/util/stacktrace_posix.cpp b/src/mongo/util/stacktrace_posix.cpp
index 1d7b3d7..f81e329 100644
--- a/src/mongo/util/stacktrace_posix.cpp
+++ b/src/mongo/util/stacktrace_posix.cpp
@@ -39,6 +39,15 @@
#include <string>
#include <sys/utsname.h>
+#if !defined(__GLIBC__)
+#if defined __x86_64__ && !defined __ILP32__
+# define __WORDSIZE 64
+#else
+# define __WORDSIZE 32
+#endif
+#define __ELF_NATIVE_CLASS __WORDSIZE
+#endif
+
#include "mongo/base/init.h"
#include "mongo/config.h"
#include "mongo/db/jsobj.h"
--
2.7.4
@@ -0,0 +1,39 @@
From ffe6045b190b735601cd209d3e7ac121604c5a4e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 24 Aug 2018 13:07:01 -0700
Subject: [PATCH 08/10] Fix default stack size to 256K
On musl default stack size is ~80K which is too low
for mongodb
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/mongo/platform/stack_locator_pthread_getattr_np.cpp | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
index 4f3044c..68e47e3 100644
--- a/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
+++ b/src/mongo/platform/stack_locator_pthread_getattr_np.cpp
@@ -36,6 +36,16 @@
#include "mongo/util/assert_util.h"
#include "mongo/util/scopeguard.h"
+__attribute__((constructor))
+static void set_default_stack_size(void)
+{
+ pthread_attr_t attr;
+ invariant(pthread_attr_init(&attr) == 0);
+ invariant(pthread_attr_setstacksize(&attr, 256*1024) == 0);
+ pthread_setattr_default_np(&attr);
+ invariant(pthread_attr_destroy(&attr) == 0);
+}
+
namespace mongo {
StackLocator::StackLocator() {
--
2.7.4
@@ -0,0 +1,19 @@
Index: git/SConstruct
===================================================================
--- git.orig/SConstruct
+++ git/SConstruct
@@ -884,6 +884,14 @@ env_vars.Add('WINDOWS_OPENSSL_BIN',
help='Sets the path to the openssl binaries for packaging',
default='c:/openssl/bin')
+env_vars.Add('PREFIX',
+ help='installation prefix')
+
+env_vars.Add('prefix',
+ help='installation prefix')
+
+
+
# -- Validate user provided options --
# A dummy environment that should *only* have the variables we have set. In practice it has
@@ -0,0 +1,26 @@
From cc95a8878fa581b164dee8fb1f07b05b9d919ef0 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 2 Sep 2017 13:13:15 -0700
Subject: [PATCH 09/10] wiredtiger: Disable strtouq on musl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/third_party/wiredtiger/build_linux/wiredtiger_config.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/third_party/wiredtiger/build_linux/wiredtiger_config.h b/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
index 82e9994..0399a67 100644
--- a/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
+++ b/src/third_party/wiredtiger/build_linux/wiredtiger_config.h
@@ -104,7 +104,7 @@
#define HAVE_STRING_H 1
/* Define to 1 if you have the `strtouq' function. */
-#define HAVE_STRTOUQ 1
+/* #undef HAVE_STRTOUQ 1 */
/* Define to 1 if you have the `sync_file_range' function. */
/* #undef HAVE_SYNC_FILE_RANGE */
--
2.7.4
@@ -0,0 +1,54 @@
From c9fc9e9a44b0fb764ce86a5e57f17d3c5bbfd8cd Mon Sep 17 00:00:00 2001
From: Vincent Prince <vincent.prince.fr@gmail.com>
Date: Mon, 16 Sep 2019 13:37:10 +0200
Subject: [PATCH 05/10] Add alises for arm64 which is same as aarch64
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
---
SConstruct | 1 +
src/third_party/IntelRDFPMathLib20U1/SConscript | 2 +-
src/third_party/wiredtiger/SConscript | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/SConstruct b/SConstruct
index e63cf15..5593c78 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1129,6 +1129,7 @@ elif endian == "big":
processor_macros = {
'arm' : { 'endian': 'little', 'defines': ('__arm__',) },
'aarch64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')},
+ 'arm64' : { 'endian': 'little', 'defines': ('__arm64__', '__aarch64__')},
'i386' : { 'endian': 'little', 'defines': ('__i386', '_M_IX86')},
'ppc64le' : { 'endian': 'little', 'defines': ('__powerpc64__',)},
's390x' : { 'endian': 'big', 'defines': ('__s390x__',)},
diff --git a/src/third_party/IntelRDFPMathLib20U1/SConscript b/src/third_party/IntelRDFPMathLib20U1/SConscript
index f23c071..fb82cd6 100644
--- a/src/third_party/IntelRDFPMathLib20U1/SConscript
+++ b/src/third_party/IntelRDFPMathLib20U1/SConscript
@@ -308,7 +308,7 @@ if processor == 'i386' or processor == 'emscripten':
elif processor == 'arm':
cpp_defines['IA32'] = '1'
cpp_defines['ia32'] = '1'
-elif processor == "aarch64":
+elif processor == "aarch64" or processor == 'arm64':
cpp_defines['efi2'] = '1'
cpp_defines['EFI2'] = '1'
# Using 64 bit little endian
diff --git a/src/third_party/wiredtiger/SConscript b/src/third_party/wiredtiger/SConscript
index cdd090b..97a1b3b 100644
--- a/src/third_party/wiredtiger/SConscript
+++ b/src/third_party/wiredtiger/SConscript
@@ -152,7 +152,7 @@ condition_map = {
'POSIX_HOST' : not env.TargetOSIs('windows'),
'WINDOWS_HOST' : env.TargetOSIs('windows'),
- 'ARM64_HOST' : env['TARGET_ARCH'] == 'aarch64',
+ 'ARM64_HOST' : env['TARGET_ARCH'] in ('aarch64', 'arm64'),
'POWERPC_HOST' : env['TARGET_ARCH'] == 'ppc64le',
'X86_HOST' : env['TARGET_ARCH'] == 'x86_64',
'ZSERIES_HOST' : env['TARGET_ARCH'] == 's390x',
--
2.7.4
@@ -0,0 +1,73 @@
SUMMARY = "mongodb"
LICENSE = "SSPL-1 & Apache-2.0 & Zlib"
LIC_FILES_CHKSUM = "file://LICENSE-Community.txt;md5=3a865f27f11f43ecbe542d9ea387dcf1 \
file://APACHE-2.0.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
DEPENDS = "openssl libpcap zlib boost curl python3 \
python3-setuptools-native \
python3-pyyaml-native python3-cheetah-native \
python3-psutil-native python3-regex-native \
"
inherit scons dos2unix siteinfo python3native
PV = "4.2.2"
#v4.2.2
SRCREV = "a0bbbff6ada159e19298d37946ac8dc4b497eadf"
SRC_URI = "git://github.com/mongodb/mongo.git;branch=v4.2 \
file://0001-Tell-scons-to-use-build-settings-from-environment-va.patch \
file://0001-Use-long-long-instead-of-int64_t.patch \
file://0001-Use-__GLIBC__-to-control-use-of-gnu_get_libc_version.patch \
file://0002-Add-a-definition-for-the-macro-__ELF_NATIVE_CLASS.patch \
file://arm64-support.patch \
file://0001-IntelRDFPMathLib20U1-Check-for-__DEFINED_wchar_t.patch \
file://0001-Support-deprecated-resolver-functions.patch \
file://0003-Fix-unknown-prefix-env.patch \
"
SRC_URI_append_libc-musl ="\
file://0001-Mark-one-of-strerror_r-implementation-glibc-specific.patch \
file://0002-Fix-default-stack-size-to-256K.patch \
file://0004-wiredtiger-Disable-strtouq-on-musl.patch \
"
SRC_URI_append_toolchain-clang = "\
file://0001-asio-Dont-use-experimental-with-clang.patch \
"
S = "${WORKDIR}/git"
COMPATIBLE_HOST ?= '(x86_64|powerpc64|aarch64).*-linux'
PACKAGECONFIG ??= "tcmalloc system-pcre"
# gperftools compilation fails for arm below v7 because of missing support of
# dmb operation. So we use system-allocator instead of tcmalloc
PACKAGECONFIG_remove_armv6 = "tcmalloc"
PACKAGECONFIG_remove_libc-musl = "tcmalloc"
PACKAGECONFIG[tcmalloc] = "--use-system-tcmalloc,--allocator=system,gperftools,"
PACKAGECONFIG[shell] = ",--js-engine=none,,"
PACKAGECONFIG[system-pcre] = "--use-system-pcre,,libpcre,"
EXTRA_OESCONS = "--prefix=${D}${prefix} \
LIBPATH=${STAGING_LIBDIR} \
LINKFLAGS='${LDFLAGS}' \
CXXFLAGS='${CXXFLAGS}' \
TARGET_ARCH=${TARGET_ARCH} \
--ssl \
--disable-warnings-as-errors \
--use-system-zlib \
--nostrip \
--endian=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
--wiredtiger=${@['off','on'][d.getVar('SITEINFO_BITS') != '32']} \
${PACKAGECONFIG_CONFARGS} \
core"
scons_do_compile() {
${STAGING_BINDIR_NATIVE}/scons ${PARALLEL_MAKE} ${EXTRA_OESCONS} || \
die "scons build execution failed."
}
scons_do_install() {
${STAGING_BINDIR_NATIVE}/scons install ${EXTRA_OESCONS}|| \
die "scons install execution failed."
}