[meta-lsi] [PATCH 12/26] db: Upgrade localy to version 6.2.23 which support Armv8

Daniel Dragomir daniel.dragomir at windriver.com
Fri Aug 5 08:33:35 PDT 2016


The version of Berkeley DB package from upstream is obsoleted for
ARMv8 and need to be updated from 6.0.30 to 6.2.23.
Till the upgrade will be done upstream, keep new recipes locally.
	ERROR: swp{b} use is obsoleted for ARMv8 and later

Also, do not build any native atomic operation support by disabling
atomicsupport option to avoid the folowing cross compiling error:
	configure: checking for atomic operations
	error: cannot run test program while cross compiling

Upstream-Status: Pending
Signed-off-by: Daniel Dragomir <daniel.dragomir at windriver.com>
---
 ...Makefile-let-libdb-6.0.la-depend-os_map.l.patch |  32 ++++++
 ...akefile-let-libso_target-depend-on-bt_rec.patch |  30 +++++
 recipes-support/db/db/arm-thumb-mutex_db5.patch    |  48 ++++++++
 recipes-support/db/db/fix-parallel-build.patch     |  19 ++++
 recipes-support/db/db_6.2.23.bb                    | 122 +++++++++++++++++++++
 5 files changed, 251 insertions(+)
 create mode 100644 recipes-support/db/db/Makefile-let-libdb-6.0.la-depend-os_map.l.patch
 create mode 100644 recipes-support/db/db/Makefile-let-libso_target-depend-on-bt_rec.patch
 create mode 100644 recipes-support/db/db/arm-thumb-mutex_db5.patch
 create mode 100644 recipes-support/db/db/fix-parallel-build.patch
 create mode 100644 recipes-support/db/db_6.2.23.bb

