diff mbox series

[OSSTEST] ts-xen-build-prep: Grab newer NASM version, to build OVMF

Message ID 20220513133534.88564-1-anthony.perard@citrix.com (mailing list archive)
State New, archived
Headers show
Series [OSSTEST] ts-xen-build-prep: Grab newer NASM version, to build OVMF | expand

Commit Message

Anthony PERARD May 13, 2022, 1:35 p.m. UTC
Recent versions of OVMF now need a version of NASM that is newer
than the one available on Debian oldstable/buster. They want to use
NASM 2.15.05 [1], which is available in Debian stable/bullseye. The
need to use a newer version started with d3febfd9ade3 ("MdePkg:
Replace Opcode with the corresponding instructions.").

There is no backport package available but the nasm package from
Debian Bullseye can easily be installed on Buster as it has few
dependencies and are already satisfied.

[1] https://github.com/tianocore/edk2/commit/6a890db161cd6d378bec3499a1e774db3f5a27a7
    ("BaseTools: Upgrade the version of NASM tool")

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
 ts-xen-build-prep | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Anthony PERARD May 13, 2022, 1:43 p.m. UTC | #1
On Fri, May 13, 2022 at 02:35:34PM +0100, Anthony PERARD wrote:
> Recent versions of OVMF now need a version of NASM that is newer
> than the one available on Debian oldstable/buster. They want to use
> NASM 2.15.05 [1], which is available in Debian stable/bullseye. The
> need to use a newer version started with d3febfd9ade3 ("MdePkg:
> Replace Opcode with the corresponding instructions.").
> 
> There is no backport package available but the nasm package from
> Debian Bullseye can easily be installed on Buster as it has few
> dependencies and are already satisfied.
> 
> [1] https://github.com/tianocore/edk2/commit/6a890db161cd6d378bec3499a1e774db3f5a27a7
>     ("BaseTools: Upgrade the version of NASM tool")
> 
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>

A flight with my change:
http://logs.test-lab.xenproject.org/osstest/logs/170388/
(ignore the failing "libvirt-build" jobs which shouldn't be part
of the flight ;-) )
Roger Pau Monné May 13, 2022, 2:39 p.m. UTC | #2
On Fri, May 13, 2022 at 02:35:34PM +0100, Anthony PERARD wrote:
> Recent versions of OVMF now need a version of NASM that is newer
> than the one available on Debian oldstable/buster. They want to use
> NASM 2.15.05 [1], which is available in Debian stable/bullseye. The
> need to use a newer version started with d3febfd9ade3 ("MdePkg:
> Replace Opcode with the corresponding instructions.").
> 
> There is no backport package available but the nasm package from
> Debian Bullseye can easily be installed on Buster as it has few
> dependencies and are already satisfied.
> 
> [1] https://github.com/tianocore/edk2/commit/6a890db161cd6d378bec3499a1e774db3f5a27a7
>     ("BaseTools: Upgrade the version of NASM tool")
> 
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
> ---
>  ts-xen-build-prep | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/ts-xen-build-prep b/ts-xen-build-prep
> index 67b3eae62155..38d4a8e79451 100755
> --- a/ts-xen-build-prep
> +++ b/ts-xen-build-prep
> @@ -250,6 +250,15 @@ END
>      if ($ho->{Arch} eq 'amd64' && $ho->{Suite} !~ m/squeeze|lenny/) {
>          target_install_packages($ho, 'libc6-dev-i386');
>      }
> +
> +    # Use newer version of NASM, for OVMF
> +    if ($ho->{Suite} =~ m/buster/) {
> +        my $nasm_pkg = "nasm_2.15.05-1_$ho->{Arch}.deb";
> +        my $nasm_url = debian_mirror_url_suite_arch("bullseye", $ho->{Arch})
> +                       ."/pool/main/n/nasm/$nasm_pkg";
> +        target_fetchurl($ho, $nasm_url, "/tmp/$nasm_pkg");

I think this is likely too fragile, what will happen when the package
gets bumped to a newer version?

I think we need to store a local copy in osstest and install from
there instead of trying to fetch from the upstream Debian mirror.

I guess we could use something similar to DebianExtraPackages?

DebianExtraPackages_build_$arch_$suite nasm_2.15.05-1_$ho->{Arch}.deb

And fetch those using the some_extradebs method.

Thanks, Roger.
Ian Jackson May 13, 2022, 9:15 p.m. UTC | #3
Anthony PERARD writes ("[OSSTEST PATCH] ts-xen-build-prep: Grab newer NASM version, to build OVMF"):
> Recent versions of OVMF now need a version of NASM that is newer
> than the one available on Debian oldstable/buster. They want to use
> NASM 2.15.05 [1], which is available in Debian stable/bullseye. The
> need to use a newer version started with d3febfd9ade3 ("MdePkg:
> Replace Opcode with the corresponding instructions.").
> 
> There is no backport package available but the nasm package from
> Debian Bullseye can easily be installed on Buster as it has few
> dependencies and are already satisfied.

I think this is a quite fine bodge.

> +        target_fetchurl($ho, $nasm_url, "/tmp/$nasm_pkg");
> +        target_install_packages($ho, "/tmp/$nasm_pkg");

I don't think this use of /tmp is very nice.  ts-xen-build-prep runs
with the host all to itself, so I think you can use /root ?

Ian.
Ian Jackson May 13, 2022, 9:16 p.m. UTC | #4
Roger Pau Monné writes ("Re: [OSSTEST PATCH] ts-xen-build-prep: Grab newer NASM version, to build OVMF"):
> I guess we could use something similar to DebianExtraPackages?
> 
> DebianExtraPackages_build_$arch_$suite nasm_2.15.05-1_$ho->{Arch}.deb
> 
> And fetch those using the some_extradebs method.

Yes, I think this is better.
diff mbox series

Patch

diff --git a/ts-xen-build-prep b/ts-xen-build-prep
index 67b3eae62155..38d4a8e79451 100755
--- a/ts-xen-build-prep
+++ b/ts-xen-build-prep
@@ -250,6 +250,15 @@  END
     if ($ho->{Arch} eq 'amd64' && $ho->{Suite} !~ m/squeeze|lenny/) {
         target_install_packages($ho, 'libc6-dev-i386');
     }
+
+    # Use newer version of NASM, for OVMF
+    if ($ho->{Suite} =~ m/buster/) {
+        my $nasm_pkg = "nasm_2.15.05-1_$ho->{Arch}.deb";
+        my $nasm_url = debian_mirror_url_suite_arch("bullseye", $ho->{Arch})
+                       ."/pool/main/n/nasm/$nasm_pkg";
+        target_fetchurl($ho, $nasm_url, "/tmp/$nasm_pkg");
+        target_install_packages($ho, "/tmp/$nasm_pkg");
+    }
 }
 
 sub ccache_setup () {