| # Copyright 1999-2020 Gentoo Authors |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| EAPI=7 |
| PYTHON_COMPAT=( python3_6 python3_7 python3_8 ) |
| |
| inherit distutils-r1 systemd |
| |
| if [[ ${PV} == *9999 ]];then |
| inherit git-r3 |
| EGIT_REPO_URI="https://git.launchpad.net/cloud-init" |
| else |
| SRC_URI="https://launchpad.net/${PN}/trunk/${PV}/+download/${P}.tar.gz" |
| KEYWORDS="*" |
| fi |
| |
| DESCRIPTION="Cloud instance initialisation magic" |
| HOMEPAGE="https://launchpad.net/cloud-init" |
| |
| LICENSE="GPL-3" |
| SLOT="0" |
| IUSE="test configure_network" |
| RESTRICT="!test? ( test )" |
| |
| CDEPEND=" |
| dev-python/jinja[${PYTHON_USEDEP}] |
| dev-python/oauthlib[${PYTHON_USEDEP}] |
| dev-python/pyserial[${PYTHON_USEDEP}] |
| >=dev-python/configobj-5.0.2[${PYTHON_USEDEP}] |
| dev-python/pyyaml[${PYTHON_USEDEP}] |
| dev-python/requests[${PYTHON_USEDEP}] |
| dev-python/jsonpatch[${PYTHON_USEDEP}] |
| dev-python/jsonschema[${PYTHON_USEDEP}] |
| dev-python/six[${PYTHON_USEDEP}] |
| dev-python/netifaces[${PYTHON_USEDEP}] |
| " |
| DEPEND=" |
| dev-python/setuptools[${PYTHON_USEDEP}] |
| test? ( |
| ${CDEPEND} |
| >=dev-python/httpretty-0.7.1[${PYTHON_USEDEP}] |
| dev-python/mock[${PYTHON_USEDEP}] |
| dev-python/nose[${PYTHON_USEDEP}] |
| dev-python/unittest2[${PYTHON_USEDEP}] |
| dev-python/coverage[${PYTHON_USEDEP}] |
| dev-python/contextlib2[${PYTHON_USEDEP}] |
| ) |
| " |
| RDEPEND=" |
| ${CDEPEND} |
| sys-apps/iproute2 |
| virtual/logger |
| " |
| |
| PATCHES=( |
| |
| # Ensures the user added through cloud-init have UID in range [2000, 5000) |
| "${FILESDIR}/22.4-stable-uid.patch" |
| "${FILESDIR}/22.4-fix-cross-compile.patch" |
| # Ensure we don't add ssh keys to the root user |
| "${FILESDIR}/22.4-skip-root-ssh-keys.patch" |
| |
| # Enable NTP for COS in cloud-init |
| "${FILESDIR}/22.4-enable-ntp-for-cos.patch" |
| # Remove dhclient dependency from /tmp. |
| "${FILESDIR}/cloud-init-21.4-azure-remove-dhclient.patch" |
| |
| ) |
| |
| python_prepare_all() { |
| # remove network dependencies when not configuring network. |
| # The below patches are resulting in different cloud-init-local.service |
| # and cloud-init.service that is installed by cloud-init. It doesn't |
| # result in any change in the cloud-init binary built. |
| if ! use configure_network; then |
| PATCHES+=("${FILESDIR}/22.4-cloud-init-remove-sshd-and-network-service-dependencies.patch") |
| else |
| PATCHES+=("${FILESDIR}/22.4-remove-sshd-dependency.patch") |
| fi |
| |
| # Fix location of documentation installation |
| sed -i "s:USR + '/share/doc/cloud-init:USR + '/share/doc/${PF}:" setup.py || die |
| sed -i 's/version=get_version(),/version=9999,/g' setup.py || die |
| distutils-r1_python_prepare_all |
| } |
| |
| python_test() { |
| # Do not use Makefile target as it does not setup environment correclty |
| esetup.py nosetests -v --where cloudinit --where tests/unittests || die |
| } |
| |
| python_install() { |
| distutils-r1_python_install --init-system=systemd |
| } |
| |
| lakitu_python_install_all() { |
| exeinto /usr/share/cloud |
| doexe "${FILESDIR}"/rerun-cloudinit.sh |
| |
| systemd_dounit "${FILESDIR}"/var-lib-cloud.mount |
| |
| systemd_enable_service local-fs.target var-lib-cloud.mount |
| systemd_enable_service multi-user.target cloud-config.service |
| systemd_enable_service multi-user.target cloud-final.service |
| systemd_enable_service multi-user.target cloud-init-local.service |
| systemd_enable_service multi-user.target cloud-init.service |
| } |
| |
| python_install_all() { |
| keepdir /etc/cloud |
| distutils-r1_python_install_all |
| |
| # lakitu: Comment out this because sysvinit scripts are not installed. |
| ## installs as non-executable |
| #chmod +x "${D}"/etc/init.d/* |
| |
| lakitu_python_install_all |
| } |
| |
| pkg_postinst() { |
| # delete the default cloud.cfg to override in the cloud-init-config |
| rm -f -v "${ROOT}/etc/cloud/cloud.cfg" |
| |
| # [2000, 5000) are reserved for users created by clout-init. |
| # Start from 5000 for automatic uid selection in useradd. |
| sed -i -r 's/^(UID_MIN\s+)1000/\15000/' "${ROOT}"/etc/login.defs |
| |
| elog "cloud-init-local needs to be run in the boot runlevel because it" |
| elog "modifies services in the default runlevel. When a runlevel is started" |
| elog "it is cached, so modifications that happen to the current runlevel" |
| elog "while you are in it are not acted upon." |
| } |