git: a46960b13509 - main - net/cloud-init-devel: [New port] Customize cloud instances

From: Joseph Mingrone <jrm_at_FreeBSD.org>
Date: Fri, 14 Oct 2022 19:29:05 UTC
The branch main has been updated by jrm:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a46960b1350961e89ff03494d21f6616b7803e4f

commit a46960b1350961e89ff03494d21f6616b7803e4f
Author:     Mina Galić <me+git@igalic.co>
AuthorDate: 2022-09-14 21:16:04 +0000
Commit:     Joseph Mingrone <jrm@FreeBSD.org>
CommitDate: 2022-10-14 19:28:46 +0000

    net/cloud-init-devel: [New port] Customize cloud instances
    
    Cloud-init is the industry standard multi-distribution method for
    cross-platform cloud instance initialization. It is supported across all
    major public cloud providers, provisioning systems for private cloud
    infrastructure, and bare-metal installations. This is the development
    version, it follows the git HEAD.
    
    WWW: https://cloud-init.io/
    
    PR:             266847
    Sponsored by:   The FreeBSD Foundation
    
    Co-authored-by: Joseph Mingrone <jrm@FreeBSD.org>
---
 net/Makefile                                       |  1 +
 net/cloud-init-devel/Makefile                      | 63 ++++++++++++++++++++++
 net/cloud-init-devel/distinfo                      |  3 ++
 .../files/patch-cloudinit_settings.py              | 20 +++++++
 .../files/patch-config_cloud.cfg.d_99__freebsd.cfg |  5 ++
 net/cloud-init-devel/files/patch-setup.py          | 11 ++++
 net/cloud-init-devel/pkg-descr                     |  4 ++
 net/cloud-init-devel/pkg-message                   | 11 ++++
 8 files changed, 118 insertions(+)

diff --git a/net/Makefile b/net/Makefile
index 1c0081d9180f..44a1130e2c68 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -80,6 +80,7 @@
     SUBDIR += cjdns
     SUBDIR += clash
     SUBDIR += cloud-init
+    SUBDIR += cloud-init-devel
     SUBDIR += cloudflared
     SUBDIR += cloudquery
     SUBDIR += clusterit
