qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Emilio G. Cota" <cota@braap.org>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Michal Suchánek" <msuchanek@suse.de>
Subject: Re: [Qemu-devel] Yet another git submodule rant
Date: Mon, 20 Nov 2017 12:06:04 +1100	[thread overview]
Message-ID: <9fa34d03-359e-8fe4-73ec-ecd9ed0c1315@ozlabs.ru> (raw)
In-Reply-To: <e5bb3da2-6098-917f-5ce0-1fa1a1986714@ozlabs.ru>

On 11/11/17 12:10, Alexey Kardashevskiy wrote:
> On 11/11/17 01:22, Daniel P. Berrange wrote:
>> On Sat, Nov 11, 2017 at 12:46:36AM +1100, Alexey Kardashevskiy wrote:
>>> On 10/11/17 21:41, Daniel P. Berrange wrote:
>>>> On Fri, Nov 10, 2017 at 09:35:54PM +1100, Alexey Kardashevskiy wrote:
>>>>> On 09/11/17 00:01, Daniel P. Berrange wrote:
>>>>>> On Wed, Nov 08, 2017 at 09:26:01AM -0300, Philippe Mathieu-Daudé wrote:
>>>>>>> On 11/08/2017 06:57 AM, Thomas Huth wrote:
>>>>>>>>
>>>>>>>> That automatic git submodule stuff now broke my workflow again. I
>>>>>>>> usually keep the git repository on my laptop and then simply rsync the
>>>>>>>> sources (without .git directories) to my target machine to compile it
>>>>>>>> there. Used to work great for years. Now it's broken, the build process
>>>>>>>> complains:
>>>>>>>>
>>>>>>>> GIT submodule checkout is out of date. Please run
>>>>>>>>   scripts/git-submodule.sh update
>>>>>>>> from the source directory checkout /home/thuth/devel/qemu
>>>>>>>>
>>>>>>>> Running "scripts/git-submodule.sh update" did not fix the issue at all -
>>>>>>>> I first had to tinker with it for a while to find out that I simply have
>>>>>>>> to delete ".git-submodule-status" in my git tree to fix the issue.
>>>>>>>>
>>>>>>>> I've got the feeling that all this submodule crap is constantly causing
>>>>>>>> pain ... do we really need this? Can't we find another solution instead?
>>>>>>>> Or at least stop modifying files automatically in the $SRC_PATH ?
>>>>>>>
>>>>>>> Also yesterday on IRC:
>>>>>>>
>>>>>>> <RaV3N> [...] I downloaded the qemu source from git and tried to compile
>>>>>>> it. I am getting this:
>>>>>>>
>>>>>>> ./configure --static && make && sudo make install
>>>>>>>  CC      ui/input-keymap.o
>>>>>>> ui/input-keymap.c:8:10: fatal error: ui/input-keymap-linux-to-qcode.c:
>>>>>>> No such file or directory
>>>>>>
>>>>>> I had a pull request merged yesterday later afternoon which possibly
>>>>>> would address that problem, though hard hard to say for certain.
>>>>>
>>>>> wow, already? :(
>>>>>
>>>>> I still wonder why do not we checkout submodules into the build directory
>>>>> and why .git-submodule-status is not there too...
>>>>
>>>> That simply isn't the way submodules work, they are inherently part of
>>>> the source tree, and the status file reflects that too.
>>>
>>> Sorry, I am missing the point here. What precisely does prevent us from
>>> checking out the required modules to the build directory and build them
>>> there? git provides a submodule repository url and sha1 for the current
>>> qemu branch.
>>
>> The build directory should never contain any of your version controlled
>> source, as that will get irretrievably lost when the build dir is purged.
> 
> I am not suggesting editing submodule sources from the build directory, I
> am suggesting not building them from the source directory, in order to keep
> them in sync, Makefile can rsync or "git push" them to the build directory.
> Yeah, fairly ugly but still more correct than the current solution.
> 
> And again, .git-submodule-status is not a source file, what is it doing in
> $SRC_PATH?
> 
> Now I cannot compile qemu pretty much 50% of time because of that
> enhancement. In the today's episode:
> 
> ssh aikhostos2 cd /home/aik/pbuild/qemu-aikhostos2-ppc64/ ;
> /home/aik/p/qemu/configure --target-list=ppc64-softmmu
> --source-path=/home/aik/p/qemu/ --enable-debug --enable-debug-info
> --disable-werror --disable-git-update --enable-trace-backend=log
> 
> All good. One detail:
> capstone          git
> 
> ssh aikhostos2 make -C /home/aik/pbuild/qemu-aikhostos2-ppc64/ -j24
> 
> make: Entering directory `/home/aik/pbuild/qemu-aikhostos2-ppc64'
>   GEN     ppc64-softmmu/config-devices.mak.tmp
> mkdir -p dtc/libfdt
> mkdir -p dtc/tests
>   GEN     config-host.h
>   GEN     qemu-options.def
> make[1]: *** No rule to make target
> `/home/aik/pbuild/qemu-aikhostos2-ppc64/capstone/libcapstone.a'.  Stop.
> make: *** [subdir-capstone] Error 2
> make: *** Waiting for unfinished jobs....
>   GEN     ppc64-softmmu/config-devices.mak
> 
> 
> How, why, where are all these nice warning messages? Ah, there they are
> (added 'set -x' to the script):
> 
> + substat=.git-submodule-status
> + command=status
> + shift
> + maybe_modules='ui/keycodemapdb dtc capstone'
> + test -z git
> + modules=
> + for m in '$maybe_modules'
> + git submodule status ui/keycodemapdb
> + test 128 = 0
> + echo 'warn: ignoring non-existent submodule ui/keycodemapdb'
> + for m in '$maybe_modules'
> + git submodule status dtc
> + test 128 = 0:m
> + echo 'warn: ignoring non-existent submodule dtc'
> + for m in '$maybe_modules'
> + git submodule status capstone
> + test 128 = 0
> + echo 'warn: ignoring non-existent submodule capstone'
> + test -n 'ui/keycodemapdb dtc capstone'
> + test -e .git
> + case "$command" in
> + test -z 'ui/keycodemapdb dtc capstone'
> + test -f .git-submodule-status
> + exit 1
> 
> 
> I assume that 'warn' is not printed because of Makefile's 'quiet-command'.
> 
> And this fails because on the server the source directory is created with
> 'git worktree' which points to bare git repo outside of the source tree and
> the git on that build machine has no idea about worktrees (the repo is
> visible to the build machine).
> 
> [vpl1 ~]$ ssh -x aikhostos2 'cd p/qemu && pwd && git --version && ls -d
> ../qemu.git && git submodule status'
> /home/aik/p/qemu
> git version 1.8.3.1
> ../qemu.git
> fatal: Not a git repository: /home/aik/p/qemu.git/worktrees/qemu
> 
> 
> Again - ok, when I know what is the problem, I know how to fix it - simply
> move .git away when running ./configure and make (as it also runs
> ./configure some time) - but the messages... Firstly ./configure decides
> that 'capstone' comes from 'git', then it simply fails with no indication
> why it went wrong.
> 
> Ha. I just found another workaround - I can do ./configure --with-git=false
> and silently disable git updates. Pretty much pointing a gun to my leg,
> ready to shoot.
> 
> We could just check git submodule status every build and print a warning if
> it is out of sync but continue. This way I would look at the submodules
> list and decide what to do.


I assume that no response to this means my proposal is somehow worse that
what we got now, correct? Thanks.



-- 
Alexey

  reply	other threads:[~2017-11-20  1:06 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-08  9:57 [Qemu-devel] Yet another git submodule rant Thomas Huth
2017-11-08 10:25 ` Daniel P. Berrange
2017-11-08 12:05   ` Michal Suchánek
2017-11-08 12:34     ` Daniel P. Berrange
2017-11-08 12:43       ` Michal Suchánek
2017-11-08 12:55         ` Daniel P. Berrange
2017-11-08 10:53 ` Gerd Hoffmann
2017-11-08 11:48   ` Thomas Huth
2017-11-08 13:30     ` Philippe Mathieu-Daudé
2017-11-08 16:09   ` Laszlo Ersek
2017-11-08 12:26 ` Philippe Mathieu-Daudé
2017-11-08 13:01   ` Daniel P. Berrange
2017-11-10 10:35     ` Alexey Kardashevskiy
2017-11-10 10:41       ` Daniel P. Berrange
2017-11-10 13:46         ` Alexey Kardashevskiy
2017-11-10 14:01           ` Peter Maydell
2017-11-11  0:15             ` Alexey Kardashevskiy
2017-11-10 14:22           ` Daniel P. Berrange
2017-11-11  1:10             ` Alexey Kardashevskiy
2017-11-20  1:06               ` Alexey Kardashevskiy [this message]
2017-11-09  3:02 ` Alexey Kardashevskiy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9fa34d03-359e-8fe4-73ec-ecd9ed0c1315@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=berrange@redhat.com \
    --cc=cota@braap.org \
    --cc=f4bug@amsat.org \
    --cc=kraxel@redhat.com \
    --cc=msuchanek@suse.de \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).