* [Buildroot] [PATCH v1 1/3] package/glibc: install locale cmd independent of NLS @ 2020-09-20 15:06 Peter Seiderer 2020-09-20 15:06 ` [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command Peter Seiderer 2020-09-20 15:06 ` [Buildroot] [PATCH v1 3/3] package/postgresql: set locale for initdb to C Peter Seiderer 0 siblings, 2 replies; 9+ messages in thread From: Peter Seiderer @ 2020-09-20 15:06 UTC (permalink / raw) To: buildroot Signed-off-by: Peter Seiderer <ps.report@gmx.net> --- package/glibc/glibc.mk | 2 -- 1 file changed, 2 deletions(-) diff --git a/package/glibc/glibc.mk b/package/glibc/glibc.mk index f2b5b4caf6..99c71b6eac 100644 --- a/package/glibc/glibc.mk +++ b/package/glibc/glibc.mk @@ -158,10 +158,8 @@ endif ifeq ($(BR2_PACKAGE_GLIBC_UTILS),y) GLIBC_TARGET_UTILS_USR_BIN = posix/getconf elf/ldd GLIBC_TARGET_UTILS_SBIN = elf/ldconfig -ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) GLIBC_TARGET_UTILS_USR_BIN += locale/locale endif -endif define GLIBC_INSTALL_TARGET_CMDS for libpattern in $(GLIBC_LIBS_LIB); do \ -- 2.28.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command 2020-09-20 15:06 [Buildroot] [PATCH v1 1/3] package/glibc: install locale cmd independent of NLS Peter Seiderer @ 2020-09-20 15:06 ` Peter Seiderer 2020-09-21 8:20 ` Thomas Petazzoni 2020-09-20 15:06 ` [Buildroot] [PATCH v1 3/3] package/postgresql: set locale for initdb to C Peter Seiderer 1 sibling, 1 reply; 9+ messages in thread From: Peter Seiderer @ 2020-09-20 15:06 UTC (permalink / raw) To: buildroot Running (as e.g. /etc/init.d/S50postgresql does): su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' gives the following warning: performing post-bootstrap initialization ... sh: locale: not found 1970-01-01 01:13:43.498 UTC [246] WARNING: no usable system locales were found ok Strace (greped for locale) of the command shows: 247 execve("/bin/sh", ["sh", "-c", "locale -a"], 0x1ece86e0 /* 18 vars */ <unfinished ...> 247 newfstatat(AT_FDCWD, "/bin/locale", 0x7fcbe31a30, 0) = -1 ENOENT (No such file or directory) 247 newfstatat(AT_FDCWD, "/sbin/locale", 0x7fcbe31a30, 0) = -1 ENOENT (No such file or directory) 247 newfstatat(AT_FDCWD, "/usr/bin/locale", 0x7fcbe31a30, 0) = -1 ENOENT (No such file or directory) 247 newfstatat(AT_FDCWD, "/usr/sbin/locale", 0x7fcbe31a30, 0) = -1 ENOENT (No such file or directory) 247 write(2, "locale: not found", 17) = 17 Fix it by selecting BR2_PACKAGE_GLIBC_UTILS providing the locale command for glibc. Signed-off-by: Peter Seiderer <ps.report@gmx.net> --- Notes: - tested with the following defconfig BR2_aarch64=y BR2_cortex_a72=y BR2_ARM_FPU_VFPV4=y BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4-64/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4-64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,1c64f4bc22811d2d371b271daa3fb27895a8abdd)/linux-1c64f4bc22811d2d371b271daa3fb27895a8abdd.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_STRACE=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y BR2_PACKAGE_POSTGRESQL=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="192M" # BR2_TARGET_ROOTFS_TAR is not set BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y --- package/postgresql/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/package/postgresql/Config.in b/package/postgresql/Config.in index 2f677daf5b..b15d34d3f0 100644 --- a/package/postgresql/Config.in +++ b/package/postgresql/Config.in @@ -6,6 +6,7 @@ config BR2_PACKAGE_POSTGRESQL # postgresql is unlikely to be used in a pure statically # linked environment. depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GLIBC_UTILS if BR2_PACKAGE_GLIBC # locale cmd help PostgreSQL is a powerful, open source object-relational database system. -- 2.28.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command 2020-09-20 15:06 ` [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command Peter Seiderer @ 2020-09-21 8:20 ` Thomas Petazzoni 2020-09-21 20:04 ` Peter Seiderer 0 siblings, 1 reply; 9+ messages in thread From: Thomas Petazzoni @ 2020-09-21 8:20 UTC (permalink / raw) To: buildroot Hello, On Sun, 20 Sep 2020 17:06:58 +0200 Peter Seiderer <ps.report@gmx.net> wrote: > Running (as e.g. /etc/init.d/S50postgresql does): > > su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' > > gives the following warning: > > performing post-bootstrap initialization ... sh: locale: not found > 1970-01-01 01:13:43.498 UTC [246] WARNING: no usable system locales were found > ok What is the situation with uClibc and musl toolchains ? Do they provide the "locale" command as well ? What about external glibc toolchains ? Do we install/copy the locale tool to the target ? Thomas -- Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command 2020-09-21 8:20 ` Thomas Petazzoni @ 2020-09-21 20:04 ` Peter Seiderer 2020-09-21 21:22 ` Arnout Vandecappelle 0 siblings, 1 reply; 9+ messages in thread From: Peter Seiderer @ 2020-09-21 20:04 UTC (permalink / raw) To: buildroot Hello Thomas, On Mon, 21 Sep 2020 10:20:13 +0200, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote: > Hello, > > On Sun, 20 Sep 2020 17:06:58 +0200 > Peter Seiderer <ps.report@gmx.net> wrote: > > > Running (as e.g. /etc/init.d/S50postgresql does): > > > > su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' > > > > gives the following warning: > > > > performing post-bootstrap initialization ... sh: locale: not found > > 1970-01-01 01:13:43.498 UTC [246] WARNING: no usable system locales were found > > ok > > What is the situation with uClibc and musl toolchains ? Do they provide > the "locale" command as well ? - uclibc without BR2_TOOLCHAIN_BUILDROOT_LOCALE: no warning, no locale command ([1]) - uclicc with BR2_TOOLCHAIN_BUILDROOT_LOCALE: no warning, locale command installed on target - musl: 'locale: not found' warning, no locale commmand But it is 'only' a warning... and easy to fix for gcc/buildroot toolchain... > > What about external glibc toolchains ? Do we install/copy the locale > tool to the target ? Do not know...., but it is only a warning... Regards, Peter [1] The usage of the locale command depends on 'HAVE_LOCALE_T' which depends on the availability of the locale_t type (see postgresql-12.4/config/c-library.m4 and postgresql-12.4/src/backend/commands/collationcmds.c) > > Thomas ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command 2020-09-21 20:04 ` Peter Seiderer @ 2020-09-21 21:22 ` Arnout Vandecappelle 2020-09-22 21:20 ` Peter Seiderer 0 siblings, 1 reply; 9+ messages in thread From: Arnout Vandecappelle @ 2020-09-21 21:22 UTC (permalink / raw) To: buildroot Hi Peter, On 21/09/2020 22:04, Peter Seiderer wrote: > Hello Thomas, > > On Mon, 21 Sep 2020 10:20:13 +0200, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote: > >> Hello, >> >> On Sun, 20 Sep 2020 17:06:58 +0200 >> Peter Seiderer <ps.report@gmx.net> wrote: >> >>> Running (as e.g. /etc/init.d/S50postgresql does): >>> >>> su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' >>> >>> gives the following warning: >>> >>> performing post-bootstrap initialization ... sh: locale: not found >>> 1970-01-01 01:13:43.498 UTC [246] WARNING: no usable system locales were found >>> ok >> >> What is the situation with uClibc and musl toolchains ? Do they provide >> the "locale" command as well ? > > - uclibc without BR2_TOOLCHAIN_BUILDROOT_LOCALE: no warning, no locale command ([1]) > - uclicc with BR2_TOOLCHAIN_BUILDROOT_LOCALE: no warning, locale command installed on target > - musl: 'locale: not found' warning, no locale commmand > > But it is 'only' a warning... and easy to fix for gcc/buildroot toolchain... > >> >> What about external glibc toolchains ? Do we install/copy the locale >> tool to the target ? I checked - no, we don't install it, even if it is part of the toolchain sysroot. > Do not know...., but it is only a warning... It is only a warning, but this patch is meant to get rid of that warning, no? If this series only fixes that warning for the internal toolchain, I don't think it's very useful. But probably toolchain-external-pkg.mk should be fixed to install locale if available, just like we do for ldd. And maybe also ldconfig and getconf (the other two glibc utils we install) should be handled in the same way? > Regards, > Peter > > [1] The usage of the locale command depends on 'HAVE_LOCALE_T' which depends > on the availability of the locale_t type (see postgresql-12.4/config/c-library.m4 > and postgresql-12.4/src/backend/commands/collationcmds.c) We could instead prepopulate the cache variable pgac_cv_type_locale_t with the presence of the locale binary in the target directory. Something like: POSTGRESQL_CONF_ENV += pgac_cv_type_locale_t=$(if $(wildcard $(TARGET_DIR)/usr/bin/locale),yes,no) This is assuming that the presence of the locale executable corresponds with the availability of locales (which is apparently not the case for musl, but I think that that should be considered a bug in our musl integration). But at least for glibc and uClibc it seems to be correct. This solution also removes the need for patch 1/3, which I thought was a bit iffy anyway. Regards, Arnout ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command 2020-09-21 21:22 ` Arnout Vandecappelle @ 2020-09-22 21:20 ` Peter Seiderer 0 siblings, 0 replies; 9+ messages in thread From: Peter Seiderer @ 2020-09-22 21:20 UTC (permalink / raw) To: buildroot Hello Arnout, On Mon, 21 Sep 2020 23:22:24 +0200, Arnout Vandecappelle <arnout@mind.be> wrote: > Hi Peter, > > On 21/09/2020 22:04, Peter Seiderer wrote: > > Hello Thomas, > > > > On Mon, 21 Sep 2020 10:20:13 +0200, Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote: > > > >> Hello, > >> > >> On Sun, 20 Sep 2020 17:06:58 +0200 > >> Peter Seiderer <ps.report@gmx.net> wrote: > >> > >>> Running (as e.g. /etc/init.d/S50postgresql does): > >>> > >>> su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' > >>> > >>> gives the following warning: > >>> > >>> performing post-bootstrap initialization ... sh: locale: not found > >>> 1970-01-01 01:13:43.498 UTC [246] WARNING: no usable system locales were found > >>> ok > >> > >> What is the situation with uClibc and musl toolchains ? Do they provide > >> the "locale" command as well ? > > > > - uclibc without BR2_TOOLCHAIN_BUILDROOT_LOCALE: no warning, no locale command ([1]) > > - uclicc with BR2_TOOLCHAIN_BUILDROOT_LOCALE: no warning, locale command installed on target > > - musl: 'locale: not found' warning, no locale commmand > > > > But it is 'only' a warning... and easy to fix for gcc/buildroot toolchain... > > > >> > >> What about external glibc toolchains ? Do we install/copy the locale > >> tool to the target ? > > I checked - no, we don't install it, even if it is part of the toolchain sysroot. > > > Do not know...., but it is only a warning... > > It is only a warning, but this patch is meant to get rid of that warning, no? > If this series only fixes that warning for the internal toolchain, I don't think > it's very useful. Get rid of the warning for one use case (where it is easy to fix) ;-) > > But probably toolchain-external-pkg.mk should be fixed to install locale if > available, just like we do for ldd. And maybe also ldconfig and getconf (the > other two glibc utils we install) should be handled in the same way? Will take a look... > > > > Regards, > > Peter > > > > [1] The usage of the locale command depends on 'HAVE_LOCALE_T' which depends > > on the availability of the locale_t type (see postgresql-12.4/config/c-library.m4 > > and postgresql-12.4/src/backend/commands/collationcmds.c) > > We could instead prepopulate the cache variable pgac_cv_type_locale_t with the > presence of the locale binary in the target directory. Something like: > > POSTGRESQL_CONF_ENV += pgac_cv_type_locale_t=$(if $(wildcard > $(TARGET_DIR)/usr/bin/locale),yes,no) > > This is assuming that the presence of the locale executable corresponds with > the availability of locales (which is apparently not the case for musl, but I > think that that should be considered a bug in our musl integration). But at > least for glibc and uClibc it seems to be correct. I believe false assumption, locale_t type availability (and the availability of different locale definitions) does not automatically mean the locale command will be available (see glibc case without BR2_PACKAGE_GLIBC_UTILS, and without BR2_SYSTEM_ENABLE_NLS before patch 1)... > > This solution also removes the need for patch 1/3, which I thought was a bit > iffy anyway. See above and any reasons why the locale command should be bound to NSL support? Regards, Peter > > Regards, > Arnout ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v1 3/3] package/postgresql: set locale for initdb to C 2020-09-20 15:06 [Buildroot] [PATCH v1 1/3] package/glibc: install locale cmd independent of NLS Peter Seiderer 2020-09-20 15:06 ` [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command Peter Seiderer @ 2020-09-20 15:06 ` Peter Seiderer 2020-09-21 21:25 ` Arnout Vandecappelle 1 sibling, 1 reply; 9+ messages in thread From: Peter Seiderer @ 2020-09-20 15:06 UTC (permalink / raw) To: buildroot Postgresql systemd startup fails with: Starting PostgreSQL database server... [FAILED] Failed to start PostgreSQL database server. See 'systemctl status postgresql.service' for details. $ systemctl status postgresql.service | cat ? postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Sat 2020-09-12 12:16:35 UTC; 35s ago Process: 164 ExecStartPre=/bin/sh -c if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi (code=exited, status=1/FAILURE) Sep 12 12:16:35 buildroot systemd[1]: Starting PostgreSQL database server... Sep 12 12:16:35 buildroot postgres[166]: The files belonging to this database system will be owned by user "postgres". Sep 12 12:16:35 buildroot postgres[166]: This user must also own the server process. Sep 12 12:16:35 buildroot postgres[166]: initdb: error: invalid locale settings; check LANG and LC_* environment variables Sep 12 12:16:35 buildroot systemd[1]: postgresql.service: Control process exited, code=exited, status=1/FAILURE Sep 12 12:16:35 buildroot postgres[164]: pg_ctl: database system initialization failed Sep 12 12:16:35 buildroot systemd[1]: postgresql.service: Failed with result 'exit-code'. Sep 12 12:16:35 buildroot systemd[1]: Failed to start PostgreSQL database server. Fix it by setting a sane/always available locale=C in the startup files. A similare failure/fix was reported by Pascal de Bruijn ([1]), but with en_US.UTF-8 instead of C. [1] http://lists.busybox.net/pipermail/buildroot/2019-November/266700.html Signed-off-by: Peter Seiderer <ps.report@gmx.net> --- Notes: - tested with the following defconfig BR2_aarch64=y BR2_cortex_a72=y BR2_ARM_FPU_VFPV4=y BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_INIT_SYSTEMD=y BR2_SYSTEM_DHCP="eth0" BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin" BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4-64/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4-64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,1c64f4bc22811d2d371b271daa3fb27895a8abdd)/linux-1c64f4bc22811d2d371b271daa3fb27895a8abdd.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_STRACE=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y BR2_PACKAGE_POSTGRESQL=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_ROOTFS_EXT2_SIZE="256M" # BR2_TARGET_ROOTFS_TAR is not set BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y BR2_PACKAGE_HOST_MTOOLS=y --- package/postgresql/S50postgresql | 2 +- package/postgresql/postgresql.service | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/postgresql/S50postgresql b/package/postgresql/S50postgresql index 1ece4fca9e..c47880dfd8 100644 --- a/package/postgresql/S50postgresql +++ b/package/postgresql/S50postgresql @@ -7,7 +7,7 @@ umask 077 if [ ! -f /var/lib/pgsql/PG_VERSION ]; then echo "Initializing postgresql data base..." - su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' + su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql -o --locale=C' echo "done" fi diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service index 53e6f84f00..42d973255c 100644 --- a/package/postgresql/postgresql.service +++ b/package/postgresql/postgresql.service @@ -17,7 +17,7 @@ StandardError=syslog SyslogIdentifier=postgres PIDFile=/var/lib/pgsql/postmaster.pid -ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi" +ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql -o --locale=C; fi" ExecStart=/usr/bin/postgres -D /var/lib/pgsql ExecReload=/usr/bin/kill -HUP $MAINPID KillMode=mixed -- 2.28.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v1 3/3] package/postgresql: set locale for initdb to C 2020-09-20 15:06 ` [Buildroot] [PATCH v1 3/3] package/postgresql: set locale for initdb to C Peter Seiderer @ 2020-09-21 21:25 ` Arnout Vandecappelle 2020-09-22 21:25 ` Peter Seiderer 0 siblings, 1 reply; 9+ messages in thread From: Arnout Vandecappelle @ 2020-09-21 21:25 UTC (permalink / raw) To: buildroot On 20/09/2020 17:06, Peter Seiderer wrote: > Postgresql systemd startup fails with: > > Starting PostgreSQL database server... > [FAILED] Failed to start PostgreSQL database server. > See 'systemctl status postgresql.service' for details. > > $ systemctl status postgresql.service | cat > ? postgresql.service - PostgreSQL database server > Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) > Active: failed (Result: exit-code) since Sat 2020-09-12 12:16:35 UTC; 35s ago > Process: 164 ExecStartPre=/bin/sh -c if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi (code=exited, status=1/FAILURE) > > Sep 12 12:16:35 buildroot systemd[1]: Starting PostgreSQL database server... > Sep 12 12:16:35 buildroot postgres[166]: The files belonging to this database system will be owned by user "postgres". > Sep 12 12:16:35 buildroot postgres[166]: This user must also own the server process. > Sep 12 12:16:35 buildroot postgres[166]: initdb: error: invalid locale settings; check LANG and LC_* environment variables > Sep 12 12:16:35 buildroot systemd[1]: postgresql.service: Control process exited, code=exited, status=1/FAILURE > Sep 12 12:16:35 buildroot postgres[164]: pg_ctl: database system initialization failed > Sep 12 12:16:35 buildroot systemd[1]: postgresql.service: Failed with result 'exit-code'. > Sep 12 12:16:35 buildroot systemd[1]: Failed to start PostgreSQL database server. > > Fix it by setting a sane/always available locale=C in the startup files. > > A similare failure/fix was reported by Pascal de Bruijn ([1]), but with > en_US.UTF-8 instead of C. > > [1] http://lists.busybox.net/pipermail/buildroot/2019-November/266700.html > > Signed-off-by: Peter Seiderer <ps.report@gmx.net> > --- > Notes: > > - tested with the following defconfig > > BR2_aarch64=y > BR2_cortex_a72=y > BR2_ARM_FPU_VFPV4=y > BR2_TOOLCHAIN_BUILDROOT_GLIBC=y > BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y > BR2_TOOLCHAIN_BUILDROOT_CXX=y > BR2_INIT_SYSTEMD=y > BR2_SYSTEM_DHCP="eth0" > BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin" > BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4-64/post-build.sh" > BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4-64/post-image.sh" > BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64" > BR2_LINUX_KERNEL=y > BR2_LINUX_KERNEL_CUSTOM_TARBALL=y > BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,1c64f4bc22811d2d371b271daa3fb27895a8abdd)/linux-1c64f4bc22811d2d371b271daa3fb27895a8abdd.tar.gz" > BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" > BR2_LINUX_KERNEL_DTS_SUPPORT=y > BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b" > BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y > BR2_PACKAGE_STRACE=y > BR2_PACKAGE_RPI_FIRMWARE=y > BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y > BR2_PACKAGE_POSTGRESQL=y > BR2_TARGET_ROOTFS_EXT2=y > BR2_TARGET_ROOTFS_EXT2_4=y > BR2_TARGET_ROOTFS_EXT2_SIZE="256M" > # BR2_TARGET_ROOTFS_TAR is not set > BR2_PACKAGE_HOST_DOSFSTOOLS=y > BR2_PACKAGE_HOST_GENIMAGE=y > BR2_PACKAGE_HOST_MTOOLS=y > --- > package/postgresql/S50postgresql | 2 +- > package/postgresql/postgresql.service | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/package/postgresql/S50postgresql b/package/postgresql/S50postgresql > index 1ece4fca9e..c47880dfd8 100644 > --- a/package/postgresql/S50postgresql > +++ b/package/postgresql/S50postgresql > @@ -7,7 +7,7 @@ umask 077 > > if [ ! -f /var/lib/pgsql/PG_VERSION ]; then > echo "Initializing postgresql data base..." > - su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' > + su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql -o --locale=C' I think it would be nicer if the default locale could be used instead of forcing C, but I can't be bother to find a solution for that, so Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Regards, Arnout > echo "done" > fi > > diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service > index 53e6f84f00..42d973255c 100644 > --- a/package/postgresql/postgresql.service > +++ b/package/postgresql/postgresql.service > @@ -17,7 +17,7 @@ StandardError=syslog > SyslogIdentifier=postgres > PIDFile=/var/lib/pgsql/postmaster.pid > > -ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi" > +ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql -o --locale=C; fi" > ExecStart=/usr/bin/postgres -D /var/lib/pgsql > ExecReload=/usr/bin/kill -HUP $MAINPID > KillMode=mixed > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Buildroot] [PATCH v1 3/3] package/postgresql: set locale for initdb to C 2020-09-21 21:25 ` Arnout Vandecappelle @ 2020-09-22 21:25 ` Peter Seiderer 0 siblings, 0 replies; 9+ messages in thread From: Peter Seiderer @ 2020-09-22 21:25 UTC (permalink / raw) To: buildroot Hello Arnout, On Mon, 21 Sep 2020 23:25:03 +0200, Arnout Vandecappelle <arnout@mind.be> wrote: > On 20/09/2020 17:06, Peter Seiderer wrote: > > Postgresql systemd startup fails with: > > > > Starting PostgreSQL database server... > > [FAILED] Failed to start PostgreSQL database server. > > See 'systemctl status postgresql.service' for details. > > > > $ systemctl status postgresql.service | cat > > ? postgresql.service - PostgreSQL database server > > Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) > > Active: failed (Result: exit-code) since Sat 2020-09-12 12:16:35 UTC; 35s ago > > Process: 164 ExecStartPre=/bin/sh -c if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi (code=exited, status=1/FAILURE) > > > > Sep 12 12:16:35 buildroot systemd[1]: Starting PostgreSQL database server... > > Sep 12 12:16:35 buildroot postgres[166]: The files belonging to this database system will be owned by user "postgres". > > Sep 12 12:16:35 buildroot postgres[166]: This user must also own the server process. > > Sep 12 12:16:35 buildroot postgres[166]: initdb: error: invalid locale settings; check LANG and LC_* environment variables > > Sep 12 12:16:35 buildroot systemd[1]: postgresql.service: Control process exited, code=exited, status=1/FAILURE > > Sep 12 12:16:35 buildroot postgres[164]: pg_ctl: database system initialization failed > > Sep 12 12:16:35 buildroot systemd[1]: postgresql.service: Failed with result 'exit-code'. > > Sep 12 12:16:35 buildroot systemd[1]: Failed to start PostgreSQL database server. > > > > Fix it by setting a sane/always available locale=C in the startup files. > > > > A similare failure/fix was reported by Pascal de Bruijn ([1]), but with > > en_US.UTF-8 instead of C. > > > > [1] http://lists.busybox.net/pipermail/buildroot/2019-November/266700.html > > > > Signed-off-by: Peter Seiderer <ps.report@gmx.net> > > --- > > Notes: > > > > - tested with the following defconfig > > > > BR2_aarch64=y > > BR2_cortex_a72=y > > BR2_ARM_FPU_VFPV4=y > > BR2_TOOLCHAIN_BUILDROOT_GLIBC=y > > BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y > > BR2_TOOLCHAIN_BUILDROOT_CXX=y > > BR2_INIT_SYSTEMD=y > > BR2_SYSTEM_DHCP="eth0" > > BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin" > > BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4-64/post-build.sh" > > BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4-64/post-image.sh" > > BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64" > > BR2_LINUX_KERNEL=y > > BR2_LINUX_KERNEL_CUSTOM_TARBALL=y > > BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,1c64f4bc22811d2d371b271daa3fb27895a8abdd)/linux-1c64f4bc22811d2d371b271daa3fb27895a8abdd.tar.gz" > > BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" > > BR2_LINUX_KERNEL_DTS_SUPPORT=y > > BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b" > > BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y > > BR2_PACKAGE_STRACE=y > > BR2_PACKAGE_RPI_FIRMWARE=y > > BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y > > BR2_PACKAGE_POSTGRESQL=y > > BR2_TARGET_ROOTFS_EXT2=y > > BR2_TARGET_ROOTFS_EXT2_4=y > > BR2_TARGET_ROOTFS_EXT2_SIZE="256M" > > # BR2_TARGET_ROOTFS_TAR is not set > > BR2_PACKAGE_HOST_DOSFSTOOLS=y > > BR2_PACKAGE_HOST_GENIMAGE=y > > BR2_PACKAGE_HOST_MTOOLS=y > > --- > > package/postgresql/S50postgresql | 2 +- > > package/postgresql/postgresql.service | 2 +- > > 2 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/package/postgresql/S50postgresql b/package/postgresql/S50postgresql > > index 1ece4fca9e..c47880dfd8 100644 > > --- a/package/postgresql/S50postgresql > > +++ b/package/postgresql/S50postgresql > > @@ -7,7 +7,7 @@ umask 077 > > > > if [ ! -f /var/lib/pgsql/PG_VERSION ]; then > > echo "Initializing postgresql data base..." > > - su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' > > + su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql -o --locale=C' > > I think it would be nicer if the default locale could be used instead of > forcing C, but I can't be bother to find a solution for that, so Is there the concept of default locale in buildroot? Did not find anything setting/using /etc/locale.conf (maybe systemd is setting something)? Thanks for review... Regards, Peter > > Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> > > > Regards, > Arnout > > > echo "done" > > fi > > > > diff --git a/package/postgresql/postgresql.service b/package/postgresql/postgresql.service > > index 53e6f84f00..42d973255c 100644 > > --- a/package/postgresql/postgresql.service > > +++ b/package/postgresql/postgresql.service > > @@ -17,7 +17,7 @@ StandardError=syslog > > SyslogIdentifier=postgres > > PIDFile=/var/lib/pgsql/postmaster.pid > > > > -ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi" > > +ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql -o --locale=C; fi" > > ExecStart=/usr/bin/postgres -D /var/lib/pgsql > > ExecReload=/usr/bin/kill -HUP $MAINPID > > KillMode=mixed > > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-09-22 21:25 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-09-20 15:06 [Buildroot] [PATCH v1 1/3] package/glibc: install locale cmd independent of NLS Peter Seiderer 2020-09-20 15:06 ` [Buildroot] [PATCH v1 2/3] package/postgresql: needs locale command Peter Seiderer 2020-09-21 8:20 ` Thomas Petazzoni 2020-09-21 20:04 ` Peter Seiderer 2020-09-21 21:22 ` Arnout Vandecappelle 2020-09-22 21:20 ` Peter Seiderer 2020-09-20 15:06 ` [Buildroot] [PATCH v1 3/3] package/postgresql: set locale for initdb to C Peter Seiderer 2020-09-21 21:25 ` Arnout Vandecappelle 2020-09-22 21:25 ` Peter Seiderer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox