Skip to contentSkip to conversation

postgresql: enable uclibc build

PATCH New Peter Seiderer 2 participants 12 messages Mar 10, 2015 – Mar 16, 2015

lore
Share & tools
lore
#0 lore raw

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
index 3ef5e6c..519b2a1 100644
@@ -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
index 7dfef06..03154af 100644
@@ -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
#1 lore raw

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
index 03154af..7ebf795 100644
@@ -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
#2 lore raw

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
index 7ebf795..76b19d5 100644
@@ -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
#3 lore raw

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
#4 lore raw

PATCH v3 3/8 postgresql: enable bfin compile

In reply to Peter Seiderer

Dear Peter Seiderer,

Quoted 4 lines · Peter Seiderer

- overwrite platform support with linux template
- disable spinlock support

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
#5 lore raw

PATCH v3 3/8 postgresql: enable bfin compile

In reply to Peter Seiderer

Dear Peter Seiderer,

Quoted 4 lines · Peter Seiderer

- overwrite platform support with linux template
- disable spinlock support

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
#6 lore raw

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
index c1f0ee1..0d51f5e 100644
@@ -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
#7 lore raw

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
index 99e249f..17ed5db 100644
@@ -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
#8 lore raw

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
index 94c4acd..c65fc65 100644
@@ -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
#9 lore raw

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
index 57685b2..935f966 100644
@@ -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
#10 lore raw

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
index fd62657..6bf4944 100644
@@ -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
#11 lore raw

PATCH v3 1/8 postgresql: enable uclibc build

In reply to Peter Seiderer

Dear 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_T detection (thanks to Alex Potapenko <[email protected]> for the hint [1]).

[1] http://lists.busybox.net/pipermail/buildroot/2015-March/121088.html

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