[PULL 09/16] configure: remove DIRS

Paolo Bonzini posted 16 patches 4 years, 1 month ago
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Philippe Mathieu-Daudé" <philmd@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Richard Henderson <richard.henderson@linaro.org>
[PULL 09/16] configure: remove DIRS
Posted by Paolo Bonzini 4 years, 1 month ago
DIRS is used to create the directory in which the LINKS symbolic links
reside, or to create directories for object files.  The former can
be done directly in the symlinking loop, while the latter is done
by Meson already, so DIRS is not necessary.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 configure | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/configure b/configure
index ba85bbb54b..8ccfe51673 100755
--- a/configure
+++ b/configure
@@ -3762,7 +3762,6 @@ if test "$safe_stack" = "yes"; then
 fi
 
 # If we're using a separate build tree, set it up now.
-# DIRS are directories which we simply mkdir in the build tree;
 # LINKS are things to symlink back into the source tree
 # (these can be both files and directories).
 # Caution: do not add files or directories here using wildcards. This
@@ -3774,12 +3773,6 @@ fi
 # UNLINK is used to remove symlinks from older development versions
 # that might get into the way when doing "git update" without doing
 # a "make distclean" in between.
-DIRS="tests tests/tcg tests/qapi-schema tests/qtest/libqos"
-DIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
-DIRS="$DIRS docs docs/interop fsdev scsi"
-DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
-DIRS="$DIRS roms/seabios"
-DIRS="$DIRS contrib/plugins/"
 LINKS="Makefile"
 LINKS="$LINKS tests/tcg/Makefile.target"
 LINKS="$LINKS pc-bios/optionrom/Makefile"
@@ -3807,9 +3800,9 @@ for bios_file in \
 do
     LINKS="$LINKS pc-bios/$(basename $bios_file)"
 done
-mkdir -p $DIRS
 for f in $LINKS ; do
     if [ -e "$source_path/$f" ]; then
+        mkdir -p `dirname ./$f`
         symlink "$source_path/$f" "$f"
     fi
 done
-- 
2.33.1



Re: [PULL 09/16] configure: remove DIRS
Posted by Thomas Huth 4 years, 1 month ago
On 19/12/2021 15.17, Paolo Bonzini wrote:
> DIRS is used to create the directory in which the LINKS symbolic links
> reside, or to create directories for object files.  The former can
> be done directly in the symlinking loop, while the latter is done
> by Meson already, so DIRS is not necessary.
> 
> Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> Tested-by: Alex Bennée <alex.bennee@linaro.org>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   configure | 9 +--------
>   1 file changed, 1 insertion(+), 8 deletions(-)
> 
> diff --git a/configure b/configure
> index ba85bbb54b..8ccfe51673 100755
> --- a/configure
> +++ b/configure
> @@ -3762,7 +3762,6 @@ if test "$safe_stack" = "yes"; then
>   fi
>   
>   # If we're using a separate build tree, set it up now.
> -# DIRS are directories which we simply mkdir in the build tree;
>   # LINKS are things to symlink back into the source tree
>   # (these can be both files and directories).
>   # Caution: do not add files or directories here using wildcards. This
> @@ -3774,12 +3773,6 @@ fi
>   # UNLINK is used to remove symlinks from older development versions
>   # that might get into the way when doing "git update" without doing
>   # a "make distclean" in between.
> -DIRS="tests tests/tcg tests/qapi-schema tests/qtest/libqos"
> -DIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
> -DIRS="$DIRS docs docs/interop fsdev scsi"
> -DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
> -DIRS="$DIRS roms/seabios"
> -DIRS="$DIRS contrib/plugins/"
>   LINKS="Makefile"
>   LINKS="$LINKS tests/tcg/Makefile.target"
>   LINKS="$LINKS pc-bios/optionrom/Makefile"
> @@ -3807,9 +3800,9 @@ for bios_file in \
>   do
>       LINKS="$LINKS pc-bios/$(basename $bios_file)"
>   done
> -mkdir -p $DIRS
>   for f in $LINKS ; do
>       if [ -e "$source_path/$f" ]; then
> +        mkdir -p `dirname ./$f`
>           symlink "$source_path/$f" "$f"
>       fi
>   done

  Hi Paolo,

I think this patch created some warnings with fresh build directories on git 
checkouts where roms/seabios is not initialized:

.../qemu/configure: line 3778: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3779: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3780: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3781: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3782: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3783: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3784: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3785: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3786: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3787: roms/seabios/config.mak: No such file or 
directory
.../qemu/configure: line 3788: roms/seabios/config.mak: No such file or 
directory

It's this block in the configure script which now does not find the 
roms/seabios directory anymore:

# temporary config to build submodules
for rom in seabios; do
     config_mak=roms/$rom/config.mak
     echo "# Automatically generated by configure - do not modify" > $config_mak
     echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
     echo "AS=$as" >> $config_mak
     echo "CCAS=$ccas" >> $config_mak
     echo "CC=$cc" >> $config_mak
     echo "BCC=bcc" >> $config_mak
     echo "CPP=$cpp" >> $config_mak
     echo "OBJCOPY=objcopy" >> $config_mak
     echo "IASL=$iasl" >> $config_mak
     echo "LD=$ld" >> $config_mak
     echo "RANLIB=$ranlib" >> $config_mak
done

If I get that right, we only need config.mak if the seabios submodule has 
been checked out? So the right fix might be to skip the creation of 
config.mak here if roms/seabios is not available?

  Thomas