* [oe][meta-oe][kirkstone][PATCH 1/2] unixodbc: Fix install conflict when enable multilib.
@ 2025-08-26 2:25 guocai.he.cn
2025-08-26 2:25 ` [oe][meta-oe][kirkstone][PATCH 2/2] unixodbc: fix odbc.pc file generation guocai.he.cn
0 siblings, 1 reply; 2+ messages in thread
From: guocai.he.cn @ 2025-08-26 2:25 UTC (permalink / raw)
To: openembedded-devel
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 4873 bytes --]
From: Wang Mingyu <wangmy@fujitsu.com>
Error: Transaction test error:
file /usr/include/unixODBC/config.h conflicts between attempted installs of unixodbc-dev-2.3.11-r0.aarch64 and lib32-unixodbc-dev-2.3.11-r0.armv7ahf_neon
file /usr/include/unixODBC/unixodbc_conf.h conflicts between attempted installs of unixodbc-dev-2.3.11-r0.aarch64 and lib32-unixodbc-dev-2.3.11-r0.armv7ahf_neon
file /usr/include/unixodbc.h conflicts between attempted installs of unixodbc-dev-2.3.11-r0.aarch64 and lib32-unixodbc-dev-2.3.11-r0.armv7ahf_neon
The differences of config.h are as follows:
@@ -14,7 +14,7 @@
/* #undef C_ALLOCA */
/* Lib directory */
-#define DEFLIB_PATH "/usr/lib64"
+#define DEFLIB_PATH "/usr/lib"
/* Using perdriver iconv */
/* #undef ENABLE_DRIVER_ICONV */
@@ -275,7 +275,7 @@
#define INCLUDE_PREFIX "/usr/include"
/* Lib directory */
-#define LIB_PREFIX "/usr/lib64"
+#define LIB_PREFIX "/usr/lib"
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#define LT_OBJDIR ".libs/"
@@ -311,7 +311,7 @@
#define PACKAGE_VERSION "2.3.11"
/* Platform is 64 bit */
-#define PLATFORM64 /**/
+/* #undef PLATFORM64 */
/* Install prefix */
#define PREFIX "/usr"
@@ -323,10 +323,10 @@
#define SHLIBEXT ".so"
/* The size of `long', as computed by sizeof. */
-#define SIZEOF_LONG 8
+#define SIZEOF_LONG 4
/* The size of `long int', as computed by sizeof. */
-#define SIZEOF_LONG_INT 8
+#define SIZEOF_LONG_INT 4
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
@@ -351,7 +351,7 @@
#define SYSTEM_FILE_PATH "/etc"
/* Lib path */
-#define SYSTEM_LIB_PATH "/usr/lib64"
+#define SYSTEM_LIB_PATH "/usr/lib"
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. This
macro is obsolete. */
@@ -383,7 +383,7 @@
/* #undef _ALL_SOURCE */
/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
+#define _FILE_OFFSET_BITS 64
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
/* #undef _LARGEFILE_SOURCE */
The differences of unixodbc_conf.h are as follows:
@@ -19,7 +19,7 @@
/* #undef C_ALLOCA */
/* Lib directory */
-#define DEFLIB_PATH "/usr/lib64"
+#define DEFLIB_PATH "/usr/lib"
/* Using perdriver iconv */
/* #undef ENABLE_DRIVER_ICONV */
@@ -342,7 +342,7 @@
#define INCLUDE_PREFIX "/usr/include"
/* Lib directory */
-#define LIB_PREFIX "/usr/lib64"
+#define LIB_PREFIX "/usr/lib"
/* Define if the OS needs help to load dependent libraries for dlopen(). */
/* #undef LTDL_DLOPEN_DEPLIBS */
@@ -396,7 +396,7 @@
/* Define to the version of this package. */
/* Platform is 64 bit */
-#define PLATFORM64 /**/
+/* #undef PLATFORM64 */
/* Install prefix */
#define PREFIX "/usr"
@@ -408,7 +408,7 @@
#define SHLIBEXT ".so"
/* The size of `long', as computed by sizeof. */
-#define SIZEOF_LONG 8
+#define SIZEOF_LONG 4
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
@@ -431,7 +431,7 @@
#define SYSTEM_FILE_PATH "/etc"
/* Lib path */
-#define SYSTEM_LIB_PATH "/usr/lib64"
+#define SYSTEM_LIB_PATH "/usr/lib"
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
The differences of unixodbc.h are as follows:
@@ -14,4 +14,4 @@
#define HAVE_UNISTD_H 1
/* Define to the value of sizeof(long) */
-#define SIZEOF_LONG_INT 8
+#define SIZEOF_LONG_INT 4
Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
(master rev: b3d875df4d6023835e2272a630df3b90c48f5bb9)
Signed-off-by: Kai Kang <kai.kang@windriver.com>
Signed-off-by: Guocai He <guocai.he.cn@windriver.com>
---
meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb b/meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb
index 283546cf0e..66881a223e 100644
--- a/meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb
+++ b/meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb
@@ -16,7 +16,7 @@ SRC_URI[sha256sum] = "52833eac3d681c8b0c9a5a65f2ebd745b3a964f208fc748f977e44015a
UPSTREAM_CHECK_REGEX = "unixODBC-(?P<pver>\d+(\.\d+)+)\.tar"
-inherit autotools-brokensep
+inherit autotools-brokensep multilib_header
S = "${WORKDIR}/unixODBC-${PV}"
@@ -27,3 +27,7 @@ do_configure:prepend() {
rm -rf m4/*
rm -fr libltdl
}
+
+do_install:append() {
+ oe_multilib_header unixodbc_conf.h
+}
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [oe][meta-oe][kirkstone][PATCH 2/2] unixodbc: fix odbc.pc file generation
2025-08-26 2:25 [oe][meta-oe][kirkstone][PATCH 1/2] unixodbc: Fix install conflict when enable multilib guocai.he.cn
@ 2025-08-26 2:25 ` guocai.he.cn
0 siblings, 0 replies; 2+ messages in thread
From: guocai.he.cn @ 2025-08-26 2:25 UTC (permalink / raw)
To: openembedded-devel
From: Guocai He <guocai.he.cn@windriver.com>
The build process currently succeeds but the odbc.pc file is not correctly
generated.
The error message is like below in log.do_compile and log.do_install:
/bin/bash: line 1: ../exe/odbc_config: cannot execute binary file: Exec format error
I can see the message comes from the following line in exe/Makefile.am:
@sed "s![@]ODBC_ULEN[@]!`$(top_builddir)/exe/odbc_config$(EXEEXT) --ulen`!" \
$(top_builddir)/DriverManager/odbc.pc > $(top_builddir)/exe/odbc.pc.tmp
It's running the exe/odbc_config program we built out. But the binary is for the target
platform and if we run it on the build host, we get that error message. The resulting ulen
and build_cflags in the final odbc.pc file are also empty.
Fix the issue by using qemu usermode to launch the target binary.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
(master rev: 4cbd72f7b942af44da0704f66c1b0feef8699fe6)
Signed-off-by: Guocai He <guocai.he.cn@windriver.com>
---
...add-CROSS_LAUNCHER-to-run-odbc_confi.patch | 54 +++++++++++++++++++
.../unixodbc/unixodbc_2.3.9.bb | 18 ++++++-
2 files changed, 71 insertions(+), 1 deletion(-)
create mode 100644 meta-oe/recipes-support/unixodbc/files/0001-exe-Makefile.am-add-CROSS_LAUNCHER-to-run-odbc_confi.patch
diff --git a/meta-oe/recipes-support/unixodbc/files/0001-exe-Makefile.am-add-CROSS_LAUNCHER-to-run-odbc_confi.patch b/meta-oe/recipes-support/unixodbc/files/0001-exe-Makefile.am-add-CROSS_LAUNCHER-to-run-odbc_confi.patch
new file mode 100644
index 0000000000..c763a9feb6
--- /dev/null
+++ b/meta-oe/recipes-support/unixodbc/files/0001-exe-Makefile.am-add-CROSS_LAUNCHER-to-run-odbc_confi.patch
@@ -0,0 +1,54 @@
+From e886222c70d4b251f0785f670477b7aee938e5af Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 21 Feb 2024 13:55:41 +0800
+Subject: [PATCH] exe/Makefile.am: add CROSS_LAUNCHER to run odbc_config
+
+In case of cross compilation, the odbc_config cannot run, the error message
+would be like below:
+
+ /bin/bash: line 1: ../exe/odbc_config: cannot execute binary file: Exec format error
+
+Add CROSS_LAUNCHER to allow the possibility of running odbc_config correctly in
+case of cross compilation.
+
+For example, here's a possible value for it (Yocto project environment, aarch64 target).
+ export CROSS_LAUNCHER="PSEUDO_UNLOAD=1 qemu-aarch64 -r 5.15 \
+ -L /PATH/TO/unixodbc/2.3.11/recipe-sysroot \
+ -E LD_LIBRARY_PATH=/PATH/TO/unixodbc/2.3.11/recipe-sysroot//usr/lib:/PATH/TO/unixodbc/2.3.11/recipe-sysroot//usr/lib "
+
+Other projects can use the launcher they like to allow correct generation of
+the odbc.pc file in cross compilation environment.
+
+Upstream-Status: Submitted [Personal Email, nick.gorham@easysoft.com]
+
+As said in the official website, https://www.unixodbc.org/, the way to report bug and send
+out patch is via personal email. So there's a public link above.
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ exe/Makefile.am | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/exe/Makefile.am b/exe/Makefile.am
+index 03f3d5a..5f33cf2 100644
+--- a/exe/Makefile.am
++++ b/exe/Makefile.am
+@@ -59,11 +59,13 @@ slencheck_SOURCES = slencheck.c
+ dltest_DEPENDENCIES = $(LTDLDEPS)
+ dltest_LDADD = $(LIBLTDL)
+
++CROSS_LAUNCHER ?= ""
++
+ all-am:
+- @sed "s![@]ODBC_ULEN[@]!`$(top_builddir)/exe/odbc_config$(EXEEXT) --ulen`!" \
++ @sed "s![@]ODBC_ULEN[@]!`$(CROSS_LAUNCHER)$(top_builddir)/exe/odbc_config$(EXEEXT) --ulen`!" \
+ $(top_builddir)/DriverManager/odbc.pc > $(top_builddir)/exe/odbc.pc.tmp
+ @mv -f $(top_builddir)/exe/odbc.pc.tmp $(top_builddir)/DriverManager/odbc.pc
+- @sed "s![@]ODBC_CFLAGS[@]!`$(top_builddir)/exe/odbc_config$(EXEEXT) --cflags | sed 's/ -I.*//'`!" \
++ @sed "s![@]ODBC_CFLAGS[@]!`$(CROSS_LAUNCHER)$(top_builddir)/exe/odbc_config$(EXEEXT) --cflags | sed 's/ -I.*//'`!" \
+ $(top_builddir)/DriverManager/odbc.pc > $(top_builddir)/exe/odbc.pc.tmp
+ @mv -f $(top_builddir)/exe/odbc.pc.tmp $(top_builddir)/DriverManager/odbc.pc
+
+--
+2.34.1
+
diff --git a/meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb b/meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb
index 66881a223e..0f6aacb37e 100644
--- a/meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb
+++ b/meta-oe/recipes-support/unixodbc/unixodbc_2.3.9.bb
@@ -11,23 +11,39 @@ DEPENDS = "libtool readline"
SRC_URI = "http://ftp.unixodbc.org/unixODBC-${PV}.tar.gz \
file://do-not-use-libltdl-source-directory.patch \
file://CVE-2024-1013.patch \
+ file://0001-exe-Makefile.am-add-CROSS_LAUNCHER-to-run-odbc_confi.patch \
"
SRC_URI[sha256sum] = "52833eac3d681c8b0c9a5a65f2ebd745b3a964f208fc748f977e44015a31b207"
UPSTREAM_CHECK_REGEX = "unixODBC-(?P<pver>\d+(\.\d+)+)\.tar"
-inherit autotools-brokensep multilib_header
+inherit autotools-brokensep multilib_header qemu
S = "${WORKDIR}/unixODBC-${PV}"
EXTRA_OEMAKE += "LIBS=-lltdl"
+DEPENDS:append:class-target = "${@' qemu-native' if bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d) else ''}"
+QEMU_WRAPPER = "${@qemu_wrapper_cmdline(d, '${STAGING_DIR_HOST}', ['${STAGING_DIR_HOST}/${libdir}','${STAGING_DIR_HOST}/${base_libdir}'])}"
+
do_configure:prepend() {
# old m4 files will cause libtool version don't match
rm -rf m4/*
rm -fr libltdl
}
+do_compile:prepend() {
+ if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true', 'false', d)}; then
+ export CROSS_LAUNCHER="${QEMU_WRAPPER} "
+ fi
+}
+
+do_install:prepend() {
+ if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true', 'false', d)}; then
+ export CROSS_LAUNCHER="${QEMU_WRAPPER} "
+ fi
+}
+
do_install:append() {
oe_multilib_header unixodbc_conf.h
}
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-08-26 2:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-26 2:25 [oe][meta-oe][kirkstone][PATCH 1/2] unixodbc: Fix install conflict when enable multilib guocai.he.cn
2025-08-26 2:25 ` [oe][meta-oe][kirkstone][PATCH 2/2] unixodbc: fix odbc.pc file generation guocai.he.cn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).