The "contrib" directory contains shell scripts and a RHEL-5 patch for
building (and testing) the p2v ISO on RHEL major releases 5 through 7.
Recently, we've resumed the P2V ISO preparation by adopting a Fedora
35+-based procedure, with the long term plan being the Image Builder
service on RHEL-9+. Theferore the "contrib" directory is now obsolete;
remove it.
(The "contrib/build-p2v-iso.sh" script "blocks my way" because it
references gtk2-devel, and in this series I'd like to remove gtk2 support
from virt-p2v. We shouldn't be updating dead code.)
Checked with "make dist maintainer-check-extra-dist".
Signed-off-by: Laszlo Ersek <lersek(a)redhat.com>
---
Makefile.am | 4 -
contrib/aux-scripts/do-build.sh | 196
--------------------
contrib/build-p2v-iso.sh | 154
---------------
contrib/patches/0001-RHEL-5-ONLY-DISABLE-AUTOMATIC-REMOTE-PORT-ALLOCATION.patch | 54
------
contrib/test-p2v-iso.sh | 62
-------
5 files changed, 470 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 4a47a97251e9..d659ce65c06d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -29,10 +29,6 @@ EXTRA_DIST = \
$(TESTS) $(LIBGUESTFS_TESTS) $(SLOW_TESTS) \
.gitignore \
AUTHORS \
- contrib/aux-scripts/do-build.sh \
- contrib/build-p2v-iso.sh \
- contrib/patches/0001-RHEL-5-ONLY-DISABLE-AUTOMATIC-REMOTE-PORT-ALLOCATION.patch \
- contrib/test-p2v-iso.sh \
dependencies.m4 \
generate-p2v-authors.pl \
generate-p2v-config.pl \
diff --git a/contrib/aux-scripts/do-build.sh b/contrib/aux-scripts/do-build.sh
deleted file mode 100644
index 4a0aac840df0..000000000000
--- a/contrib/aux-scripts/do-build.sh
+++ /dev/null
@@ -1,196 +0,0 @@
-#!/bin/bash -
-# Auxiliary script for building virt-p2v ISO.
-# Copyright (C) 2017 Red Hat Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <
https://www.gnu.org/licenses/>.
-
-# See build-p2v-iso.sh
-
-set -e
-set -x
-
-# Make sure we're in the virtual environment, and refuse to run otherwise.
-if [ ! -f /var/tmp/livecd ]; then
- echo "$0: do not run this script directly"
- exit 1
-fi
-
-# If the script exits for any reason (including success) reboot. This
-# in fact powers off the virtual machine because we are using
-# qemu -no-reboot.
-trap reboot INT QUIT TERM EXIT ERR
-
-cd /var/tmp
-
-osversion=`cat osversion`
-livecd=`cat livecd`
-source ./proxy
-prefix=`rpm --eval '%_prefix'`
-libdir=`rpm --eval '%_libdir'`
-sysconfdir=`rpm --eval '%_sysconfdir'`
-
-# Build virt-p2v from libguestfs sources.
-# We have to start from a tarball because at least RHEL 5 autotools
-# isn't sufficiently new to run autoreconf.
-zcat libguestfs.tar.gz | tar xf -
-pushd libguestfs-*
-
-# Various hacks for different versions of RHEL.
-case $osversion in
- rhel-5.*|centos-5.*)
- # This just forces configure to ignore these missing dependencies.
- export LIBTINFO_CFLAGS=-D_GNU_SOURCE
- export LIBTINFO_LIBS=-lncurses
- export JANSSON_CFLAGS=-D_GNU_SOURCE
- export JANSSON_LIBS=-ljansson
- # Remove some unsupported flags that the configure script hard codes.
- sed -i -e 's/-fno-strict-overflow//' configure
- sed -i -e 's/-Wno-strict-overflow//' configure
- # Apply some RHEL 5 only patches.
- patch -p1 <
../patches/0001-RHEL-5-ONLY-DISABLE-AUTOMATIC-REMOTE-PORT-ALLOCATION.patch
- ;;
- rhel-6.*|centos-6.*)
- # This just forces configure to ignore these missing dependencies.
- export LIBTINFO_CFLAGS=-D_GNU_SOURCE
- export LIBTINFO_LIBS=-lncurses
- export JANSSON_CFLAGS=-D_GNU_SOURCE
- export JANSSON_LIBS=-ljansson
- ;;
-esac
-
-export vmchannel_test=no
-./configure \
- --prefix $prefix \
- --libdir $libdir \
- --sysconfdir $sysconfdir \
- --disable-static \
- --disable-appliance \
- --disable-daemon \
- --disable-lua \
- --disable-ocaml \
- --disable-perl \
- --disable-php \
- --disable-python \
- --disable-ruby \
- --with-qemu=no
-# We only need to build a handful of directories to get virt-p2v.
-make -C generator
-make -C gnulib/lib
-make -C common/utils
-make -C common/miniexpect
-make -C p2v virt-p2v virt-p2v.xz dependencies.redhat
-make run
-
-# Check virt-p2v was built and runs.
-./run ./p2v/virt-p2v --version
-./run ./p2v/virt-p2v-make-kickstart --version
-
-# Create the kickstart file.
-if [ "x$http_proxy" != "x" ]; then
proxy="--proxy=$http_proxy"; fi
-./run ./p2v/virt-p2v-make-kickstart -o /var/tmp/p2v.ks $osversion $proxy
-
-popd
-
-# More hacks for different versions of RHEL.
-case $osversion in
- rhel-5.*|centos-5.*)
- # RHEL 5 livecd-tools is broken with syslinux, this fixes it:
- sed -i -e 's,/usr/lib/syslinux/,/usr/share/syslinux/,g'\
- /usr/lib/python2.4/site-packages/imgcreate/live.py
- # livecd-tools cannot parse certain aspects of the kickstart:
- sed -i \
- -e 's/--plaintext//g' \
- -e 's/^firewall.*//g' \
- -e 's/^%end.*//g' \
- p2v.ks
- # Remove some packages which don't exist on RHEL 5:
- sed -i \
- -e 's,^dracut-live.*,,g' \
- -e 's,^dejavu-.*,,g' \
- -e 's,^mesa-dri-drivers.*,,g' \
- -e 's,^network-manager-applet.*,,g' \
- -e 's,^nm-connection-editor.*,,g' \
- -e 's,^nbdkit-server.*,,g' \
- -e 's,^nbdkit-file-plugin.*,,g' \
- -e '/^net-tools/a syslinux' \
- p2v.ks
- # Remove systemctl lines, doesn't exist on RHEL 5.
- sed -i \
- -e 's/^\(systemctl.*\)/#\1/g' \
- p2v.ks
- ;;
- rhel-6.*|centos-6.*)
- # Remove some packages which don't exist on RHEL 6:
- sed -i \
- -e 's,^dracut-live.*,,g' \
- -e 's,^firewalld.*,,g' \
- -e 's,^network-manager-applet.*,,g' \
- -e 's,^nm-connection-editor.*,,g' \
- -e 's,^nbdkit-server.*,,g' \
- -e 's,^nbdkit-file-plugin.*,,g' \
- p2v.ks
- # Remove systemctl lines, doesn't exist on RHEL 5.
- sed -i \
- -e 's/^\(systemctl.*\)/#\1/g' \
- p2v.ks
- ;;
-esac
-
-# Build nbdkit
-zcat nbdkit.tar.gz | tar xf -
-pushd nbdkit-*
-./configure \
- CFLAGS="-D_GNU_SOURCE" \
- --prefix $prefix \
- --libdir $libdir \
- --sysconfdir $sysconfdir \
- --without-liblzma
-make
-cp src/nbdkit ..
-cp plugins/file/.libs/nbdkit-file-plugin.so ..
-popd
-gzip -c nbdkit > nbdkit.gz
-gzip -c nbdkit-file-plugin.so > nbdkit-file-plugin.so.gz
-base64 nbdkit.gz > nbdkit.gz.b64
-base64 nbdkit-file-plugin.so.gz > nbdkit-file-plugin.so.gz.b64
-
-# Add nbdkit binaries to the kickstart.
-echo > fragment.ks
-echo '#' `md5sum nbdkit` >> fragment.ks
-echo 'base64 -d -i <<EOF | gzip -cd > /usr/bin/nbdkit' >>
fragment.ks
-cat nbdkit.gz.b64 >> fragment.ks
-echo >> fragment.ks
-echo EOF >> fragment.ks
-echo 'chmod 0755 /usr/bin/nbdkit' >> fragment.ks
-echo >> fragment.ks
-
-echo '#' `md5sum nbdkit-file-plugin.so` >> fragment.ks
-echo 'mkdir -p' $libdir/nbdkit/plugins >> fragment.ks
-echo 'base64 -d -i <<EOF | gzip -cd >'
$libdir/nbdkit/plugins/nbdkit-file-plugin.so >> fragment.ks
-cat nbdkit-file-plugin.so.gz.b64 >> fragment.ks
-echo >> fragment.ks
-echo EOF >> fragment.ks
-echo 'chmod 0755' $libdir/nbdkit/plugins/nbdkit-file-plugin.so >>
fragment.ks
-echo >> fragment.ks
-
-sed -i -e '/^chmod.*\/usr\/bin\/virt-p2v$/ r fragment.ks' p2v.ks
-
-# Run livecd-creator to make the live CD. The strange redirect works
-# around a bug in RHEL 5's livecd-tools: "/sbin/mksquashfs: invalid
-# option" is printed if the output is redirected to a file
-# (
https://bugs.centos.org/bug_view_page.php?bug_id=3738)
-livecd-creator -c p2v.ks > `tty` 2>&1
-
-# Move the live CD to the final filename.
-mv livecd-*.iso $livecd
diff --git a/contrib/build-p2v-iso.sh b/contrib/build-p2v-iso.sh
deleted file mode 100755
index c8a456eccb59..000000000000
--- a/contrib/build-p2v-iso.sh
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/bin/bash -
-# Build virt-p2v ISO for RHEL 5/6/7.
-# Copyright (C) 2017 Red Hat Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <
https://www.gnu.org/licenses/>.
-
-# This script is used to build the virt-p2v ISO on RHEL 5/6/7,
-# for 32 bit (i686) and 64 bit (x86-64).
-#
-# This script is *not* used to build the official RHEL 7 virt-p2v ISO
-# for Red Hat customers. However it is used to build alternate ISOs
-# which can optionally be used by customers who need older RHEL
-# (eg. for proprietary FakeRAID drivers), or have 32 bit physical
-# machines that they wish to virtualize.
-#
-# The virt-p2v ISOs built by this script are hosted at:
-#
http://oirase.annexia.org/virt-p2v/
-
-set -e
-
-usage ()
-{
- echo ' libguestfs and nbdkit tarballs'
- echo ' (http URLs may also be used here)'
- echo ' |'
- echo './build-p2v-iso.sh file:///path/to/libguestfs-1.XX.YY.tar.gz \'
- echo ' file:///path/to/nbdkit-1.XX.YY.tar.gz \'
- echo ' rhel-5.11 i686'
- echo ' | |'
- echo ' | `--- architecture (i686 or x86_64)'
- echo ' `---- version of RHEL (5.x or 6.x tested)'
- echo
- echo 'Note this downloads the libguestfs tarball from upstream, it'
- echo 'does not use libguestfs from the current directory.'
- echo
- echo 'Minimum versions of: libguestfs = 1.35.22'
- echo ' nbdkit = 1.1.13'
- echo
- echo 'You should run the script on a Fedora (or recent Linux) host.'
- echo 'It uses virt-builder to create the RHEL environment'
- exit 0
-}
-
-if [ $# -ne 4 ]; then
- usage
-fi
-
-tmpdir="$(mktemp -d)"
-cleanup ()
-{
- rm -rf "$tmpdir"
-}
-trap cleanup INT QUIT TERM EXIT ERR
-
-libguestfs_tarball=$1
-nbdkit_tarball=$2
-osversion=$3
-arch=$4
-
-# Get the path to the auxiliary script.
-d="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd
)"
-if [ ! -d "$d/aux-scripts" ]; then
- echo "$0: error: cannot locate auxiliary scripts"
- exit 1
-fi
-
-# Build the list of packages needed for the build environment.
-pkgs=augeas-devel,bison,coreutils,cpio,file-devel,flex,gcc,gperf,gtk2-devel,libxml2-devel,livecd-tools,mkisofs,ncurses-devel,patch,perl-Pod-Man,perl-Pod-Simple,pcre2-devel,/usr/bin/pod2text,syslinux,syslinux-extlinux,xz,xz-devel
-
-for f in `cat $d/../../p2v/dependencies.redhat`; do
- pkgs="$pkgs,$f"
-done
-
-# Various hacks for different versions of RHEL.
-if=virtio
-netdev=virtio-net-pci
-declare -a epel
-case $osversion in
- rhel-5.*|centos-5.*)
- if=ide
- netdev=rtl8139
- # RHEL 5 yum cannot download a package.
- curl -o $tmpdir/epel-release.rpm
https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
- epel[0]="--upload"
- epel[1]="$tmpdir/epel-release.rpm:/var/tmp"
- # RHEL 5 i686 template has a broken RPM DB, so rebuild it.
- epel[2]="--run-command"
- epel[3]="rm -f /var/lib/rpm/__db*; rpm -vv --rebuilddb"
- epel[4]="--run-command"
- epel[5]="yum install -y --nogpgcheck /var/tmp/epel-release.rpm"
- ;;
- rhel-6.*|centos-6.*)
- epel[0]="--run-command"
- epel[1]="yum install -y --nogpgcheck
https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm"
- pkgs="$pkgs,jansson-devel"
- ;;
- rhel-7.*|centos-7.*)
- epel[0]="--run-command"
- epel[1]="yum install -y --nogpgcheck
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm"
- pkgs="$pkgs,jansson-devel"
- ;;
-esac
-
-# Download libguestfs and nbdkit sources.
-curl -o $tmpdir/libguestfs.tar.gz $libguestfs_tarball
-curl -o $tmpdir/nbdkit.tar.gz $nbdkit_tarball
-
-# Write a proxy file for the guest environment.
-echo "export http_proxy=$http_proxy" >> $tmpdir/proxy
-echo "export https_proxy=$https_proxy" >> $tmpdir/proxy
-echo "export ftp_proxy=$ftp_proxy" >> $tmpdir/proxy
-
-# Build the temporary guest RHEL environment.
-disk=$tmpdir/tmp-$osversion.img
-livecd=virt-p2v-livecd-$osversion-$arch-`date +"%Y%m%d%H%M"`.iso
-virt-builder $osversion --arch $arch \
- --size 20G --output $disk \
- "${epel[@]}" \
- --install "$pkgs" \
- --upload $tmpdir/libguestfs.tar.gz:/var/tmp \
- --upload $tmpdir/nbdkit.tar.gz:/var/tmp \
- --copy-in $d/patches:/var/tmp \
- --write /var/tmp/osversion:$osversion \
- --write /var/tmp/livecd:$livecd \
- --upload $tmpdir/proxy:/var/tmp/proxy \
- --firstboot $d/aux-scripts/do-build.sh \
- --selinux-relabel
-
-# Run the guest.
-qemu-system-x86_64 -no-user-config -nodefaults -nographic \
- -no-reboot \
- -machine accel=kvm:tcg \
- -cpu host \
- -m 4096 \
- -drive file=$disk,format=raw,if=$if \
- -netdev user,id=usernet,net=169.254.0.0/16 \
- -device $netdev,netdev=usernet \
- -serial stdio
-
-# Did we get any output from the auxiliary script?
-# (This command will fail if not)
-guestfish --ro -a $disk -i download /var/tmp/$livecd $livecd
-ls -lh $livecd
diff --git
a/contrib/patches/0001-RHEL-5-ONLY-DISABLE-AUTOMATIC-REMOTE-PORT-ALLOCATION.patch
b/contrib/patches/0001-RHEL-5-ONLY-DISABLE-AUTOMATIC-REMOTE-PORT-ALLOCATION.patch
deleted file mode 100644
index a4efb38bf08f..000000000000
--- a/contrib/patches/0001-RHEL-5-ONLY-DISABLE-AUTOMATIC-REMOTE-PORT-ALLOCATION.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 28dd464c8e78f241622d142671a61a75bf5d758e Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones(a)redhat.com>
-Date: Sat, 21 Jan 2017 05:30:40 -0500
-Subject: [PATCH 1/2] RHEL 5 ONLY DISABLE AUTOMATIC REMOTE PORT ALLOCATION
-
----
- p2v/ssh.c | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
-
-diff --git a/p2v/ssh.c b/p2v/ssh.c
-index 8beaf74..919f2df 100644
---- a/p2v/ssh.c
-+++ b/p2v/ssh.c
-@@ -1044,16 +1044,28 @@ open_data_connection (struct config *config,
- "-N",
- NULL
- };
-+#if 0
- CLEANUP_FREE char *port_str = NULL;
- const int ovecsize = 12;
- int ovector[ovecsize];
-+#endif
-
-- snprintf (remote_arg, sizeof remote_arg, "0:%s:%d", local_ipaddr,
local_port);
-+ /* RHEL 5 hack: ssh does not print the "Allocated port ..." string,
-+ * so we cannot find the remotely allocated port. Instead just
-+ * assign a random port and hope for the best.
-+ */
-+ static int next_remote_port = 58123;
-+
-+ snprintf (remote_arg, sizeof remote_arg, "%d:%s:%d",
-+ next_remote_port, local_ipaddr, local_port);
-+ *remote_port = next_remote_port;
-+ next_remote_port++;
-
- h = start_ssh (0, config, (char **) extra_args, 0);
- if (h == NULL)
- return NULL;
-
-+#if 0
- switch (mexp_expect (h,
- (mexp_regexp[]) {
- { 100, .re = portfwd_re },
-@@ -1094,6 +1106,7 @@ open_data_connection (struct config *config,
- mexp_close (h);
- return NULL;
- }
-+#endif
-
- return h;
- }
---
-1.8.2.3
-
diff --git a/contrib/test-p2v-iso.sh b/contrib/test-p2v-iso.sh
deleted file mode 100755
index 9ac4c6a301cb..000000000000
--- a/contrib/test-p2v-iso.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash -
-# Test virt-p2v ISO for RHEL 5/6/7.
-# Copyright (C) 2017 Red Hat Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <
https://www.gnu.org/licenses/>.
-
-# Once you have built a virt-p2v ISO (see build-p2v-iso.sh), you
-# can interactively test it using this script.
-
-set -e
-
-usage ()
-{
- echo './test-p2v-iso.sh virt-p2v-livecd-....iso'
- exit 0
-}
-
-if [ $# -ne 1 ]; then
- usage
-fi
-
-tmpdir="$(mktemp -d)"
-cleanup ()
-{
- rm -rf "$tmpdir"
-}
-trap cleanup INT QUIT TERM EXIT ERR
-
-iso=$1
-if [ ! -f "$iso" ]; then
- echo "$iso: file not found"
- exit 1
-fi
-
-# Build a temporary guest to test.
-disk=$tmpdir/guest.img
-virt-builder rhel-6.8 --output $disk
-
-# Boot the guest as if running with virt-p2v ISO in the CD drive.
-qemu-system-x86_64 -no-user-config -nodefaults \
- -no-reboot \
- -machine accel=kvm:tcg \
- -cpu host \
- -m 4096 \
- -display gtk \
- -vga std \
- -drive file=$disk,format=raw,if=ide \
- -cdrom $iso \
- -netdev user,id=usernet,net=169.254.0.0/16 \
- -device rtl8139,netdev=usernet \
- -boot d