diff mbox

configure: create fsdev/ directory

Message ID 1381482317-25433-1-git-send-email-mjt@msgid.tls.msk.ru
State New
Headers show

Commit Message

Michael Tokarev Oct. 11, 2013, 9:05 a.m. UTC
In some cases when building with parallelism (make -jN),
build fails because the directory where output files are
supposed to be does not exist.  In particular, when make
decides to build virtfs-proxy-helper.1 before other files
in fsdev/, build will fail with the following error:

perl -Ww -- BUILDDIR/scripts/texi2pod.pl BUILDDIR/fsdev/virtfs-proxy-helper.texi fsdev/virtfs-proxy-helper.pod && pod2man --utf8 --section=1 --center=" " --release=" " fsdev/virtfs-proxy-helper.pod > fsdev/virtfs-proxy-helper.1
opening "fsdev/virtfs-proxy-helper.pod": No such file or directory

Create the `fsdev' subdir the same way as other "conditional"
subdirs (eg, dtc or pixman) are created in configure.

Might be better to extract all dirs from $tools and other
common vars and run mkdir on all of these, but this needs
some review/restructuring first.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
---
 configure |    1 +
 1 file changed, 1 insertion(+)

Comments

Alex Bennée Oct. 12, 2013, 12:54 p.m. UTC | #1
mjt@tls.msk.ru writes:

> In some cases when building with parallelism (make -jN),
> build fails because the directory where output files are
> supposed to be does not exist.  In particular, when make
> decides to build virtfs-proxy-helper.1 before other files
> in fsdev/, build will fail with the following error:
<snip>

Isn't this the sort of think Make dependencies are for?
Paolo Bonzini Oct. 12, 2013, 4:28 p.m. UTC | #2
Il 11/10/2013 11:05, Michael Tokarev ha scritto:
> In some cases when building with parallelism (make -jN),
> build fails because the directory where output files are
> supposed to be does not exist.  In particular, when make
> decides to build virtfs-proxy-helper.1 before other files
> in fsdev/, build will fail with the following error:
> 
> perl -Ww -- BUILDDIR/scripts/texi2pod.pl BUILDDIR/fsdev/virtfs-proxy-helper.texi fsdev/virtfs-proxy-helper.pod && pod2man --utf8 --section=1 --center=" " --release=" " fsdev/virtfs-proxy-helper.pod > fsdev/virtfs-proxy-helper.1
> opening "fsdev/virtfs-proxy-helper.pod": No such file or directory
> 
> Create the `fsdev' subdir the same way as other "conditional"
> subdirs (eg, dtc or pixman) are created in configure.
> 
> Might be better to extract all dirs from $tools and other
> common vars and run mkdir on all of these, but this needs
> some review/restructuring first.
> 
> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
> ---
>  configure |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/configure b/configure
> index 23dbaaf..203084a 100755
> --- a/configure
> +++ b/configure
> @@ -3576,6 +3576,7 @@ if test "$softmmu" = yes ; then
>      if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
>        virtfs=yes
>        tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
> +      mkdir -p fsdev
>      else
>        if test "$virtfs" = yes; then
>          error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
> 

Please modify around

DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos
tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
DIRS="$DIRS roms/seabios roms/vgabios"
DIRS="$DIRS qapi-generated"

instead.

Paolo
Michael Tokarev Oct. 12, 2013, 7:05 p.m. UTC | #3
12.10.2013 20:28, Paolo Bonzini wrote:
> Il 11/10/2013 11:05, Michael Tokarev ha scritto:
[]
>> --- a/configure
>> +++ b/configure
>> @@ -3576,6 +3576,7 @@ if test "$softmmu" = yes ; then
>>       if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
>>         virtfs=yes
>>         tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
>> +      mkdir -p fsdev
>>       else
>>         if test "$virtfs" = yes; then
>>           error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
>>
>
> Please modify around
>
> DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos
> tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
> DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
> DIRS="$DIRS roms/seabios roms/vgabios"
> DIRS="$DIRS qapi-generated"
>
> instead.

I considered doing it there initially, but decided to add it
to the other place, because that's where virtfs variable
is set.  The place you're referring to will need to have a
condition `if' based on $virtfs value.

Also, there are other places below this virtfs test (which I
modified) which runs mkdir (dtc, pixman), so this is not
something unusual.

Thanks,

/mjt
Paolo Bonzini Oct. 13, 2013, 7:01 a.m. UTC | #4
Il 12/10/2013 21:05, Michael Tokarev ha scritto:
> I considered doing it there initially, but decided to add it
> to the other place, because that's where virtfs variable
> is set.  The place you're referring to will need to have a
> condition `if' based on $virtfs value.

It's harmless to create a directory that won't be used.

> Also, there are other places below this virtfs test (which I
> modified) which runs mkdir (dtc, pixman), so this is not
> something unusual.

I didn't check the code, and dtc+pixman are both submodules so there may
be something special there.  But in general, let's avoid the "it's bad
so it's okay to make it worse" argument.

Paolo
diff mbox

Patch

diff --git a/configure b/configure
index 23dbaaf..203084a 100755
--- a/configure
+++ b/configure
@@ -3576,6 +3576,7 @@  if test "$softmmu" = yes ; then
     if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
       virtfs=yes
       tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
+      mkdir -p fsdev
     else
       if test "$virtfs" = yes; then
         error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"