Hi,
is there any equivalent to the "exlude_modules" parameter in Makefiles.defs in the sr tree? For some modules that are contained in the 'all' branch of 'kamailio-3.0' i don't have dependencies installed, and i would like to skip them on 'make all'.
Cheers,
Henning
On Wednesday 11 March 2009, Henning Westerholt wrote:
Hi,
is there any equivalent to the "exlude_modules" parameter in Makefiles.defs in the sr tree? For some modules that are contained in the 'all' branch of 'kamailio-3.0' i don't have dependencies installed, and i would like to skip them on 'make all'.
forget my mail, i just found it, did an error during the grep. :-)
Cheers,
Henning
On 11-03 11:30, Henning Westerholt wrote:
Hi,
is there any equivalent to the "exlude_modules" parameter in Makefiles.defs in the sr tree? For some modules that are contained in the 'all' branch of 'kamailio-3.0' i don't have dependencies installed, and i would like to skip them on 'make all'.
There is no need to modify the makefile. You can do:
$ make config exclude_modules="abc"
and the makefile system will remember that you wanted to exclude the module from compilation every time you run 'make all'.
You can specify more modules separated by white space in the value of exclude_modules above.
Jan.
On Thursday 12 March 2009, Jan Janak wrote:
is there any equivalent to the "exlude_modules" parameter in Makefiles.defs in the sr tree? For some modules that are contained in the 'all' branch of 'kamailio-3.0' i don't have dependencies installed, and i would like to skip them on 'make all'.
There is no need to modify the makefile. You can do:
$ make config exclude_modules="abc"
and the makefile system will remember that you wanted to exclude the module from compilation every time you run 'make all'.
You can specify more modules separated by white space in the value of exclude_modules above.
Hi Jan,
thanks for the pointer, thats a cool feature. Some things i noticed during my tests of the 'kamailio-3.0' branch: It seems that the library dependencies of the modules are recompiled again for every module. I thought you fixed something in this regards in the main branch, perhaps this is not yet integrated into this? But i don't remember exactly, its of course not a big issue. A more problematic bug i run into is that the compilation of the 'perl' module run into a endlees loop during the make, because i don't have the necessary dependencies installed, and make somehow don't detects that the compilation fails.
Cheers,
Henning
Henning,
On 12-03 19:04, Henning Westerholt wrote:
On Thursday 12 March 2009, Jan Janak wrote:
is there any equivalent to the "exlude_modules" parameter in Makefiles.defs in the sr tree? For some modules that are contained in the 'all' branch of 'kamailio-3.0' i don't have dependencies installed, and i would like to skip them on 'make all'.
There is no need to modify the makefile. You can do:
$ make config exclude_modules="abc"
and the makefile system will remember that you wanted to exclude the module from compilation every time you run 'make all'.
You can specify more modules separated by white space in the value of exclude_modules above.
Hi Jan,
thanks for the pointer, thats a cool feature. Some things i noticed during my tests of the 'kamailio-3.0' branch: It seems that the library dependencies of the modules are recompiled again for every module. I thought you fixed something in this regards in the main branch, perhaps this is not yet integrated into this?
Yes, I noticed the same issue. I remember seeing Andrei fixing and as far as I can tell I pulled the fix into the kamailio-3.0 repository, see commit-id
19c546113aa78e454ec0f995550fde51828fce81
I reported it to Andrei already, please ignore it for now.
But i don't remember exactly, its of course not a big issue. A more problematic bug i run into is that the compilation of the 'perl' module run into a endlees loop during the make, because i don't have the necessary dependencies installed, and make somehow don't detects that the compilation fails.
Yes, I had the same issue. I ignored it for now too because I'm not that familiar with perl and I couldn't figure out what dependencies are needed to compile everything. Any help with this is, of course, welcome.
Jan.
On Mar 12, 2009 at 19:04, Henning Westerholt henning.westerholt@1und1.de wrote:
On Thursday 12 March 2009, Jan Janak wrote:
is there any equivalent to the "exlude_modules" parameter in Makefiles.defs in the sr tree? For some modules that are contained in the 'all' branch of 'kamailio-3.0' i don't have dependencies installed, and i would like to skip them on 'make all'.
There is no need to modify the makefile. You can do:
$ make config exclude_modules="abc"
and the makefile system will remember that you wanted to exclude the module from compilation every time you run 'make all'.
You can specify more modules separated by white space in the value of exclude_modules above.
Hi Jan,
thanks for the pointer, thats a cool feature. Some things i noticed during my tests of the 'kamailio-3.0' branch: It seems that the library dependencies of the modules are recompiled again for every module. I thought you fixed something in this regards in the main branch, perhaps this is not yet integrated into this? But i don't remember exactly, its of course not a big issue.
It's fixed, but for ser :-) The problem is that we always save all the options a module or a lib was compiled with and then on re-compile we check if the options (defines) have changed. If they did => recompile everything. This avoids problems like compiling a module with -DDBG_QM_MALLOC, then doing some change and compiling without it (which without this extra check might work but will produce coredumps at runtime). The DEFS and INCLUDES are saved in makecfg.lst in each modules or lib directory.
The problem with libs re-compiling happens because the list of lib defines changes as new modules using the lib are compiled. This happens because of the different DEFS in different modules (when a module makefile calls the lib makefile its local DEFS will be passed to the lib). In ser we don't use modules DEFS so much so we haven't seen it so far.
We either need a long list of DEFS excluded from the checks (that don't trigger a recompile), or a separate way to specify "local" DEFS, just for modules or libs (e.g. using MOD_DEFS instead of DEFS). Also we must eliminate abuses like using DEFS for passing includes, compiler options a.s.o.
A more problematic bug i run into is that the compilation of the 'perl' module run into a endlees loop during the make, because i don't have the necessary dependencies installed, and make somehow don't detects that the compilation fails.
It's because of DEFS+=`perl -MExtUtils::Embed -e ccopts` in the module Makefile. This causes the saved DEFS to be different (they will containt "`perl -MExtUtils::Embed -e ccopts`") from the ones actually used (the output of `perl -MExtUtils::Embed -e ccopts`). No substitution can be used in DEFS.
A simple way to fix it is to replace: DEFS+=`perl -MExtUtils::Embed -e ccopts` with PERLCCOPST=$(shell perl -MExtUtils::Embed -e ccopts) DEFS+=$(PERLCCOPTS)
I'll try to think of a solution for using separate DEFS names for modules, libs, and common part.
Andrei
On Friday 13 March 2009, Andrei Pelinescu-Onciul wrote:
thanks for the pointer, thats a cool feature. Some things i noticed during my tests of the 'kamailio-3.0' branch: It seems that the library dependencies of the modules are recompiled again for every module. I thought you fixed something in this regards in the main branch, perhaps this is not yet integrated into this? But i don't remember exactly, its of course not a big issue.
It's fixed, but for ser :-)
Hi Andrei,
ok. :-)
The problem is that we always save all the options a module or a lib was compiled with and then on re-compile we check if the options (defines) have changed. If they did => recompile everything. This avoids problems like compiling a module with -DDBG_QM_MALLOC, then doing some change and compiling without it (which without this extra check might work but will produce coredumps at runtime). The DEFS and INCLUDES are saved in makecfg.lst in each modules or lib directory.
Understand. We detect this on runtime in the module loader, if there is a mismatch in the compile flags of core and modules the server will not start.
The problem with libs re-compiling happens because the list of lib defines changes as new modules using the lib are compiled. This happens because of the different DEFS in different modules (when a module makefile calls the lib makefile its local DEFS will be passed to the lib). In ser we don't use modules DEFS so much so we haven't seen it so far.
We either need a long list of DEFS excluded from the checks (that don't trigger a recompile), or a separate way to specify "local" DEFS, just for modules or libs (e.g. using MOD_DEFS instead of DEFS). Also we must eliminate abuses like using DEFS for passing includes, compiler options a.s.o.
A more problematic bug i run into is that the compilation of the 'perl' module run into a endlees loop during the make, because i don't have the necessary dependencies installed, and make somehow don't detects that the compilation fails.
It's because of DEFS+=`perl -MExtUtils::Embed -e ccopts` in the module Makefile. This causes the saved DEFS to be different (they will containt "`perl -MExtUtils::Embed -e ccopts`") from the ones actually used (the output of `perl -MExtUtils::Embed -e ccopts`). No substitution can be used in DEFS.
A simple way to fix it is to replace: DEFS+=`perl -MExtUtils::Embed -e ccopts` with PERLCCOPST=$(shell perl -MExtUtils::Embed -e ccopts) DEFS+=$(PERLCCOPTS)
That solution stopped the endless loop in the sip-router, but works unfortunally not in the kamailio, here this breaks the compilation. But i don't know that much about how this perl embedding process works, would be cool if somebody that really use this module could take a look.
I'll try to think of a solution for using separate DEFS names for modules, libs, and common part.
That would be great.
Cheers,
Henning
On Mar 16, 2009 at 13:08, Henning Westerholt henning.westerholt@1und1.de wrote:
On Friday 13 March 2009, Andrei Pelinescu-Onciul wrote:
thanks for the pointer, thats a cool feature. Some things i noticed during my tests of the 'kamailio-3.0' branch: It seems that the library dependencies of the modules are recompiled again for every module. I thought you fixed something in this regards in the main branch, perhaps this is not yet integrated into this? But i don't remember exactly, its of course not a big issue.
It's fixed, but for ser :-)
Hi Andrei,
ok. :-)
The problem is that we always save all the options a module or a lib was compiled with and then on re-compile we check if the options (defines) have changed. If they did => recompile everything. This avoids problems like compiling a module with -DDBG_QM_MALLOC, then doing some change and compiling without it (which without this extra check might work but will produce coredumps at runtime). The DEFS and INCLUDES are saved in makecfg.lst in each modules or lib directory.
Understand. We detect this on runtime in the module loader, if there is a mismatch in the compile flags of core and modules the server will not start.
Right, we do it too, in fact it's in ser before the openser fork (but I forgot about it :-)). So replace coredump in the above paragraph with "sr will refuse to start".
The problem with libs re-compiling happens because the list of lib defines changes as new modules using the lib are compiled. This happens because of the different DEFS in different modules (when a module makefile calls the lib makefile its local DEFS will be passed to the lib). In ser we don't use modules DEFS so much so we haven't seen it so far.
We either need a long list of DEFS excluded from the checks (that don't trigger a recompile), or a separate way to specify "local" DEFS, just for modules or libs (e.g. using MOD_DEFS instead of DEFS). Also we must eliminate abuses like using DEFS for passing includes, compiler options a.s.o.
A more problematic bug i run into is that the compilation of the 'perl' module run into a endlees loop during the make, because i don't have the necessary dependencies installed, and make somehow don't detects that the compilation fails.
It's because of DEFS+=`perl -MExtUtils::Embed -e ccopts` in the module Makefile. This causes the saved DEFS to be different (they will containt "`perl -MExtUtils::Embed -e ccopts`") from the ones actually used (the output of `perl -MExtUtils::Embed -e ccopts`). No substitution can be used in DEFS.
A simple way to fix it is to replace: DEFS+=`perl -MExtUtils::Embed -e ccopts` with PERLCCOPST=$(shell perl -MExtUtils::Embed -e ccopts) DEFS+=$(PERLCCOPTS)
That solution stopped the endless loop in the sip-router, but works unfortunally not in the kamailio, here this breaks the compilation. But i don't know that much about how this perl embedding process works, would be cool if somebody that really use this module could take a look.
I'll try to think of a solution for using separate DEFS names for modules, libs, and common part.
It's in sip-router right now, but still needs some testing (the ser version works, but the sr version is slightly different).
Andrei