[Libguestfs] [p2v PATCH 2/7] contrib/: remove directory

Laszlo Ersek
2022-09-26T08:18:07Z

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 at 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 at 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