Hi David,
sorry for delay.
The patch can't be used as it breaks ext/soap build as shared extension.
timelib function are compiled into php and aren't exported :(
May be you will be able to change the patch using ext/date public API.
Also we will need a patch for PHP6 to commit it into both branches, but
it's the second priority.
Thanks. Dmitry.
David Zülke wrote:
On 28.07.2009, at 19:14, Jani Taskinen wrote:
Dmitry Stogov wrote:
David Zülke wrote:
On 28.07.2009, at 13:32, Dmitry Stogov wrote:
Hi David,
I took only a quick look, but I like the patch.
In case it doesn't break any tests, it should be committed at least
into
HEAD. I agree to commit it into 5.3 too, but RMs take the final
decision.
The only thing I didn't understood - why win32/php_stdint.h is needed.
Ah, yes, that's probably an oversight. Good catch. The headers were
copy-pasted from some ext/date file :)
Another thing that just occured to me is that we now have a dependency
on ext/date; I think I had trouble compiling ext/soap as a standalone
extension like this. Must check again. Any hints?
I think ext/date can't be removed or compiled as shared extension.
If it's the case, the only problem may be with unexported symbols.
Just try to compile/test it as shared extension on Linux and Windows.
ext/date is not an extension, it's part of core, just like
ext/standard so you shouldn't have any problems with it.
Attached (and also posted here: http://pastie.org/575559 and here:
http://bugs.php.net/44383) is an update of the patch. It has the
following updates:
1) all tests adjusted, reviewed and changed to work in sequence (only
one of the several variants was not commented out before)
2) fixed handling of unix timestamp longs
There are the following outstanding issues (I'm going on a holiday
tomorrow, so I figured I'd shoot you an update in the meantime):
1) there seem to be problems with negative timezone offsets (see tests
ext/soap/tests/schema/schema0(89|91).phpt) unless I'm confused
2) at the minute, it breaks ext/soap/tests/schema/schema064.phpt. Except
for one of the cases where the formatting is indeed wrong, it's due to
time zones not being included. That obviously needs fixing, but I'd like
to point out that the current tests do not seem to be in compliance with
the XML Schema specification, which for gMonthDay, gDay and gMonth
states: "An optional following time zone qualifier is allowed as for
date". The rule for "date" and timezone postfixes is "For timezoned
values, append the canonical representation of the ·recoverable
timezone·". A recoverable timezone is an offset value in the format
"[+-]hh:mm". http://www.w3.org/TR/xmlschema-2/ has all the details, but
maybe I'm missing something. For gYearMonth and gYear, I think the
"dateTime" timezone rules apply, which means the canonical
representation must always be in UTC (and thus carry "Z" as the timezone
identifier, which is what the tests currently expect, so those are
correct).
Finally, when I compile as an extension, I get the following error once
I reach tests that execute code relying on timelib:
dyld: lazy symbol binding failed: Symbol not found: _timelib_time_ctor
Referenced from: .../extensions/no-debug-non-zts-20090626/soap.so
Expected in: flat namespace
dyld: Symbol not found: _timelib_time_ctor
Referenced from: .../extensions/no-debug-non-zts-20090626/soap.so
Expected in: flat namespace
I compiled without --enable-soap, then used the correct "phpize" in
ext/soap, ran configure with the correct
--with-php-config=.../blah/php-config, make install and enabled the
extension in php.ini.
Feedback/thoughts/advice appreciated. I'll be back in ~2 weeks.
Cheers,
- David
------------------------------------------------------------------------
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php