Message ID | 20170213095148.25500-1-lma@suse.com |
---|---|
State | New |
Headers | show |
On 13/02/2017 10:51, Lin Ma wrote: > By commit 67a1de0d, When we perform 'git pull && make && sudo make install', > In 'make' stage a qemu-version.h.tmp will be generated. If the content of > qemu-version.h.tmp and qemu-version.h aren't consistent, The qemu-version.h.tmp > will be renamed to qemu-version.h. Because of the target FORCE, The same action > will be do again in 'make install' stage. But why does the content of .h and .h.tmp not match during "make install"? Paolo > diff --git a/Makefile b/Makefile > index 1a8bfb2..1ca45b2 100644 > --- a/Makefile > +++ b/Makefile > @@ -184,7 +184,7 @@ qemu-version.h: FORCE > printf '""\n'; \ > fi; \ > fi) > $@.tmp) > - $(call quiet-command, cmp -s $@ $@.tmp || mv $@.tmp $@) > + $(call quiet-command, cmp -s $@ $@.tmp || cp $@.tmp $@)
>>> Paolo Bonzini <pbonzini@redhat.com> 2017/2/13 星期一 下午 6:07 >>> > > >On 13/02/2017 10:51, Lin Ma wrote: >> By commit 67a1de0d, When we perform 'git pull && make && sudo make install', >> In 'make' stage a qemu-version.h.tmp will be generated. If the content of >> qemu-version.h.tmp and qemu-version.h aren't consistent, The qemu-version.h.tmp >> will be renamed to qemu-version.h. Because of the target FORCE, The same action >> will be do again in 'make install' stage. > >But why does the content of .h and .h.tmp not match during "make install"? The content of qemu-version.h recorded the git head info of last build. After 'git pull && make ', Because the content of qemu-version.h.tmp is generated based on the lastest git describe, Now this .h.tmp and the old .h aren't consistent, So this .h.tmp will be renamed to qemu-version.h. Then during 'sudo make install', because there is no .h.tmp any more, a new one will be generated with privileged permissions. Thanks, Lin
On 13/02/2017 12:53, Lin Ma wrote: > > The content of qemu-version.h recorded the git head info of last build. > After 'git pull && make ', Because the content of qemu-version.h.tmp is > generated > based on the lastest git describe, Now this .h.tmp and the old .h aren't > consistent, > So this .h.tmp will be renamed to qemu-version.h. > Then during 'sudo make install', because there is no .h.tmp any more, a > new one will be > generated with privileged permissions. So is the bug that the "cmp || mv" should be changed to "if cmp ...; then mv ...; else rm ..."? Paolo
>>> Paolo Bonzini <pbonzini@redhat.com> 2017/2/13 星期一 下午 7:55 >>> > > >On 13/02/2017 12:53, Lin Ma wrote: >> >> The content of qemu-version.h recorded the git head info of last build. >> After 'git pull && make ', Because the content of qemu-version.h.tmp is >> generated >> based on the lastest git describe, Now this .h.tmp and the old .h aren't >> consistent, >> So this .h.tmp will be renamed to qemu-version.h. >> Then during 'sudo make install', because there is no .h.tmp any more, a >> new one will be >> generated with privileged permissions. > >So is the bug that the "cmp || mv" should be changed to "if cmp ...; >then mv ...; else rm ..."? Yes, It makes sense, and this way can avoid leaving the qemu-version.h.tmp in the folder after build. I'll send patch v3 based on it and the patch title will be changed to 'avoid leaving the temporary QEMU_PKGVERSION header file'. Thanks, Lin
diff --git a/Makefile b/Makefile index 1a8bfb2..1ca45b2 100644 --- a/Makefile +++ b/Makefile @@ -184,7 +184,7 @@ qemu-version.h: FORCE printf '""\n'; \ fi; \ fi) > $@.tmp) - $(call quiet-command, cmp -s $@ $@.tmp || mv $@.tmp $@) + $(call quiet-command, cmp -s $@ $@.tmp || cp $@.tmp $@) config-host.h: config-host.h-timestamp config-host.h-timestamp: config-host.mak