# Contributor: Matt Dainty <matt+alpine@bodgit-n-scarper.com>
# Contributor: Dermot Bradley <dermot_bradley@yahoo.com>
maintainer="fossdd <fossdd@pwned.life>"
pkgname=cloud-init
pkgver=24.3.1
pkgrel=2
pkgdesc="Cloud instance init scripts"
url="https://cloud-init.io"
# s390x: blocked by cloud-utils-growpart
arch="noarch !s390x"
license="Apache-2.0 OR GPL-3.0-only"
depends="
	blkid
	cloud-utils-growpart
	iproute2-minimal
	python3
	py3-configobj
	py3-jinja2
	py3-jsonpatch
	py3-jsonschema
	py3-requests
	py3-yaml
	shadow
	tzdata
	"
# eudev is only used for "pkg-config --variable=udevdir udev" to work
makedepends="
	eudev-dev
	py3-setuptools
	"
checkdepends="
	bash
	coreutils
	grep
	lsblk
	parted
	procps-ng
	py3-netifaces
	py3-passlib
	py3-pyserial
	py3-pytest
	py3-pytest-mock
	py3-responses
	py3-tox
	sfdisk
	sgdisk
	"
subpackages="
	$pkgname-bash-completion
	$pkgname-doc
	$pkgname-logrotate
	$pkgname-pyc
	$pkgname-openrc
	"
source="cloud-init-$pkgver.tar.gz::https://github.com/canonical/cloud-init/archive/refs/tags/$pkgver.tar.gz
	01-oauthlib-remove.patch
	02-disable-irrelevant-modules.patch
	04-set-default-datasource-list.patch
	cloud-init-hotplugd
	cloud-init-hotplugd.initd
	cloud-init.logrotate
	interfaces
	setup-cloud-init
	README.Alpine
	"
install="$pkgname.post-install"

# secfixes:
#   23.1.2-r0:
#     - CVE-2023-1786
#   22.2.2-r0:
#     - CVE-2022-2084
#   21.1-r1:
#     - CVE-2021-3429

prepare() {
	default_prepare
}

build() {
	python3 setup.py build
}

check() {
	# https://github.com/canonical/cloud-init/issues/5158
	local k="not test_parse_unexpected_timestamp_format_with_date_command"
	k="$k and not test_parse_logline_returns_event_for_amazon_linux_2_line"

	python3 -m pytest -k "$k"
}

package() {
	python3 setup.py install \
		--prefix=/usr --root="$pkgdir" --init-system=sysvinit_openrc

	install -m644 \
		-D \
		"$srcdir"/interfaces \
		"$pkgdir"/etc/network/interfaces

	install -m755 \
		-D \
		"$srcdir"/cloud-init-hotplugd.initd \
		"$pkgdir"/etc/init.d/cloud-init-hotplugd

	install -m644 \
		-D \
		"$srcdir"/cloud-init.logrotate \
		"$pkgdir"/etc/logrotate.d/cloud-init

	mkdir -p \
		"$pkgdir"/sbin
	install -m755 \
		"$srcdir"/setup-cloud-init \
		"$pkgdir"/sbin/

	mkdir -p \
		"$pkgdir"/usr/sbin
	install -m755 \
		"$srcdir"/cloud-init-hotplugd \
		"$pkgdir"/usr/sbin/

	install -m644 \
		"$srcdir"/README.Alpine \
		"$pkgdir"/usr/share/doc/"$pkgname"/

	# Delete non-Alpine distribution template files
	for distro in \
		arch centos cos debian fedora freebsd gentoo mariner openbsd \
		opensuse opensuse-leap opensuse-microos opensuse-tumbleweed \
		photon redhat rhel sle_hpc sle-micro sles suse ubuntu
	do
		for file in \
			"$pkgdir"/etc/cloud/templates/*."$distro".tmpl
		do
			rm "$file"
		done
	done
	rm "$pkgdir"/etc/cloud/templates/sources.list.*.tmpl

	# Delete non-Alpine os-specific files
	for distro in \
		almalinux amazon arch bsd centos cloudlinux cos debian \
		dragonflybsd eurolinux fedora freebsd gentoo mariner \
		miraclelinux netbsd openeuler openbsd OpenCloudOS \
		openmandriva opensuse opensuse-leap opensuse-microos \
		opensuse-tumbleweed photon rhel rhel_util rocky sle-micro \
		sle_hpc sles suse TencentOS ubuntu virtuozzo
	do
		rm "$pkgdir"/usr/lib/python3.*/site-packages/cloudinit/distros/"$distro".py
		rm "$pkgdir"/usr/lib/python3.*/site-packages/cloudinit/distros/__pycache__/"$distro".*.pyc
	done
	rm "$pkgdir"/usr/lib/python3.*/site-packages/cloudinit/distros/parsers/sys_conf.py
	rm "$pkgdir"/usr/lib/python3.*/site-packages/cloudinit/distros/parsers/__pycache__/sys_conf.*.pyc

	# Delete systemd-related files
	rm \
		"$pkgdir"/etc/cloud/templates/timesyncd.conf.tmpl \
		"$pkgdir"/etc/cloud/templates/systemd.resolved.conf.tmpl
	rm -Rf "$pkgdir"/etc/systemd

	# Delete NetworkManager-related files
	rm -Rf "$pkgdir"/etc/NetworkManager

	# Delete cloud-init modules not relevant to Alpine
	for module in \
		apt_* \
		byobu \
		fan \
		grub_dpkg \
		landscape \
		lxd \
		reset_rmc \
		rh_subscription \
		snap \
		spacewalk \
		ubuntu_autoinstall \
		ubuntu_drivers \
		yum_add_repo \
		zypper_add_repo
	do
		rm "$pkgdir"/usr/lib/python3.*/site-packages/cloudinit/config/cc_$module.py
		rm "$pkgdir"/usr/lib/python3.*/site-packages/cloudinit/config/__pycache__/cc_$module.*.pyc
	done

	# Delete cloud-init docs not relevant to Alpine
	for doc in \
		cloud-config-add-apt-repos.txt \
		cloud-config-apt.txt \
		cloud-config-update-apt.txt \
		cloud-config-yum-repo.txt
	do
		rm "$pkgdir"/usr/share/doc/cloud-init/examples/$doc
	done
}

