Arch-specific builds, aarch64 support
[ta/ipa-deployer.git] / ipa-deployer.spec
index bb8c3d7..de86c3e 100644 (file)
@@ -7,11 +7,24 @@ License: %{_platform_licence}
 Source0: %{name}-%{version}.tar.gz
 Vendor:  %{_platform_vendor}
 
-BuildArch: noarch
-BuildRequires: diskimage-builder qemu-img-ev which sudo PyYAML e2fsprogs syslinux genisoimage wget kernel python2-ironic-python-agent python-ironic-lib python-devel
+BuildRequires: qemu-img-ev which sudo PyYAML e2fsprogs genisoimage wget kernel python2-ironic-python-agent python-ironic-lib python-devel xz python-pip gdisk dosfstools util-linux
+%ifarch x86_64 amd64
+BuildRequires: syslinux
+%endif
 
 %define dib_selinuxfile elements/rpm-distro/cleanup.d/99-selinux-fixfiles-restore
 %define dib_epel elements/epel/pre-install.d/05-rpm-epel-release
+%ifarch x86_64 amd64
+%define centos_cloudimg https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1801-01.qcow2
+%define centos_mirror http://mirror.centos.org/centos/7
+%else
+%define centos_cloudimg https://cloud.centos.org/altarch/7/images/aarch64/CentOS-7-aarch64-GenericCloud-1708.qcow2.xz
+%define centos_cloudimg_xz 1
+%define centos_mirror http://mirror.centos.org/altarch/7
+%define dib_block_device_efi 1
+%endif
+%define centos_efibootimg %{centos_mirror}/os/%{_arch}/images/efiboot.img
+%define centos_efidir %{centos_mirror}/os/%{_arch}/EFI
 
 %description
 Deployment image for ironic python agent image
@@ -20,18 +33,26 @@ Deployment image for ironic python agent image
 %autosetup
 
 %build
+sudo pip install diskimage-builder==2.26.1
 sudo rm -rf %{python2_sitelib}/diskimage_builder/%{dib_selinuxfile} %{_datarootdir}ยง/diskimage-builder/%{dib_selinuxfile} %{python2_sitelib}/diskimage_builder/elements/epel/pre-install.d/05-rpm-epel-release
 cp /etc/yum.conf work/local.repo
-wget --progress=dot:giga https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1801-01.qcow2 -O CentOS.qcow2
+wget --progress=dot:giga %{centos_cloudimg} -O CentOS.qcow2%{?centos_cloudimg_xz:.xz}
+%if 0%{?centos_cloudimg_xz:1}
+unxz CentOS.qcow2.xz
+%endif
+url=%{centos_efidir}/
+wget --progress=dot:giga %{centos_efibootimg} -O efiboot.img
+cut_dirs=$(echo $url | sed -re 's|.*://[^/]+/(.+)|\1|' -e 's|/$||' | grep -o / | wc -l)
+wget -N -r --no-host-directories --no-verbose --cut-dirs=${cut_dirs} --reject index.html* --no-parent $url
 DIB_DEBUG_TRACE=1 \
   ELEMENTS_PATH="${PWD}/work/dib-ipa-element/" \
   DIB_LOCAL_IMAGE="file://${PWD}/CentOS.qcow2" \
   DIB_YUM_REPO_CONF="work/local.repo" \
   DIB_LOCAL_REPO="/usr/localrepo/" \
-  break=after-error /usr/bin/disk-image-create  --install-type package localrepo centos7 virtmedia-netconf ironic-agent
+  break=after-error /usr/bin/disk-image-create  --install-type package localrepo centos7 virtmedia-netconf ironic-agent %{?dib_block_device_efi:block-device-efi}
 
 if [[ $? == 0 ]]; then
-  work/iso-image-create -o ./ironic-deploy.iso -i ./image.initramfs -k ./image.vmlinuz
+  work/iso-image-create -o ./ironic-deploy.iso -i ./image.initramfs -k ./image.vmlinuz -e ./efiboot.img -E ./EFI
 else
   echo "Failed to run disk-image-create"
 fi