diff --git a/recipes-support/db/db/Makefile-let-libdb-6.0.la-depend-os_map.l.patch b/recipes-support/db/db/Makefile-let-libdb-6.0.la-depend-os_map.l.patch
new file mode 100644
index 0000000..d4c6bb8
--- /dev/null
+++ b/recipes-support/db/db/Makefile-let-libdb-6.0.la-depend-os_map.l.patch
@@ -0,0 +1,32 @@
+From 2902dda6e3f7b2cd5796a96af20deece610e2eb9 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang at windriver.com>
+Date: Mon, 16 Nov 2015 22:20:49 -0800
+Subject: [PATCH] build_unix/Makefile: let libdb-6.0.la depend os_map.lo
+
+Fixed parallel issue:
+libtool: link: `os_map.lo' is not a valid libtool object
+Makefile:867: recipe for target 'libdb-6.0.la' failed
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
+---
+ dist/Makefile.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dist/Makefile.in b/dist/Makefile.in
+index 0a42375..d9e05b9 100644
+--- a/dist/Makefile.in
++++ b/dist/Makefile.in
+@@ -863,7 +863,7 @@ $(libdb_version): $(C_OBJS)
+ 	$(LN) -s $(libdb_version) $(libdb)
+ 
+ # Shared C library.
+-$(libso_target): $(C_OBJS) bt_rec at o@
++$(libso_target): $(C_OBJS) bt_rec at o@ os_map at o@
+ 	$(SOLINK) $(SOFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) \
+ 		$(LIBCSO_LIBS)
+ 	$(RM) $(libdb)
+-- 
+1.7.9.5
+
diff --git a/recipes-support/db/db/Makefile-let-libso_target-depend-on-bt_rec.patch b/recipes-support/db/db/Makefile-let-libso_target-depend-on-bt_rec.patch
new file mode 100644
index 0000000..329bff5
--- /dev/null
+++ b/recipes-support/db/db/Makefile-let-libso_target-depend-on-bt_rec.patch
@@ -0,0 +1,30 @@
+From c640ff9340f358a00835816d0fea03d27a7be978 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang at windriver.com>
+Date: Tue, 31 Mar 2015 00:56:44 -0700
+Subject: [PATCH] Makefile: let libso_target depend on bt_rec
+
+Fixed parallel issue:
+libtool: link: `bt_rec.lo' is not a valid libtool object
+Makefile:867: recipe for target 'libdb-6.0.la' failed
+make: *** [libdb-6.0.la] Error 1
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
+---
+ Makefile.in |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index e451f70..0a42375 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -863,7 +863,7 @@ $(libdb_version): $(C_OBJS)
+ 	$(LN) -s $(libdb_version) $(libdb)
+ 
+ # Shared C library.
+-$(libso_target): $(C_OBJS)
++$(libso_target): $(C_OBJS) bt_rec at o@
+ 	$(SOLINK) $(SOFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) \
+ 		$(LIBCSO_LIBS)
+ 	$(RM) $(libdb)
diff --git a/recipes-support/db/db/arm-thumb-mutex_db5.patch b/recipes-support/db/db/arm-thumb-mutex_db5.patch
new file mode 100644
index 0000000..34e8db8
--- /dev/null
+++ b/recipes-support/db/db/arm-thumb-mutex_db5.patch
@@ -0,0 +1,48 @@
+Original patch submitted by jbowler at nslu2-linux.org on 2005-11-17:
+
+db: fix thumb uclibc operation in 4.3.29
+  - uclibc thumb builds were using libpthread to implement mutexes, the
+  - uclibc version seems to be a stub (at least on thumb).  This commit
+  - fixes the ARM/gcc-assembly mutex implementation so that it has thumb
+  - support and the resultant db4 works (tested on LE Thumb uclibc)
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Author: jbowler at nslu2-linux.org
+
+--- db-5.1.19/src/dbinc/mutex_int.h.orig	2011-01-05 19:21:42.181805366 -0600
++++ db-5.1.19/src/dbinc/mutex_int.h	2011-01-05 19:24:53.141853117 -0600
+@@ -474,6 +474,25 @@
+ 
+ #ifdef LOAD_ACTUAL_MUTEX_CODE
+ /* gcc/arm: 0 is clear, 1 is set. */
++#if defined __thumb__
++#define	MUTEX_SET(tsl) ({						\
++	int __r, __p;							\
++	__asm__ volatile(						\
++		".align 2\n\t"                                          \
++		"bx     pc\n\t"                                         \
++		"nop\n\t"                                               \
++		".arm\n\t"                                              \
++		"swpb   %0, %2, [%3]\n\t"                               \
++		"eor    %0, %0, #1\n\t"                                 \
++		"orr    %1, pc, #1\n\t"                                 \
++		"bx     %1\n\t"                                         \
++		".force_thumb"                                          \
++	    : "=&r" (__r), "=r" (__p)                                   \
++	    : "r" (1), "r" (tsl)                                        \
++	    );                                                          \
++	__r & 1;							\
++})
++#else
+ #define	MUTEX_SET(tsl) ({						\
+ 	int __r;							\
+ 	__asm__ volatile(						\
+@@ -484,6 +503,7 @@
+ 	    );								\
+ 	__r & 1;							\
+ })
++#endif
+ 
+ #define	MUTEX_UNSET(tsl)	(*(volatile tsl_t *)(tsl) = 0)
+ #define	MUTEX_INIT(tsl)         (MUTEX_UNSET(tsl), 0)
diff --git a/recipes-support/db/db/fix-parallel-build.patch b/recipes-support/db/db/fix-parallel-build.patch
new file mode 100644
index 0000000..2c7f1e1
--- /dev/null
+++ b/recipes-support/db/db/fix-parallel-build.patch
@@ -0,0 +1,19 @@
+With higher paralelism it sometimes fails with:
+libtool: link: `util_log.lo' is not a valid libtool object
+make: *** [db_replicate] Error 1
+
+Upstream-Status: Pending
+
+Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
+
+--- dist.orig/Makefile.in	2012-05-11 19:57:48.000000000 +0200
++++ dist/Makefile.in	2013-10-31 18:17:11.875532522 +0100
+@@ -1034,7 +1034,7 @@
+ 	    db_recover at o@ util_sig at o@ $(DEF_LIB) $(LIBS)
+ 	$(POSTLINK) $@
+ 
+-db_replicate: db_replicate at o@ util_sig at o@ $(DEF_LIB)
++db_replicate: db_replicate at o@ util_log at o@ util_sig at o@ $(DEF_LIB)
+ 	$(CCLINK) -o $@ $(LDFLAGS) \
+ 	    db_replicate at o@ util_log at o@ util_sig at o@ $(DEF_LIB) $(LIBS)
+ 	$(POSTLINK) $@
diff --git a/recipes-support/db/db_6.2.23.bb b/recipes-support/db/db_6.2.23.bb
new file mode 100644
index 0000000..98fc318
--- /dev/null
+++ b/recipes-support/db/db_6.2.23.bb
@@ -0,0 +1,122 @@
+# Version 6 of the Berkeley DB from Oracle (formerly Sleepycat)
+#
+# At present this package only installs the DB code
+# itself (shared libraries, .a in the dev package),
+# documentation and headers.
+#
+# The headers have the same names as those as v3
+# of the DB, only one version can be used *for dev*
+# at once - DB3 and DB6 can both be installed on the
+# same system at the same time if really necessary.
+SECTION = "libs"
+SUMMARY = "Berkeley Database v6"
+HOMEPAGE = "http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/overview/index.html"
+LICENSE = "AGPL-3.0"
+VIRTUAL_NAME ?= "virtual/db"
+RCONFLICTS_${PN} = "db3"
+
+SRC_URI = "http://download.oracle.com/berkeley-db/db-${PV}.tar.gz"
+SRC_URI += "file://arm-thumb-mutex_db5.patch;patchdir=.. \
+            file://fix-parallel-build.patch \
+            file://Makefile-let-libso_target-depend-on-bt_rec.patch \
+            file://Makefile-let-libdb-6.0.la-depend-os_map.l.patch;patchdir=.. \
+           "
+
+SRC_URI[md5sum] = "9da126afb937a48171ff1e569ce67cf1"
+SRC_URI[sha256sum] = "47612c8991aa9ac2f6be721267c8d3cdccf5ac83105df8e50809daea24e95dc7"
+
+# Exclude NC versions which lack AES encryption
+UPSTREAM_CHECK_REGEX = "db-(?P<pver>\d+\.\d+(\.\d+)?).tar"
+UPSTREAM_CHECK_URI = "http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html"
+
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=1ec8b0b17cc31513fe35ab10716f8490"
+
+inherit autotools
+
+# Put virtual/db in any appropriate provider of a
+# relational database, use it as a dependency in
+# place of a specific db and use:
+#
+# PREFERRED_PROVIDER_virtual/db
+#
+# to select the correct db in the build (distro) .conf
+PROVIDES += "${VIRTUAL_NAME}"
+
+# bitbake isn't quite clever enough to deal with sleepycat,
+# the distribution sits in the expected directory, but all
+# the builds must occur from a sub-directory.  The following
+# persuades bitbake to go to the right place
+S = "${WORKDIR}/db-${PV}/dist"
+B = "${WORKDIR}/db-${PV}/build_unix"
+SPDX_S = "${WORKDIR}/db-${PV}"
+
+# The executables go in a separate package - typically there
+# is no need to install these unless doing real database
+# management on the system.
+inherit lib_package
+
+PACKAGES =+ "${PN}-cxx"
+FILES_${PN}-cxx = "${libdir}/*cxx*so"
+
+
+# The dev package has the .so link (as in db3) and the .a's -
+# it is therefore incompatible (cannot be installed at the
+# same time) as the db3 package
+# sort out the .so since they do version prior to the .so
+SOLIBS = "-6*.so"
+FILES_SOLIBSDEV = "${libdir}/libdb.so ${libdir}/libdb_cxx.so"
+
+#configuration - set in local.conf to override
+# All the --disable-* options replace --enable-smallbuild, which breaks a bunch of stuff (eg. postfix)
+DB6_CONFIG ?= "--enable-o_direct --disable-cryptography --disable-queue --disable-replication --disable-verify --disable-compat185 --disable-sql --disable-atomicsupport"
+
+EXTRA_OECONF = "${DB6_CONFIG} --enable-shared --enable-cxx --with-sysroot"
+
+# Override the MUTEX setting here, the POSIX library is
+# the default - "POSIX/pthreads/library".
+# Don't ignore the nice SWP instruction on the ARM:
+# These enable the ARM assembler mutex code
+ARM_MUTEX = "--with-mutex=ARM/gcc-assembly"
+MUTEX = ""
+MUTEX_arm = "${ARM_MUTEX}"
+MUTEX_armeb = "${ARM_MUTEX}"
+EXTRA_OECONF += "${MUTEX}"
+EXTRA_OEMAKE_class-target = "LIBTOOL=${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool"
+
+# Cancel the site stuff - it's set for db3 and destroys the
+# configure.
+CONFIG_SITE = ""
+do_configure() {
+	gnu-configize --force ${S}
+	export STRIP="true"
+	oe_runconf
+}
+
+do_compile_prepend() {
+	sed -i -e 's|hardcode_into_libs=yes|hardcode_into_libs=no|' \
+		${B}/libtool
+}
+
+do_install_append() {
+	mkdir -p ${D}/${includedir}/db60
+	mv ${D}/${includedir}/db.h ${D}/${includedir}/db60/.
+	mv ${D}/${includedir}/db_cxx.h ${D}/${includedir}/db60/.
+	ln -s db60/db.h ${D}/${includedir}/db.h
+	ln -s db60/db_cxx.h ${D}/${includedir}/db_cxx.h
+
+	# The docs end up in /usr/docs - not right.
+	if test -d "${D}/${prefix}/docs"
+	then
+		mkdir -p "${D}/${datadir}"
+		test ! -d "${D}/${docdir}" || rm -rf "${D}/${docdir}"
+		mv "${D}/${prefix}/docs" "${D}/${docdir}"
+	fi
+
+	chown -R root:root ${D}
+}
+
+INSANE_SKIP_${PN} = "dev-so"
+INSANE_SKIP_${PN}-cxx = "dev-so"
+
+BBCLASSEXTEND = "native nativesdk"
+
-- 
2.7.4



More information about the meta-lsi mailing list