diff --git a/.azldev-version b/.azldev-version index 95552389490..9854d019785 100644 --- a/.azldev-version +++ b/.azldev-version @@ -1 +1 @@ -0256227f5434d9e00d7c8501b16848efa400a72b +830e6fed79750f8e24ae17cd630248f50c90c8a9 diff --git a/base/comps/component-check-disablement.toml b/base/comps/component-check-disablement.toml index dbeda19fdf5..e282a02b7ab 100644 --- a/base/comps/component-check-disablement.toml +++ b/base/comps/component-check-disablement.toml @@ -9,7 +9,6 @@ components = [ "containerd", "dnf", "erlang-lager", - "fakeroot", "fontconfig", "ghc", "glib2", @@ -37,7 +36,6 @@ components = [ "golang-github-json-iterator", "golang-github-logr", "golang-github-mailru-easyjson", - "golang-github-moby-spdystream", "golang-github-mwitkow-conntrack", "golang-github-nxadm-tail", "golang-github-olekukonko-tablewriter", @@ -97,7 +95,6 @@ components = [ "perl", "perl-POE", "poetry", - "python-aioquic", "python-awscrt", "python-azure-data-tables", "python-azure-mgmt-applicationinsights", @@ -136,11 +133,9 @@ components = [ "python-oslo-config", "python-pandas", "python-passlib", - "python-pexpect", "python-psutil", "python-pydantic", "python-pyftpdlib", - "python-pytest-xdist", "python-rapidfuzz", "python-scikit-image", "python-sphinxcontrib-htmlhelp", @@ -174,7 +169,6 @@ components = [ "satyr", "scancode-toolkit", "scipy", - "socat", "srt", "sssd", "superlu_dist", @@ -189,3 +183,7 @@ components = [ [component-groups.check-skip-initial-failures.default-component-config.build] check = { skip = true, skip_reason = "Disabling checks for initial set of failures." } + +[component-groups.check-skip-initial-failures.metadata] +category = "azl-disable-unsupported-tests" +upstream-status = "unknown" diff --git a/base/comps/component-flaky-test-disablement.toml b/base/comps/component-flaky-test-disablement.toml new file mode 100644 index 00000000000..ab01b1d8354 --- /dev/null +++ b/base/comps/component-flaky-test-disablement.toml @@ -0,0 +1,21 @@ +# Components with flaky / race-condition %check failures. +# These tests fail intermittently (timing-sensitive, environment-dependent) +# rather than deterministically, and should be re-enabled once the upstream +# flakiness is addressed. +[component-groups.check-skip-flaky-tests] +description = "Components with flaky or race-condition check failures" +components = [ + "fakeroot", + "golang-github-moby-spdystream", + "python-aioquic", + "python-pexpect", + "python-pytest-xdist", + "socat", +] + +[component-groups.check-skip-flaky-tests.default-component-config.build] +check = { skip = true, skip_reason = "Disabling checks for flaky tests." } + +[component-groups.check-skip-flaky-tests.metadata] +category = "azl-disable-flaky-tests" +upstream-status = "upstreamable" diff --git a/base/comps/component-mingw-disablement.toml b/base/comps/component-mingw-disablement.toml index da08356f36d..8a4d5448ade 100644 --- a/base/comps/component-mingw-disablement.toml +++ b/base/comps/component-mingw-disablement.toml @@ -54,3 +54,7 @@ components = [ [component-groups.mingw-disabled.default-component-config.build] without = ["mingw"] + +[component-groups.mingw-disabled.metadata] +category = "azl-pruning" +upstream-status = "inapplicable" diff --git a/base/comps/components.toml b/base/comps/components.toml index cfed7f265dd..d7f476e6a3f 100644 --- a/base/comps/components.toml +++ b/base/comps/components.toml @@ -1,4 +1,4 @@ -includes = ["**/*.comp.toml", "component-check-disablement.toml", "component-mingw-disablement.toml", "components-publish-channels.toml"] +includes = ["**/*.comp.toml", "component-check-disablement.toml", "component-flaky-test-disablement.toml", "component-mingw-disablement.toml", "components-publish-channels.toml"] # # Components imported from Fedora with no per-component modifications. diff --git a/external/schemas/azldev.schema.json b/external/schemas/azldev.schema.json index e2e8dd16836..23778d19f8c 100644 --- a/external/schemas/azldev.schema.json +++ b/external/schemas/azldev.schema.json @@ -119,6 +119,14 @@ "title": "Overlays", "description": "Overlays to apply to this component's spec and/or sources" }, + "overlay-files": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Overlay files", + "description": "Path or glob patterns (relative to the component config file or matched spec directory) matched against the filesystem to locate per-file overlay documents after component config resolution. Use an empty list to disable inherited overlay-file patterns" + }, "build": { "$ref": "#/$defs/ComponentBuildConfig", "title": "Build configuration", @@ -161,6 +169,11 @@ "title": "Description", "description": "Description of this component group" }, + "metadata": { + "$ref": "#/$defs/OverlayMetadata", + "title": "Metadata", + "description": "Optional documentation metadata for this component group" + }, "components": { "items": { "type": "string" @@ -239,12 +252,12 @@ "section": { "type": "string", "title": "Section name", - "description": "The name of the section to which this overlay applies" + "description": "The name of the section to which this overlay applies. Optional for spec-prepend-lines/spec-append-lines/spec-search-replace; when omitted these overlays target the entire spec file." }, "package": { "type": "string", "title": "Package name", - "description": "The name of the sub-package to which this overlay applies" + "description": "The name of the sub-package to which this overlay applies. Cannot be combined with an omitted section on overlays that support whole-file targeting." }, "tag": { "type": "string", @@ -278,6 +291,11 @@ "type": "string", "title": "Source", "description": "For overlays that require a source file as input" + }, + "metadata": { + "$ref": "#/$defs/OverlayMetadata", + "title": "Metadata", + "description": "Optional documentation metadata describing the overlay's intent and provenance" } }, "additionalProperties": false, @@ -344,6 +362,11 @@ "title": "Distros", "description": "Definitions of distros to build for or consume from" }, + "resources": { + "$ref": "#/$defs/ResourcesConfig", + "title": "Resources", + "description": "Reusable named resource definitions" + }, "component-groups": { "additionalProperties": { "$ref": "#/$defs/ComponentGroupConfig" @@ -513,6 +536,11 @@ "type": "string", "title": "Mock config file", "description": "Path to the aarch64 mock config file for this version" + }, + "inputs": { + "$ref": "#/$defs/DistroVersionInputs", + "title": "Inputs", + "description": "Per-use-case input repositories" } }, "additionalProperties": false, @@ -521,6 +549,44 @@ "release-ver" ] }, + "DistroVersionInput": { + "properties": { + "repo": { + "type": "string", + "title": "Repo", + "description": "Name of an entry under [resources.rpm-repos]; mutually exclusive with set" + }, + "set": { + "type": "string", + "title": "Set", + "description": "Name of an entry under [resources.rpm-repo-sets]; mutually exclusive with repo" + } + }, + "additionalProperties": false, + "type": "object" + }, + "DistroVersionInputs": { + "properties": { + "rpm-build": { + "items": { + "$ref": "#/$defs/DistroVersionInput" + }, + "type": "array", + "title": "RPM-build inputs", + "description": "Repos and repo-sets made available to mock when building RPMs" + }, + "image-build": { + "items": { + "$ref": "#/$defs/DistroVersionInput" + }, + "type": "array", + "title": "Image-build inputs", + "description": "Repos and repo-sets made available to kiwi when building images" + } + }, + "additionalProperties": false, + "type": "object" + }, "ImageCapabilities": { "properties": { "machine-bootable": { @@ -643,7 +709,8 @@ "type": { "type": "string", "enum": [ - "download" + "download", + "custom" ], "title": "Origin type", "description": "Type of origin for this source file" @@ -655,6 +722,19 @@ "examples": [ "https://example.com/source.tar.gz" ] + }, + "script": { + "type": "string", + "title": "Script", + "description": "Shell script filename (relative to the component spec directory) to run in mock to generate this source file. Required when origin type is 'custom'." + }, + "mock-packages": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Mock packages", + "description": "RPM packages to install in the mock chroot before running the generation script. Only valid when origin type is 'custom'." } }, "additionalProperties": false, @@ -663,6 +743,61 @@ "type" ] }, + "OverlayMetadata": { + "properties": { + "category": { + "type": "string", + "enum": [ + "upstream-backport", + "azl-pruning", + "azl-compatibility", + "azl-temp-workaround", + "azl-branding-policy", + "azl-disable-flaky-tests", + "azl-disable-unsupported-tests", + "azl-security-compliance", + "azl-release-management", + "azl-platform-adaptation" + ], + "title": "Category", + "description": "Classification of the overlay's intent" + }, + "commits": { + "items": { + "$ref": "#/$defs/URLRef" + }, + "type": "array", + "title": "Commits", + "description": "Upstream commits this overlay backports or references" + }, + "bugs": { + "items": { + "$ref": "#/$defs/URLRef" + }, + "type": "array", + "title": "Bug references", + "description": "References to issue-tracker entries related to this overlay" + }, + "upstream-status": { + "type": "string", + "enum": [ + "upstreamed", + "upstreamable", + "needs-upstream-hook", + "inapplicable", + "unknown" + ], + "title": "Upstream status", + "description": "Classifies the overlay's relationship to its upstream project" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "category", + "upstream-status" + ] + }, "PackageConfig": { "properties": { "publish": { @@ -846,6 +981,206 @@ "additionalProperties": false, "type": "object" }, + "ResourcesConfig": { + "properties": { + "rpm-repos": { + "additionalProperties": { + "$ref": "#/$defs/RpmRepoResource" + }, + "propertyNames": { + "type": "string", + "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$", + "description": "Name; projected verbatim into dnf section headers and kiwi --add-repo arguments." + }, + "type": "object", + "title": "RPM repositories", + "description": "Reusable named RPM repository definitions" + }, + "rpm-repo-set-templates": { + "additionalProperties": { + "$ref": "#/$defs/RpmRepoSetTemplate" + }, + "propertyNames": { + "type": "string", + "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$", + "description": "Name; projected verbatim into dnf section headers and kiwi --add-repo arguments." + }, + "type": "object", + "title": "RPM repo set templates", + "description": "Named layout templates that describe a fixed matrix of sub-repos" + }, + "rpm-repo-sets": { + "additionalProperties": { + "$ref": "#/$defs/RpmRepoSet" + }, + "propertyNames": { + "type": "string", + "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$", + "description": "Name; projected verbatim into dnf section headers and kiwi --add-repo arguments." + }, + "type": "object", + "title": "RPM repo sets", + "description": "Template instantiations that expand to a group of related RPM repos" + } + }, + "additionalProperties": false, + "type": "object" + }, + "RpmRepoResource": { + "oneOf": [ + { + "not": { + "required": [ + "metalink" + ] + }, + "required": [ + "base-uri" + ] + }, + { + "not": { + "required": [ + "base-uri" + ] + }, + "required": [ + "metalink" + ] + } + ], + "properties": { + "description": { + "type": "string", + "title": "Description", + "description": "Human-readable description (diagnostic only)" + }, + "type": { + "type": "string", + "enum": [ + "rpm-md" + ], + "title": "Type", + "description": "Repository access protocol; defaults to rpm-md" + }, + "base-uri": { + "type": "string", + "pattern": "^https?://[^\\s]+$", + "format": "uri", + "title": "Base URI", + "description": "Repository base URI (dnf baseurl). Mutually exclusive with metalink. Must be an http(s) URL." + }, + "metalink": { + "type": "string", + "pattern": "^https?://[^\\s]+$", + "format": "uri", + "title": "Metalink", + "description": "Repository metalink URL. Mutually exclusive with base-uri. Must be an http(s) URL." + }, + "disable-gpg-check": { + "type": "boolean", + "title": "Disable GPG check", + "description": "Opt out of GPG signature verification for this repo (zero value = checking enabled)" + }, + "gpg-key": { + "type": "string", + "pattern": "^((https?|file)://\\S+|[^\\s:]\\S*)$", + "title": "GPG key", + "description": "Path or URI to the GPG key file. Accepted URI schemes: http, https, file. Bare paths are resolved relative to the defining TOML file." + }, + "arches": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Arches", + "description": "Restrict to specific target architectures; empty = all" + } + }, + "additionalProperties": false, + "type": "object" + }, + "RpmRepoSet": { + "properties": { + "description": { + "type": "string", + "title": "Description", + "description": "Human-readable description (diagnostic only)" + }, + "template": { + "type": "string", + "title": "Template", + "description": "Name of the rpm-repo-set-template to instantiate" + }, + "base-uri": { + "type": "string", + "pattern": "^https?://[^\\s]+$", + "format": "uri", + "title": "Base URI", + "description": "URL prefix under which all sub-repos in this set live" + }, + "name-prefix": { + "type": "string", + "title": "Name prefix", + "description": "Prepended to each sub-repo's name to form the repo ID" + }, + "gpg-key": { + "type": "string", + "pattern": "^\\S+$", + "title": "GPG key", + "description": "Path or URI to the GPG key file. Accepted URI schemes: http, https, file. Bare paths are resolved relative to the defining TOML file." + }, + "disable-gpg-check": { + "type": "boolean", + "title": "Disable GPG check", + "description": "Opt out of GPG signature verification for repos in this set" + }, + "arches": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Arches", + "description": "Restrict to specific target architectures; empty = all" + }, + "subrepos": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Sub-repos", + "description": "Allowlist of template sub-repos to instantiate (default: all)" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "template", + "base-uri" + ] + }, + "RpmRepoSetTemplate": { + "properties": { + "description": { + "type": "string", + "title": "Description", + "description": "Human-readable description (diagnostic only)" + }, + "subrepos": { + "items": { + "$ref": "#/$defs/SubrepoSpec" + }, + "type": "array", + "title": "Sub-repos", + "description": "Ordered list of sub-repos in the layout" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "subrepos" + ] + }, "SourceFileReference": { "properties": { "filename": { @@ -934,6 +1269,36 @@ "type" ] }, + "SubrepoSpec": { + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Stable short identifier; combined with the set's name-prefix to form the repo ID" + }, + "subpath": { + "type": "string", + "title": "Sub-path", + "description": "Relative path under the set's base URI; may contain $basearch" + }, + "kind": { + "type": "string", + "enum": [ + "binary", + "debug", + "source" + ], + "title": "Kind", + "description": "Sub-repo classification; defaults to binary" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "subpath" + ] + }, "TestSuiteConfig": { "properties": { "description": { @@ -986,6 +1351,22 @@ }, "additionalProperties": false, "type": "object" + }, + "URLRef": { + "properties": { + "url": { + "type": "string", + "pattern": "^https?://", + "format": "uri", + "title": "URL", + "description": "HTTP(S) link to the referenced resource" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "url" + ] } }, "$comment": "This schema was auto-generated by: azldev config generate-schema" diff --git a/specs/f/fakeroot/fakeroot.spec b/specs/f/fakeroot/fakeroot.spec index b42ec72c56e..f6f612b0487 100644 --- a/specs/f/fakeroot/fakeroot.spec +++ b/specs/f/fakeroot/fakeroot.spec @@ -116,7 +116,7 @@ rename -- -tcp '' %{buildroot}%{_mandir}{,/*}/man1/fake{d,root}-tcp.1 sed -e 's/-tcp//g' fake{d,root}-tcp.lang > fakeroot.lang %check -# Check section disabled: Disabling checks for initial set of failures. +# Check section disabled: Disabling checks for flaky tests. exit 0 for type in sysv tcp; do diff --git a/specs/g/golang-github-moby-spdystream/golang-github-moby-spdystream.spec b/specs/g/golang-github-moby-spdystream/golang-github-moby-spdystream.spec index 1f319987395..3af2061401e 100644 --- a/specs/g/golang-github-moby-spdystream/golang-github-moby-spdystream.spec +++ b/specs/g/golang-github-moby-spdystream/golang-github-moby-spdystream.spec @@ -53,7 +53,7 @@ BuildRequires: golang(github.com/gorilla/websocket) %if %{with check} %check -# Check section disabled: Disabling checks for initial set of failures. +# Check section disabled: Disabling checks for flaky tests. exit 0 %gocheck diff --git a/specs/p/python-aioquic/python-aioquic.spec b/specs/p/python-aioquic/python-aioquic.spec index 194bb756909..2ea7634f551 100644 --- a/specs/p/python-aioquic/python-aioquic.spec +++ b/specs/p/python-aioquic/python-aioquic.spec @@ -109,7 +109,7 @@ export LDFLAGS="%{__global_ldflags} %(pkg-config --libs python3-embed)" %endif %check -# Check section disabled: Disabling checks for initial set of failures. +# Check section disabled: Disabling checks for flaky tests. exit 0 %pyproject_check_import diff --git a/specs/p/python-pexpect/python-pexpect.spec b/specs/p/python-pexpect/python-pexpect.spec index 4a4f7a21fd7..fc23044f7a5 100644 --- a/specs/p/python-pexpect/python-pexpect.spec +++ b/specs/p/python-pexpect/python-pexpect.spec @@ -85,7 +85,7 @@ rm -rf %{buildroot}%{python3_sitelib}/pexpect/tests %if %{with check} %check -# Check section disabled: Disabling checks for initial set of failures. +# Check section disabled: Disabling checks for flaky tests. exit 0 export PYTHONIOENCODING=UTF-8 diff --git a/specs/p/python-pytest-xdist/python-pytest-xdist.spec b/specs/p/python-pytest-xdist/python-pytest-xdist.spec index 8ad973ffec2..3b57ea60979 100644 --- a/specs/p/python-pytest-xdist/python-pytest-xdist.spec +++ b/specs/p/python-pytest-xdist/python-pytest-xdist.spec @@ -48,7 +48,7 @@ Summary: %{summary} %pyproject_save_files -l xdist %check -# Check section disabled: Disabling checks for initial set of failures. +# Check section disabled: Disabling checks for flaky tests. exit 0 %tox diff --git a/specs/s/socat/socat.spec b/specs/s/socat/socat.spec index c358444faf2..238c76a4258 100644 --- a/specs/s/socat/socat.spec +++ b/specs/s/socat/socat.spec @@ -68,7 +68,7 @@ echo ".so man1/socat.1" | gzip > %{buildroot}/%{_mandir}/man1/filan.1.gz cp -a %{buildroot}/%{_mandir}/man1/filan.1.gz %{buildroot}/%{_mandir}/man1/procan.1.gz %check -# Check section disabled: Disabling checks for initial set of failures. +# Check section disabled: Disabling checks for flaky tests. exit 0 %ifarch x86_64