Trouble with initdb trying to run regression tests
I've built Postgres inside a Ubuntu Vagrant VM. When I try to "make check",
I get a complaint about the permissions on the data directory:
[....]
pg_regress: initdb failed
Examine /vagrant/src/test/regress/log/initdb.log for the reason.
Command was: "initdb" -D "/vagrant/src/test/regress/./tmp_check/data"
--no-clean --no-sync > "/vagrant/src/test/regress/log/initdb.log" 2>&1
make[1]: *** [GNUmakefile:125: check] Error 2
make[1]: Leaving directory '/vagrant/src/test/regress'
make: *** [GNUmakefile:69: check] Error 2
vagrant@ubuntu-focal:/vagrant$ tail /vagrant/src/test/regress/log/initdb.log
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 20
selecting default shared_buffers ... 400kB
selecting default time zone ... Etc/UTC
creating configuration files ... ok
running bootstrap script ... 2021-03-30 21:38:32.746 UTC [23154] FATAL:
data directory "/vagrant/src/test/regress/./tmp_check/data" has invalid
permissions
2021-03-30 21:38:32.746 UTC [23154] DETAIL: Permissions should be u=rwx
(0700) or u=rwx,g=rx (0750).
child process exited with exit code 1
initdb: data directory "/vagrant/src/test/regress/./tmp_check/data" not
removed at user's request
vagrant@ubuntu-focal:/vagrant$
Has anybody had this problem? The directory in question is created by the
make check activities so I would have thought that it would set the
permissions; and if not, then everybody trying to run regression tests
would bump into this.
Isaac Morland <isaac.morland@gmail.com> writes:
I've built Postgres inside a Ubuntu Vagrant VM. When I try to "make check",
I get a complaint about the permissions on the data directory:
vagrant@ubuntu-focal:/vagrant$ tail /vagrant/src/test/regress/log/initdb.log
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 20
selecting default shared_buffers ... 400kB
selecting default time zone ... Etc/UTC
creating configuration files ... ok
running bootstrap script ... 2021-03-30 21:38:32.746 UTC [23154] FATAL:
data directory "/vagrant/src/test/regress/./tmp_check/data" has invalid
permissions
2021-03-30 21:38:32.746 UTC [23154] DETAIL: Permissions should be u=rwx
(0700) or u=rwx,g=rx (0750).
child process exited with exit code 1
Further up in initdb.log, there was probably some useful information
about whether it found an existing directory there or not.
regards, tom lane
On Tue, 30 Mar 2021 at 18:39, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Isaac Morland <isaac.morland@gmail.com> writes:
I've built Postgres inside a Ubuntu Vagrant VM. When I try to "make
check",
I get a complaint about the permissions on the data directory:
[....]
Further up in initdb.log, there was probably some useful information
about whether it found an existing directory there or not.
Sorry for the noise. Turns out that directory creation in /vagrant does not
respect umask:
vagrant@ubuntu-focal:/vagrant$ umask
0027
vagrant@ubuntu-focal:/vagrant$ mkdir test-umask
vagrant@ubuntu-focal:/vagrant$ ls -ld test-umask/
drwxr-xr-x 1 vagrant vagrant 64 Mar 31 01:12 test-umask/
vagrant@ubuntu-focal:/vagrant$
I knew that file ownership changes are not processed in /vagrant; and
because I remembered that I checked whether permission mode changes were
accepted, but didn't think to check whether umask worked. When I tried
again (git clone, build, make check) in another directory it worked fine.
I was then able to get the tests to run (and pass) in /vagrant by changing
the --temp-instance setting in src/Makefile.global (and looks like I should
be able to edit src/Makefile.global.in and re-run configure) to a location
outside of /vagrant. Is there a way to tell configure to override the
setting? I ask mostly because src/Makefile.global.in says users shouldn't
need to edit it. Otherwise my fix will most likely be to maintain a
one-line update to this file in my checkout.