Обсуждение: building without perl

Поиск
Список
Период
Сортировка

building without perl

От
Robert Haas
Дата:
I'm a bit confused as to what we're trying to support.  While I was
poking around tonight, I notice that we have both
./src/backend/utils/Gen_fmgrtab.sh and
./src/backend/utils/Gen_fmgrtab.pl, ostensibly because:

# The reason for implementing this functionality twice is that we don't
# require people to have perl to build from a tarball, but on the other
# hand Windows can't deal with shell scripts.

However, you definitely can't build from a git (or, presumably, CVS)
checkout without perl, and in fact the error message leaves a good
deal to be desired.  Configure succeeds, but then:

[...lots of output omitted...]
make -C ../../../../src/port all
make[5]: Entering directory `/home/rhaas/pgsql-git/src/port'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/home/rhaas/pgsql-git/src/port'
"" ./parse.pl . < ../../../../src/backend/parser/gram.y > preproc.y
/bin/sh: : command not found
make[4]: *** [preproc.y] Error 127
make[4]: *** Deleting file `preproc.y'
make[4]: Leaving directory `/home/rhaas/pgsql-git/src/interfaces/ecpg/preproc'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/rhaas/pgsql-git/src/interfaces/ecpg'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/rhaas/pgsql-git/src/interfaces'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/rhaas/pgsql-git/src'
make: *** [all] Error 2

I've seen previous references to perl being a build requirement as
well, so I guess I'm a bit confused.  Is there some tarball that is
built with just enough extra stuff in it to avoid the perl dependency?And if so, how confident are we that we're
solvinga real problem
 
here as opposed to a hypothetical one?  Admittedly, I tend to use
machines running relatively recent operating system versions, but I
think the last time that I ran into a machine that didn't have perl on
it was not more recently than 1994 (I'm guessing someone is now going
to tell me what a sheltered life I lead...).

...Robert


Re: building without perl

От
Tom Lane
Дата:
Robert Haas <robertmhaas@gmail.com> writes:
> I'm a bit confused as to what we're trying to support.

You are not supposed to need perl to build from a release tarball
(except on Windows which doesn't have a decent make or shell, so we
depend on perl instead).  You do need it to build from a CVS checkout.
Same story as bison/flex.

> make -C ../../../../src/port all
> make[5]: Entering directory `/home/rhaas/pgsql-git/src/port'
> make[5]: Nothing to be done for `all'.
> make[5]: Leaving directory `/home/rhaas/pgsql-git/src/port'
> "" ./parse.pl . < ../../../../src/backend/parser/gram.y > preproc.y
> /bin/sh: : command not found
> make[4]: *** [preproc.y] Error 127
> make[4]: *** Deleting file `preproc.y'

Hmm, that's a new dependency on perl, and it wasn't properly guarded
... will fix.

> I think the last time that I ran into a machine that didn't have perl on
> it was not more recently than 1994 (I'm guessing someone is now going
> to tell me what a sheltered life I lead...).

Yup.
        regards, tom lane


Re: building without perl

От
Robert Haas
Дата:
On Mon, Jun 22, 2009 at 10:12 PM, Tom Lane<tgl@sss.pgh.pa.us> wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> I'm a bit confused as to what we're trying to support.
>
> You are not supposed to need perl to build from a release tarball
> (except on Windows which doesn't have a decent make or shell, so we
> depend on perl instead).  You do need it to build from a CVS checkout.
> Same story as bison/flex.

FWIW, README.CVS mentions bison and flex but not perl.

So, is our policy that it's OK to use perl to generate things, as long
as they are things that are architecture-independent and
configuration-independent therefore could be pregenerated for the
release tarball?  If so, it seems we might be able to punt
Gen_fmgrtab.sh and just keep Gen_fmgrtab.pl...

>> make -C ../../../../src/port all
>> make[5]: Entering directory `/home/rhaas/pgsql-git/src/port'
>> make[5]: Nothing to be done for `all'.
>> make[5]: Leaving directory `/home/rhaas/pgsql-git/src/port'
>> "" ./parse.pl . < ../../../../src/backend/parser/gram.y > preproc.y
>> /bin/sh: : command not found
>> make[4]: *** [preproc.y] Error 127
>> make[4]: *** Deleting file `preproc.y'
>
> Hmm, that's a new dependency on perl, and it wasn't properly guarded
> ... will fix.
>
>> I think the last time that I ran into a machine that didn't have perl on
>> it was not more recently than 1994 (I'm guessing someone is now going
>> to tell me what a sheltered life I lead...).
>
> Yup.

I suppose this was intended to be funny, but I'd be curious as to the details.

...Robert


Re: building without perl

От
Tom Lane
Дата:
Robert Haas <robertmhaas@gmail.com> writes:
> So, is our policy that it's OK to use perl to generate things, as long
> as they are things that are architecture-independent and
> configuration-independent therefore could be pregenerated for the
> release tarball?  If so, it seems we might be able to punt
> Gen_fmgrtab.sh and just keep Gen_fmgrtab.pl...

Yeah, that was discussed when Gen_fmgrtab.pl was written, but we kept
the old method around out of sheer conservatism (not to mention that the
early versions of Gen_fmgrtab.pl weren't very good).

>>> I think the last time that I ran into a machine that didn't have perl on
>>> it was not more recently than 1994 (I'm guessing someone is now going
>>> to tell me what a sheltered life I lead...).
>> 
>> Yup.

> I suppose this was intended to be funny, but I'd be curious as to the details.

Actually, further investigation discloses that someone broke the no-Perl
defense in psql's makefile back in 8.0, and we hadn't noticed till now.
So it certainly seems to be the case that nobody associated with the
Postgres project works in a Perl-free environment.  Nonetheless, the
makefiles are supposed to behave sanely if Perl is missing.
        regards, tom lane


Re: building without perl

От
Andrew Dunstan
Дата:

Tom Lane wrote:
>
> Actually, further investigation discloses that someone broke the no-Perl
> defense in psql's makefile back in 8.0, and we hadn't noticed till now.
> So it certainly seems to be the case that nobody associated with the
> Postgres project works in a Perl-free environment.  Nonetheless, the
> makefiles are supposed to behave sanely if Perl is missing.
>
>             
>   

Don't we ship sql_help.h in the tarball? I thought that's all the perl 
was used for in psql.

cheers

andrew


Re: building without perl

От
Tom Lane
Дата:
Andrew Dunstan <andrew@dunslane.net> writes:
> Tom Lane wrote:
>> Actually, further investigation discloses that someone broke the no-Perl
>> defense in psql's makefile back in 8.0, and we hadn't noticed till now.

> Don't we ship sql_help.h in the tarball? I thought that's all the perl 
> was used for in psql.

Yeah, but the makefile protected that with "ifdef PERL", which stopped
failing as intended when someone forced some quotes into the value of
PERL.  I'm about to commit something that hopefully will be a bit more
robust.
        regards, tom lane


Re: building without perl

От
Andrew Dunstan
Дата:

Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>   
>> Tom Lane wrote:
>>     
>>> Actually, further investigation discloses that someone broke the no-Perl
>>> defense in psql's makefile back in 8.0, and we hadn't noticed till now.
>>>       
>
>   
>> Don't we ship sql_help.h in the tarball? I thought that's all the perl 
>> was used for in psql.
>>     
>
> Yeah, but the makefile protected that with "ifdef PERL", which stopped
> failing as intended when someone forced some quotes into the value of
> PERL.  I'm about to commit something that hopefully will be a bit more
> robust.
>
>             
>   

Oh. Oops!

cheers

andrew


Re: building without perl

От
Peter Eisentraut
Дата:
On Tuesday 23 June 2009 06:43:29 Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
> > Tom Lane wrote:
> >> Actually, further investigation discloses that someone broke the no-Perl
> >> defense in psql's makefile back in 8.0, and we hadn't noticed till now.
> >
> > Don't we ship sql_help.h in the tarball? I thought that's all the perl
> > was used for in psql.
>
> Yeah, but the makefile protected that with "ifdef PERL", which stopped
> failing as intended when someone forced some quotes into the value of
> PERL.  I'm about to commit something that hopefully will be a bit more
> robust.

So one would have only seen the difference if there was a timestamp skew in 
the unpacked tarball, or indeed perl was indeed missing.


Re: building without perl

От
Tom Lane
Дата:
Peter Eisentraut <peter_e@gmx.net> writes:
>> Yeah, but the makefile protected that with "ifdef PERL", which stopped
>> failing as intended when someone forced some quotes into the value of
>> PERL.  I'm about to commit something that hopefully will be a bit more
>> robust.

> So one would have only seen the difference if there was a timestamp skew in 
> the unpacked tarball, or indeed perl was indeed missing.

Well, the case we're really trying to deal with (as in, fail cleanly on)
is a build from CVS without perl.
        regards, tom lane