diff mbox series

[v3] configure: Let SLOF be initialized by ./scripts/git-submodule.sh

Message ID 20200615074919.12552-1-f4bug@amsat.org
State New
Headers show
Series [v3] configure: Let SLOF be initialized by ./scripts/git-submodule.sh | expand

Commit Message

Philippe Mathieu-Daudé June 15, 2020, 7:49 a.m. UTC
The git-submodule.sh script is called by make and initialize the
submodules listed in the GIT_SUBMODULES variable generated by
./configure.

SLOF is required for building the s390-ccw firmware on s390x, since
it is using the libnet code from SLOF for network booting.

Add it to the GIT_SUBMODULES when buildint the s390-ccw firmware,
to fix:

  $ ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
  Submodule 'roms/SLOF' (https://git.qemu.org/git/SLOF.git) registered for path 'roms/SLOF'
  Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
  fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
  fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
  Failed to clone 'roms/SLOF'. Retry scheduled
  Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
  fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
  fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
  Failed to clone 'roms/SLOF' a second time, aborting
  The command "( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )" exited with 1.

Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Suggested-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 configure   | 5 +++++
 .travis.yml | 1 -
 2 files changed, 5 insertions(+), 1 deletion(-)

Comments

Thomas Huth June 15, 2020, 8:13 a.m. UTC | #1
On 15/06/2020 09.49, Philippe Mathieu-Daudé wrote:
> The git-submodule.sh script is called by make and initialize the
> submodules listed in the GIT_SUBMODULES variable generated by
> ./configure.
> 
> SLOF is required for building the s390-ccw firmware on s390x, since
> it is using the libnet code from SLOF for network booting.
> 
> Add it to the GIT_SUBMODULES when buildint the s390-ccw firmware,

s/buildint/building/

> to fix:
> 
>   $ ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
>   Submodule 'roms/SLOF' (https://git.qemu.org/git/SLOF.git) registered for path 'roms/SLOF'
>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>   Failed to clone 'roms/SLOF'. Retry scheduled
>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>   Failed to clone 'roms/SLOF' a second time, aborting
>   The command "( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )" exited with 1.

I still somehow doubt that this will really fix the issue that you've
seen here (why should it matter where the submodule is checked out?),
but the patch is a good idea anyway, so:

Reviewed-by: Thomas Huth <thuth@redhat.com>


> Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Suggested-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  configure   | 5 +++++
>  .travis.yml | 1 -
>  2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index bb7fd12612..927e4a3d06 100755
> --- a/configure
> +++ b/configure
> @@ -6533,6 +6533,11 @@ if test "$cpu" = "s390x" ; then
>    write_c_skeleton
>    if compile_prog "-march=z900" ""; then
>      roms="$roms s390-ccw"
> +    # SLOF is required for building the s390-ccw firmware on s390x,
> +    # since it is using the libnet code from SLOF for network booting.
> +    if test -e "${source_path}/.git" ; then
> +      git_submodules="${git_submodules} roms/SLOF"
> +    fi
>    fi
>  fi
>  
> diff --git a/.travis.yml b/.travis.yml
> index ec6367af1f..220855c1f0 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -496,7 +496,6 @@ jobs:
>          - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user"
>          - UNRELIABLE=true
>        script:
> -        - ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
>          - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
>          - |
>            if [ "$BUILD_RC" -eq 0 ] ; then
>
Philippe Mathieu-Daudé June 15, 2020, 8:28 a.m. UTC | #2
On 6/15/20 10:13 AM, Thomas Huth wrote:
> On 15/06/2020 09.49, Philippe Mathieu-Daudé wrote:
>> The git-submodule.sh script is called by make and initialize the
>> submodules listed in the GIT_SUBMODULES variable generated by
>> ./configure.
>>
>> SLOF is required for building the s390-ccw firmware on s390x, since
>> it is using the libnet code from SLOF for network booting.
>>
>> Add it to the GIT_SUBMODULES when buildint the s390-ccw firmware,
> 
> s/buildint/building/
> 
>> to fix:
>>
>>   $ ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
>>   Submodule 'roms/SLOF' (https://git.qemu.org/git/SLOF.git) registered for path 'roms/SLOF'
>>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>>   Failed to clone 'roms/SLOF'. Retry scheduled
>>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>>   Failed to clone 'roms/SLOF' a second time, aborting
>>   The command "( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )" exited with 1.
> 
> I still somehow doubt that this will really fix the issue that you've
> seen here (why should it matter where the submodule is checked out?),

Yeah I still don't understand why the previous checkouts succeeded.

Is git.qemu.org cached by a CDN?

Maybe we can reduce the pressure by adding a 'prepare-sources' step,
then pass it as artifact within Travis-CI premises:
https://docs.travis-ci.com/user/build-stages/#specifying-stage-order-and-conditions

Alex, what do you think?

> but the patch is a good idea anyway, so:
> 
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> 
> 
>> Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> Suggested-by: Thomas Huth <thuth@redhat.com>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>  configure   | 5 +++++
>>  .travis.yml | 1 -
>>  2 files changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/configure b/configure
>> index bb7fd12612..927e4a3d06 100755
>> --- a/configure
>> +++ b/configure
>> @@ -6533,6 +6533,11 @@ if test "$cpu" = "s390x" ; then
>>    write_c_skeleton
>>    if compile_prog "-march=z900" ""; then
>>      roms="$roms s390-ccw"
>> +    # SLOF is required for building the s390-ccw firmware on s390x,
>> +    # since it is using the libnet code from SLOF for network booting.
>> +    if test -e "${source_path}/.git" ; then
>> +      git_submodules="${git_submodules} roms/SLOF"
>> +    fi
>>    fi
>>  fi
>>  
>> diff --git a/.travis.yml b/.travis.yml
>> index ec6367af1f..220855c1f0 100644
>> --- a/.travis.yml
>> +++ b/.travis.yml
>> @@ -496,7 +496,6 @@ jobs:
>>          - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user"
>>          - UNRELIABLE=true
>>        script:
>> -        - ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
>>          - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
>>          - |
>>            if [ "$BUILD_RC" -eq 0 ] ; then
>>
>
Daniel P. Berrangé June 15, 2020, 9:19 a.m. UTC | #3
On Mon, Jun 15, 2020 at 09:49:19AM +0200, Philippe Mathieu-Daudé wrote:
> The git-submodule.sh script is called by make and initialize the
> submodules listed in the GIT_SUBMODULES variable generated by
> ./configure.
> 
> SLOF is required for building the s390-ccw firmware on s390x, since
> it is using the libnet code from SLOF for network booting.
> 
> Add it to the GIT_SUBMODULES when buildint the s390-ccw firmware,
> to fix:
> 
>   $ ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
>   Submodule 'roms/SLOF' (https://git.qemu.org/git/SLOF.git) registered for path 'roms/SLOF'
>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>   Failed to clone 'roms/SLOF'. Retry scheduled
>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>   Failed to clone 'roms/SLOF' a second time, aborting
>   The command "( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )" exited with 1.

The "git-submodule.sh" script just invokes "git submodule". So if
you are getting DNS failures from "git submodule", using git-submodule.sh
instead is not going to fix the problem.

> 
> Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Suggested-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  configure   | 5 +++++
>  .travis.yml | 1 -
>  2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index bb7fd12612..927e4a3d06 100755
> --- a/configure
> +++ b/configure
> @@ -6533,6 +6533,11 @@ if test "$cpu" = "s390x" ; then
>    write_c_skeleton
>    if compile_prog "-march=z900" ""; then
>      roms="$roms s390-ccw"
> +    # SLOF is required for building the s390-ccw firmware on s390x,
> +    # since it is using the libnet code from SLOF for network booting.
> +    if test -e "${source_path}/.git" ; then
> +      git_submodules="${git_submodules} roms/SLOF"
> +    fi
>    fi
>  fi

This whole bit of configure looks a bit dubious.

For all the other firmware images we ship as pre-built blobs, we never
try to re-build them even if the host compiler supports it. So I don't
think we need to make SLOF special. If someone wants to build SLOF
they should do so explicitly. IOW, I'd just remove this code that
automatically enables rebuilds of it, which will presumable fix the
DNS problem by virtue of never running that code.


Regards,
Daniel
Thomas Huth June 15, 2020, 9:44 a.m. UTC | #4
On 15/06/2020 11.19, Daniel P. Berrangé wrote:
> On Mon, Jun 15, 2020 at 09:49:19AM +0200, Philippe Mathieu-Daudé wrote:
>> The git-submodule.sh script is called by make and initialize the
>> submodules listed in the GIT_SUBMODULES variable generated by
>> ./configure.
>>
>> SLOF is required for building the s390-ccw firmware on s390x, since
>> it is using the libnet code from SLOF for network booting.
>>
>> Add it to the GIT_SUBMODULES when buildint the s390-ccw firmware,
>> to fix:
>>
>>   $ ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
>>   Submodule 'roms/SLOF' (https://git.qemu.org/git/SLOF.git) registered for path 'roms/SLOF'
>>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>>   Failed to clone 'roms/SLOF'. Retry scheduled
>>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>>   Failed to clone 'roms/SLOF' a second time, aborting
>>   The command "( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )" exited with 1.
> 
> The "git-submodule.sh" script just invokes "git submodule". So if
> you are getting DNS failures from "git submodule", using git-submodule.sh
> instead is not going to fix the problem.
> 
>>
>> Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> Suggested-by: Thomas Huth <thuth@redhat.com>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>  configure   | 5 +++++
>>  .travis.yml | 1 -
>>  2 files changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/configure b/configure
>> index bb7fd12612..927e4a3d06 100755
>> --- a/configure
>> +++ b/configure
>> @@ -6533,6 +6533,11 @@ if test "$cpu" = "s390x" ; then
>>    write_c_skeleton
>>    if compile_prog "-march=z900" ""; then
>>      roms="$roms s390-ccw"
>> +    # SLOF is required for building the s390-ccw firmware on s390x,
>> +    # since it is using the libnet code from SLOF for network booting.
>> +    if test -e "${source_path}/.git" ; then
>> +      git_submodules="${git_submodules} roms/SLOF"
>> +    fi
>>    fi
>>  fi
> 
> This whole bit of configure looks a bit dubious.
> 
> For all the other firmware images we ship as pre-built blobs, we never
> try to re-build them even if the host compiler supports it.

All the other firmwares have separate projects and repositories, so it's
normal that we don't try to rebuild them from the QEMU repo. But the
s390-ccw firmware is part of the QEMU repository (for some good
reasons), so of course we should build it during the QEMU build process
if possible. And no, please don't suggest to move it to a separate
repository instead, IIRC we've had this discussion in the past already,
and it is easier if it stays in the current place.

> So I don't think we need to make SLOF special.

We are not talking about SLOF here. We are talking about the s390-ccw
firmware which is part of the QEMU repository (see pc-bios/s390-ccw). It
just requires the SLOF submodule for building its network booting part,
since it re-uses the network stack from SLOF.

 Thomas
Thomas Huth June 15, 2020, 9:55 a.m. UTC | #5
On 15/06/2020 10.28, Philippe Mathieu-Daudé wrote:
> On 6/15/20 10:13 AM, Thomas Huth wrote:
>> On 15/06/2020 09.49, Philippe Mathieu-Daudé wrote:
>>> The git-submodule.sh script is called by make and initialize the
>>> submodules listed in the GIT_SUBMODULES variable generated by
>>> ./configure.
>>>
>>> SLOF is required for building the s390-ccw firmware on s390x, since
>>> it is using the libnet code from SLOF for network booting.
>>>
>>> Add it to the GIT_SUBMODULES when buildint the s390-ccw firmware,
>>
>> s/buildint/building/
>>
>>> to fix:
>>>
>>>   $ ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
>>>   Submodule 'roms/SLOF' (https://git.qemu.org/git/SLOF.git) registered for path 'roms/SLOF'
>>>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>>>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>>>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>>>   Failed to clone 'roms/SLOF'. Retry scheduled
>>>   Cloning into '/home/travis/build/user/qemu/roms/SLOF'...
>>>   fatal: unable to access 'https://git.qemu.org/git/SLOF.git/': Could not resolve host: git.qemu.org
>>>   fatal: clone of 'https://git.qemu.org/git/SLOF.git' into submodule path '/home/travis/build/user/qemu/roms/SLOF' failed
>>>   Failed to clone 'roms/SLOF' a second time, aborting
>>>   The command "( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )" exited with 1.
>>
>> I still somehow doubt that this will really fix the issue that you've
>> seen here (why should it matter where the submodule is checked out?),
> 
> Yeah I still don't understand why the previous checkouts succeeded.
> 
> Is git.qemu.org cached by a CDN?

Is it still failing for you? For me it works fine:

 https://travis-ci.com/github/huth/qemu/jobs/349064333#L1531

 Thomas
diff mbox series

Patch

diff --git a/configure b/configure
index bb7fd12612..927e4a3d06 100755
--- a/configure
+++ b/configure
@@ -6533,6 +6533,11 @@  if test "$cpu" = "s390x" ; then
   write_c_skeleton
   if compile_prog "-march=z900" ""; then
     roms="$roms s390-ccw"
+    # SLOF is required for building the s390-ccw firmware on s390x,
+    # since it is using the libnet code from SLOF for network booting.
+    if test -e "${source_path}/.git" ; then
+      git_submodules="${git_submodules} roms/SLOF"
+    fi
   fi
 fi
 
diff --git a/.travis.yml b/.travis.yml
index ec6367af1f..220855c1f0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -496,7 +496,6 @@  jobs:
         - CONFIG="--disable-containers --target-list=${MAIN_SOFTMMU_TARGETS},s390x-linux-user"
         - UNRELIABLE=true
       script:
-        - ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF )
         - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$?
         - |
           if [ "$BUILD_RC" -eq 0 ] ; then