logrotate() {
	pkgdesc="Cloud instance init scripts (logrotate configuration)"
	depends=""
	install_if="$pkgname=$pkgver-r$pkgrel logrotate"

	amove etc/logrotate.d/cloud-init
}

sha512sums="
01b798d67328ecd66229568233fb674f45c055ac469adb31a55a909b6b2c8fd1901a833accb66423923b8945210aa4dc6a0d61945787aabe414c01b501b1416d  cloud-init-24.3.1.tar.gz
cc187fc8772b3faa3d31f21e4dc270b5922f153a34879f7fa7c3f5a601b5eca8d9e8c1f9a70d97406c38ba82acd07b13c132868d2c857922b5a4f75fd692edfc  01-oauthlib-remove.patch
94a17d63a43fcc0cae807bb3e7f24f472258646f8d1e279b533c1c386a71155adc8f6683bdcb510f6a24818b497a695851bffefa204128307609011ba8d4e52c  02-disable-irrelevant-modules.patch
8174411925f40f7e0eabb43cfdc273dfd0cf069e3713a3883ed128df7a5cc80b7d19e2643629cf17ae65c3d8e59cc8a074ca5932a6a4fe0e8299fad9ce861686  04-set-default-datasource-list.patch
2d7b80fc248ec18f20c4ed2fbe0f8d6ea85ae57a0ece8ecf8a095cf910c576807c19ab0453c00160b85253df5725cba90abec731cb54f441a509611115519b46  cloud-init-hotplugd
ab44fc51979a5da8569b08ed2f290a6610de6c36cf147af20f30e9224847623d3594c056a1f64c614598ac130e9bec92d566fb901024f806b768a89190c45f59  cloud-init-hotplugd.initd
3c6c5189859633012fd389a8d8370cbd46ddd07f206d61bcf872f12105f340552073cbf28f28096109c158b641de1c8199afcfc7f751166a27d4089355e1dd7d  cloud-init.logrotate
48b25ec4457c2b3772a7d210033551d041749a0d1869818d888030e6df7fd9bbc13a38b95cf465de3d46d96881a722f94a337584ce48f280c4a52b819586563a  interfaces
9340e30b6c95f66cb2cdc68c0c5d765e4ce879d2f2bfb042c4b45996cf2b5c542b3762c6abfd213b4b9610f290d6ca734c28c7240fea76fb5cf58253570d2e8f  setup-cloud-init
748b828de1f21cc30c9c13c4ebfbec5ba542ed882ddd04906661ffd7e50ef3d575f67d5650e99aac01fb8c84a9dc84cc73d2c8f232f0d4cfe86136f3097676cf  README.Alpine
"
