forked from pool/python-kiwi
255 lines
7.4 KiB
RPMSpec
255 lines
7.4 KiB
RPMSpec
|
#
|
||
|
# spec file for package kiwi
|
||
|
#
|
||
|
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||
|
#
|
||
|
# All modifications and additions to the file contributed by third parties
|
||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||
|
# upon. The license for this file, and modifications and additions to the
|
||
|
# file, is the same license as for the pristine package itself (unless the
|
||
|
# license for the pristine package is not an Open Source License, in which
|
||
|
# case the license is the MIT License). An "Open Source License" is a
|
||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||
|
# published by the Open Source Initiative.
|
||
|
#
|
||
|
# Please submit bugfixes or comments via:
|
||
|
#
|
||
|
# https://github.com/SUSE/kiwi/issues
|
||
|
#
|
||
|
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
||
|
Name: python-kiwi
|
||
|
Version: 9.3.2
|
||
|
Provides: kiwi-schema = 6.5
|
||
|
Release: 0
|
||
|
Url: https://github.com/SUSE/kiwi
|
||
|
Summary: KIWI - Appliance Builder Next Generation
|
||
|
License: GPL-3.0+
|
||
|
Group: Development/Languages/Python
|
||
|
Source: %{name}.tar.gz
|
||
|
Source1: %{name}-boot-packages
|
||
|
Source2: %{name}-rpmlintrc
|
||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||
|
BuildRequires: %{python_module base}
|
||
|
BuildRequires: python-rpm-macros
|
||
|
BuildRequires: fdupes
|
||
|
BuildRequires: update-alternatives
|
||
|
BuildRequires: shadow
|
||
|
Provides: kiwi-image:tbz
|
||
|
Provides: kiwi-image:docker
|
||
|
Provides: kiwi-image:iso
|
||
|
Provides: kiwi-image:vmx
|
||
|
Provides: kiwi-image:pxe
|
||
|
Provides: kiwi-image:oem
|
||
|
Requires: update-alternatives
|
||
|
Requires: %{python_module docopt}
|
||
|
Requires: %{python_module setuptools}
|
||
|
Requires: %{python_module lxml}
|
||
|
Requires: %{python_module xattr}
|
||
|
Requires: %{python_module six}
|
||
|
Requires: %{python_module future}
|
||
|
Requires(post): update-alternatives
|
||
|
Requires(postun): update-alternatives
|
||
|
# tools used by kiwi
|
||
|
%if 0%{?suse_version}
|
||
|
Requires: zypper
|
||
|
Requires: squashfs
|
||
|
Provides: kiwi-packagemanager:zypper
|
||
|
%endif
|
||
|
%if 0%{?rhel_version} || 0%{?centos_version}
|
||
|
Requires: yum
|
||
|
Requires: squashfs-tools
|
||
|
Provides: kiwi-packagemanager:yum
|
||
|
%endif
|
||
|
Requires: genisoimage
|
||
|
Requires: kiwi-tools
|
||
|
Requires: rsync
|
||
|
Requires: tar >= 1.2.7
|
||
|
Requires: gptfdisk
|
||
|
Requires: qemu-tools
|
||
|
Requires: dosfstools
|
||
|
Requires: e2fsprogs
|
||
|
Requires: lvm2
|
||
|
Requires: parted
|
||
|
Requires: multipath-tools
|
||
|
Requires: grub2
|
||
|
Requires: mtools
|
||
|
%ifarch %arm aarch64
|
||
|
Requires: u-boot-tools
|
||
|
%endif
|
||
|
%ifarch x86_64
|
||
|
Requires: grub2-x86_64-efi
|
||
|
%endif
|
||
|
%ifarch s390 s390x
|
||
|
Requires: s390-tools
|
||
|
%endif
|
||
|
|
||
|
# translate version id to distribution
|
||
|
# name as it is used in kiwi
|
||
|
%if 0%{?suse_version}
|
||
|
%define distro %(echo `export VER=%{suse_version}; echo "suse-${VER:0:2}.${VER:2:1}"`)
|
||
|
# redefine for the SLES case if no sles_version exists
|
||
|
# SLE12:
|
||
|
%if 0%{?suse_version} == 1315 && !0%{?is_opensuse}
|
||
|
%define distro suse-SLES12
|
||
|
%endif
|
||
|
# Leap 42.1:
|
||
|
%if 0%{?suse_version} == 1315 && 0%{?is_opensuse}
|
||
|
%define distro suse-leap42.1
|
||
|
%endif
|
||
|
# Leap 42.2:
|
||
|
%if 0%{?suse_version} == 1316 && 0%{?is_opensuse}
|
||
|
%define distro suse-leap42.2
|
||
|
%endif
|
||
|
# Tumbleweed:
|
||
|
# Current Tumbleweed version, moving target
|
||
|
%if 0%{?suse_version} == 1330
|
||
|
%define distro suse-tumbleweed
|
||
|
%endif
|
||
|
%endif
|
||
|
|
||
|
# SLES with sles_version macro
|
||
|
%if 0%{?sles_version}
|
||
|
%define distro suse-SLES%{sles_version}
|
||
|
%endif
|
||
|
|
||
|
# RHEL // CentOS
|
||
|
# use the rhel templates for CentOS, too
|
||
|
%if 0%{?rhel_version} == 700 || 0%{?centos_version} == 700
|
||
|
%define distro rhel-07.0
|
||
|
%endif
|
||
|
|
||
|
%description
|
||
|
The KIWI Image System provides an operating system image builder
|
||
|
for Linux supported hardware platforms as well as for virtualization
|
||
|
and cloud systems like Xen, KVM, VMware, EC2 and more.
|
||
|
|
||
|
%package -n kiwi-tools
|
||
|
Summary: KIWI - Collection of Boot Helper Tools
|
||
|
License: GPL-3.0+
|
||
|
Group: System/Management
|
||
|
|
||
|
%description -n kiwi-tools
|
||
|
This package contains a small set of helper tools used for the
|
||
|
kiwi created initial ramdisk which is used to control the very
|
||
|
first boot of an appliance. The tools are not meant to be used
|
||
|
outside of the scope of kiwi appliance building.
|
||
|
|
||
|
%ifarch %ix86 x86_64
|
||
|
%package -n kiwi-pxeboot
|
||
|
Summary: KIWI - PXE boot structure
|
||
|
Requires: syslinux
|
||
|
License: GPL-3.0+
|
||
|
Group: System/Management
|
||
|
|
||
|
%description -n kiwi-pxeboot
|
||
|
This package contains the basic PXE directory structure which is
|
||
|
needed to serve kiwi built images via PXE.
|
||
|
%endif
|
||
|
|
||
|
%package -n kiwi-boot-requires
|
||
|
Summary: KIWI - buildservice package requirements for boot images
|
||
|
Provides: kiwi-boot:isoboot
|
||
|
Provides: kiwi-boot:vmxboot
|
||
|
Provides: kiwi-boot:netboot
|
||
|
Provides: kiwi-boot:oemboot
|
||
|
Provides: kiwi-filesystem:btrfs
|
||
|
Provides: kiwi-filesystem:xfs
|
||
|
Provides: kiwi-filesystem:ext3
|
||
|
Provides: kiwi-filesystem:ext4
|
||
|
Provides: kiwi-filesystem:squashfs
|
||
|
Requires: btrfsprogs
|
||
|
Requires: e2fsprogs
|
||
|
Requires: xfsprogs
|
||
|
Requires: python-kiwi = %{version}
|
||
|
Requires: %(echo `cat %{S:1}|grep %{_target_cpu}:%{distro}:|cut -f3- -d:`)
|
||
|
License: GPL-3.0+
|
||
|
Group: System/Management
|
||
|
|
||
|
%description -n kiwi-boot-requires
|
||
|
Meta package for the buildservice to pull in all required packages in
|
||
|
order to have them in the buildservice created repositories to allow
|
||
|
kiwi to build the boot image. This package must never be published
|
||
|
nor installed by anybody else except for the buildservice, it is part
|
||
|
of the kiwi - buildservice integration exclusively
|
||
|
|
||
|
%prep
|
||
|
%setup -q -n kiwi-%{version}
|
||
|
|
||
|
%build
|
||
|
%python_build
|
||
|
|
||
|
%install
|
||
|
%python_install
|
||
|
|
||
|
# alternatives setup for kiwi -> kiwi-ng binary
|
||
|
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
|
||
|
touch %{buildroot}%{_sysconfdir}/alternatives/kiwi
|
||
|
ln -s %{_sysconfdir}/alternatives/kiwi \
|
||
|
%{buildroot}%_bindir/kiwi
|
||
|
|
||
|
# kiwi pxeboot directory structure to be packed in kiwi-pxeboot
|
||
|
%ifarch %ix86 x86_64
|
||
|
for i in KIWI pxelinux.cfg image upload boot; do \
|
||
|
mkdir -p %{buildroot}/srv/tftpboot/$i ;\
|
||
|
done
|
||
|
%endif
|
||
|
|
||
|
%fdupes %{buildroot}/srv/tftpboot
|
||
|
%fdupes %{buildroot}/%{python_sitelib}/kiwi/boot
|
||
|
|
||
|
%post
|
||
|
%{_sbindir}/update-alternatives \
|
||
|
--install %_bindir/kiwi kiwi %_bindir/kiwi-ng 10
|
||
|
|
||
|
%preun
|
||
|
%{_sbindir}/update-alternatives \
|
||
|
--remove kiwi %_bindir/kiwi
|
||
|
|
||
|
%ifarch %ix86 x86_64
|
||
|
%pre -n kiwi-pxeboot
|
||
|
#============================================================
|
||
|
# create user and group tftp if they does not exist
|
||
|
if ! /usr/bin/getent group tftp >/dev/null; then
|
||
|
%{_sbindir}/groupadd -r tftp
|
||
|
fi
|
||
|
if ! /usr/bin/getent passwd tftp >/dev/null; then
|
||
|
%{_sbindir}/useradd -c "TFTP account" -d /srv/tftpboot -G tftp -g tftp \
|
||
|
-r -s /bin/false tftp
|
||
|
fi
|
||
|
%endif
|
||
|
|
||
|
%files
|
||
|
%defattr(-,root,root,-)
|
||
|
%{_bindir}/kiwi-ng
|
||
|
%ghost %{_bindir}/kiwi
|
||
|
%ghost %_sysconfdir/alternatives/kiwi
|
||
|
%{_bindir}/kiwicompat
|
||
|
%{python_sitelib}/*
|
||
|
%pycache_only %{python3_sitelib}/__pycache__/*
|
||
|
%{python_sitelib}/kiwi-%{version}-py*.egg-info
|
||
|
%config %_sysconfdir/bash_completion.d/kiwi-ng.sh
|
||
|
%doc %{_mandir}/man2/*
|
||
|
|
||
|
%files -n kiwi-tools
|
||
|
%defattr(-, root, root)
|
||
|
%exclude %{_bindir}/kiwi
|
||
|
%exclude %{_bindir}/kiwi-ng
|
||
|
%exclude %{_bindir}/kiwicompat
|
||
|
%{_bindir}/*
|
||
|
|
||
|
%ifarch %ix86 x86_64
|
||
|
%files -n kiwi-pxeboot
|
||
|
%defattr(-, root, root)
|
||
|
%dir %attr(0750,tftp,tftp) /srv/tftpboot
|
||
|
%dir /srv/tftpboot/KIWI
|
||
|
%dir /srv/tftpboot/pxelinux.cfg
|
||
|
%dir /srv/tftpboot/image
|
||
|
%dir /srv/tftpboot/upload
|
||
|
%dir /srv/tftpboot/boot
|
||
|
%endif
|
||
|
|
||
|
%files -n kiwi-boot-requires
|
||
|
%defattr(-, root, root)
|
||
|
|
||
|
%changelog
|