pgsql: Enable probes to work with Mac OS X Leopard and other OSes that
Log Message:
-----------
Enable probes to work with Mac OS X Leopard and other OSes that will
support DTrace in the future.
Switch from using DTRACE_PROBEn macros to the dynamically generated macros.
Use "dtrace -h" to create a header file that contains the dynamically
generated macros to be used in the source code instead of the DTRACE_PROBEn
macros. A dummy header file is generated for builds without DTrace support.
Author: Robert Lor <Robert.Lor@sun.com>
Modified Files:
--------------
pgsql/src/backend:
Makefile (r1.127 -> r1.128)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/Makefile?r1=1.127&r2=1.128)
pgsql/src/backend/access/transam:
xact.c (r1.259 -> r1.260)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xact.c?r1=1.259&r2=1.260)
pgsql/src/backend/storage/lmgr:
lock.c (r1.182 -> r1.183)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/lock.c?r1=1.182&r2=1.183)
lwlock.c (r1.50 -> r1.51)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/lwlock.c?r1=1.50&r2=1.51)
pgsql/src/backend/utils:
Makefile (r1.26 -> r1.27)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/Makefile?r1=1.26&r2=1.27)
pgsql/src/include:
Makefile (r1.23 -> r1.24)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/Makefile?r1=1.23&r2=1.24)
c.h (r1.223 -> r1.224)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/c.h?r1=1.223&r2=1.224)
pg_trace.h (r1.3 -> r1.4)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/pg_trace.h?r1=1.3&r2=1.4)
Added Files:
-----------
pgsql/src/backend/utils:
Gen_dummy_probes.sed (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/Gen_dummy_probes.sed?rev=1.1&content-type=text/x-cvsweb-markup)
petere@postgresql.org (Peter Eisentraut) writes:
Switch from using DTRACE_PROBEn macros to the dynamically generated macros.
Use "dtrace -h" to create a header file that contains the dynamically
generated macros to be used in the source code instead of the DTRACE_PROBEn
macros. A dummy header file is generated for builds without DTrace support.
Gen_dummy_probes.sed? How likely is that to work on Windows?
regards, tom lane
Tom Lane wrote:
petere@postgresql.org (Peter Eisentraut) writes:
Switch from using DTRACE_PROBEn macros to the dynamically generated
macros. Use "dtrace -h" to create a header file that contains the
dynamically generated macros to be used in the source code instead of the
DTRACE_PROBEn macros. A dummy header file is generated for builds
without DTrace support.Gen_dummy_probes.sed? How likely is that to work on Windows?
I think if they can run Gen_fmgrtab, they can get this to work.
Peter Eisentraut <peter_e@gmx.net> writes:
Tom Lane wrote:
Gen_dummy_probes.sed? How likely is that to work on Windows?
I think if they can run Gen_fmgrtab, they can get this to work.
They can't.
regards, tom lane
Tom Lane wrote:
Peter Eisentraut <peter_e@gmx.net> writes:
Tom Lane wrote:
Gen_dummy_probes.sed? How likely is that to work on Windows?
I think if they can run Gen_fmgrtab, they can get this to work.
They can't.
They can't run Gen_fmgrtab or they can't get this to work?
Peter Eisentraut <peter_e@gmx.net> writes:
Tom Lane wrote:
Peter Eisentraut <peter_e@gmx.net> writes:
I think if they can run Gen_fmgrtab, they can get this to work.
They can't.
They can't run Gen_fmgrtab or they can't get this to work?
They can't run Gen_fmgrtab. The MSVC port has its own reimplementation
of that script, and I suppose now it's going to need one to substitute
for this, too.
regards, tom lane
Tom Lane wrote:
Peter Eisentraut <peter_e@gmx.net> writes:
Tom Lane wrote:
Peter Eisentraut <peter_e@gmx.net> writes:
I think if they can run Gen_fmgrtab, they can get this to work.
They can't.
They can't run Gen_fmgrtab or they can't get this to work?
They can't run Gen_fmgrtab. The MSVC port has its own reimplementation
of that script, and I suppose now it's going to need one to substitute
for this, too.
Well, yes. I meant to say, a build system that can supply the functionality
of Gen_fmgrtab can surely implement this new thing. I see there is Perl
being used, so it should be simple.
On Mon, Mar 17, 2008 at 7:44 PM, Peter Eisentraut <petere@postgresql.org> wrote:
Log Message:
-----------
Enable probes to work with Mac OS X Leopard and other OSes that will
support DTrace in the future.Switch from using DTRACE_PROBEn macros to the dynamically generated macros.
Use "dtrace -h" to create a header file that contains the dynamically
generated macros to be used in the source code instead of the DTRACE_PROBEn
macros. A dummy header file is generated for builds without DTrace support.
Do we need some support in the buildfarm to create the header file?
--
Dave Page
EnterpriseDB UK Ltd: http://www.enterprisedb.com
PostgreSQL UK 2008 Conference: http://www.postgresql.org.uk
Am Dienstag, 18. M�rz 2008 schrieb Dave Page:
On Mon, Mar 17, 2008 at 7:44 PM, Peter Eisentraut <petere@postgresql.org>
wrote:
Log Message:
-----------
Enable probes to work with Mac OS X Leopard and other OSes that will
support DTrace in the future.Switch from using DTRACE_PROBEn macros to the dynamically generated
macros. Use "dtrace -h" to create a header file that contains the
dynamically generated macros to be used in the source code instead of the
DTRACE_PROBEn macros. A dummy header file is generated for builds
without DTrace support.Do we need some support in the buildfarm to create the header file?
The Windows/MSVC build system needs some adjustments. I have no idea how it
works, but I'd be glad to explain the details to someone who does.
On Tue, Mar 18, 2008 at 9:40 AM, Peter Eisentraut <peter_e@gmx.net> wrote:
Do we need some support in the buildfarm to create the header file?
The Windows/MSVC build system needs some adjustments. I have no idea how it
works, but I'd be glad to explain the details to someone who does.
I was actually thinking of the OS X buildfarm member I setup to
exercise this. From your description it sounded like we need to
generate the probe header manually if we enable dtrace.
I'm sure Magnus would love to hear the details for the MSVC perl scipts :-p
--
Dave Page
EnterpriseDB UK Ltd: http://www.enterprisedb.com
PostgreSQL UK 2008 Conference: http://www.postgresql.org.uk
Am Dienstag, 18. M�rz 2008 schrieb Dave Page:
I was actually thinking of the OS X buildfarm member I setup to
exercise this. From your description it sounded like we need to
generate the probe header manually if we enable dtrace.
Nope.
On Tue, Mar 18, 2008 at 11:48 AM, Peter Eisentraut <peter_e@gmx.net> wrote:
Am Dienstag, 18. März 2008 schrieb Dave Page:
I was actually thinking of the OS X buildfarm member I setup to
exercise this. From your description it sounded like we need to
generate the probe header manually if we enable dtrace.Nope.
OK, I'll enable it on antelope then.
Shouldn't there have been a doc patch with this as well? Last time I
read the docs they said only Solaris supports dtrace.
--
Dave Page
EnterpriseDB UK Ltd: http://www.enterprisedb.com
PostgreSQL UK 2008 Conference: http://www.postgresql.org.uk
Dave Page wrote:
Shouldn't there have been a doc patch with this as well? Last time I
read the docs they said only Solaris supports dtrace.
Well, it won't support anything else until somebody tries debugs it ;-)
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
Alvaro Herrera <alvherre@commandprompt.com> writes:
Dave Page wrote:
Shouldn't there have been a doc patch with this as well? Last time I
read the docs they said only Solaris supports dtrace.
Well, it won't support anything else until somebody tries debugs it ;-)
Well, I've got Leopard here, I'd be happy to test it ... but the patch
has rendered
http://developer.postgresql.org/pgdocs/postgres/dynamic-trace.html
into a pack of lies quite independently of which OSes are supported,
so I'm not very sure what to do.
regards, tom lane
Am Dienstag, 18. M�rz 2008 schrieb Tom Lane:
Well, I've got Leopard here, I'd be happy to test it ... but the patch
has rendered
http://developer.postgresql.org/pgdocs/postgres/dynamic-trace.html
into a pack of lies quite independently of which OSes are supported,
so I'm not very sure what to do.
Ah yes. Robert, do you think you could update the documentation a bit on how
to use the tracing?
Peter Eisentraut wrote:
Well, yes. I meant to say, a build system that can supply the functionality
of Gen_fmgrtab can surely implement this new thing. I see there is Perl
being used, so it should be simple.
I was thinking of using a Perl script to generate the dummy header file
but decided against it to avoid disrupting the build on other platforms.
If sed doesn't work on Windows for some reason, we can use a Perl script
instead.
Regards,
-Robert
Peter Eisentraut wrote:
Modified Files:
--------------
pgsql/src/backend:
Makefile (r1.127 -> r1.128)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/Makefile?r1=1.127&r2=1.128)
pgsql/src/backend/access/transam:
xact.c (r1.259 -> r1.260)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xact.c?r1=1.259&r2=1.260)
pgsql/src/backend/storage/lmgr:
lock.c (r1.182 -> r1.183)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/lock.c?r1=1.182&r2=1.183)
lwlock.c (r1.50 -> r1.51)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/lwlock.c?r1=1.50&r2=1.51)
pgsql/src/backend/utils:
Makefile (r1.26 -> r1.27)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/Makefile?r1=1.26&r2=1.27)
pgsql/src/include:
Makefile (r1.23 -> r1.24)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/Makefile?r1=1.23&r2=1.24)
c.h (r1.223 -> r1.224)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/c.h?r1=1.223&r2=1.224)
pg_trace.h (r1.3 -> r1.4)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/pg_trace.h?r1=1.3&r2=1.4)Added Files:
-----------
pgsql/src/backend/utils:
Gen_dummy_probes.sed (r1.1)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/Gen_dummy_probes.sed?rev=1.1&content-type=text/x-cvsweb-markup)
You didn't include the changes in pgsql/src/Makefile. By generating
probes.h before the compile starts, it will allow probes to be added
outside the backend without having to do anything extra. Is this not the
right way or you think it's not needed now?
Regards,
-Robert
Peter Eisentraut wrote:
Am Dienstag, 18. M�rz 2008 schrieb Tom Lane:
Well, I've got Leopard here, I'd be happy to test it ... but the patch
has rendered
http://developer.postgresql.org/pgdocs/postgres/dynamic-trace.html
into a pack of lies quite independently of which OSes are supported,
so I'm not very sure what to do.Ah yes. Robert, do you think you could update the documentation a bit on how
to use the tracing?
Yes, the doc needs to be updated. Will submit a patch soon!
Regards,
-Robert
Robert Lor wrote:
You didn't include the changes in pgsql/src/Makefile. �By generating
probes.h before the compile starts, it will allow probes to be added
outside the backend without having to do anything extra. Is this not the
right way or you think it's not needed now?
Once we have that situation, we can think about the right way to implement it.
Worst case, we just put the hunk back. But it is not needed now.
Robert Lor wrote:
Peter Eisentraut wrote:
Well, yes. I meant to say, a build system that can supply the
functionality of Gen_fmgrtab can surely implement this new thing. I
see there is Perl being used, so it should be simple.I was thinking of using a Perl script to generate the dummy header
file but decided against it to avoid disrupting the build on other
platforms. If sed doesn't work on Windows for some reason, we can use
a Perl script instead.
Perl is required for all MSVC builds, and for all builds from CVS on any
platform too, IIRC, so it's a fairly safe bet for any tool you provide.
cheers
andrew
Andrew Dunstan <andrew@dunslane.net> writes:
Robert Lor wrote:
I was thinking of using a Perl script to generate the dummy header
file but decided against it to avoid disrupting the build on other
platforms. If sed doesn't work on Windows for some reason, we can use
a Perl script instead.
Perl is required for all MSVC builds, and for all builds from CVS on any
platform too, IIRC, so it's a fairly safe bet for any tool you provide.
The key phrase in that is "from CVS". Changing the sed script to Perl
would introduce an unacceptable new dependency for builds from tarballs.
However, there's nothing wrong with using Perl in the MSVC case,
since those scripts need it anyway.
regards, tom lane
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Tue, 18 Mar 2008 18:14:32 -0400
Tom Lane <tgl@sss.pgh.pa.us> wrote:
Perl is required for all MSVC builds, and for all builds from CVS
on any platform too, IIRC, so it's a fairly safe bet for any tool
you provide.The key phrase in that is "from CVS". Changing the sed script to Perl
would introduce an unacceptable new dependency for builds from
tarballs.
At some point, do we recognize that Perl is installed on every
reasonable platform in existence or can be easily? I mean, we already
require autoconf/make etc... What is adding Perl in practice?
Sincerely,
Joshua D. Drake
- --
The PostgreSQL Company since 1997: http://www.commandprompt.com/
PostgreSQL Community Conference: http://www.postgresqlconference.org/
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL political pundit | Mocker of Dolphins
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFH4ECDATb/zqfZUUQRApTmAJ9+N+vEuBnydMB1ozkg7FMZgBeA9ACgq6fz
WJXzPkgvqrSkkzV9vnoMYiM=
=n7BS
-----END PGP SIGNATURE-----
Joshua D. Drake wrote:
At some point, do we recognize that Perl is installed on every
reasonable platform in existence or can be easily? I mean, we already
require autoconf/make etc... What is adding Perl in practice?
For one thing, a moving target. If we rely on "standard" Unix tools, we have
something fairly stable, if you are careful to read the documentation to omit
the occasional GNU extension. But with Perl, you'd have a constant worry,
which Perl versions to support and which features that Perl version provides.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Wed, 19 Mar 2008 00:07:09 +0100
Peter Eisentraut <peter_e@gmx.net> wrote:
Joshua D. Drake wrote:
At some point, do we recognize that Perl is installed on every
reasonable platform in existence or can be easily? I mean, we
already require autoconf/make etc... What is adding Perl in
practice?For one thing, a moving target. If we rely on "standard" Unix tools,
we have something fairly stable, if you are careful to read the
documentation to omit the occasional GNU extension. But with Perl,
you'd have a constant worry, which Perl versions to support and which
features that Perl version provides.
That is certainly reasonable and I have to admit, I don't follow Perl
releases as much as I probably should but I can't remember the last
time something I would do in "standard" perl wouldn't work for every
version of perl since 5.6. I guess there is a consideration with the
imminent, supposedly in our lifetime release of 6.
Fair enough.
Sincerely,
Joshua D. Drake
- --
The PostgreSQL Company since 1997: http://www.commandprompt.com/
PostgreSQL Community Conference: http://www.postgresqlconference.org/
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
PostgreSQL political pundit | Mocker of Dolphins
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFH4EwQATb/zqfZUUQRAueHAJ9+YH28v862MP1nBSk16XH5rMQKmQCgnWm1
UimwrFV0siRHC5JGp0o/xic=
=WKN3
-----END PGP SIGNATURE-----
Peter Eisentraut <peter_e@gmx.net> writes:
Joshua D. Drake wrote:
What is adding Perl in practice?
For one thing, a moving target.
Well, if we were that afraid of Perl version discrepancies, we shouldn't
be using it at all anywhere. My point was just that we should not add
a new build tool dependency without a darn good reason; and something
you can easily do in sed doesn't qualify as a darn good reason.
regards, tom lane
Robert Lor wrote:
Peter Eisentraut wrote:
Well, yes. I meant to say, a build system that can supply the
functionality of Gen_fmgrtab can surely implement this new thing. I
see there is Perl being used, so it should be simple.I was thinking of using a Perl script to generate the dummy header
file but decided against it to avoid disrupting the build on other
platforms. If sed doesn't work on Windows for some reason, we can use
a Perl script instead.
What we should do in fact is to use psed on Windows to execute the
script. This is a sed emulator that is part of the standard perl
install, and will save us the bother of having to maintain two
generation scripts, or switching from sed to perl. We just need to find
where to plug that into the Windows build process.
cheers
andrew
Andrew Dunstan wrote:
Robert Lor wrote:
Peter Eisentraut wrote:
Well, yes. I meant to say, a build system that can supply the
functionality of Gen_fmgrtab can surely implement this new thing. I
see there is Perl being used, so it should be simple.I was thinking of using a Perl script to generate the dummy header
file but decided against it to avoid disrupting the build on other
platforms. If sed doesn't work on Windows for some reason, we can use
a Perl script instead.What we should do in fact is to use psed on Windows to execute the
script. This is a sed emulator that is part of the standard perl
install, and will save us the bother of having to maintain two
generation scripts, or switching from sed to perl. We just need to find
where to plug that into the Windows build process.
Hadn't heard about that one. Sounds like a good way to do it, if you can
find the correct place for it :-)
//Magnus
Magnus Hagander wrote:
Andrew Dunstan wrote:
Robert Lor wrote:
Peter Eisentraut wrote:
Well, yes. I meant to say, a build system that can supply the
functionality of Gen_fmgrtab can surely implement this new thing.
I see there is Perl being used, so it should be simple.I was thinking of using a Perl script to generate the dummy header
file but decided against it to avoid disrupting the build on other
platforms. If sed doesn't work on Windows for some reason, we can
use a Perl script instead.What we should do in fact is to use psed on Windows to execute the
script. This is a sed emulator that is part of the standard perl
install, and will save us the bother of having to maintain two
generation scripts, or switching from sed to perl. We just need to
find where to plug that into the Windows build process.Hadn't heard about that one. Sounds like a good way to do it, if you
can find the correct place for it :-)
I'm thinking of the patch below. I'll try it out tomorrow.
cheers
andrew
Index: Solution.pm
===================================================================
RCS file: /cvsroot/pgsql/src/tools/msvc/Solution.pm,v
retrieving revision 1.36
diff -c -r1.36 Solution.pm
*** Solution.pm 28 Feb 2008 12:17:59 -0000 1.36
--- Solution.pm 20 Mar 2008 00:02:05 -0000
***************
*** 205,210 ****
--- 205,216 ----
close(T);
}
+ if
(IsNewer('src\include\utils\probes.h','src\backend\utils\probes.d'))
+ {
+ print "Generating probes.h...\n";
+ system('psed -f src\backend\utils\Gen_dummy_probes.sed
src\backend\utils\probes.d > src\include\utils\probes.h');
+ }
+
if
(IsNewer('src\interfaces\libpq\libpq.rc','src\interfaces\libpq\libpq.rc.in'))
{
print "Generating libpq.rc...\n";