From c6cade4236226646fde99611c20fe3fcc6612e7a Mon Sep 17 00:00:00 2001 From: Bian Naimeng Date: Thu, 2 Jul 2015 13:47:29 +0800 Subject: [PATCH] libldb: add new recipe libldb is required by samba4 Signed-off-by: Bian Naimeng --- ...rt-target-module-while-cross-compile.patch | 55 +++++++++++++++++++ .../recipes-support/libldb/libldb_1.1.17.bb | 46 ++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100755 meta-oe/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch create mode 100644 meta-oe/recipes-support/libldb/libldb_1.1.17.bb diff --git a/meta-oe/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch b/meta-oe/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch new file mode 100755 index 00000000..06b30ec1 --- /dev/null +++ b/meta-oe/recipes-support/libldb/libldb/do-not-import-target-module-while-cross-compile.patch @@ -0,0 +1,55 @@ +diff -Nurp ldb-1.1.17.orig/buildtools/wafsamba/samba_bundled.py ldb-1.1.17/buildtools/wafsamba/samba_bundled.py +--- ldb-1.1.17.orig/buildtools/wafsamba/samba_bundled.py 2014-05-05 17:00:41.000000000 +0900 ++++ ldb-1.1.17/buildtools/wafsamba/samba_bundled.py 2015-07-02 11:44:20.913000246 +0900 +@@ -1,7 +1,7 @@ + # functions to support bundled libraries + + from Configure import conf +-import sys, Logs ++import sys, Logs, imp + from samba_utils import * + + def PRIVATE_NAME(bld, name, private_extension, private_library): +@@ -218,17 +218,34 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, li + # versions + minversion = minimum_library_version(conf, libname, minversion) + +- try: +- m = __import__(modulename) +- except ImportError: +- found = False +- else: ++ # Find module in PYTHONPATH ++ stuff = imp.find_module(modulename, [os.environ["PYTHONPATH"]]) ++ if stuff: + try: +- version = m.__version__ +- except AttributeError: ++ m = imp.load_module(modulename, stuff[0], stuff[1], stuff[2]) ++ except ImportError: + found = False ++ ++ build_arch = os.environ["BUILD_ARCH"] ++ host_arch = os.environ["HOST_ARCH"] ++ if build_arch != host_arch: ++ # Some modules such as dynamic library maybe cann't be imported ++ # while cross compile, we just check whether the module exist ++ Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (stuff[1])) ++ found = True + else: +- found = tuplize_version(version) >= tuplize_version(minversion) ++ try: ++ version = m.__version__ ++ except AttributeError: ++ found = False ++ else: ++ found = tuplize_version(version) >= tuplize_version(minversion) ++ finally: ++ if stuff[0]: ++ stuff[0].close() ++ else: ++ found = False ++ + if not found and not conf.LIB_MAY_BE_BUNDLED(libname): + Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion)) + sys.exit(1) diff --git a/meta-oe/recipes-support/libldb/libldb_1.1.17.bb b/meta-oe/recipes-support/libldb/libldb_1.1.17.bb new file mode 100644 index 00000000..44f061ab --- /dev/null +++ b/meta-oe/recipes-support/libldb/libldb_1.1.17.bb @@ -0,0 +1,46 @@ +SUMMARY = "Hierarchical, reference counted memory pool system with destructors" +HOMEPAGE = "http://ldb.samba.org" +SECTION = "libs" +LICENSE = "LGPL-3.0+ & LGPL-2.1+ & GPL-3.0+" + +DEPENDS += "libtdb talloc libtevent popt" +RDEPENDS_${PN} += "libtevent popt libtalloc openldap" +RDEPENDS_pyldb += "python libtdb libtalloc" + +SRC_URI = "http://samba.org/ftp/ldb/ldb-${PV}.tar.gz \ + file://do-not-import-target-module-while-cross-compile.patch \ + " + +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/LGPL-3.0;md5=bfccfe952269fff2b407dd11f2f3083b \ + file://${COREBASE}/meta/files/common-licenses/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780 \ + file://${COREBASE}/meta/files/common-licenses/GPL-3.0;md5=c79ff39f19dfec6d293b95dea7b07891" + +SRC_URI[md5sum] = "7c2ab4e3f2a4186493aa06eabbc61cc0" +SRC_URI[sha256sum] = "b9a312aad19e9463716d257d8f2529fd7fc1a5ef24f6dcdc0c4a1930d7bdb6e6" + +inherit waf-samba + +S = "${WORKDIR}/ldb-${PV}" + +EXTRA_OECONF += "--disable-rpath \ + --disable-rpath-install \ + --bundled-libraries=NONE \ + --builtin-libraries=replace \ + --with-modulesdir=${libdir}/ldb/modules \ + --with-privatelibdir=${libdir}/ldb \ + --with-libiconv=${STAGING_DIR_HOST}${prefix}\ + " + +PACKAGES += "pyldb pyldb-dbg pyldb-dev" + +FILES_${PN} += "${libdir}/ldb/*" +FILES_${PN}-dbg += "${libdir}/ldb/.debug/* \ + ${libdir}/ldb/modules/ldb/.debug/*" + +FILES_pyldb = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/* \ + ${libdir}/libpyldb-util.so.1 \ + ${libdir}/libpyldb-util.so.1.1.17 \ + " +FILES_pyldb-dbg = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug \ + ${libdir}/.debug/libpyldb-util.so.1.1.17" +FILES_pyldb-dev = "${libdir}/libpyldb-util.so"