Пакет seabios: Specfile

%define debug_level 1

Name: seabios
Version: 1.16.3
Release: alt3
Summary: Open-source legacy BIOS implementation

Group: Emulators
BuildArch: noarch
ExclusiveArch: x86_64 loongarch64 aarch64
License: LGPLv3
Url: http://www.seabios.org

Vcs: https://git.seabios.org/seabios.git
Source: %name-%version.tar
Source2: 30-seabios-256k.json
Patch: %name-%version-snapshot.patch

Patch0001: 0001-Workaround-for-a-win8.1-32-S4-resume-bug.patch
Patch0003: 0003-vgabios-Reorder-video-modes-to-work-around-a-Windows.patch

Patch10: alt-skip-flags-when-parse-objdump-section.patch

Source10: config.vga.cirrus
Source11: config.vga.isavga
Source12: config.vga.qxl
Source13: config.vga.stdvga
Source14: config.vga.vmware
Source15: config.csm
Source16: config.coreboot
Source17: config.seabios-128k
Source18: config.seabios-256k
Source19: config.vga.virtio
Source20: config.vga.bochs-display
Source21: config.vga.ramfb
Source22: config.vga.ati
Source23: config.seabios-microvm

BuildRequires: python3
BuildRequires: acpica
%if %_build_cpu != x86_64
BuildRequires: gcc-i586-linux-gnu
%endif
Conflicts: qemu-common < 1.6.0-alt1

%description
SeaBIOS is an open-source legacy BIOS implementation which can be used as
a coreboot payload. It implements the standard BIOS calling interfaces
that a typical x86 proprietary BIOS implements.

%package -n seavgabios
Summary: Seavgabios for x86
Group: Emulators
BuildArch: noarch

%description -n seavgabios
SeaVGABIOS is an open-source VGABIOS implementation.

%set_verify_elf_skiplist %_datadir/%name/bios*.bin

%prep
%setup -q
%patch -p1

%patch0001 -p1
%patch0003 -p1
%patch10 -p1

echo %version > .version

%build
export CFLAGS="$RPM_OPT_FLAGS"
mkdir -p binaries

build_bios() {
	make clean distclean
	cp $1 .config
	echo "CONFIG_DEBUG_LEVEL=%{debug_level}" >> .config
	make oldnoconfig V=1
	make V=1 \
		EXTRAVERSION="-%{release}" \
		PYTHON=python3 \
		HOSTCC=gcc \
%if %_build_cpu != x86_64
		CROSS_PREFIX=i586-linux-gnu- \
%endif
		$4

	cp out/$2 binaries/$3
}

# seabios
build_bios %SOURCE15 Csm16.bin bios-csm.bin
build_bios %SOURCE16 bios.bin.elf bios-coreboot.bin
build_bios %SOURCE17 bios.bin bios.bin
build_bios %SOURCE18 bios.bin bios-256k.bin
build_bios %SOURCE23 bios.bin bios-microvm.bin

