Edit report at http://bugs.php.net/bug.php?id=53338&edit=1

 ID:                 53338
 Updated by:         [email protected]
 Reported by:        mike at harschsystems dot com
 Summary:            DTrace build config broken by Rev 305329
 Status:             Assigned
 Type:               Bug
 Package:            Compile Failure
 Operating System:   Solaris and OS X
 PHP Version:        trunk-SVN-2010-11-18 (snap)
 Assigned To:        jani
 Block user comment: N
 Private report:     N

 New Comment:

1) So providerdesc.o is only build and linked with when under Solaris?



yes because dtrace on Solaris generates stubs that need to be compiled
in. On Mac 

OS the necessary switch to generate providerdesc.o doesn't exist on Mac
OS.


Previous Comments:
------------------------------------------------------------------------
[2010-11-18 11:11:38] [email protected]

Automatic comment from SVN on behalf of jani
Revision: http://svn.php.net/viewvc/?view=revision&revision=305487
Log: - Fixed DTrace support in MacOSX (bug #53338)

------------------------------------------------------------------------
[2010-11-18 09:53:03] [email protected]

1) So providerdesc.o is only build and linked with when under Solaris? 

2) What in Makefile did depend on the header file before it was created?


3) I need the generated Makefile you got with current trunk (without
your patch!)

------------------------------------------------------------------------
[2010-11-18 09:44:09] [email protected]

Me break, me fix. :)

------------------------------------------------------------------------
[2010-11-18 06:39:42] mike at harschsystems dot com

I can't seem to upload the patch file.  Please refer to the patch file
contents 

here:

    http://pastebin.com/SZnvz3L0

------------------------------------------------------------------------
[2010-11-18 06:30:14] mike at harschsystems dot com

Description:
------------
The changes made in Rev 305329 break the --enable-dtrace configuration
option on 

both Solaris and OS X.  



The main problems I was able to identify are:



1.) The steps required to build DTrace-enabled binaries are different on
Solaris 

and OS X (see references below).  305329 removed the platform check that
allowed 

OS X to bypass the extra linking step required by Solaris (dtrace -G -s
...).



2.) The generation of the DTrace header file (zend_dtrace_gen.h via
'dtrace -h 

...') was moved to Makefile (from configure) - this broke various
targets that 

depended on the header file prior to it's generation (late in the
Makefile).



3.) A typo (I think) in the path variable used to generate the DTrace
targets 

injected junk into the pathnames, breaking the build.



The included patch file "dtrace_build.patch" may be applied to Rev
305455 to 

resolve these issues.  It essentially re-enlists some of the
functionality that 

existed prior to 305329.  This has been tested on both OS X and
Solaris.



Examples of how to build DTrace USDT probes on Solaris, see:

http://dtrace.org/blogs/ahl/2006/05/08/user-land-tracing-gets-better-and-better/

and

http://blogs.sun.com/dap/entry/writing_a_dtrace_usdt_provider



For the relevant documentation on OS X, see the dtrace(1M) man page:

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/

man1/dtrace.1.html





Expected result:
----------------
--enable-dtrace should configure and build on platforms that have DTrace
(Solaris 

and OS X - maybe FreeBSD?)

Actual result:
--------------
--enable-dtrace fails on both platforms for the reasons mentioned in the


Description section.


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=53338&edit=1

Reply via email to