forked from pool/libguestfs
e7da7e37ad
- Fix python binding for python3 add patches: * 9d25b4e5-python-add-simple-wrappers-for-PyObject-string-funct.patch * f3f99a09-python-use-right-func-when-PyString_FromStringAndSiz.patch - Better fix for SUSE distro detection using ID_LIKE as fallback: * use-idlike.patch OBS-URL: https://build.opensuse.org/request/show/520153 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libguestfs?expand=0&rev=401
818 lines
24 KiB
RPMSpec
818 lines
24 KiB
RPMSpec
#
|
|
# spec file for package libguestfs
|
|
#
|
|
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
# Copyright (c) 2011 Michal Hrusecky <mhrusecky@novell.com>
|
|
#
|
|
# 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 http://bugs.opensuse.org/
|
|
#
|
|
# needsbinariesforbuild
|
|
|
|
|
|
Version: 1.36.5
|
|
Release: 0
|
|
%{ocaml_preserve_bytecode}
|
|
|
|
%bcond_without ocaml_bindings
|
|
%bcond_without lua_bindings
|
|
%bcond_without python_bindings
|
|
%bcond_without perl_bindings
|
|
%bcond_without hivex
|
|
%bcond_without zerofree
|
|
|
|
%bcond_without fuse
|
|
|
|
%bcond_without ruby_bindings
|
|
|
|
%bcond_without p2v
|
|
|
|
%bcond_without bash_completion
|
|
# The following defines are overridden in the individual subpackages
|
|
%define _configure_fuse --disable-fuse
|
|
%define _configure_lua --disable-lua
|
|
%define _configure_ocaml --disable-ocaml
|
|
%define _configure_perl --disable-perl
|
|
%define _configure_python --disable-python
|
|
%define _configure_ruby --disable-ruby
|
|
|
|
%define udevrulesdir /usr/lib/udev/rules.d
|
|
#
|
|
# use 'env LIBGUESTFS_HV=/path/to/kvm libguestfs-test-tool' to verify
|
|
%define kvm_binary /bin/false
|
|
%ifarch aarch64
|
|
%define kvm_binary /usr/bin/qemu-system-aarch64
|
|
%endif
|
|
%ifarch ppc64le
|
|
%define kvm_binary /usr/bin/qemu-system-ppc64
|
|
%endif
|
|
%ifarch ppc64
|
|
%define kvm_binary /usr/bin/qemu-system-ppc64
|
|
%endif
|
|
%ifarch s390x
|
|
%define kvm_binary /usr/bin/qemu-system-s390x
|
|
%endif
|
|
%ifarch x86_64
|
|
%define kvm_binary /usr/bin/qemu-system-x86_64
|
|
%endif
|
|
#
|
|
%define guestfs_docdir %{_defaultdocdir}/%{name}
|
|
#
|
|
Name: libguestfs
|
|
%if "%{?_ignore_exclusive_arch}" == ""
|
|
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
|
|
%endif
|
|
BuildRequires: aaa_base
|
|
BuildRequires: attr-devel
|
|
BuildRequires: augeas-devel >= 1.0.0
|
|
BuildRequires: autoconf
|
|
BuildRequires: automake
|
|
%if %{with bash_completion}
|
|
BuildRequires: bash-completion >= 2.0
|
|
%if 0%{?suse_version} >= 1330
|
|
BuildRequires: bash-completion-devel >= 2.0
|
|
%endif
|
|
%endif
|
|
BuildRequires: bison
|
|
BuildRequires: fdupes
|
|
BuildRequires: file-devel
|
|
BuildRequires: flex
|
|
BuildRequires: gcc
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: gperf
|
|
BuildRequires: libacl-devel
|
|
BuildRequires: libcap-devel
|
|
BuildRequires: libconfig-devel
|
|
BuildRequires: libtool
|
|
BuildRequires: libvirt-devel >= 0.10.2
|
|
BuildRequires: libxml2-devel
|
|
BuildRequires: ncurses-devel
|
|
%if %{with perl_bindings}
|
|
BuildRequires: perl(Module::Build)
|
|
%endif
|
|
BuildRequires: createrepo
|
|
BuildRequires: db48-utils
|
|
BuildRequires: dhcp-client
|
|
BuildRequires: pcre-devel
|
|
BuildRequires: pkg-config
|
|
BuildRequires: qemu-tools
|
|
BuildRequires: readline-devel
|
|
BuildRequires: supermin >= 5.1.6
|
|
BuildRequires: pkgconfig(dbus-1)
|
|
BuildRequires: pkgconfig(yajl) >= 2.0.4
|
|
# Required to build tools, its independent from bindings
|
|
BuildRequires: glib2-devel
|
|
BuildRequires: ocaml
|
|
BuildRequires: ocaml-findlib
|
|
|
|
#
|
|
BuildRequires: ocaml-rpm-macros >= 4.03
|
|
%if %{with ocaml_bindings}
|
|
%define _configure_ocaml --enable-ocaml
|
|
%endif
|
|
#
|
|
%if %{with fuse}
|
|
BuildRequires: fuse-devel
|
|
%define _configure_fuse --enable-fuse
|
|
%endif
|
|
#
|
|
%if %{with hivex}
|
|
BuildRequires: glibc-locale
|
|
BuildRequires: hivex
|
|
BuildRequires: hivex-devel
|
|
%endif
|
|
#
|
|
%if %{with p2v}
|
|
BuildRequires: gtk2-devel
|
|
%endif
|
|
#
|
|
Url: http://libguestfs.org/
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
Summary: Compatibility package for guestfs-tools
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
Patch0: 0000-hotfix.patch
|
|
# PATCH-FIX-UPSTREAM - python3 fixes
|
|
Patch1: 9d25b4e5-python-add-simple-wrappers-for-PyObject-string-funct.patch
|
|
Patch2: f3f99a09-python-use-right-func-when-PyString_FromStringAndSiz.patch
|
|
# PATCH-FIX-OPENSUSE - pending upstream review, fixing distro detection in OBS
|
|
Patch3: use-idlike.patch
|
|
Patch100: appliance.patch
|
|
|
|
Source0: http://download.libguestfs.org/1.36-stable/libguestfs-%{version}.tar.gz
|
|
Source1: libguestfs.rpmlintrc
|
|
Source100: mount-rootfs-and-chroot.sh
|
|
Source789653: Pod-Simple-3.23.tar.xz
|
|
#
|
|
Source10001: libguestfs.test.simple.run-libugestfs-test-tool.sh
|
|
Source10002: libguestfs.test.simple.create-opensuse-guest.sh
|
|
Source10003: libguestfs.test.simple.create-opensuse-guest-crypt-on-lvm.sh
|
|
Source10004: libguestfs.test.simple.create-sles12-guest.sh
|
|
Source10005: libguestfs.test.simple.create-sles12-guest-crypt-on-lvm.sh
|
|
|
|
#
|
|
Requires: guestfs-tools
|
|
Requires: virt-v2v = %{version}
|
|
|
|
%description
|
|
libguestfs is a set of tools for accessing and modifying virtual machine (VM)
|
|
disk images. You can use this for viewing and editing files inside guests,
|
|
scripting changes to VMs, monitoring disk used/free statistics, P2V, V2V,
|
|
performing partial backups, cloning VMs, and much else besides.
|
|
|
|
libguestfs can access nearly any type of filesystem including: all known types
|
|
of Linux filesystem (ext2/3/4, XFS, btrfs etc), any Windows filesystem (VFAT
|
|
and NTFS), any Mac OS X and BSD filesystems, LVM2 volume management, MBR and
|
|
GPT disk partitions, raw disks, qcow2, VirtualBox VDI, VMWare VMDK, CD and DVD
|
|
ISOs, SD cards, and dozens more. libguestfs doesn't need root permissions.
|
|
|
|
All this functionality is available through a convenient shell called
|
|
guestfish, or use virt-rescue to get a rescue shell for fixing unbootable
|
|
virtual machines.
|
|
|
|
%package -n guestfs-tools
|
|
Summary: Tools for accessing and modifying virtual machine disk images
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
Provides: %{name} = %{version}
|
|
Obsoletes: %{name} < %{version}
|
|
Requires: libguestfs0 = %{version}
|
|
Requires: python-evtx
|
|
%if %{with bash_completion}
|
|
Recommends: bash-completion >= 2.0
|
|
%endif
|
|
%if %{with perl_bindings}
|
|
Requires: perl(Data::Dumper)
|
|
Requires: perl(File::Basename)
|
|
Requires: perl(File::Temp)
|
|
Requires: perl(Getopt::Long)
|
|
Requires: perl(Locale::TextDomain)
|
|
Requires: perl(Pod::Usage)
|
|
Requires: perl(String::ShellQuote)
|
|
Requires: perl(Sys::Guestfs)
|
|
%{perl_requires}
|
|
%if %{with hivex}
|
|
Requires: perl(Win::Hivex)
|
|
Requires: perl(Win::Hivex::Regedit)
|
|
%endif
|
|
%endif
|
|
Requires: guestfs-data >= %{version}
|
|
|
|
%if %{with fuse}
|
|
Requires: fuse
|
|
%endif
|
|
|
|
# For virt-builder
|
|
Requires: curl
|
|
Requires: gpg2
|
|
Requires: xz
|
|
Conflicts: libguestfs0 < %{version}
|
|
|
|
%description -n guestfs-tools
|
|
libguestfs is a set of tools for accessing and modifying virtual machine (VM)
|
|
disk images. You can use this for viewing and editing files inside guests,
|
|
scripting changes to VMs, monitoring disk used/free statistics, P2V, V2V,
|
|
performing partial backups, cloning VMs, and much else besides.
|
|
|
|
libguestfs can access nearly any type of filesystem including: all known types
|
|
of Linux filesystem (ext2/3/4, XFS, btrfs etc), any Windows filesystem (VFAT
|
|
and NTFS), any Mac OS X and BSD filesystems, LVM2 volume management, MBR and
|
|
GPT disk partitions, raw disks, qcow2, VirtualBox VDI, VMWare VMDK, CD and DVD
|
|
ISOs, SD cards, and dozens more. libguestfs doesn't need root permissions.
|
|
|
|
All this functionality is available through a convenient shell called
|
|
guestfish, or use virt-rescue to get a rescue shell for fixing unbootable
|
|
virtual machines.
|
|
|
|
%package -n guestfsd
|
|
Summary: Daemon for the libguestfs appliance
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
Conflicts: libaugeas0 < 1.0.0
|
|
|
|
%description -n guestfsd
|
|
guestfsd runs within the libguestfs appliance. It receives commands from the host
|
|
and performs the requested action by calling the helper binaries.
|
|
This package is only required for building the appliance.
|
|
|
|
#
|
|
%if %{with ocaml_bindings}
|
|
%package -n ocaml-libguestfs
|
|
Summary: Provides OCaml support for libguestfs
|
|
#
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
|
|
%description -n ocaml-libguestfs
|
|
Allows OCaml scripts to directly use libguestfs.
|
|
|
|
%package -n ocaml-libguestfs-devel
|
|
Summary: Provides OCaml support for libguestfs
|
|
License: GPL-2.0
|
|
Group: Development/Libraries/Other
|
|
|
|
%description -n ocaml-libguestfs-devel
|
|
Allows OCaml scripts to directly use libguestfs.
|
|
%endif
|
|
#
|
|
%if %{with perl_bindings}
|
|
%package -n perl-Sys-Guestfs
|
|
Summary: Provides Perl support for libguestfs
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
BuildRequires: perl
|
|
BuildRequires: perl(Data::Dumper)
|
|
BuildRequires: perl(Getopt::Long)
|
|
BuildRequires: perl(Locale::TextDomain)
|
|
BuildRequires: perl(Pod::Usage)
|
|
BuildRequires: perl(String::ShellQuote)
|
|
BuildRequires: perl(Sys::Virt)
|
|
%if %{with hivex}
|
|
BuildRequires: perl(Win::Hivex)
|
|
BuildRequires: perl(Win::Hivex::Regedit)
|
|
%endif
|
|
%define _configure_perl --enable-perl
|
|
#
|
|
Provides: libguestfs-perl = %{version}
|
|
Obsoletes: libguestfs-perl < %{version}
|
|
Requires: guestfs-data >= %{version}
|
|
Requires: perl(File::Temp)
|
|
Requires: perl(Locale::TextDomain)
|
|
%perl_requires
|
|
|
|
%description -n perl-Sys-Guestfs
|
|
Allows Perl scripts to directly use libguestfs.
|
|
%endif
|
|
#
|
|
%if %{with lua_bindings}
|
|
%package -n lua-libguestfs
|
|
Summary: Provides Lua support for libguestfs
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
BuildRequires: lua-devel
|
|
Requires: guestfs-data >= %{version}
|
|
%define _configure_lua --enable-lua
|
|
#
|
|
|
|
%description -n lua-libguestfs
|
|
Allows lua scripts to directly use libguestfs.
|
|
%endif
|
|
#
|
|
|
|
%if %{with python_bindings}
|
|
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
|
%package -n python2-libguestfs
|
|
Summary: Provides Python 2 support for libguestfs
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
BuildRequires: %{python_module devel}
|
|
BuildRequires: %{python_module setuptools}
|
|
BuildRequires: python
|
|
BuildRequires: python-rpm-macros
|
|
%define _configure_python --enable-python
|
|
#
|
|
Obsoletes: libguestfs-python < %{version}
|
|
Obsoletes: python-libguestfs < %{version}
|
|
Provides: python-libguestfs = %{version}
|
|
Requires: guestfs-data >= %{version}
|
|
|
|
%description -n python2-libguestfs
|
|
Allows Python 2 scripts to directly use libguestfs.
|
|
|
|
%package -n python3-libguestfs
|
|
Summary: Provides Python 3 support for libguestfs
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
%define _configure_python --enable-python
|
|
#
|
|
Obsoletes: libguestfs-python < %{version}
|
|
Obsoletes: python-libguestfs < %{version}
|
|
Provides: python-libguestfs = %{version}
|
|
Requires: guestfs-data >= %{version}
|
|
|
|
%description -n python3-libguestfs
|
|
Allows Python 3 scripts to directly use libguestfs.
|
|
%endif
|
|
#
|
|
%if %{with ruby_bindings}
|
|
%package -n rubygem-libguestfs
|
|
Summary: Ruby bindings for libguestfs
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
BuildRequires: ruby
|
|
BuildRequires: ruby-devel
|
|
BuildRequires: rubygem-rake
|
|
Requires: guestfs-data >= %{version}
|
|
%define _configure_ruby --enable-ruby
|
|
#
|
|
|
|
%description -n rubygem-libguestfs
|
|
Allows Ruby scripts to directly use libguestfs.
|
|
%endif
|
|
|
|
%package test
|
|
Summary: Testcases for libguestfs
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
Requires: %{name}
|
|
|
|
%description test
|
|
This package contains testcases to verify libguestfs functionality.
|
|
|
|
%package -n guestfs-data
|
|
BuildRequires: augeas-lenses
|
|
BuildRequires: bc
|
|
BuildRequires: btrfsprogs
|
|
BuildRequires: bzip2
|
|
BuildRequires: cdrkit-cdrtools-compat
|
|
BuildRequires: coreutils
|
|
BuildRequires: cpio
|
|
BuildRequires: cryptsetup
|
|
BuildRequires: diffutils
|
|
BuildRequires: dosfstools
|
|
BuildRequires: e2fsprogs
|
|
BuildRequires: file
|
|
BuildRequires: findutils
|
|
BuildRequires: gawk
|
|
BuildRequires: genisoimage
|
|
BuildRequires: glibc
|
|
BuildRequires: gptfdisk
|
|
BuildRequires: grep
|
|
BuildRequires: gzip
|
|
BuildRequires: initviocons
|
|
BuildRequires: iproute2
|
|
BuildRequires: jfsutils
|
|
BuildRequires: lvm2
|
|
BuildRequires: mdadm
|
|
BuildRequires: module-init-tools
|
|
BuildRequires: ncurses-utils
|
|
BuildRequires: nfs-client
|
|
BuildRequires: ntfs-3g
|
|
BuildRequires: ntfsprogs
|
|
BuildRequires: pam-config
|
|
BuildRequires: parted
|
|
BuildRequires: pciutils
|
|
BuildRequires: pciutils-ids
|
|
BuildRequires: psmisc
|
|
BuildRequires: reiserfs
|
|
BuildRequires: rsync
|
|
BuildRequires: sg3_utils
|
|
BuildRequires: strace
|
|
%ifarch %ix86 x86_64
|
|
BuildRequires: syslinux
|
|
%endif
|
|
BuildRequires: systemd
|
|
BuildRequires: systemd-sysvinit
|
|
BuildRequires: tar
|
|
BuildRequires: terminfo-base
|
|
BuildRequires: tunctl
|
|
BuildRequires: udev
|
|
BuildRequires: util-linux
|
|
BuildRequires: util-linux-lang
|
|
BuildRequires: xfsprogs
|
|
BuildRequires: xz
|
|
%if %{with zerofree}
|
|
BuildRequires: zerofree
|
|
%endif
|
|
BuildRequires: ldmtool
|
|
|
|
# Needed by guestfsd which is burried in the appliance
|
|
#
|
|
# The problem with this design is that rpm can't find the
|
|
# library dependencies from the guestfsd hidden in the
|
|
# daemon.tar.gz tarball.Supermin will compute an appliance
|
|
# at runtime based on the packages it will find on the host.
|
|
# Thus if there is no libaugeas, libhivex, etc on the host,
|
|
# the appliance will fail to start the guestfsd.
|
|
Requires: augeas
|
|
Requires: augeas-lenses
|
|
Requires: libaugeas0
|
|
Requires: libcap2
|
|
Requires: libhivex0
|
|
Requires: libpcre1
|
|
|
|
# For core disk features
|
|
Requires: qemu-tools
|
|
|
|
# Optional packages that could be picked up by supermin
|
|
Recommends: btrfsprogs
|
|
Recommends: dosfstools
|
|
Recommends: e2fsprogs
|
|
Recommends: cryptsetup
|
|
Recommends: gptfdisk
|
|
Recommends: jfsutils
|
|
Recommends: reiserfs
|
|
Recommends: xfsprogs
|
|
Recommends: mdadm
|
|
Recommends: parted
|
|
Recommends: zerofree
|
|
Recommends: genisoimage
|
|
Recommends: ldmtool
|
|
|
|
Summary: Virtual machine needed for libguestfs
|
|
License: GPL-2.0
|
|
Group: System/Filesystems
|
|
Provides: libguestfs-data = %{version}
|
|
Obsoletes: libguestfs-data < %{version}
|
|
|
|
%description -n guestfs-data
|
|
libguestfs needs for it's run a virtual machine image.
|
|
This package provides such an image, an initrd and a kernel.
|
|
|
|
|
|
%package devel
|
|
Summary: Development files for libguestfs
|
|
License: GPL-2.0
|
|
Group: Development/Libraries/Other
|
|
Requires: libguestfs0 = %{version}
|
|
|
|
%description devel
|
|
Development files for libguestfs.
|
|
|
|
libguestfs is a set of tools for accessing and modifying virtual machine (VM)
|
|
disk images. You can use this for viewing and editing files inside guests,
|
|
scripting changes to VMs, monitoring disk used/free statistics, P2V, V2V,
|
|
performing partial backups, cloning VMs, and much else besides.
|
|
|
|
libguestfs can access nearly any type of filesystem including: all known types
|
|
of Linux filesystem (ext2/3/4, XFS, btrfs etc), any Windows filesystem (VFAT
|
|
and NTFS), any Mac OS X and BSD filesystems, LVM2 volume management, MBR and
|
|
GPT disk partitions, raw disks, qcow2, VirtualBox VDI, VMWare VMDK, CD and DVD
|
|
ISOs, SD cards, and dozens more. libguestfs doesn't need root permissions.
|
|
|
|
All this functionality is available through a convenient shell called
|
|
guestfish, or use virt-rescue to get a rescue shell for fixing unbootable
|
|
virtual machines.
|
|
|
|
%package -n libguestfs0
|
|
Summary: Runtime library of libguestfs
|
|
License: LGPL-2.1
|
|
Group: System/Filesystems
|
|
Requires: %{kvm_binary}
|
|
Requires: qemu >= 2.0
|
|
Requires: qemu-tools
|
|
Requires: supermin >= 5.1.6
|
|
%if %suse_version == 1315
|
|
%if 0%{?is_opensuse} == 0
|
|
Recommends: guestfs-winsupport
|
|
%endif
|
|
%endif
|
|
|
|
%description -n libguestfs0
|
|
Library for libguestfs.
|
|
|
|
libguestfs is a set of tools for accessing and modifying virtual machine (VM)
|
|
disk images. You can use this for viewing and editing files inside guests,
|
|
scripting changes to VMs, monitoring disk used/free statistics, P2V, V2V,
|
|
performing partial backups, cloning VMs, and much else besides.
|
|
|
|
libguestfs can access nearly any type of filesystem including: all known types
|
|
of Linux filesystem (ext2/3/4, XFS, btrfs etc), any Windows filesystem (VFAT
|
|
and NTFS), any Mac OS X and BSD filesystems, LVM2 volume management, MBR and
|
|
GPT disk partitions, raw disks, qcow2, VirtualBox VDI, VMWare VMDK, CD and DVD
|
|
ISOs, SD cards, and dozens more. libguestfs doesn't need root permissions.
|
|
|
|
All this functionality is available through a convenient shell called
|
|
guestfish, or use virt-rescue to get a rescue shell for fixing unbootable
|
|
virtual machines.
|
|
|
|
|
|
%package -n virt-v2v
|
|
Summary: Convert a virtual machine to run on KVM
|
|
License: GPL-2.0
|
|
Group: System/Management
|
|
Requires: libguestfs0 = %{version}
|
|
Requires: qemu-block-ssh
|
|
# Conflicts with the old perl version
|
|
Conflicts: virt-v2v <= 0.9.1
|
|
|
|
%description -n virt-v2v
|
|
virt-v2v is a tool for converting and importing virtual machines to
|
|
libvirt-managed KVM. It can import a variety of guest operating systems
|
|
from libvirt-managed hosts.
|
|
|
|
%if %{with p2v}
|
|
%package -n virt-p2v
|
|
Summary: Convert a physical machine to run on KVM
|
|
License: GPL-2.0
|
|
Group: System/Management
|
|
Requires: gawk
|
|
Requires: virt-v2v = %{version}
|
|
|
|
%description -n virt-p2v
|
|
virt-p2v is a tool for converting physical machines into libvirt-managed KVM machines.
|
|
It can import a variety of guest operating systems from libvirt-managed hosts.
|
|
%endif
|
|
|
|
%prep
|
|
: _ignore_exclusive_arch '%{?_ignore_exclusive_arch}'
|
|
%setup -q -a 789653
|
|
%patch0 -p1
|
|
%patch1 -p1
|
|
%patch2 -p1
|
|
%patch3 -p1
|
|
%patch100 -p1
|
|
|
|
%build
|
|
bison --version
|
|
# [Bug 789653] sles11 perl obsoletes perl-Pod-Simple unconditionally
|
|
export PERLLIB=`echo $PWD/Pod-Simple-*/lib`
|
|
# disable qemu test.
|
|
# If the package is built within kvm the configure test will fail because it starts kvm within kvm
|
|
# With QEMU in environment qemu and kvm packages are not needed at build time.
|
|
# With SUPERMIN and SUPERMIN_HELPER in environment, supermin package is not needed at build time.
|
|
export vmchannel_test=no
|
|
export QEMU="%{kvm_binary}"
|
|
export SUPERMIN=supermin
|
|
export SUPERMIN_HELPER=supermin-helper
|
|
# for configure macro below
|
|
CFLAGS="$RPM_OPT_FLAGS -Wno-unused"
|
|
CXXFLAGS="$RPM_OPT_FLAGS -Wno-unused"
|
|
autoreconf -fi
|
|
|
|
#
|
|
%configure \
|
|
--help || :
|
|
|
|
if python --version && ! pkg-config python
|
|
then
|
|
export PYTHON_LIBS="-lpython`python -c 'import distutils.sysconfig; print (distutils.sysconfig.get_python_version ());'`"
|
|
export PYTHON_CFLAGS="-I`python -c 'import distutils.sysconfig; print (distutils.sysconfig.get_python_inc ());'`"
|
|
export PYTHON_EXT_SUFFIX=.so
|
|
fi
|
|
|
|
#sed -i '1 s@^.*@#!/bin/sh -x@' configure
|
|
%configure \
|
|
--docdir=%{guestfs_docdir} \
|
|
--enable-daemon \
|
|
--enable-install-daemon \
|
|
--with-qemu=$QEMU \
|
|
--without-java \
|
|
--with-supermin-packager-config="$PWD/zypper.priv.conf --use-installed --verbose" \
|
|
--disable-haskell \
|
|
--disable-php \
|
|
%{_configure_fuse} \
|
|
%{_configure_lua} \
|
|
%{_configure_ocaml} \
|
|
%{_configure_perl} \
|
|
%{_configure_python} \
|
|
%{_configure_ruby} \
|
|
--disable-rpath \
|
|
--disable-static
|
|
#Workaround an autotools bug
|
|
make -j1 -C builder index-parse.c
|
|
# 'INSTALLDIRS' ensures that perl libs are installed in the vendor dir instead of the site dir
|
|
make \
|
|
INSTALLDIRS=vendor \
|
|
LD_RUN_PATH= \
|
|
%{?_smp_mflags}
|
|
|
|
%install
|
|
%makeinstall \
|
|
INSTALLDIRS=vendor \
|
|
udevrulesdir=%{udevrulesdir}
|
|
find $RPM_BUILD_ROOT -ls
|
|
mkdir -p $RPM_BUILD_ROOT%{_datadir}/guestfs
|
|
cp -avLt $RPM_BUILD_ROOT%{_datadir}/guestfs \
|
|
%{S:10005} \
|
|
%{S:10004} \
|
|
%{S:10003} \
|
|
%{S:10002} \
|
|
%{S:10001}
|
|
chmod 0755 $RPM_BUILD_ROOT%{_datadir}/guestfs/*
|
|
#remove ocaml bindings files if they are disable via rpm macro
|
|
%if !%{with ocaml_bindings}
|
|
rm -rfv $RPM_BUILD_ROOT%{_libdir}/ocaml
|
|
%endif
|
|
rm -rfv $RPM_BUILD_ROOT%{guestfs_docdir}
|
|
find $RPM_BUILD_ROOT -type f \( \
|
|
-name "virt-list-filesystems" -o -name "virt-list-filesystems.*" -o \
|
|
-name "virt-list-partitions" -o -name "virt-list-partitions.*" -o \
|
|
-name "virt-tar" -o -name "virt-tar.*" \
|
|
\) -print -delete
|
|
%if %{with perl_bindings}
|
|
# Delete empty perl bootstrap files
|
|
find $RPM_BUILD_ROOT -name "*.bs" -size 0c -print -delete
|
|
%perl_process_packlist
|
|
%perl_gen_filelist
|
|
# the macro above packages everything, here only the perl files are desrired
|
|
grep "%perl_vendorarch/" %{name}.files | tee t
|
|
mv t %{name}.files
|
|
%endif
|
|
|
|
%if %{with python_bindings}
|
|
pushd python
|
|
sed -i -e "s:libraries=:library_dirs=['$RPM_BUILD_ROOT/%{_libdir}'], libraries=:" setup.py
|
|
make stamp-extra-files
|
|
# Build needs libguestfs library to be installed
|
|
%python_build
|
|
%python_install
|
|
popd
|
|
%endif
|
|
|
|
#
|
|
find $RPM_BUILD_ROOT -name "*.la" -print -delete
|
|
rm -fv $RPM_BUILD_ROOT/%{_libdir}/*.a
|
|
#
|
|
touch %{name}.lang
|
|
%find_lang %{name}
|
|
%fdupes -s $RPM_BUILD_ROOT
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/tmp/etc/alternatives
|
|
pushd $RPM_BUILD_ROOT/tmp/etc/alternatives
|
|
ln -s /sbin/mount.ntfs-3g mount.ntfs
|
|
popd
|
|
pushd $RPM_BUILD_ROOT/tmp
|
|
tar czf $RPM_BUILD_ROOT/%{_libdir}/guestfs/supermin.d/zz-ntfs-symlink.tar.gz etc
|
|
popd
|
|
rm -rf $RPM_BUILD_ROOT/tmp
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/tmp/usr/bin
|
|
cp %{S:100} $RPM_BUILD_ROOT/tmp/usr/bin
|
|
chmod a+x $RPM_BUILD_ROOT/tmp/usr/bin/*
|
|
pushd $RPM_BUILD_ROOT/tmp
|
|
tar czf $RPM_BUILD_ROOT/%{_libdir}/guestfs/supermin.d/zz-scripts.tar.gz usr
|
|
popd
|
|
rm -rf $RPM_BUILD_ROOT/tmp
|
|
|
|
%if %{with p2v}
|
|
# Remove the kickstart files from p2v package
|
|
rm $RPM_BUILD_ROOT/%{_datadir}/virt-p2v/p2v.ks.in
|
|
%endif
|
|
|
|
%clean
|
|
rm -rf $RPM_BUILD_ROOT
|
|
|
|
%post -n libguestfs0 -p /sbin/ldconfig
|
|
%postun -n libguestfs0 -p /sbin/ldconfig
|
|
|
|
%files test
|
|
%defattr(-,root,root)
|
|
%{_datadir}/guestfs
|
|
|
|
%files -n guestfs-data
|
|
%defattr(-,root,root)
|
|
%{_libdir}/guestfs
|
|
|
|
%if %{with ocaml_bindings}
|
|
%files -n ocaml-libguestfs
|
|
%defattr(-,root,root)
|
|
%dir %{_libdir}/ocaml
|
|
%dir %{_libdir}/ocaml/guestfs
|
|
%{_libdir}/ocaml/guestfs/META
|
|
%{_libdir}/ocaml/guestfs/*.cmi
|
|
%{_libdir}/ocaml/guestfs/*.cma
|
|
%{_libdir}/ocaml/stublibs
|
|
|
|
%files -n ocaml-libguestfs-devel
|
|
%defattr(-,root,root)
|
|
%dir %{_libdir}/ocaml
|
|
%dir %{_libdir}/ocaml/guestfs
|
|
%{_libdir}/ocaml/guestfs/*.a
|
|
%if %{ocaml_native_compiler}
|
|
%{_libdir}/ocaml/guestfs/*.cmx
|
|
%{_libdir}/ocaml/guestfs/*.cmxa
|
|
%endif
|
|
%{_libdir}/ocaml/guestfs/*.mli
|
|
%endif
|
|
#
|
|
%if %{with lua_bindings}
|
|
%files -n lua-libguestfs
|
|
%defattr(-,root,root)
|
|
%{_libdir}/lua
|
|
%endif
|
|
#
|
|
%if %{with perl_bindings}
|
|
%post -n perl-Sys-Guestfs -p /sbin/ldconfig
|
|
|
|
%postun -n perl-Sys-Guestfs -p /sbin/ldconfig
|
|
|
|
%files -n perl-Sys-Guestfs -f %{name}.files
|
|
%defattr(-,root,root)
|
|
%endif
|
|
#
|
|
%if %{with python_bindings}
|
|
%files -n python2-libguestfs
|
|
%defattr(-,root,root)
|
|
%{python2_sitearch}/*
|
|
|
|
%files -n python3-libguestfs
|
|
%defattr(-,root,root)
|
|
%{python3_sitearch}/*
|
|
%endif
|
|
#
|
|
%if %{with ruby_bindings}
|
|
%files -n rubygem-libguestfs
|
|
%defattr(-,root,root)
|
|
%{_libdir}/ruby
|
|
%endif
|
|
|
|
%files -n libguestfs0
|
|
%defattr(-,root,root)
|
|
%doc COPYING.LIB
|
|
%{_libdir}/*.so.*
|
|
|
|
%files devel
|
|
%defattr(-,root,root)
|
|
%{_libdir}/*.so
|
|
%{_libdir}/pkgconfig/*
|
|
%{_includedir}/guestfs.h
|
|
%{_includedir}/guestfs-gobject
|
|
%{_includedir}/guestfs-gobject.h
|
|
%{_datadir}/gtk-doc/html/guestfs
|
|
%{_mandir}/man3/*
|
|
|
|
%files -n guestfsd
|
|
%defattr(-,root,root)
|
|
%{udevrulesdir}
|
|
%{_sbindir}/guestfsd
|
|
%{_mandir}/man8/*
|
|
|
|
%files -n guestfs-tools -f %{name}.lang
|
|
%defattr(-,root,root)
|
|
%doc COPYING
|
|
%{_sbindir}/libguestfs-make-fixed-appliance
|
|
%{_bindir}/*
|
|
%exclude %{_bindir}/virt-v2v
|
|
%exclude %{_bindir}/virt-p2v-*
|
|
%config(noreplace) /etc/libguestfs-tools.conf
|
|
/etc/virt-builder
|
|
%dir /etc/xdg/virt-builder
|
|
%dir /etc/xdg/virt-builder/repos.d
|
|
%config /etc/xdg/virt-builder/repos.d/*
|
|
%if %{with bash_completion}
|
|
%{_datadir}/bash-completion
|
|
%exclude %{_datadir}/bash-completion/*/virt-v2v
|
|
%endif
|
|
%{_mandir}/man1/*
|
|
%exclude %{_mandir}/man1/virt-v2v.*
|
|
%exclude %{_mandir}/man1/virt-p2v*
|
|
%{_mandir}/man5/*
|
|
|
|
%files -n virt-v2v
|
|
%defattr(-,root,root)
|
|
%{_bindir}/virt-v2v
|
|
%{_datadir}/bash-completion/*/virt-v2v
|
|
%{_mandir}/man1/virt-v2v.*
|
|
|
|
%if %{with p2v}
|
|
%files -n virt-p2v
|
|
%defattr(-,root,root)
|
|
%{_libdir}/virt-p2v
|
|
%{_datadir}/virt-p2v
|
|
%{_bindir}/virt-p2v-make-kiwi
|
|
%{_bindir}/virt-p2v-make-disk
|
|
%{_mandir}/man1/virt-p2v-make-kiwi*
|
|
%{_mandir}/man1/virt-p2v-make-disk*
|
|
%endif
|
|
|
|
%changelog
|