[lvm-devel] [PATCH] makefile: fail to compile if there are more than one exported symbols.

Zdenek Kabelac zkabelac at redhat.com
Mon Jun 15 09:12:31 UTC 2015


Dne 15.6.2015 v 04:58 Lidong Zhong napsal(a):
>>>> On 6/12/2015 at 11:51 PM, in message <557B001F.30804 at redhat.com>, Zdenek
> Kabelac <zkabelac at redhat.com> wrote:
>> Dne 12.6.2015 v 09:33 Lidong Zhong napsal(a):
>>> ---
>>>    make.tmpl.in | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/make.tmpl.in b/make.tmpl.in
>>> index 731dab7..60ddd01 100644
>>> --- a/make.tmpl.in
>>> +++ b/make.tmpl.in
>>> @@ -499,7 +499,7 @@ ifeq (,$(firstword $(EXPORTED_SYMBOLS)))
>>>    		 echo "	local:"; echo "		*;"; echo "};") > $@
>>>    else
>>>    	set -e;\
>>> -	R=$$(sort $^ | uniq -u);\
>>> +	R="$$(sort $^ | uniq -u)";\
>>>    	test -z "$$R" || { echo "Mismatch between symbols in shared library and
>> lists in .exported_symbols.* files: $$R"; false; } ;\
>>>    	for i in $(EXPORTED_SYMBOLS); do\
>>>    		echo "$${i##*.} {"; echo "	global:";\
>>
>> Hi
>>
>> Do you have some example where it fails without "" ?
>> Bash normally should assign $VARS directly.
> Hi  Zdenek,
>
> As the `echo` outputs, if there are more symbols got from `sort $^ | uniq -u`, there will be
> an bash error.
> I found this exactly because I forgot to add these symbols to .exported_symbols.* files.

But the bash error here is wanted when symbols are missing - it's the purpose 
to stop compilation. So please specify more closely the example where it fails 
because of missing "".

This output is wanted:

Mismatch between symbols in shared library and lists in .exported_symbols.* 
files: dm_tree_node_set_XXXX
dm_tree_node_set_YYYY
../make.tmpl:501: recipe for target '.export.sym' failed
make: *** [.export.sym] Error 1

If the dm_tree_node_set_XXXX|YYYY is not defined in any .exported_symbols*

Zdenek




More information about the lvm-devel mailing list