diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 0315e11f53..5a6f401f89 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -102,6 +102,7 @@ #:use-module (gnu packages groff) #:use-module (gnu packages libevent) #:use-module (gnu packages libffi) + #:use-module (gnu packages linux) #:use-module (gnu packages node) #:use-module (gnu packages openstack) #:use-module (gnu packages pcre) @@ -7058,6 +7059,71 @@ interpreter written in pure Python.") Encoding for HTTP.") (license license:expat))) +(define-public python-cloud-init + (package + (name "python-cloud-init") + (version "23.4.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/canonical/cloud-init") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0przjj2j1ws6b7sbgqxnffsarbbwl00lhq3bn7yiksp8kg8np1m1")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + '(list + ;; This requires usermod + "--ignore=tests/unittests/distros/test_create_users.py" + ;; This writes to /var + "--ignore=tests/unittests/net/test_dhcp.py" + "-k" + (string-append + ;; This test messes with PATH, so it cannot find mkdir + "not test_path_env_gets_set_from_main" + ;; These all fail because /bin/sh doesn't exist. We cannot patch + ;; this because the generated scripts must use /bin/sh as they are + ;; supposed to be run on minimal systems. + " and not test_handler_creates_and_runs_bootcmd_script_with_instance_id" + " and not test_handler_runs_bootcmd_script_with_error" + " and not test_subp_combined_stderr_stdout" + " and not test_handle_part")) + #:phases + '(modify-phases %standard-phases + (add-after 'unpack 'patch-references + (lambda _ + (substitute* "tests/unittests/cmd/test_clean.py" + (("#!/bin/sh") (string-append "#!" (which "sh"))))))))) + (propagated-inputs + (list python-configobj + python-jinja2 + python-jsonpatch + python-jsonschema + python-netifaces + python-oauthlib + python-pyserial + python-pyyaml + python-responses)) + (native-inputs + (list procps ;for ps when running tests + python-pytest + python-pytest-cov + python-pytest-mock + python-passlib)) + (home-page "https://github.com/canonical/cloud-init") + (synopsis "Cloud instance initialization tools") + (description + "Cloud-init is the 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.") + ;; Either license can be chosen + (license (list license:asl2.0 license:gpl3)))) + (define-public python-cloudscraper (package (name "python-cloudscraper")