Hello Wez,

Monday, January 19, 2004, 12:15:24 PM, you wrote:

> The win32 build will correctly order extensions for internal_functions.c,
> so that solves static compiles, but that doesn't help dynamic loading
> (nor the unix build).

> Would it be ok to keep Marcus' function so that a wise extension can check
> if things were loaded in the correct order?

> Maybe adjust it a little:

> ZEND_API int zend_check_dependent_modules(char *mymodule, int num_modules,
> ...)
> {
>     va_list ap;
>     char *module_name;
>     int i;
>     zend_module_entry *module;

>     va_start(ap, num_modules);
>     for (i = 0; i < num_modules; i++) {
>         module_name = va_arg(ap, char*);
>         if (FAILURE == zend_hash_find(&module_registry, module_name,
>                  strlen(module_name)+1, (void**)&module) ||
>                  !module->module_started) {
>             zend_error(E_ERROR, "extension `%s' must be loaded before %s",
>                  module_name, mymodule);
>         }
>     }
>     va_end(ap);
>     return SUCCESS;
> }

> Even better would be to add an array of module names into the module
> structure and have the ZE apply this check when it loads the module.

> I think that it is reasonably important to warn the user that things
> will break if we can detect it.

> --Wez.

> ----- Original Message ----- 
> From: "Andi Gutmans" <[EMAIL PROTECTED]>
> To: "Marcus Boerger" <[EMAIL PROTECTED]>
> Cc: "Marcus Boerger" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
> Sent: Monday, January 19, 2004 8:40 AM
> Subject: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_API.c


>> At 09:34 AM 1/19/2004 +0100, Marcus Boerger wrote:
>> >Hello Andi,
>> >
>> >Monday, January 19, 2004, 9:29:50 AM, you wrote:
>> >
>> > > Marcus,
>> >
>> > > This is something for autoconf and not for run-time. I see no reason
> for
>> > > this hack!
>> > > Similar things have been done like this in the past.
>> > > Andi
>> >
>> >Wouldn't autoconf not only change the order of compiling?
>>
>> No. Check out main/internal_functions.c. That's the order extensions are
>> loaded.

This sounds like the best approach to me. The real order is:
1) LibXML
2) SimpleXML (depends on LibXML)
3) SPL (Depends on SimpleXML)
4) all others (some *will* sooner or later depend on SPL)

I would especially think of extending the module struct. We have a versoin
information there and hence must not change the API. Modules that have
additional dependancies can add them to the expanded module struct while
others are added to the end of the list automatically.

Andi is this a way to go?

-- 
Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to