make install fails due to "/bin/mkdir: missing operand"
Hello.
This is my first mail to "pgsql-hackers@postgresql.org".
When I install PostgreSQL,I get an error.
So I'd like to send a report
.
PostgreSQL version: postgresql-9.0beta1
Operating system: CentOS release 5.4 (Final)
Reproduce case:
#prefix and with-pgport are not important
./configure --enable-nls='UFT_JP' --prefix=/home/p900/posgrehome
--with-pgport=1900
make && make install
make install
log---------------------------------------------------------------
:
:
make[3]: Leaving directory `/home/p900/postgresql-9.0beta1/src/timezone'
/bin/mkdir: missing operand
Try `/bin/mkdir --help' for more information.
make[2]: *** [installdirs-po] Error 1
make[2]: Leaving directory `/home/p900/postgresql-9.0beta1/src/backend'
make[1]: *** [install] Error 2
make[1]: Leaving directory `/home/p900/postgresql-9.0beta1/src'
make: *** [install] Error 2
--------------------------------------------------------------------------
First of all,I have a mistake.
"enable-nls" allows only 'de es fr ja pt_BR tr'.
I can work around to fix this.
But we can install PostgreSQL with the configure command
in 8.3.10 or before version.
We get an error following line of the Makefile.
--------------------------------------------------------------------------
postgresql-9.0beta1/src/nls-global.mk
74 installdirs-po:
75 $(MKDIR_P) $(foreach lang, $(LANGUAGES),
'$(DESTDIR)$(localedir)'/$(lang)/LC_MESSAGES)
--------------------------------------------------------------------------
In 8.3.10 or before version, we use "mkinstalldirs" and this allow "miss
operand"
--------------------------------------------------------------------------
##mkinstalldirs test
[p8310@postgres01 config]$ ./mkinstalldirs
[p8310@postgres01 config]$ echo $?
0
##MKDIR_P test
[p900@postgres01 src]$ mkdir -p
mkdir: missing operand
[p900@postgres01 src]$ echo $?
1
# I also checked following archives
# http://archives.postgresql.org/pgsql-committers/2009-08/msg00277.php
--------------------------------------------------------------------------
In the first place,I must fix my configure option.
But I also think that configure command have to check wrong config
parameter,
because I could not install postgresql-9.0beta1 for some days.
We can work around to make mkinstalldirs, but I feel it is not good
becasuse it casts away the change of
"pgsql-committers/2009-08/msg00277.php".
Thank you for reading.
================================================
Kenichiro Tanaka
K.K.Ashisuto
http://www.ashisuto.co.jp/english/index.html
================================================
Excerpts from Kenichiro Tanaka's message of lun may 10 07:07:27 -0400 2010:
Reproduce case:
#prefix and with-pgport are not important
./configure --enable-nls='UFT_JP' --prefix=/home/p900/posgrehome
--with-pgport=1900
make && make install
I think this is pilot error, in the sense that it doesn't fail if you
don't pass an invalid language name. Maybe the bug is that we allow
--enable-nls to pass down junk down to the install Makefile, instead of
erroring out right there.
The failure was introduced in this patch:
http://git.postgresql.org/gitweb?p=postgresql.git;a=commit;h=2b30e0ad2f198505c584792e0694a65e10cabe39
--
Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
Excerpts from Kenichiro Tanaka's message of lun may 10 07:07:27 -0400 2010:
./configure --enable-nls='UFT_JP' --prefix=/home/p900/posgrehome
I think this is pilot error, in the sense that it doesn't fail if you
don't pass an invalid language name. Maybe the bug is that we allow
--enable-nls to pass down junk down to the install Makefile, instead of
erroring out right there.
Yeah, I don't think this is the makefile's fault. If we wanted to do
something to make it more user-friendly, we'd try to validate the value
of --enable-nls at configure time.
regards, tom lane
On mån, 2010-05-10 at 20:07 +0900, Kenichiro Tanaka wrote:
Reproduce case:
#prefix and with-pgport are not important
./configure --enable-nls='UFT_JP' --prefix=/home/p900/posgrehome
--with-pgport=1900
make && make installmake install
log---------------------------------------------------------------
:
:
make[3]: Leaving directory `/home/p900/postgresql-9.0beta1/src/timezone'
/bin/mkdir: missing operand
Try `/bin/mkdir --help' for more information.
make[2]: *** [installdirs-po] Error 1
make[2]: Leaving directory `/home/p900/postgresql-9.0beta1/src/backend'
make[1]: *** [install] Error 2
make[1]: Leaving directory `/home/p900/postgresql-9.0beta1/src'
make: *** [install] Error 2
--------------------------------------------------------------------------
Fixed.
On mån, 2010-05-10 at 11:40 -0400, Alvaro Herrera wrote:
Excerpts from Kenichiro Tanaka's message of lun may 10 07:07:27 -0400 2010:
Reproduce case:
#prefix and with-pgport are not important
./configure --enable-nls='UFT_JP' --prefix=/home/p900/posgrehome
--with-pgport=1900
make && make installI think this is pilot error, in the sense that it doesn't fail if you
don't pass an invalid language name. Maybe the bug is that we allow
--enable-nls to pass down junk down to the install Makefile, instead of
erroring out right there.
The language name in his example is obviously wrong, but in general this
case if valid. Even if you use something "correct" like
--enable-nls='de es fr', but one subdirectory doesn't have any of those,
the mkdir call would fail.