[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:43:38 UTC 2015
Dne 15.6.2015 v 11:26 Lidong Zhong napsal(a):
> Hi ,
>
> Without this patch, I would get the following error:
>
> set -e;\
> R=dm_lv_simple_resume dm_lv_simple_suspend dm_replace_mirror_table;\
> test -z "$R" || { echo "Mismatch between symbols in shared library and lists in .exported_symbols.* files: $R"; false; } ;\
> (for i in ./.exported_symbols.Base ./.exported_symbols.DM_1_02_97 ; do\
> echo "${i##*.} {"; echo " global:";\
> /usr/bin/sed "s/^/ /;s/$/;/" < $i;\
> test "$i" = Base && { echo " local:"; echo " *;"; };\
> echo "};";\
> done ) > .export.sym
> /bin/sh: line 1: dm_lv_simple_suspend: command not found
> ../make.tmpl:508: recipe for target '.export.sym' failed
> make[1]: *** [.export.sym] Error 127
> make[1]: Leaving directory '/home/lwang/LVM2.2.02.120/libdm'
> make.tmpl:323: recipe for target 'libdm.device-mapper' failed
> make: *** [libdm.device-mapper] Error 2
Hmmm interesting - in my case I get:
---
set -e;\
R=$(sort .exported_symbols_generated .exported_symbols.Base
.exported_symbols.DM_1_02_98 .exported_symbols.DM_1_02_97 | uniq -u);\
test -z "$R" || { echo "Mismatch between symbols in shared library and lists
in .exported_symbols.* files: $R"; false; } ;\
---
While you get directly assigned result.
So how is possible that in your case you get already 'translated' string,
while in my case I get regular shell evaluation R=$(sort....) which should
not need "".
Are you testing against latest 'git' HEAD ?
Do you this in make.tmpl.in?
.export.sym: .exported_symbols_generated $(EXPORTED_SYMBOLS)
ifeq (,$(firstword $(EXPORTED_SYMBOLS)))
set -e; (echo "Base {"; echo " global:";\
$(SED) "s/^/ /;s/$$/;/" $<;\
echo " local:"; echo " *;"; echo "};") > $@
else
set -e;\
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:";\
$(SED) "s/^/ /;s/$$/;/" $$i;\
test "$$i" = Base && { echo " local:"; echo " *;"; };\
echo "};";\
done > $@
endif
Zdenek
More information about the lvm-devel
mailing list