Обсуждение: pg_migrator mention in documentation

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

pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Now that pg_migrator is in beta (http://pgfoundry.org/frs/?group_id=1000235),
I was wondering if we want to mention pg_migrator anywhere in our docs
or release notes?  Josh Berkus is already mentioning it in the draft
press release.  

I expect a final pg_migrator 8.4 release by the end of next week, before
we release Postgres RC1.

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Bruce Momjian wrote:
> Now that pg_migrator is in beta (http://pgfoundry.org/frs/?group_id=1000235),
> I was wondering if we want to mention pg_migrator anywhere in our docs
> or release notes?  Josh Berkus is already mentioning it in the draft
> press release.  

Having gotten no replies I assume we don't want to mention pg_migrator
in the release notes or documentation, which is fine.  It is mentioned
in the press release.

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Peter Eisentraut
Дата:
On Saturday 06 June 2009 16:21:22 Bruce Momjian wrote:
> Bruce Momjian wrote:
> > Now that pg_migrator is in beta
> > (http://pgfoundry.org/frs/?group_id=1000235), I was wondering if we want
> > to mention pg_migrator anywhere in our docs or release notes?  Josh
> > Berkus is already mentioning it in the draft press release.
>
> Having gotten no replies I assume we don't want to mention pg_migrator
> in the release notes or documentation, which is fine.  It is mentioned
> in the press release.

Will you eventually want to ship pg_migrator in contrib?  If so, then 
documentation will be added when that happens.

If not, we should add a link somewhere where the upgrade process is described 
(installation instructions, I think).

The makefile for pg_migrator currently assumes by default that it is located 
under contrib/.  Which confuses me.


Re: pg_migrator mention in documentation

От
Greg Smith
Дата:
On Sat, 6 Jun 2009, Bruce Momjian wrote:

> Having gotten no replies I assume we don't want to mention pg_migrator
> in the release notes or documentation, which is fine.

I know this project has resistance to putting URL links in the 
documentation.  One option I was thinking about was creating some 
dedicated pages on the Wiki to hold resource pages for things like 
pg_migrator, which are extremely useful but are still in flux at the time 
when the release goes out.

We could create a "Version Upgrade Resources" page, link to pg_migrator 
there, and include links to other related resources there too.  The 
documentation could just say "There are external tools available to 
upgrade between versions in some circumstances without a dump and reload, 
see http://wiki.postgresql.org/wiki/Version_Upgrade_Resources for more 
information".  That seems like a much more sustainable and permanent way 
to handle tools like this than directly linking to a project page for 
them, and gives capabilities like locking the page in order to prevent 
vandalism.

Two other areas which I'd like to see "packaged" formally for reference in 
the docs like this are a page listing replication tools and one listing 
postgresql.conf tuning resources.  Some of the known big problems with 
PosgreSQL have useful solutions, just not integrated ones yet, and we 
really should make it easier to popularize linking to those external tools 
in a controlled way.

I'd be happy to create proposed pages for each of these topics on the wiki 
if this idea seems reasonable to the community, there are rough articles 
there already for all three ideas I can pull from.

--
* Greg Smith gsmith@gregsmith.com http://www.gregsmith.com Baltimore, MD




Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Peter Eisentraut wrote:
> On Saturday 06 June 2009 16:21:22 Bruce Momjian wrote:
> > Bruce Momjian wrote:
> > > Now that pg_migrator is in beta
> > > (http://pgfoundry.org/frs/?group_id=1000235), I was wondering if we want
> > > to mention pg_migrator anywhere in our docs or release notes?  Josh
> > > Berkus is already mentioning it in the draft press release.
> >
> > Having gotten no replies I assume we don't want to mention pg_migrator
> > in the release notes or documentation, which is fine.  It is mentioned
> > in the press release.
> 
> Will you eventually want to ship pg_migrator in contrib?  If so, then 
> documentation will be added when that happens.

It is really up to the community, not me, what they want to do with the
code.

> If not, we should add a link somewhere where the upgrade process is described 
> (installation instructions, I think).

I think the question is what do we want to do for 8.4, if anything, and
then we can figure out what to do for later releases.

> The makefile for pg_migrator currently assumes by default that it is located 
> under contrib/.  Which confuses me.

You can compile pg_migrator by copying it to /contrib, or using PGXS; 
both work.  Read the 15-step install instructions for details:
(7)  Build pg_migratorFor pg_migrator source installs, keep in mind the compile must use the_new_ PostgreSQL source
directoryand be installed in the new Postgresinstall directory.The simplest build option is to point to the top of the
PostgreSQLsourcetree by running something like:        gmake top_builddir=/usr/src/pgsql installReplace
'/usr/src/pgsql'with your source directory.  pg_migrator alsounderstands the 'prefix=' specification if you installed
Postgresin acustom location.  Another build option is to copy the pg_migratordirectory into contrib/pg_migrator in the
newPostgreSQL source tree andrun a simple 'gmake install'.  A third install method is to use PGXS(assuming the new
'pg_config'is in your $PATH):        USE_PGXS=1 gmake prefix=/usr/local/pgsql.new install
 

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Peter Eisentraut
Дата:
On Friday 19 June 2009 00:56:42 Bruce Momjian wrote:

> > The makefile for pg_migrator currently assumes by default that it is
> > located under contrib/.  Which confuses me.
>
> You can compile pg_migrator by copying it to /contrib, or using PGXS;
> both work.  Read the 15-step install instructions for details:
>
>     (7)  Build pg_migrator
>
>     For pg_migrator source installs, keep in mind the compile must use the
>     _new_ PostgreSQL source directory and be installed in the new Postgres
>     install directory.
>
>     The simplest build option is to point to the top of the PostgreSQL
>     source tree by running something like:
>
>             gmake top_builddir=/usr/src/pgsql install
>
>     Replace '/usr/src/pgsql' with your source directory.  pg_migrator also
>     understands the 'prefix=' specification if you installed Postgres in a
>     custom location.  Another build option is to copy the pg_migrator
>     directory into contrib/pg_migrator in the new PostgreSQL source tree and
>     run a simple 'gmake install'.  A third install method is to use PGXS
>     (assuming the new 'pg_config' is in your $PATH):
>
>             USE_PGXS=1 gmake prefix=/usr/local/pgsql.new install

Maybe the latter method should be the default, as it matches better with how 
we encourage other extension modules to be built?


Re: pg_migrator mention in documentation

От
Alvaro Herrera
Дата:
Peter Eisentraut wrote:
> On Friday 19 June 2009 00:56:42 Bruce Momjian wrote:
> 
> > > The makefile for pg_migrator currently assumes by default that it is
> > > located under contrib/.  Which confuses me.
> >
> > You can compile pg_migrator by copying it to /contrib, or using PGXS;
> > both work.  Read the 15-step install instructions for details:
> >
> >     (7)  Build pg_migrator
> >
> >     For pg_migrator source installs, keep in mind the compile must use the
> >     _new_ PostgreSQL source directory and be installed in the new Postgres
> >     install directory.
> >
> >     The simplest build option is to point to the top of the PostgreSQL
> >     source tree by running something like:
> >
> >             gmake top_builddir=/usr/src/pgsql install
> >
> >     Replace '/usr/src/pgsql' with your source directory.  pg_migrator also
> >     understands the 'prefix=' specification if you installed Postgres in a
> >     custom location.  Another build option is to copy the pg_migrator
> >     directory into contrib/pg_migrator in the new PostgreSQL source tree and
> >     run a simple 'gmake install'.  A third install method is to use PGXS
> >     (assuming the new 'pg_config' is in your $PATH):
> >
> >             USE_PGXS=1 gmake prefix=/usr/local/pgsql.new install
> 
> Maybe the latter method should be the default, as it matches better with how 
> we encourage other extension modules to be built?

I wonder why we have two ways at all (I'm not counting the stuff about
copying it to contrib because it seems pointless).  The other day I was
looking at orafce code in pgfoundry, and at clearxlogtail too IIRC, and
they both had the "ifdef USE_PGXS" stuff in the Makefile.  I wonder why.
Why not just rip the "ifdef" line and the non-PGXS code, and just use
PGXS always?

It seems to me like module authors are just copying the contrib
Makefiles without stopping to think that the Makefiles could be a lot
shorter if they got rid of the non-PGXS part, which provides no extra
value.  More concretely,

*** Makefile.orig       2009-07-02 14:35:03.000000000 -0400
--- Makefile    2009-07-02 14:35:08.000000000 -0400
***************
*** 15,26 **** PG_CPPFLAGS  += -g -O0 -Wall -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wcast-align
endif
 
- ifdef USE_PGXS PGXS := $(shell pg_config --pgxs) include $(PGXS)
- else
- subdir = contrib/pg_migrator/src
- top_builddir = ../../..
- include $(top_builddir)/src/Makefile.global
- include $(top_srcdir)/contrib/contrib-global.mk
- endif
--- 15,19 ----


-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


Re: pg_migrator mention in documentation

От
"Kevin Grittner"
Дата:
Alvaro Herrera <alvherre@commandprompt.com> wrote: 
> I wonder why we have two ways at all (I'm not counting the stuff
> about copying it to contrib because it seems pointless).  The other
> day I was looking at orafce code in pgfoundry, and at clearxlogtail
> too IIRC, and they both had the "ifdef USE_PGXS" stuff in the
> Makefile.  I wonder why.  Why not just rip the "ifdef" line and the
> non-PGXS code, and just use PGXS always?
Well, most of our database servers wind up with multiple builds of
PostgreSQL, and we find it is less error-prone for the non-programmer
DBAs to expand a tarball under such a directory from the normal build
(for the appropriate version) and make it there.  There also seemed
some possibility that clearxlogtail would be accepted into the
distribution as a contrib module, so I was trying to have it ready to
go, should that happen.
As an aside, our function for extracting text from a PDF in a bytea
didn't work right when I tried to build it using the PGXS the other
day.  I moved the directory into our PostgreSQL build location and
built it the other way and it worked.  I haven't tracked down why, but
it leaves me leery of carving out the form which worked for me.  (When
you don't really understand something, you resort to superstitious
ritual....)
-Kevin


Re: pg_migrator mention in documentation

От
Tom Lane
Дата:
Peter Eisentraut <peter_e@gmx.net> writes:
> On Friday 19 June 2009 00:56:42 Bruce Momjian wrote:
>> A third install method is to use PGXS
>> (assuming the new 'pg_config' is in your $PATH):
>> 
>> USE_PGXS=1 gmake prefix=/usr/local/pgsql.new install

> Maybe the latter method should be the default, as it matches better with how 
> we encourage other extension modules to be built?

Also, the recommendation to specify prefix here is redundant and
error-prone.  It can get the correct prefix from pg_config.
        regards, tom lane


Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Peter Eisentraut wrote:
> On Friday 19 June 2009 00:56:42 Bruce Momjian wrote:
> 
> > > The makefile for pg_migrator currently assumes by default that it is
> > > located under contrib/.  Which confuses me.
> >
> > You can compile pg_migrator by copying it to /contrib, or using PGXS;
> > both work.  Read the 15-step install instructions for details:
> >
> >     (7)  Build pg_migrator
> >
> >     For pg_migrator source installs, keep in mind the compile must use the
> >     _new_ PostgreSQL source directory and be installed in the new Postgres
> >     install directory.
> >
> >     The simplest build option is to point to the top of the PostgreSQL
> >     source tree by running something like:
> >
> >             gmake top_builddir=/usr/src/pgsql install
> >
> >     Replace '/usr/src/pgsql' with your source directory.  pg_migrator also
> >     understands the 'prefix=' specification if you installed Postgres in a
> >     custom location.  Another build option is to copy the pg_migrator
> >     directory into contrib/pg_migrator in the new PostgreSQL source tree and
> >     run a simple 'gmake install'.  A third install method is to use PGXS
> >     (assuming the new 'pg_config' is in your $PATH):
> >
> >             USE_PGXS=1 gmake prefix=/usr/local/pgsql.new install
> 
> Maybe the latter method should be the default, as it matches better with how 
> we encourage other extension modules to be built?

I looked at that and the problem is that pg_migrator must be built
against the _new_ source tree, and will issue an error and exit if it
isn't.  The problem with PGXS is it silently chooses the source tree to
use based on which pg_config it finds in its path first;  that seems
error-prone.  Any ideas for a clearer way to specify pg_config, and is
that really helping things if the user has to specify it?  As you can
see, pg_migrator has the requirement of running in a multi-pg_config
binary environment, so it has extra complexity that might make pg_config
an undesirable option to be promoted first.

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Tom Lane wrote:
> Peter Eisentraut <peter_e@gmx.net> writes:
> > On Friday 19 June 2009 00:56:42 Bruce Momjian wrote:
> >> A third install method is to use PGXS
> >> (assuming the new 'pg_config' is in your $PATH):
> >> 
> >> USE_PGXS=1 gmake prefix=/usr/local/pgsql.new install
> 
> > Maybe the latter method should be the default, as it matches better with how 
> > we encourage other extension modules to be built?
> 
> Also, the recommendation to specify prefix here is redundant and
> error-prone.  It can get the correct prefix from pg_config.

Again, see my email just posted about using pg_migrator in a
multi-pg_config-binary environment.

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Tom Lane
Дата:
Bruce Momjian <bruce@momjian.us> writes:
> Tom Lane wrote:
>> Also, the recommendation to specify prefix here is redundant and
>> error-prone.  It can get the correct prefix from pg_config.

> Again, see my email just posted about using pg_migrator in a
> multi-pg_config-binary environment.

What's your point?  If the wrong pg_config is first in the path,
PGXS will do the wrong things anyway.  Specifying install prefix
manually is not enough to prevent that.

If the pg_migrator makefiles conformed to the accepted syntax for
PGXS invocation (click click ... which they do now) then the preferred
solution for this would be to explicitly specify the pg_config
location, *and nothing else*, on the make command line.
gmake USE_PGXS=1 PG_CONFIG=/path/to/pg_config install

I'm inclined to agree with Peter that the current documentation
is just going to confuse people by giving them too many options.
I would agree with removing the "ifdef USE_PGXS" from the makefiles
so that the USE_PGXS=1 bit can go away, and then saying
If the new installation's pg_config is first in your path,you can just say    gmake installOtherwise, or to be extra
sure,say    gmake PG_CONFIG=/path/to/pg_config install
 

(Although actually, if that pg_config isn't in your path, the
installed pg_migrator won't be either.  It might be better to just
say "fix things so that the new installation's executables are
first in your PATH", and be done with it.)
        regards, tom lane


Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > Tom Lane wrote:
> >> Also, the recommendation to specify prefix here is redundant and
> >> error-prone.  It can get the correct prefix from pg_config.
> 
> > Again, see my email just posted about using pg_migrator in a
> > multi-pg_config-binary environment.
> 
> What's your point?  If the wrong pg_config is first in the path,
> PGXS will do the wrong things anyway.  Specifying install prefix
> manually is not enough to prevent that.

I already tell them to make sure the new one is first in the path:
A third install method is to use PGXS (assuming the new 'pg_config'is the first 'pg_config' in your $PATH):

> If the pg_migrator makefiles conformed to the accepted syntax for
> PGXS invocation (click click ... which they do now) then the preferred

Good, thanks.

> solution for this would be to explicitly specify the pg_config
> location, *and nothing else*, on the make command line.
> 
>     gmake USE_PGXS=1 PG_CONFIG=/path/to/pg_config install

OK, I have updated the INSTALL file to use that and not tell them to
modify their path.

> I'm inclined to agree with Peter that the current documentation
> is just going to confuse people by giving them too many options.
> I would agree with removing the "ifdef USE_PGXS" from the makefiles
> so that the USE_PGXS=1 bit can go away, and then saying
> 
>     If the new installation's pg_config is first in your path,
>     you can just say
>         gmake install
>     Otherwise, or to be extra sure, say
>         gmake PG_CONFIG=/path/to/pg_config install
> 
> (Although actually, if that pg_config isn't in your path, the
> installed pg_migrator won't be either.  It might be better to just
> say "fix things so that the new installation's executables are
> first in your PATH", and be done with it.)

I am betting many people will do src/pg_migrator to run it.  However,
there will be no pg_migrator binary in the old cluster (hopefully) so it
would still find it even it the new cluster is not first in the path.

Here is the new text I am using:
The simplest build option is to use PGXS:        gmake USE_PGXS=1
PG_CONFIG=/usr/local/pgsql/bin/pg_configinstallAnotheroption is to point to the top of the new PostgreSQL source treeby
runningsomething like:        gmake top_builddir=/usr/src/pgsql installReplace '/usr/src/pgsql' with your new source
directory. pg_migratoralso understands the 'prefix=' specification if you installed Postgresin a custom location.
 
I am happy to remove the USE_PGXS from the Makefile, but it seems all
the other extensions require that so I want to be consistent.

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Tom Lane
Дата:
Bruce Momjian <bruce@momjian.us> writes:
> Tom Lane wrote:
>> (Although actually, if that pg_config isn't in your path, the
>> installed pg_migrator won't be either.  It might be better to just
>> say "fix things so that the new installation's executables are
>> first in your PATH", and be done with it.)

> I am betting many people will do src/pg_migrator to run it.  However,
> there will be no pg_migrator binary in the old cluster (hopefully) so it
> would still find it even it the new cluster is not first in the path.

That's not a very future-proof assumption...
        regards, tom lane


Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > Tom Lane wrote:
> >> (Although actually, if that pg_config isn't in your path, the
> >> installed pg_migrator won't be either.  It might be better to just
> >> say "fix things so that the new installation's executables are
> >> first in your PATH", and be done with it.)
> 
> > I am betting many people will do src/pg_migrator to run it.  However,
> > there will be no pg_migrator binary in the old cluster (hopefully) so it
> > would still find it even it the new cluster is not first in the path.
> 
> That's not a very future-proof assumption...

Yep, but pg_migrator will exit quickly if an older version is run.

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Alvaro Herrera
Дата:
Bruce Momjian wrote:

> I am happy to remove the USE_PGXS from the Makefile, but it seems all
> the other extensions require that so I want to be consistent.

Consistency here is pointless.  IIRC the dual method is used in contrib
because people did not trust the PGXS stuff enough to rip the original
Make code out; or maybe because people did not want PGXS to become the
default build method, but they allowed it to be used in contrib as a
test bed that PGXS worked.  As I pointed out earlier, this nonsense has
crept out to external modules without better reason than being copied
from contrib.

The only problem I see with PGXS is that it cannot be used in certain
situations where you want to have custom rules, but this is seldom the
case.  It would be better to get requests for PGXS enhancements so that
it'd support those other cases too.

Having PGXS is very useful to allow external modules to be built easily.
Being forced to support the "in tree" method *plus* PGXS is pointless.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


Re: pg_migrator mention in documentation

От
Tom Lane
Дата:
Alvaro Herrera <alvherre@commandprompt.com> writes:
> Consistency here is pointless.  IIRC the dual method is used in contrib
> because people did not trust the PGXS stuff enough to rip the original
> Make code out; or maybe because people did not want PGXS to become the
> default build method, but they allowed it to be used in contrib as a
> test bed that PGXS worked.

The main reason contrib still has the alternate method is that PGXS
doesn't really work until after you've installed the core build.
For modules distributed separately from core, it doesn't seem that
exciting to be able to build using the contrib method.

Now, having said that, I'm personally interested in being able to build
pg_migrator against an uninstalled source tree, because I foresee
needing to do that for RPM packaging purposes.  But I could easily patch
the makefiles if needed to make that happen.  I don't think this case
should drive the choice of what's the default or common method.
        regards, tom lane


Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Tom Lane wrote:
> Alvaro Herrera <alvherre@commandprompt.com> writes:
> > Consistency here is pointless.  IIRC the dual method is used in contrib
> > because people did not trust the PGXS stuff enough to rip the original
> > Make code out; or maybe because people did not want PGXS to become the
> > default build method, but they allowed it to be used in contrib as a
> > test bed that PGXS worked.
> 
> The main reason contrib still has the alternate method is that PGXS
> doesn't really work until after you've installed the core build.
> For modules distributed separately from core, it doesn't seem that
> exciting to be able to build using the contrib method.
> 
> Now, having said that, I'm personally interested in being able to build
> pg_migrator against an uninstalled source tree, because I foresee
> needing to do that for RPM packaging purposes.  But I could easily patch
> the makefiles if needed to make that happen.  I don't think this case
> should drive the choice of what's the default or common method.

Well, PGXS is now the recommended install method in the pg_migrator
INSTALL file.  What other changes should I make?

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Joe Conway
Дата:
Bruce Momjian wrote:
> Tom Lane wrote:
>> Alvaro Herrera <alvherre@commandprompt.com> writes:
>>> Consistency here is pointless.  IIRC the dual method is used in contrib
>>> because people did not trust the PGXS stuff enough to rip the original
>>> Make code out; or maybe because people did not want PGXS to become the
>>> default build method, but they allowed it to be used in contrib as a
>>> test bed that PGXS worked.
>> The main reason contrib still has the alternate method is that PGXS
>> doesn't really work until after you've installed the core build.
>> For modules distributed separately from core, it doesn't seem that
>> exciting to be able to build using the contrib method.
>>
>> Now, having said that, I'm personally interested in being able to build
>> pg_migrator against an uninstalled source tree, because I foresee
>> needing to do that for RPM packaging purposes.  But I could easily patch
>> the makefiles if needed to make that happen.  I don't think this case
>> should drive the choice of what's the default or common method.
> 
> Well, PGXS is now the recommended install method in the pg_migrator
> INSTALL file.  What other changes should I make?

Since PGXS does not work under Windows, I think the only way to build 
non-contrib extensions on Windows is the contrib way (i.e. place in 
contrib folder and use contrib style Makefile).

Joe



Re: pg_migrator mention in documentation

От
Greg Stark
Дата:
On Fri, Jul 3, 2009 at 8:19 PM, Tom Lane<tgl@sss.pgh.pa.us> wrote:
> The main reason contrib still has the alternate method is that PGXS
> doesn't really work until after you've installed the core build.
> For modules distributed separately from core, it doesn't seem that
> exciting to be able to build using the contrib method.
>
> Now, having said that, I'm personally interested in being able to build
> pg_migrator against an uninstalled source tree, because I foresee
> needing to do that for RPM packaging purposes.  But I could easily patch
> the makefiles if needed to make that happen.  I don't think this case
> should drive the choice of what's the default or common method.

Couldn't we provide a special pg_config and makefiles in the source
tree which know the right paths and does the right thing for in-tree
builds?

--
greg
http://mit.edu/~gsstark/resume.pdf


Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Joe Conway wrote:
> Bruce Momjian wrote:
> > Tom Lane wrote:
> >> Alvaro Herrera <alvherre@commandprompt.com> writes:
> >>> Consistency here is pointless.  IIRC the dual method is used in contrib
> >>> because people did not trust the PGXS stuff enough to rip the original
> >>> Make code out; or maybe because people did not want PGXS to become the
> >>> default build method, but they allowed it to be used in contrib as a
> >>> test bed that PGXS worked.
> >> The main reason contrib still has the alternate method is that PGXS
> >> doesn't really work until after you've installed the core build.
> >> For modules distributed separately from core, it doesn't seem that
> >> exciting to be able to build using the contrib method.
> >>
> >> Now, having said that, I'm personally interested in being able to build
> >> pg_migrator against an uninstalled source tree, because I foresee
> >> needing to do that for RPM packaging purposes.  But I could easily patch
> >> the makefiles if needed to make that happen.  I don't think this case
> >> should drive the choice of what's the default or common method.
> > 
> > Well, PGXS is now the recommended install method in the pg_migrator
> > INSTALL file.  What other changes should I make?
> 
> Since PGXS does not work under Windows, I think the only way to build 
> non-contrib extensions on Windows is the contrib way (i.e. place in 
> contrib folder and use contrib style Makefile).

I assume this work too:
gmake top_builddir=/usr/src/pgsql install

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: pg_migrator mention in documentation

От
Peter Eisentraut
Дата:
On Friday 03 July 2009 02:28:22 Bruce Momjian wrote:
> I looked at that and the problem is that pg_migrator must be built
> against the _new_ source tree, and will issue an error and exit if it
> isn't.  The problem with PGXS is it silently chooses the source tree to
> use based on which pg_config it finds in its path first;  that seems
> error-prone.  Any ideas for a clearer way to specify pg_config, and is
> that really helping things if the user has to specify it?

The standard way to do that is

make PG_CONFIG=/some/where/pg84/pg_config

> As you can
> see, pg_migrator has the requirement of running in a multi-pg_config
> binary environment, so it has extra complexity that might make pg_config
> an undesirable option to be promoted first.

It's certainly easier to do the above than having to download, configure, and 
modify the PostgreSQL source tree, I think.



Re: pg_migrator mention in documentation

От
Bruce Momjian
Дата:
Peter Eisentraut wrote:
> On Friday 03 July 2009 02:28:22 Bruce Momjian wrote:
> > I looked at that and the problem is that pg_migrator must be built
> > against the _new_ source tree, and will issue an error and exit if it
> > isn't.  The problem with PGXS is it silently chooses the source tree to
> > use based on which pg_config it finds in its path first;  that seems
> > error-prone.  Any ideas for a clearer way to specify pg_config, and is
> > that really helping things if the user has to specify it?
> 
> The standard way to do that is
> 
> make PG_CONFIG=/some/where/pg84/pg_config
> 
> > As you can
> > see, pg_migrator has the requirement of running in a multi-pg_config
> > binary environment, so it has extra complexity that might make pg_config
> > an undesirable option to be promoted first.
> 
> It's certainly easier to do the above than having to download, configure, and 
> modify the PostgreSQL source tree, I think.

I see you are replying to an old email;  the current installer
instrutions are:
(7)  Build pg_migratorFor pg_migrator source installs, keep in mind the compile must use the_new_ PostgreSQL source
directoryand be installed in the new Postgresinstall directory.The simplest build option is to use PGXS:        gmake
USE_PGXS=1PG_CONFIG=/usr/local/pgsql/bin/pg_config installAnother option is to point to the top of the new PostgreSQL
sourcetreeby running something like:        gmake top_builddir=/usr/src/pgsql installReplace '/usr/src/pgsql' with your
newsource directory.  pg_migratoralso understands the 'prefix=' specification if you installed Postgresin a custom
location.

pg_migrator does need a compiled backend source tree to be compiled,
e.g. it needs libpgport and access to backend C defines.

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +