diff mbox series

configure: Change capstone's default state to disabled

Message ID 20190418224706.14014-1-programmingkidx@gmail.com
State New
Headers show
Series configure: Change capstone's default state to disabled | expand

Commit Message

Programmingkid April 18, 2019, 10:47 p.m. UTC
Capstone is not necessary in order to use QEMU. Disable it by default.
This will save the user the pain of having to figure why QEMU isn't
building when this library is missing.

Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
---
 configure | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Thomas Huth April 19, 2019, 7:10 a.m. UTC | #1
On 19/04/2019 00.47, John Arbuckle wrote:
> Capstone is not necessary in order to use QEMU. Disable it by default.
> This will save the user the pain of having to figure why QEMU isn't
> building when this library is missing.
> 
> Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
> ---
>  configure | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index 1c563a7027..77d7967f92 100755
> --- a/configure
> +++ b/configure
> @@ -433,7 +433,7 @@ opengl_dmabuf="no"
>  cpuid_h="no"
>  avx2_opt=""
>  zlib="yes"
> -capstone=""
> +capstone="no"
>  lzo=""
>  snappy=""
>  bzip2=""

AFAIK we ship capstone as a submodule, so how can this be missing? Also,
our philosophy is to keep everything enabled by default if possible, so
that the code paths don't bitrot. Thus I don't think that disabling this
by default is a good idea. ... so if you've got a problem here, there
must be another solution (e.g. is the system capstone detection not
working right on your system?).

 Thomas
Programmingkid April 19, 2019, 1:44 p.m. UTC | #2
On Apr 19, 2019, at 3:10 AM, Thomas Huth wrote:

> On 19/04/2019 00.47, John Arbuckle wrote:
>> Capstone is not necessary in order to use QEMU. Disable it by  
>> default.
>> This will save the user the pain of having to figure why QEMU isn't
>> building when this library is missing.
>>
>> Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
>> ---
>>  configure | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/configure b/configure
>> index 1c563a7027..77d7967f92 100755
>> --- a/configure
>> +++ b/configure
>> @@ -433,7 +433,7 @@ opengl_dmabuf="no"
>>  cpuid_h="no"
>>  avx2_opt=""
>>  zlib="yes"
>> -capstone=""
>> +capstone="no"
>>  lzo=""
>>  snappy=""
>>  bzip2=""
>
> AFAIK we ship capstone as a submodule, so how can this be missing?  
> Also,
> our philosophy is to keep everything enabled by default if  
> possible, so
> that the code paths don't bitrot. Thus I don't think that disabling  
> this
> by default is a good idea. ... so if you've got a problem here, there
> must be another solution (e.g. is the system capstone detection not
> working right on your system?).
>
>  Thomas

Thank you for replying. Capstone comes with QEMU? Every time I try to  
compile QEMU I see an error relating to Capstone not being on my  
system. Why do you feel that disabling Capstone by default is not a  
good idea?

Here is the error message I see when compiling QEMU:

CHK version_gen.h
make[1]: *** No rule to make target `/Users/John/qemu-git/capstone/ 
libcapstone.a'.  Stop.
make: *** [subdir-capstone] Error 2
Richard Henderson April 19, 2019, 6:22 p.m. UTC | #3
On 4/19/19 3:44 AM, G 3 wrote:
> 
> Here is the error message I see when compiling QEMU:
> 
> CHK version_gen.h
> make[1]: *** No rule to make target
> `/Users/John/qemu-git/capstone/libcapstone.a'.  Stop.
> make: *** [subdir-capstone] Error 2

You are configuring with --static?

I've seen this before myself -- IMO it's broken distro packaging, in that the
shipped pkgconfig/capstone.pc claims static library support, but the static
library itself wasn't shipped.

We should probably work around this in configure, and report the packaging bug.


r~
Programmingkid April 19, 2019, 11:48 p.m. UTC | #4
> On Apr 19, 2019, at 2:22 PM, Richard Henderson <rth@twiddle.net> wrote:
> 
> On 4/19/19 3:44 AM, G 3 wrote:
>> 
>> Here is the error message I see when compiling QEMU:
>> 
>> CHK version_gen.h
>> make[1]: *** No rule to make target
>> `/Users/John/qemu-git/capstone/libcapstone.a'.  Stop.
>> make: *** [subdir-capstone] Error 2
> 
> You are configuring with --static?
> 
> I've seen this before myself -- IMO it's broken distro packaging, in that the
> shipped pkgconfig/capstone.pc claims static library support, but the static
> library itself wasn't shipped.
> 
> We should probably work around this in configure, and report the packaging bug.

I do not use --static. This is what I use: ./configure --target-list=ppc-softmmu.

I think this is a bug with configure, or with the capstone repo.
Thomas Huth April 20, 2019, 10:40 a.m. UTC | #5
On 19/04/2019 15.44, G 3 wrote:
> 
> On Apr 19, 2019, at 3:10 AM, Thomas Huth wrote:
> 
>> On 19/04/2019 00.47, John Arbuckle wrote:
>>> Capstone is not necessary in order to use QEMU. Disable it by default.
>>> This will save the user the pain of having to figure why QEMU isn't
>>> building when this library is missing.
>>>
>>> Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
>>> ---
>>>  configure | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/configure b/configure
>>> index 1c563a7027..77d7967f92 100755
>>> --- a/configure
>>> +++ b/configure
>>> @@ -433,7 +433,7 @@ opengl_dmabuf="no"
>>>  cpuid_h="no"
>>>  avx2_opt=""
>>>  zlib="yes"
>>> -capstone=""
>>> +capstone="no"
>>>  lzo=""
>>>  snappy=""
>>>  bzip2=""
>>
>> AFAIK we ship capstone as a submodule, so how can this be missing? Also,
>> our philosophy is to keep everything enabled by default if possible, so
>> that the code paths don't bitrot. Thus I don't think that disabling this
>> by default is a good idea. ... so if you've got a problem here, there
>> must be another solution (e.g. is the system capstone detection not
>> working right on your system?).
>>
>>  Thomas
> 
> Thank you for replying. Capstone comes with QEMU? Every time I try to
> compile QEMU I see an error relating to Capstone not being on my system.
> Why do you feel that disabling Capstone by default is not a good idea?
> 
> Here is the error message I see when compiling QEMU:
> 
> CHK version_gen.h
> make[1]: *** No rule to make target
> `/Users/John/qemu-git/capstone/libcapstone.a'.  Stop.
> make: *** [subdir-capstone] Error 2

I assume you're using a git checkout here, right? For git checkouts, the
Makefile should take care of calling the scripts/git-submodule.sh script
which should initialize the submodule in the capstone directory.

What's the content of your .git-submodule-status file? What does
"configure" say about capstone support on your system?

 Thomas
Programmingkid May 11, 2019, 5:21 p.m. UTC | #6
> On Apr 20, 2019, at 6:40 AM, Thomas Huth <thuth@redhat.com> wrote:
> 
> On 19/04/2019 15.44, G 3 wrote:
>> 
>> On Apr 19, 2019, at 3:10 AM, Thomas Huth wrote:
>> 
>>> On 19/04/2019 00.47, John Arbuckle wrote:
>>>> Capstone is not necessary in order to use QEMU. Disable it by default.
>>>> This will save the user the pain of having to figure why QEMU isn't
>>>> building when this library is missing.
>>>> 
>>>> Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
>>>> ---
>>>>  configure | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>> 
>>>> diff --git a/configure b/configure
>>>> index 1c563a7027..77d7967f92 100755
>>>> --- a/configure
>>>> +++ b/configure
>>>> @@ -433,7 +433,7 @@ opengl_dmabuf="no"
>>>>  cpuid_h="no"
>>>>  avx2_opt=""
>>>>  zlib="yes"
>>>> -capstone=""
>>>> +capstone="no"
>>>>  lzo=""
>>>>  snappy=""
>>>>  bzip2=""
>>> 
>>> AFAIK we ship capstone as a submodule, so how can this be missing? Also,
>>> our philosophy is to keep everything enabled by default if possible, so
>>> that the code paths don't bitrot. Thus I don't think that disabling this
>>> by default is a good idea. ... so if you've got a problem here, there
>>> must be another solution (e.g. is the system capstone detection not
>>> working right on your system?).
>>> 
>>>  Thomas
>> 
>> Thank you for replying. Capstone comes with QEMU? Every time I try to
>> compile QEMU I see an error relating to Capstone not being on my system.
>> Why do you feel that disabling Capstone by default is not a good idea?
>> 
>> Here is the error message I see when compiling QEMU:
>> 
>> CHK version_gen.h
>> make[1]: *** No rule to make target
>> `/Users/John/qemu-git/capstone/libcapstone.a'.  Stop.
>> make: *** [subdir-capstone] Error 2
> 
> I assume you're using a git checkout here, right? For git checkouts, the
> Makefile should take care of calling the scripts/git-submodule.sh script
> which should initialize the submodule in the capstone directory.
> 
> What's the content of your .git-submodule-status file? What does
> "configure" say about capstone support on your system?
> 
> Thomas

Yes I use a git checkout.

This is the contents of my .git-submodule-status file:
#!/bin/sh
#
# This code is licensed under the GPL version 2 or later.  See
# the COPYING file in the top-level directory.

substat=".git-submodule-status"

command=$1
shift
maybe_modules="$@"

test -z "$GIT" && GIT=git

error() {
    echo "$0: $*"
    echo
    echo "Unable to automatically checkout GIT submodules '$modules'."
    echo "If you require use of an alternative GIT binary (for example to"
    echo "enable use of a transparent proxy), then please specify it by"
    echo "running configure by with the '--with-git' argument. e.g."
    echo
    echo " $ ./configure --with-git='tsocks git'"
    echo
    echo "Alternatively you may disable automatic GIT submodule checkout"
    echo "with:"
    echo
    echo " $ ./configure --disable-git-update"
    echo
    echo "and then manually update submodules prior to running make, with:"
    echo
    echo " $ scripts/git-submodule.sh update $modules"
    echo
    exit 1
}

modules=""
for m in $maybe_modules
do
    $GIT submodule status $m 1> /dev/null 2>&1
    if test $? = 0
    then
        modules="$modules $m"
    else
        echo "warn: ignoring non-existent submodule $m"
    fi
done

if test -n "$maybe_modules" && ! test -e ".git"
then
    echo "$0: unexpectedly called with submodules but no git checkout exists"
    exit 1
fi

case "$command" in
status)
    if test -z "$maybe_modules"
    then
         test -s ${substat} && exit 1 || exit 0
    fi

    test -f "$substat" || exit 1
    CURSTATUS=$($GIT submodule status $modules)
    OLDSTATUS=$(cat $substat)
    test "$CURSTATUS" = "$OLDSTATUS"
    exit $?
    ;;
update)
    if test -z "$maybe_modules"
    then
        test -e $substat || touch $substat
        exit 0
    fi

    $GIT submodule update --init $modules 1>/dev/null
    test $? -ne 0 && error "failed to update modules"

    $GIT submodule status $modules > "${substat}"
    test $? -ne 0 && error "failed to save git submodule status" >&2
    ;;
esac

exit 0



The Configure command says:
capstone          git

I did a 'make clean' followed by a 'make distclean'. Then tried building again using this command line:

./configure --target-list=ppc-softmmu,i386-softmmu,x86_64-softmmu
make -j 4

Here is the error message I see:

make[1]: *** No rule to make target `/Users/John/Documents/Development/Projects/Qemu/qemu-git/capstone/libcapstone.a'.  Stop.
make: *** [subdir-capstone] Error 2

I took a look at the capstone folder. There is no 'make' file in this folder. Should there be one?

Thank you.
Thomas Huth May 11, 2019, 6:05 p.m. UTC | #7
On 11/05/2019 19.21, Programmingkid wrote:
> 
>> On Apr 20, 2019, at 6:40 AM, Thomas Huth <thuth@redhat.com> wrote:
>>
>> On 19/04/2019 15.44, G 3 wrote:
>>>
>>> On Apr 19, 2019, at 3:10 AM, Thomas Huth wrote:
>>>
>>>> On 19/04/2019 00.47, John Arbuckle wrote:
>>>>> Capstone is not necessary in order to use QEMU. Disable it by default.
>>>>> This will save the user the pain of having to figure why QEMU isn't
>>>>> building when this library is missing.
>>>>>
>>>>> Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
>>>>> ---
>>>>>  configure | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/configure b/configure
>>>>> index 1c563a7027..77d7967f92 100755
>>>>> --- a/configure
>>>>> +++ b/configure
>>>>> @@ -433,7 +433,7 @@ opengl_dmabuf="no"
>>>>>  cpuid_h="no"
>>>>>  avx2_opt=""
>>>>>  zlib="yes"
>>>>> -capstone=""
>>>>> +capstone="no"
>>>>>  lzo=""
>>>>>  snappy=""
>>>>>  bzip2=""
>>>>
>>>> AFAIK we ship capstone as a submodule, so how can this be missing? Also,
>>>> our philosophy is to keep everything enabled by default if possible, so
>>>> that the code paths don't bitrot. Thus I don't think that disabling this
>>>> by default is a good idea. ... so if you've got a problem here, there
>>>> must be another solution (e.g. is the system capstone detection not
>>>> working right on your system?).
>>>>
>>>>  Thomas
>>>
>>> Thank you for replying. Capstone comes with QEMU? Every time I try to
>>> compile QEMU I see an error relating to Capstone not being on my system.
>>> Why do you feel that disabling Capstone by default is not a good idea?
>>>
>>> Here is the error message I see when compiling QEMU:
>>>
>>> CHK version_gen.h
>>> make[1]: *** No rule to make target
>>> `/Users/John/qemu-git/capstone/libcapstone.a'.  Stop.
>>> make: *** [subdir-capstone] Error 2
>>
>> I assume you're using a git checkout here, right? For git checkouts, the
>> Makefile should take care of calling the scripts/git-submodule.sh script
>> which should initialize the submodule in the capstone directory.
>>
>> What's the content of your .git-submodule-status file? What does
>> "configure" say about capstone support on your system?
>>
>> Thomas
> 
> Yes I use a git checkout.
> 
> This is the contents of my .git-submodule-status file:
> #!/bin/sh
[...]

That were the contents of scripts/git-submodule.sh. I meant the hidden
file .git-submodule-status in the main directory.

> I did a 'make clean' followed by a 'make distclean'. Then tried building again using this command line:
> 
> ./configure --target-list=ppc-softmmu,i386-softmmu,x86_64-softmmu
> make -j 4

That should normally populate the capstone directory. What happens if
you run "make git-submodule-update" directly?

> Here is the error message I see:
> 
> make[1]: *** No rule to make target `/Users/John/Documents/Development/Projects/Qemu/qemu-git/capstone/libcapstone.a'.  Stop.
> make: *** [subdir-capstone] Error 2
> 
> I took a look at the capstone folder. There is no 'make' file in this folder. Should there be one?

Yes, the capstone folder should be populated automatically. Is it
completely empty for you?

 Thomas
Programmingkid May 11, 2019, 6:28 p.m. UTC | #8
> On May 11, 2019, at 2:05 PM, Thomas Huth <thuth@redhat.com> wrote:
> 
> On 11/05/2019 19.21, Programmingkid wrote:
>> 
>>> On Apr 20, 2019, at 6:40 AM, Thomas Huth <thuth@redhat.com> wrote:
>>> 
>>> On 19/04/2019 15.44, G 3 wrote:
>>>> 
>>>> On Apr 19, 2019, at 3:10 AM, Thomas Huth wrote:
>>>> 
>>>>> On 19/04/2019 00.47, John Arbuckle wrote:
>>>>>> Capstone is not necessary in order to use QEMU. Disable it by default.
>>>>>> This will save the user the pain of having to figure why QEMU isn't
>>>>>> building when this library is missing.
>>>>>> 
>>>>>> Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
>>>>>> ---
>>>>>> configure | 2 +-
>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>> 
>>>>>> diff --git a/configure b/configure
>>>>>> index 1c563a7027..77d7967f92 100755
>>>>>> --- a/configure
>>>>>> +++ b/configure
>>>>>> @@ -433,7 +433,7 @@ opengl_dmabuf="no"
>>>>>> cpuid_h="no"
>>>>>> avx2_opt=""
>>>>>> zlib="yes"
>>>>>> -capstone=""
>>>>>> +capstone="no"
>>>>>> lzo=""
>>>>>> snappy=""
>>>>>> bzip2=""
>>>>> 
>>>>> AFAIK we ship capstone as a submodule, so how can this be missing? Also,
>>>>> our philosophy is to keep everything enabled by default if possible, so
>>>>> that the code paths don't bitrot. Thus I don't think that disabling this
>>>>> by default is a good idea. ... so if you've got a problem here, there
>>>>> must be another solution (e.g. is the system capstone detection not
>>>>> working right on your system?).
>>>>> 
>>>>> Thomas
>>>> 
>>>> Thank you for replying. Capstone comes with QEMU? Every time I try to
>>>> compile QEMU I see an error relating to Capstone not being on my system.
>>>> Why do you feel that disabling Capstone by default is not a good idea?
>>>> 
>>>> Here is the error message I see when compiling QEMU:
>>>> 
>>>> CHK version_gen.h
>>>> make[1]: *** No rule to make target
>>>> `/Users/John/qemu-git/capstone/libcapstone.a'.  Stop.
>>>> make: *** [subdir-capstone] Error 2
>>> 
>>> I assume you're using a git checkout here, right? For git checkouts, the
>>> Makefile should take care of calling the scripts/git-submodule.sh script
>>> which should initialize the submodule in the capstone directory.
>>> 
>>> What's the content of your .git-submodule-status file? What does
>>> "configure" say about capstone support on your system?
>>> 
>>> Thomas
>> 
>> Yes I use a git checkout.
>> 
>> This is the contents of my .git-submodule-status file:
>> #!/bin/sh
> [...]
> 
> That were the contents of scripts/git-submodule.sh. I meant the hidden
> file .git-submodule-status in the main directory.

This is it:
 88f18909db731a627456f26d779445f84e449536 dtc (v1.4.7)
 f0da6726207b740f6101028b2992f918477a4b08 slirp (v4.0.0-rc0-25-gf0da672)
 b64af41c3276f97f0e181920400ee056b9c88037 tests/fp/berkeley-softfloat-3 (heads/master)
 5a59dcec19327396a011a17fd924aed4fec416b3 tests/fp/berkeley-testfloat-3 (remotes/origin/HEAD)
 6b3d716e2b6472eb7189d3220552280ef3d832ce ui/keycodemapdb (heads/master-4-g6b3d716)


> 
>> I did a 'make clean' followed by a 'make distclean'. Then tried building again using this command line:
>> 
>> ./configure --target-list=ppc-softmmu,i386-softmmu,x86_64-softmmu
>> make -j 4
> 
> That should normally populate the capstone directory. What happens if
> you run "make git-submodule-update" directly?

Here is the result:
$ make git-submodule-update
make[1]: Nothing to be done for `all'.
make[1]: *** No rule to make target `/Users/John/Documents/Development/Projects/Qemu/qemu-git/capstone/libcapstone.a'.  Stop.
make: *** [subdir-capstone] Error 2


>> Here is the error message I see:
>> 
>> make[1]: *** No rule to make target `/Users/John/Documents/Development/Projects/Qemu/qemu-git/capstone/libcapstone.a'. Stop.
>> make: *** [subdir-capstone] Error 2
>> 
>> I took a look at the capstone folder. There is no 'make' file in this folder. Should there be one?
> 
> Yes, the capstone folder should be populated automatically. Is it
> completely empty for you?

It isn't empty. All I see are two folders: obj and docs.

Thank you.
Thomas Huth May 12, 2019, 1:47 p.m. UTC | #9
On 11/05/2019 20.28, Programmingkid wrote:
> 
>> On May 11, 2019, at 2:05 PM, Thomas Huth <thuth@redhat.com> wrote:
>>
>> On 11/05/2019 19.21, Programmingkid wrote:
>>>
>>>> On Apr 20, 2019, at 6:40 AM, Thomas Huth <thuth@redhat.com> wrote:
>>>>
>>>> On 19/04/2019 15.44, G 3 wrote:
[...]
>>>>> Thank you for replying. Capstone comes with QEMU? Every time I try to
>>>>> compile QEMU I see an error relating to Capstone not being on my system.
>>>>> Why do you feel that disabling Capstone by default is not a good idea?
>>>>>
>>>>> Here is the error message I see when compiling QEMU:
>>>>>
>>>>> CHK version_gen.h
>>>>> make[1]: *** No rule to make target
>>>>> `/Users/John/qemu-git/capstone/libcapstone.a'.  Stop.
>>>>> make: *** [subdir-capstone] Error 2
>>>>
>>>> I assume you're using a git checkout here, right? For git checkouts, the
>>>> Makefile should take care of calling the scripts/git-submodule.sh script
>>>> which should initialize the submodule in the capstone directory.
>>>>
>>>> What's the content of your .git-submodule-status file? What does
>>>> "configure" say about capstone support on your system?
>>>>
>>>> Thomas
>>>
>>> Yes I use a git checkout.
>>>
>>> This is the contents of my .git-submodule-status file:
>>> #!/bin/sh
>> [...]
>>
>> That were the contents of scripts/git-submodule.sh. I meant the hidden
>> file .git-submodule-status in the main directory.
> 
> This is it:
>  88f18909db731a627456f26d779445f84e449536 dtc (v1.4.7)
>  f0da6726207b740f6101028b2992f918477a4b08 slirp (v4.0.0-rc0-25-gf0da672)
>  b64af41c3276f97f0e181920400ee056b9c88037 tests/fp/berkeley-softfloat-3 (heads/master)
>  5a59dcec19327396a011a17fd924aed4fec416b3 tests/fp/berkeley-testfloat-3 (remotes/origin/HEAD)
>  6b3d716e2b6472eb7189d3220552280ef3d832ce ui/keycodemapdb (heads/master-4-g6b3d716)

There should be an entry for capstone in here, too. :-/

>>> I did a 'make clean' followed by a 'make distclean'. Then tried building again using this command line:
>>>
>>> ./configure --target-list=ppc-softmmu,i386-softmmu,x86_64-softmmu
>>> make -j 4
>>
>> That should normally populate the capstone directory. What happens if
>> you run "make git-submodule-update" directly?
> 
> Here is the result:
> $ make git-submodule-update
> make[1]: Nothing to be done for `all'.
> make[1]: *** No rule to make target `/Users/John/Documents/Development/Projects/Qemu/qemu-git/capstone/libcapstone.a'.  Stop.
> make: *** [subdir-capstone] Error 2

Apparently the submodule update is not working right for you. What do
you get when you run:

 git submodule update capstone

?

>>> I took a look at the capstone folder. There is no 'make' file in this folder. Should there be one?
>>
>> Yes, the capstone folder should be populated automatically. Is it
>> completely empty for you?
> 
> It isn't empty. All I see are two folders: obj and docs.

Maybe try to clean the folder first:

 rm -r capstone
 mkdir capstone
 make git-submodule-update

If that does not help, maybe try a completely fresh git checkout?

 Thomas
Daniel P. Berrangé May 13, 2019, 9:08 a.m. UTC | #10
On Sun, May 12, 2019 at 03:47:49PM +0200, Thomas Huth wrote:
> Maybe try to clean the folder first:
> 
>  rm -r capstone
>  mkdir capstone
>  make git-submodule-update
> 
> If that does not help, maybe try a completely fresh git checkout?

Rather than deleting stuff like that, it is best to use git to put your
dir back to a clean state.

   git submodule deinit --all --force
   git clean -f -x -d 

After doing this, then run  'configure' again with normal args and try
to build.

If it still fails, please provide the /full/ output printed by configure,
as well as all output from make, and also the contents of the 'config.log'
file.

Regards,
Daniel
Peter Maydell May 13, 2019, 9:48 a.m. UTC | #11
On Mon, 13 May 2019 at 10:08, Daniel P. Berrangé <berrange@redhat.com> wrote:
>
> On Sun, May 12, 2019 at 03:47:49PM +0200, Thomas Huth wrote:
> > Maybe try to clean the folder first:
> >
> >  rm -r capstone
> >  mkdir capstone
> >  make git-submodule-update
> >
> > If that does not help, maybe try a completely fresh git checkout?
>
> Rather than deleting stuff like that, it is best to use git to put your
> dir back to a clean state.
>
>    git submodule deinit --all --force
>    git clean -f -x -d

That git clean line will blow away any untracked files in
your entire tree, won't it? If so, better move anything
you cared about somewhere else first...

thanks
-- PMM
Daniel P. Berrangé May 13, 2019, 9:50 a.m. UTC | #12
On Mon, May 13, 2019 at 10:48:58AM +0100, Peter Maydell wrote:
> On Mon, 13 May 2019 at 10:08, Daniel P. Berrangé <berrange@redhat.com> wrote:
> >
> > On Sun, May 12, 2019 at 03:47:49PM +0200, Thomas Huth wrote:
> > > Maybe try to clean the folder first:
> > >
> > >  rm -r capstone
> > >  mkdir capstone
> > >  make git-submodule-update
> > >
> > > If that does not help, maybe try a completely fresh git checkout?
> >
> > Rather than deleting stuff like that, it is best to use git to put your
> > dir back to a clean state.
> >
> >    git submodule deinit --all --force
> >    git clean -f -x -d
> 
> That git clean line will blow away any untracked files in
> your entire tree, won't it? If so, better move anything
> you cared about somewhere else first...

Yes, git clean blows away everything that isn't tracked.

Regards,
Daniel
Programmingkid May 15, 2019, 3:30 a.m. UTC | #13
> On May 12, 2019, at 9:47 AM, Thomas Huth <thuth@redhat.com> wrote:
> 
> On 11/05/2019 20.28, Programmingkid wrote:
>> 
>>> On May 11, 2019, at 2:05 PM, Thomas Huth <thuth@redhat.com> wrote:
>>> 
>>> On 11/05/2019 19.21, Programmingkid wrote:
>>>> 
>>>>> On Apr 20, 2019, at 6:40 AM, Thomas Huth <thuth@redhat.com> wrote:
>>>>> 
>>>>> On 19/04/2019 15.44, G 3 wrote:
> [...]
>>>>>> Thank you for replying. Capstone comes with QEMU? Every time I try to
>>>>>> compile QEMU I see an error relating to Capstone not being on my system.
>>>>>> Why do you feel that disabling Capstone by default is not a good idea?
>>>>>> 
>>>>>> Here is the error message I see when compiling QEMU:
>>>>>> 
>>>>>> CHK version_gen.h
>>>>>> make[1]: *** No rule to make target
>>>>>> `/Users/John/qemu-git/capstone/libcapstone.a'.  Stop.
>>>>>> make: *** [subdir-capstone] Error 2
>>>>> 
>>>>> I assume you're using a git checkout here, right? For git checkouts, the
>>>>> Makefile should take care of calling the scripts/git-submodule.sh script
>>>>> which should initialize the submodule in the capstone directory.
>>>>> 
>>>>> What's the content of your .git-submodule-status file? What does
>>>>> "configure" say about capstone support on your system?
>>>>> 
>>>>> Thomas
>>>> 
>>>> Yes I use a git checkout.
>>>> 
>>>> This is the contents of my .git-submodule-status file:
>>>> #!/bin/sh
>>> [...]
>>> 
>>> That were the contents of scripts/git-submodule.sh. I meant the hidden
>>> file .git-submodule-status in the main directory.
>> 
>> This is it:
>> 88f18909db731a627456f26d779445f84e449536 dtc (v1.4.7)
>> f0da6726207b740f6101028b2992f918477a4b08 slirp (v4.0.0-rc0-25-gf0da672)
>> b64af41c3276f97f0e181920400ee056b9c88037 tests/fp/berkeley-softfloat-3 (heads/master)
>> 5a59dcec19327396a011a17fd924aed4fec416b3 tests/fp/berkeley-testfloat-3 (remotes/origin/HEAD)
>> 6b3d716e2b6472eb7189d3220552280ef3d832ce ui/keycodemapdb (heads/master-4-g6b3d716)
> 
> There should be an entry for capstone in here, too. :-/
> 
>>>> I did a 'make clean' followed by a 'make distclean'. Then tried building again using this command line:
>>>> 
>>>> ./configure --target-list=ppc-softmmu,i386-softmmu,x86_64-softmmu
>>>> make -j 4
>>> 
>>> That should normally populate the capstone directory. What happens if
>>> you run "make git-submodule-update" directly?
>> 
>> Here is the result:
>> $ make git-submodule-update
>> make[1]: Nothing to be done for `all'.
>> make[1]: *** No rule to make target `/Users/John/Documents/Development/Projects/Qemu/qemu-git/capstone/libcapstone.a'.  Stop.
>> make: *** [subdir-capstone] Error 2
> 
> Apparently the submodule update is not working right for you. What do
> you get when you run:
> 
> git submodule update capstone
> 
> ?

Nothing appears to happen. When I try to make QEMU I still see the same error about no rule to make target libcapstone.a.

> 
>>>> I took a look at the capstone folder. There is no 'make' file in this folder. Should there be one?
>>> 
>>> Yes, the capstone folder should be populated automatically. Is it
>>> completely empty for you?
>> 
>> It isn't empty. All I see are two folders: obj and docs.
> 
> Maybe try to clean the folder first:
> 
> rm -r capstone
> mkdir capstone
> make git-submodule-update
> 
> If that does not help, maybe try a completely fresh git checkout?

That did it! The capstone folder is now fully populated. Thank you so much.
diff mbox series

Patch

diff --git a/configure b/configure
index 1c563a7027..77d7967f92 100755
--- a/configure
+++ b/configure
@@ -433,7 +433,7 @@  opengl_dmabuf="no"
 cpuid_h="no"
 avx2_opt=""
 zlib="yes"
-capstone=""
+capstone="no"
 lzo=""
 snappy=""
 bzip2=""