postgresql: enable uclibc build
PATCH v3 1/8 postgresql: enable uclibc build
Build with uclibc and locale support failes with the following error message:
regc_pg_locale.c: In function ?pg_wc_isdigit?:
regc_pg_locale.c:312:6: error: dereferencing pointer to incomplete type
isdigit_l((unsigned char) c, pg_regex_locale));
This can be fixed by overwriting the HAVE_LOCALE_T detection (thanks to Alex Potapenko <[email protected]> for the hint [1]).
[1] http://lists.busybox.net/pipermail/buildroot/2015-March/121088.html
---
Changes v1 --> v3:
- no changes
Tested with the following buildroot defonfig:
BR2_arm=y
BR2_arm1176jzf_s=y
BR2_JLEVEL=1
BR2_KERNEL_HEADERS_VERSION=y
BR2_DEFAULT_KERNEL_VERSION="3.18" BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_TARGET_GENERIC_GETTY_PORT="tty1"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/raspberrypi/linux.git" BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="246530ff8a4f302b8666c6d9cf509407d8c1257a" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/raspberrypi/linux-3.18-rpi-dt.defconfig" BR2_LINUX_KERNEL_ZIMAGE=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS=y
BR2_PACKAGE_POSTGRESQL=y
--- package/postgresql/Config.in | 7 ------- package/postgresql/postgresql.mk | 8 ++++++++ 2 files changed, 8 insertions(+), 7 deletions(-)
package/postgresql/Config.in +0 -7
@@ -1,9 +1,5 @@ config BR2_PACKAGE_POSTGRESQL bool "postgresql" - # PostgreSQL does not build against uClibc with locales - # enabled, due to an uClibc bug, see - # http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html. - depends on BR2_TOOLCHAIN_USES_GLIBC help PostgreSQL is a powerful, open source object-relational database system.
@@ -16,6 +12,3 @@ config BR2_PACKAGE_POSTGRESQL archives with pg_dump and pg_restore. http://www.postgresql.org - -comment "postgresql needs a toolchain w/ glibc" - depends on !BR2_TOOLCHAIN_USES_GLIBC
package/postgresql/postgresql.mk +8 -0
@@ -13,6 +13,14 @@ POSTGRESQL_LICENSE_FILES = COPYRIGHT POSTGRESQL_INSTALL_STAGING = YES POSTGRESQL_CONFIG_SCRIPTS = pg_config +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# PostgreSQL does not build against uClibc with locales +# enabled, due to an uClibc bug, see +# http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html +# so overwrite automatic detection and disable locale support +POSTGRESQL_CONF_ENV += pgac_cv_type_locale_t=no +endif + ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) POSTGRESQL_CONF_OPTS += --disable-thread-safety endif
Signature · 1 line
2.1.4
PATCH v3 2/8 postgresql: fix IPv6 detection for uclibc compile
Assist configure IPv6 support detection for uclibc, fixes the following uclibc compile failure:
auth.c: In function ?CheckRADIUSAuth?:
auth.c:2379:24: error: ?in6addr_any? undeclared (first use in this function)
localaddr.sin6_addr = in6addr_any;
---
Changes v1 --> v3:
- no changes
Tested with the following buildroot defonfig:
BR2_arm=y
BR2_arm1176jzf_s=y
BR2_KERNEL_HEADERS_VERSION=y
BR2_DEFAULT_KERNEL_VERSION="3.18" BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y BR2_TARGET_GENERIC_GETTY_PORT="tty1"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/raspberrypi/linux.git" BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="246530ff8a4f302b8666c6d9cf509407d8c1257a" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/raspberrypi/linux-3.18-rpi-dt.defconfig" BR2_LINUX_KERNEL_ZIMAGE=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS=y
BR2_PACKAGE_POSTGRESQL=y
--- package/postgresql/postgresql.mk | 6 ++++++ 1 file changed, 6 insertions(+)
package/postgresql/postgresql.mk +6 -0
@@ -14,6 +14,12 @@ POSTGRESQL_INSTALL_STAGING = YES POSTGRESQL_CONFIG_SCRIPTS = pg_config ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# overwrite IPV6 detection +ifeq ($(BR2_INET_IPV6),y) +POSTGRESQL_CONF_ENV += ac_cv_type_struct_sockaddr_in6=yes +else +POSTGRESQL_CONF_ENV += ac_cv_type_struct_sockaddr_in6=no +endif # PostgreSQL does not build against uClibc with locales # enabled, due to an uClibc bug, see # http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html
Signature · 1 line
2.1.4
PATCH v3 3/8 postgresql: enable bfin compile
In reply to Peter Seiderer- overwrite platform support with linux template
- disable spinlock support
---
Changes v1 --> v3:
- no changes
--- package/postgresql/postgresql.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
package/postgresql/postgresql.mk +6 -1
@@ -13,6 +13,11 @@ POSTGRESQL_LICENSE_FILES = COPYRIGHT POSTGRESQL_INSTALL_STAGING = YES POSTGRESQL_CONFIG_SCRIPTS = pg_config +# unsupported platform, overwrite manually +ifeq ($(BR2_bfin),y) +POSTGRESQL_CONF_OPTS += --with-template=linux +endif + ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) # overwrite IPV6 detection ifeq ($(BR2_INET_IPV6),y)
@@ -31,7 +36,7 @@ ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) POSTGRESQL_CONF_OPTS += --disable-thread-safety endif -ifeq ($(BR2_microblazeel)$(BR2_microblazebe)$(BR2_nios2),y) +ifeq ($(BR2_bfin)$(BR2_microblazebe)$(BR2_microblazeel)$(BR2_nios2),y) POSTGRESQL_CONF_OPTS += --disable-spinlocks endif
Signature · 1 line
2.1.4
PATCH v3 3/8 postgresql: enable bfin compile
Dear Peter Seiderer,
package/postgresql/postgresql.mk POSTGRESQL_LICENSE_FILES = COPYRIGHT · line 19
Quoted 4 lines · Peter Seiderer
package/postgresql/postgresql.mk +4
-0+# unsupported platform, overwrite manually +ifeq ($(BR2_bfin),y) +POSTGRESQL_CONF_OPTS += --with-template=linux +endif
Do we really need to make this conditional? I believe --with-template=linux is fine in all cases since Buildroot only targets Linux.
So what about having --with-template=linux unconditionally in POSTGRESQL_CONF_OPTS instead?
If that's OK for you, I can adjust this when applying.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
Thomas Petazzoni
AppliedPATCH v3 3/8 postgresql: enable bfin compile
In reply to Peter SeidererDear Peter Seiderer,
Quoted 4 lines · Peter Seiderer
- overwrite platform support with linux template
- disable spinlock supportSigned-off-by Peter Seiderer <[email protected]>
Applied, after making --with-template=linux used unconditionally, as we discussed.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v3 3/8 postgresql: enable bfin compile
In reply to Peter SeidererDear Peter Seiderer,
Quoted 4 lines · Peter Seiderer
- overwrite platform support with linux template
- disable spinlock supportSigned-off-by Peter Seiderer <[email protected]>
postgresql uses fork(), which is not available on Blackfin:
http://autobuild.buildroot.org/results/c9c/c9c93156fe64e89f35627aa592c47d8c5181ed7d/build-end.log.
So what was the point of enabling postgresql on Blackfin ?
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v3 4/8 bandwidthd: remove postgresql introduced uclibc dependency
In reply to Peter Seiderer---
Changes v1 --> v2:
- added (thanks to Baruch Siach for the hint)
--- package/bandwidthd/Config.in | 1 - 1 file changed, 1 deletion(-)
package/bandwidthd/Config.in +0 -1
@@ -32,7 +32,6 @@ if BR2_PACKAGE_BANDWIDTHD config BR2_PACKAGE_BANDWIDTHD_POSTGRESQL bool "enable postgresql log target support" - depends on BR2_TOOLCHAIN_USES_GLIBC # postgresql select BR2_PACKAGE_POSTGRESQL help Enable support for logging the bandwidthd data to a remote
Signature · 1 line
2.1.4
PATCH v3 5/8 qt5base: remove postgresql introduced uclibc dependency for the PostgresSQL plugin
In reply to Peter Seiderer---
Changes v1 --> v2:
- added (thanks to Baruch Siach for the hint)
--- package/qt5/qt5base/Config.in | 4 ---- 1 file changed, 4 deletions(-)
package/qt5/qt5base/Config.in +0 -4
@@ -60,14 +60,10 @@ config BR2_PACKAGE_QT5BASE_MYSQL config BR2_PACKAGE_QT5BASE_PSQL bool "PostgreSQL Plugin" select BR2_PACKAGE_POSTGRESQL - depends on BR2_TOOLCHAIN_USES_GLIBC help Build PostgreSQL plugin If unsure, say n. -comment "PostgreSQL needs an (e)glibc toolchain" - depends on !BR2_TOOLCHAIN_USES_GLIBC - choice prompt "SQLite 3 support" default BR2_PACKAGE_QT5BASE_SQLITE_NONE
Signature · 1 line
2.1.4
PATCH v3 6/8 collectd: remove postgresql introduced uclibc dependency for the PostgresSQL support
In reply to Peter Seiderer---
Changes v2 --> v3:
- added (thanks to Baruch Siach for the hint)
--- package/collectd/Config.in | 4 ---- 1 file changed, 4 deletions(-)
package/collectd/Config.in +0 -4
@@ -314,12 +314,8 @@ config BR2_PACKAGE_COLLECTD_PING help Mesures network latency using ICMP "echo requests". -comment "postgresql needs a toolchain w/ glibc" - depends on !BR2_TOOLCHAIN_USES_GLIBC - config BR2_PACKAGE_COLLECTD_POSTGRESQL bool "postgresql" - depends on BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_POSTGRESQL help Connects to and executes SQL statements on a PostgreSQL
Signature · 1 line
2.1.4
PATCH v3 7/8 php: remove postgresql introduced uclibc dependency for the PostgresSQL support
In reply to Peter Seiderer---
Changes v2 --> v3:
- added (thanks to Baruch Siach for the hint)
--- package/php/Config.ext | 4 ---- 1 file changed, 4 deletions(-)
package/php/Config.ext +0 -4
@@ -148,14 +148,10 @@ comment "MySQL drivers need a toolchain w/ C++, threads" config BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL bool "PostgreSQL" - depends on BR2_TOOLCHAIN_USES_GLIBC select BR2_PACKAGE_POSTGRESQL help PDO driver for PostgreSQL -comment "PostgreSQL driver needs an (e)glibc toolchain" - depends on !BR2_TOOLCHAIN_USES_GLIBC - config BR2_PACKAGE_PHP_EXT_PDO_SQLITE bool "SQLite3" select BR2_PACKAGE_SQLITE
Signature · 1 line
2.1.4
PATCH v3 8/8 qt: remove postgresql introduced uclibc dependency for the PostgresSQL support
In reply to Peter Seiderer---
Changes v2 --> v3:
- added (thanks to Baruch Siach for the hint)
--- package/qt/Config.sql.in | 4 ---- 1 file changed, 4 deletions(-)
package/qt/Config.sql.in +0 -4
@@ -31,14 +31,10 @@ config BR2_PACKAGE_QT_ODBC config BR2_PACKAGE_QT_PSQL bool "PostgreSQL Driver" select BR2_PACKAGE_POSTGRESQL - depends on BR2_TOOLCHAIN_USES_GLIBC help Build PostgreSQL driver If unsure, say n. -comment "PostgreSQL needs an (e)glibc toolchain" - depends on !BR2_TOOLCHAIN_USES_GLIBC - choice prompt "SQLite 3 support" default BR2_PACKAGE_QT_SQLITE_NONE
Signature · 1 line
2.1.4
PATCH v3 1/8 postgresql: enable uclibc build
In reply to Peter SeidererDear Peter Seiderer,
Quoted 5 lines · Peter Seiderer
Build with uclibc and locale support failes with the following error message:
regc_pg_locale.c: In function ?pg_wc_isdigit?:
regc_pg_locale.c:312:6: error: dereferencing pointer to incomplete type
Quoted 8 lines
isdigit_l((unsigned char) c, pg_regex_locale));This can be fixed by overwriting the
HAVE_LOCALE_Tdetection (thanks to Alex Potapenko <[email protected]> for the hint [1]).[1] http://lists.busybox.net/pipermail/buildroot/2015-March/121088.html
Signed-off-by Peter Seiderer <[email protected]>
I've applied patches 1, 2 and 4 to 8 in this patch series. I haven't applied patch 3 since I have comments on it, which I'll make as a reply to the patch itself.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com