aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtemis Everfree <artemis@artemis.sh>2024-07-20 04:11:58 -0700
committerArtemis Everfree <artemis@artemis.sh>2024-07-20 04:12:22 -0700
commitb6bee48d7cf20a8a04b7ac7d0fb16a4c1f90c860 (patch)
tree3e4054271394aaa083f6ae8039c7c1005c51a063 /app-emulation
parentmedia-video/obs-vkcapture: drop 1.4.9 (diff)
downloadguru-b6bee48d7cf20a8a04b7ac7d0fb16a4c1f90c860.tar.gz
guru-b6bee48d7cf20a8a04b7ac7d0fb16a4c1f90c860.tar.bz2
guru-b6bee48d7cf20a8a04b7ac7d0fb16a4c1f90c860.zip
app-emulation/cloud-utils: new package, add 0.33
Signed-off-by: Artemis Everfree <artemis@artemis.sh>
Diffstat (limited to 'app-emulation')
-rw-r--r--app-emulation/cloud-utils/Manifest1
-rw-r--r--app-emulation/cloud-utils/cloud-utils-0.33.ebuild96
-rw-r--r--app-emulation/cloud-utils/files/use-mkisofs.patch27
-rw-r--r--app-emulation/cloud-utils/metadata.xml15
4 files changed, 139 insertions, 0 deletions
diff --git a/app-emulation/cloud-utils/Manifest b/app-emulation/cloud-utils/Manifest
new file mode 100644
index 000000000..4cf123666
--- /dev/null
+++ b/app-emulation/cloud-utils/Manifest
@@ -0,0 +1 @@
+DIST cloud-utils-0.33.tar.gz 58817 BLAKE2B 92c42844a7c1f826d43c9a715e56d05c77d7b37c721079165ffb008205e412327e39ecba5d2755c84e2d80e4ee752ef95ce099da25625010327f957e419195d7 SHA512 1e58e085bde295d4adf8ff219a7f22382fadff798f5398f3e2a62cb0926c740babba76ea6326f6042b46dbdeb12c15d1e080fb9890b10482e31c3acb64014c95
diff --git a/app-emulation/cloud-utils/cloud-utils-0.33.ebuild b/app-emulation/cloud-utils/cloud-utils-0.33.ebuild
new file mode 100644
index 000000000..513b05864
--- /dev/null
+++ b/app-emulation/cloud-utils/cloud-utils-0.33.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..13} )
+inherit python-single-r1
+
+DESCRIPTION="Useful set of utilities for interacting with a cloud."
+HOMEPAGE="https://github.com/canonical/cloud-utils"
+SRC_URI="https://github.com/canonical/cloud-utils/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# image-utils vs guest-utils is a distinction that does not actually exist
+# upstream, but is rather one that arch linux makes. alpine goes even more
+# fine-grained, creating a single package for each individual utility. I ain't
+# maintaining all that, but I do think the distinction arch makes is worthwhile.
+#
+# The difference is this: is the tool something you would want to use within a
+# cloud VM, or use outside of a cloud VM to manipulate your VM's disk image?
+# This is useful, because the image manipulation scripts need qemu-img and
+# cdrtools around, which you might not want to install onto a VM just to run
+# something like `ec2metadata` or `growpart`
+IUSE="+guest-utils +image-utils"
+
+REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
+ || ( guest-utils image-utils )
+"
+
+# cloud-utils also provides its own growpart, which is I think different from
+# sys-fs/growpart.
+RDEPEND="
+ ${PYTHON_DEPS}
+ guest-utils? (
+ !sys-fs/growpart
+ )
+ image-utils? (
+ app-cdr/cdrtools
+ app-emulation/qemu
+ app-misc/ca-certificates
+ net-misc/wget
+ sys-apps/util-linux
+ sys-fs/dosfstools
+ sys-fs/e2fsprogs
+ sys-fs/mtools
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/use-mkisofs.patch
+)
+
+src_install() {
+ # This package really is just a pile of scripts, with a simple Makefile that
+ # installs them. We can implement the USE flags most easily by ignoring the
+ # Makefile and installing the files ourselves.
+
+ local wanted_bin=()
+ local wanted_man=()
+
+ if use 'guest-utils'; then
+ wanted_bin+=(
+ bin/ec2metadata
+ bin/growpart
+ bin/vcs-run
+ )
+ wanted_man+=(
+ man/growpart.1
+ )
+ fi
+
+ if use 'image-utils'; then
+ wanted_bin+=(
+ bin/cloud-localds
+ bin/mount-image-callback
+ bin/resize-part-image
+ bin/write-mime-multipart
+ )
+ wanted_man+=(
+ man/cloud-localds.1
+ man/resize-part-image.1
+ man/write-mime-multipart.1
+ )
+ fi
+
+ local bindir="${D}/usr/bin"
+ local mandir="${D}/usr/share/man/man1"
+
+ mkdir -p "${bindir}" "${mandir}" || die
+ install "${wanted_bin[@]}" "${bindir}" || die
+ install "${wanted_man[@]}" "${mandir}" --mode=0644 || die
+}
diff --git a/app-emulation/cloud-utils/files/use-mkisofs.patch b/app-emulation/cloud-utils/files/use-mkisofs.patch
new file mode 100644
index 000000000..9308a1cdb
--- /dev/null
+++ b/app-emulation/cloud-utils/files/use-mkisofs.patch
@@ -0,0 +1,27 @@
+diff --git a/bin/cloud-localds b/bin/cloud-localds
+index a9ddc74..50bc46e 100755
+--- a/bin/cloud-localds
++++ b/bin/cloud-localds
+@@ -146,8 +146,8 @@ case "$filesystem" in
+ fail "missing 'mcopy'. Required for --filesystem=vfat."
+ ;;
+ iso9660)
+- has_cmd genisoimage ||
+- fail "missing 'genisoimage'. Required for --filesystem=iso9660."
++ has_cmd mkisofs ||
++ fail "missing 'mkisofs'. Required for --filesystem=iso9660."
+ ;;
+ *) fail "unknown filesystem $filesystem";;
+ esac
+@@ -232,9 +232,9 @@ case "$filesystem" in
+ fail "failed to create tarball with $path"
+ ;;
+ iso9660)
+- genisoimage -output "$img" -volid cidata \
++ mkisofs -output "$img" -volid cidata \
+ -joliet -rock "${files[@]}" > "$TEMP_D/err" 2>&1 ||
+- { cat "$TEMP_D/err" 1>&2; fail "failed to genisoimage"; }
++ { cat "$TEMP_D/err" 1>&2; fail "failed to mkisofs"; }
+ ;;
+ vfat)
+ truncate -s 128K "$img" || fail "failed truncate image"
diff --git a/app-emulation/cloud-utils/metadata.xml b/app-emulation/cloud-utils/metadata.xml
new file mode 100644
index 000000000..b189c910f
--- /dev/null
+++ b/app-emulation/cloud-utils/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>artemis@artemis.sh</email>
+ <name>Artemis Everfree</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">canonical/cloud-utils</remote-id>
+ </upstream>
+ <use>
+ <flag name="guest-utils">Installs utilities useful within a guest VM</flag>
+ <flag name="image-utils">Installs utilities useful for manipulating guest images from outside a guest VM</flag>
+ </use>
+</pkgmetadata>