# seavgabios
for config in %SOURCE10 %SOURCE11 %SOURCE12 %SOURCE13 %SOURCE14 %SOURCE19 %SOURCE20 %SOURCE21 %SOURCE22 ; do
	name=${config#*config.vga.}
	build_bios ${config} vgabios.bin vgabios-${name}.bin out/vgabios.bin
done

%install
mkdir -p %buildroot%_datadir/%name
install -m 0644 binaries/bios.bin %buildroot%_datadir/%name/bios.bin
install -m 0644 binaries/bios-256k.bin %buildroot%_datadir/%name/bios-256k.bin
install -m 0644 binaries/bios-csm.bin %buildroot%_datadir/%name/bios-csm.bin
install -m 0644 binaries/bios-coreboot.bin %buildroot%_datadir/%name/bios-coreboot.bin
install -m 0644 binaries/bios-microvm.bin %buildroot%_datadir/%name/bios-microvm.bin

mkdir -p %buildroot%_datadir/seavgabios
install -m 0644 binaries/vgabios*.bin %buildroot%_datadir/seavgabios
ln -r -s %buildroot%_datadir/seavgabios/vgabios-isavga.bin %buildroot%_datadir/seavgabios/vgabios.bin

# For distro-provided firmware packages, the specification
# (https://git.qemu.org/?p=qemu.git;a=blob;f=docs/interop/firmware.json)
# says the JSON "descriptor files" to be searched in this directory:
# `/usr/share/firmware/`.  Create it.
mkdir -p %buildroot%_datadir/qemu/firmware
for f in %_sourcedir/*seabios*.json; do
    install -pm 644 $f %buildroot%_datadir/qemu/firmware
done

%files
%doc COPYING COPYING.LESSER README
%dir %_datadir/%name
%_datadir/%name/bios*.bin
%_datadir/qemu/firmware/*seabios*.json

%files -n seavgabios
%dir %_datadir/seavgabios
%_datadir/seavgabios/vgabios*.bin

%changelog
* Mon Feb 05 2024 Alexey Sheplyakov <asheplyakov@altlinux.org> 1.16.3-alt3
- spec: support cross-compilation. Useful for non-x86 ports (in particular
  sisyphus_loongarch64).

* Wed Jan 10 2024 Alexey Shabalin <shaba@altlinux.org> 1.16.3-alt2
- really 1.16.3

* Mon Dec 11 2023 Alexey Shabalin <shaba@altlinux.org> 1.16.3-alt1
- 1.16.3

* Tue Nov 21 2023 Vitaly Chikunov <vt@altlinux.org> 1.16.2-alt2
- microvm: Add CONFIG_SERCON=n (for smoother boot).

* Tue Apr 25 2023 Alexey Shabalin <shaba@altlinux.org> 1.16.2-alt1
- 1.16.2

* Wed Dec 28 2022 Alexey Shabalin <shaba@altlinux.org> 1.16.1-alt1
- 1.16.1

* Fri Mar 04 2022 Alexey Shabalin <shaba@altlinux.org> 1.16.0-alt1
- 1.16.0

* Wed Dec 22 2021 Alexey Shabalin <shaba@altlinux.org> 1.15.0-alt1
- 1.15.0.

* Tue Oct 26 2021 Alexey Shabalin <shaba@altlinux.org> 1.14.0-alt5
- Fix build.

* Sun Dec 27 2020 Alexey Shabalin <shaba@altlinux.org> 1.14.0-alt4
- Add firmware descriptor file 30-seabios-256k.json

* Sat Dec 19 2020 Alexey Shabalin <shaba@altlinux.org> 1.14.0-alt3
- add microvm bios

* Sat Dec 19 2020 Mikhail Gordeev <obirvalger@altlinux.org> 1.14.0-alt2
- Fix rebuild: skip flags when parse objdump section

* Sat Sep 19 2020 Alexey Shabalin <shaba@altlinux.org> 1.14.0-alt1
- 1.14.0

* Mon Jul 20 2020 Alexey Shabalin <shaba@altlinux.org> 1.13.0-alt2
- disable cross build

* Fri Dec 13 2019 Alexey Shabalin <shaba@altlinux.org> 1.13.0-alt1
- 1.13.0
- build vgabios-ati

* Tue Apr 02 2019 Alexey Shabalin <shaba@altlinux.org> 1.12.1-alt1
- 1.12.1

* Wed Nov 28 2018 Alexey Shabalin <shaba@altlinux.org> 1.12.0-alt1
- 1.12.0

* Fri Aug 24 2018 Alexey Shabalin <shaba@altlinux.org> 1.11.2-alt1
- 1.11.2
- fixed VGA VID and DID for vmware and virtio
- added VGA DISPLAY_BOCHS and RAMFB

* Mon Apr 02 2018 Alexey Shabalin <shaba@altlinux.ru> 1.11.1-alt1
- 1.11.1
- Build with Python 3

* Wed Dec 13 2017 Alexey Shabalin <shaba@altlinux.ru> 1.11.0-alt1
- 1.11.0
- Add patches from RHEL

* Wed Dec 13 2017 Alexey Shabalin <shaba@altlinux.ru> 1.10.3-alt1
- 1.10.3

* Thu Apr 27 2017 Alexey Shabalin <shaba@altlinux.ru> 1.10.2-alt1
- rebuild with ubt macros

* Fri Apr 21 2017 Alexey Shabalin <shaba@altlinux.ru> 1.10.2-alt1
- 1.10.2
- Don't attempt to use generic reboot mechanisms on QEMU

* Fri Dec 09 2016 Alexey Shabalin <shaba@altlinux.ru> 1.10.1-alt1
- 1.10.1

* Mon Oct 24 2016 Alexey Shabalin <shaba@altlinux.ru> 1.9.3-alt1
- 1.9.3

* Fri May 13 2016 Alexey Shabalin <shaba@altlinux.ru> 1.9.2-alt1
- 1.9.2

* Tue Dec 15 2015 Alexey Shabalin <shaba@altlinux.ru> 1.9.0-alt1
- 1.9.0
- build vgabios-virtio

* Fri Jun 19 2015 Alexey Shabalin <shaba@altlinux.ru> 1.8.2-alt1
- 1.8.2

* Tue Mar 24 2015 Alexey Shabalin <shaba@altlinux.ru> 1.8.1-alt1
- 1.8.1

* Tue Nov 18 2014 Alexey Shabalin <shaba@altlinux.ru> 1.7.5.1-alt1
- 1.7.5.1

* Tue Aug 05 2014 Alexey Shabalin <shaba@altlinux.ru> 1.7.5-alt2
- Fix PCI-e hotplug

* Mon Jun 02 2014 Alexey Shabalin <shaba@altlinux.ru> 1.7.5-alt1
- 1.7.5

* Fri Apr 18 2014 Alexey Shabalin <shaba@altlinux.ru> 1.7.4-alt2
- upstream snapshot 0784d04cb6f6e5c893aaf368091f20326fb847fe
- build 256k bios images for qemu 2.0

* Wed Jan 15 2014 Alexey Shabalin <shaba@altlinux.ru> 1.7.4-alt1
- 1.7.4

* Wed Oct 09 2013 Alexey Shabalin <shaba@altlinux.ru> 1.7.3.2-alt1
- 1.7.3.2

* Fri Aug 16 2013 Alexey Shabalin <shaba@altlinux.ru> 1.7.3.1-alt1
- 1.7.3.1

* Fri Aug 09 2013 Alexey Shabalin <shaba@altlinux.ru> 1.7.3-alt2
- move seabios binary to _datadir

* Thu Aug 08 2013 Alexey Shabalin <shaba@altlinux.ru> 1.7.3-alt1
- 1.7.3

* Thu Jul 04 2013 Alexey Shabalin <shaba@altlinux.ru> 1.7.2.2-alt1
- 1.7.2.2

* Tue May 07 2013 Alexey Shabalin <shaba@altlinux.ru> 1.7.2.1-alt1
- 1.7.2.1

* Tue Feb 19 2013 Alexey Shabalin <shaba@altlinux.ru> 1.7.2-alt2
- add seavgabios package

* Tue Feb 19 2013 Alexey Shabalin <shaba@altlinux.ru> 1.7.2-alt1
- 1.7.2

* Fri Sep 28 2012 Alexey Shabalin <shaba@altlinux.ru> 1.7.1-alt1
- 1.7.1

* Tue May 22 2012 Alexey Shabalin <shaba@altlinux.ru> 1.7.0-alt1
- 1.7.0

* Mon Mar 12 2012 Alexey Shabalin <shaba@altlinux.ru> 1.6.3.2-alt1
- 1.6.3.2

* Fri Dec 02 2011 Alexey Shabalin <shaba@altlinux.ru> 1.6.3.1-alt1
- 1.6.3.1

* Thu Oct 13 2011 Alexey Shabalin <shaba@altlinux.ru> 1.6.3-alt1
- 1.6.3

* Thu Aug 11 2011 Alexey Shabalin <shaba@altlinux.ru> 0.6.2-alt1.git8e3014
- upstream git snapshot 8e301472e324b6d6496d8b4ffc66863e99d7a505

* Fri Feb 04 2011 Alexey Shabalin <shaba@altlinux.ru> 0.6.1.3-alt1
- 0.6.1.3

* Fri Dec 24 2010 Alexey Shabalin <shaba@altlinux.ru> 0.6.1.2-alt1
- initial build for ALT Linux Sisyphus