diff --git a/net/cloud-init-devel/Makefile b/net/cloud-init-devel/Makefile
new file mode 100644
index 000000000000..856dce2b734d
--- /dev/null
+++ b/net/cloud-init-devel/Makefile
@@ -0,0 +1,63 @@
+PORTNAME=	cloud-init
+DISTVERSION=	22.3-73
+DISTVERSIONSUFFIX=	-gee8fa37a
+CATEGORIES=	net python
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+PKGNAMESUFFIX=	-devel
+
+MAINTAINER=	me+FreeBSD@igalic.co
+COMMENT=	Init scripts for use on cloud images, development version
+WWW=		https://cloud-init.io/
+
+LICENSE=	APACHE20 GPLv3
+LICENSE_COMB=	dual
+LICENSE_FILE_APACHE20=	${WRKSRC}/LICENSE-Apache2.0
+LICENSE_FILE_GPLv3=	${WRKSRC}/LICENSE-GPLv3
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}boto>0:devel/py-boto@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}configobj>0:devel/py-configobj@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}jsonpatch>0:devel/py-jsonpatch@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}jsonpointer>0:devel/py-jsonpointer@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}jsonschema>0:devel/py-jsonschema@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}netifaces>0:net/py-netifaces@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}oauthlib>0:security/py-oauthlib@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pyserial>0:comms/py-pyserial@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}yaml>0:devel/py-yaml@${PY_FLAVOR} \
+		sudo>0:security/sudo
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pytest-cov>=0:devel/py-pytest-cov@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pytest-mock>=0:devel/py-pytest-mock@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}responses>=0:devel/py-responses@${PY_FLAVOR} \
+		bash:shells/bash
+
+USES=		python:3.6+ shebangfix
+USE_GITHUB=	yes
+GH_ACCOUNT=	canonical
+USE_PYTHON=	autoplist distutils
+PYDISTUTILS_INSTALLARGS+=	"--init-system=sysvinit_freebsd"
+
+SHEBANG_FILES=	tools/hook-hotplug tools/read-dependencies tools/read-version \
+		tools/validate-yaml.py
+
+TEST_ENV=	${MAKE_ENV} \
+		PYTHON=${PYTHON_VERSION}
+TEST_TARGET=	check
+
+# Conflicts
+CONFLICTS_INSTALL=	cloud-init
+
+# Standard bsd.port.mk variables
+ETCDIR=		${PREFIX}/etc/cloud
+
+NO_ARCH=	yes
+
+post-patch:
+	${REINPLACE_CMD} -e 's|%%PREFIX%%|${STAGEDIR}${PREFIX}|g' ${WRKSRC}/setup.py
+	${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' ${WRKSRC}/cloudinit/settings.py
+	${RM} ${WRKSRC}/config/cloud.cfg.d/99_freebsd.cfg.orig
+
+post-build:
+	${MV} ${WRKSRC}/config/cloud.cfg.d/05_logging.cfg ${WRKSRC}/config/cloud.cfg.d/05_logging.cfg.sample
+
+.include <bsd.port.mk>
diff --git a/net/cloud-init-devel/distinfo b/net/cloud-init-devel/distinfo
new file mode 100644
index 000000000000..eb1a0ad0c524
--- /dev/null
+++ b/net/cloud-init-devel/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1665773854
+SHA256 (canonical-cloud-init-22.3-73-gee8fa37a_GH0.tar.gz) = 9b6906753e2ef80e24d38c844da4ee7ec479578267f5efa42a1fe159cc8249dd
+SIZE (canonical-cloud-init-22.3-73-gee8fa37a_GH0.tar.gz) = 1450143
diff --git a/net/cloud-init-devel/files/patch-cloudinit_settings.py b/net/cloud-init-devel/files/patch-cloudinit_settings.py
new file mode 100644
index 000000000000..d7ca2bd87f2c
--- /dev/null
+++ b/net/cloud-init-devel/files/patch-cloudinit_settings.py
@@ -0,0 +1,20 @@
+--- cloudinit/settings.py.orig	2021-03-17 15:43:42 UTC
++++ cloudinit/settings.py
+@@ -12,7 +12,7 @@
+ CFG_ENV_NAME = "CLOUD_CFG"
+ 
+ # This is expected to be a yaml formatted file
+-CLOUD_CONFIG = "/etc/cloud/cloud.cfg"
++CLOUD_CONFIG = "%%PREFIX%%/etc/cloud/cloud.cfg"
+ 
+ RUN_CLOUD_CONFIG = "/run/cloud-init/cloud.cfg"
+ 
+@@ -50,7 +50,7 @@ CFG_BUILTIN = {
+     "system_info": {
+         "paths": {
+             "cloud_dir": "/var/lib/cloud",
+-            "templates_dir": "/etc/cloud/templates/",
++            "templates_dir": "%%PREFIX%%/etc/cloud/templates/",
+         },
+         "distro": "ubuntu",
+         "network": {"renderers": None},
diff --git a/net/cloud-init-devel/files/patch-config_cloud.cfg.d_99__freebsd.cfg b/net/cloud-init-devel/files/patch-config_cloud.cfg.d_99__freebsd.cfg
new file mode 100644
index 000000000000..54430cfbd422
--- /dev/null
+++ b/net/cloud-init-devel/files/patch-config_cloud.cfg.d_99__freebsd.cfg
@@ -0,0 +1,5 @@
+--- config/cloud.cfg.d/99_freebsd.cfg.orig	2021-12-13 06:41:51 UTC
++++ config/cloud.cfg.d/99_freebsd.cfg
+@@ -0,0 +1,2 @@
++no_ssh_fingerprints: true
++disable_network_activation: true
diff --git a/net/cloud-init-devel/files/patch-setup.py b/net/cloud-init-devel/files/patch-setup.py
new file mode 100644
index 000000000000..c94715dc97c6
--- /dev/null
+++ b/net/cloud-init-devel/files/patch-setup.py
@@ -0,0 +1,11 @@
+--- setup.py.orig	2021-03-17 15:40:30 UTC
++++ setup.py
+@@ -153,7 +153,7 @@ INITSYS_TYPES = sorted([f.partition(".")[0] for f in I
+ # Install everything in the right location and take care of Linux (default) and
+ # FreeBSD systems.
+ USR = "usr"
+-ETC = "etc"
++ETC = "%%PREFIX%%/etc"
+ USR_LIB_EXEC = "usr/lib"
+ LIB = "lib"
+ if os.uname()[0] in ["FreeBSD", "DragonFly"]:
diff --git a/net/cloud-init-devel/pkg-descr b/net/cloud-init-devel/pkg-descr
new file mode 100644
index 000000000000..6eacee0a5861
--- /dev/null
+++ b/net/cloud-init-devel/pkg-descr
@@ -0,0 +1,4 @@
+Cloud-init is the industry standard multi-distribution method for cross-platform
+cloud instance initialization. It is supported across all major public cloud
+providers, provisioning systems for private cloud infrastructure, and bare-metal
+installations. This is the development version, it follows the git HEAD.
diff --git a/net/cloud-init-devel/pkg-message b/net/cloud-init-devel/pkg-message
new file mode 100644
index 000000000000..f82dd34c3c06
--- /dev/null
+++ b/net/cloud-init-devel/pkg-message
@@ -0,0 +1,11 @@
+[
+{ type: install
+  message: <<EOM
+To enable cloud-init, add the following line to rc.conf:
+
+cloudinit_enable="YES"
+
+This will make sure cloud-init is started at boot.
+EOM
+}
+]